sort/components/html/input.tsx

49 lines
1.5 KiB
TypeScript
Raw Permalink Normal View History

2024-09-07 01:22:11 +00:00
import React, { useEffect, useState } from 'react';
import { TextInput, Alert, NativeSyntheticEvent, TextInputChangeEventData } from 'react-native';
import { Cfg } from './action';
import { cfg } from '../lib/cfg';
export function InputRenderer({
...props
}: {
[key: string]: any;
}) {
const onPress = () => Alert.alert('pressed!');
const [val, setVal] = useState('')
const { tnode } = props;
const { domNode } = tnode;
const { attribs } = domNode;
const handleChange = (event:any) => {
const config = Cfg.action as { [key: string]: (event: Function) => void };
const custAction: ((event: Function) => void) | null =
(attribs?.action && typeof config[attribs?.action] === 'function')
? config[attribs?.action]
: null;
if (custAction){
custAction(event); // Pass only the event
}
}
useEffect(() => {
console.log("properti ini", props)
}, [])
return (
<TextInput
id={attribs.id ? attribs.id : 'randoom-' + Date.now()}
placeholder={attribs?.placeholder}
keyboardType="default"
textContentType="none"
onTextInput={(text:any)=>{
setVal(text)
if (cfg.inputChange[attribs?.change] && typeof cfg.inputChange[attribs?.change] === 'function'){
cfg.inputChange[attribs?.change]()
}
}}
style={props.style}
value={val}
/>
);
}