diff options
| author | Sam Nystrom <sam@samnystrom.dev> | 2024-03-13 05:03:22 +0000 |
|---|---|---|
| committer | Sam Nystrom <sam@samnystrom.dev> | 2024-03-13 20:17:07 -0400 |
| commit | 052cc1a5a4668d7cb17fb273a022aa5b820d1faa (patch) | |
| tree | dbce2d2d10bb8c3cc81e38beeb2c1a3c8268c2f8 /src/components/TextInput.tsx | |
| parent | 570f47670bf9f361eeb073b9124be56465498c83 (diff) | |
refactor: move styles into separate components
Diffstat (limited to 'src/components/TextInput.tsx')
| -rw-r--r-- | src/components/TextInput.tsx | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/components/TextInput.tsx b/src/components/TextInput.tsx new file mode 100644 index 0000000..026b062 --- /dev/null +++ b/src/components/TextInput.tsx @@ -0,0 +1,26 @@ +import { useCallback } from 'preact/hooks'; +import type { Signal } from '@preact/signals'; +import './TextInput.css'; + +export interface TextInputProps { + signal?: Signal<string>; + props: Record<string, any>; +} + +const TextInput = ({ signal, ...props }: TextInputProps) => { + const onInputSignal = useCallback((event: InputEvent) => { + signal.value = event.target.value; + }, [signal]); + + return ( + <input + type="text" + {...props} + class={(props.class || '') + ' __TextInput'} + value={signal || props.value} + onInput={signal ? onInputSignal : props.onInput} + /> + ); +}; + +export default TextInput;
\ No newline at end of file |
