mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-08 17:03:53 +00:00
d486d78594
* feat: implement progress bar on running event * refactor: use event action hook * refactor: align backend data * style: v2 style tweaks * style: v2 style tweaks + ts <Info> * fix: fix delay increment calls * style: v2 style tweaks + ts <Playback> * style: v2 style tweaks + ts <EventEditor> * style: v2 style tweaks + ts <MessageControl> * fix: naming issue with message control socket endpoint * chore: upgrade style dependencies * style: v2 style tweaks + ts <MenuBar> * style: v2 style tweaks + ts <RundownMenu> * style: v2 style tweaks + ts <Playback> * fix: add selected and next information to EventTimer * style: v2 style tweaks + ts <EventBlock> * style: v2 style tweaks + ts <DelayBlock> * style: v2 style tweaks + ts <BlockBlock> * style: v2 style tweaks + ts <QuickEntry> * refactor: extract <TextInput> logic * chore: upgrade build dependencies * chore: folder structure refactor * fix: issue with dependency path in electron * chore: update version in demo db
47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
import { useCallback, useRef } from 'react';
|
|
import { Input, Textarea } from '@chakra-ui/react';
|
|
|
|
import { Size } from '../../../models/UtilTypes';
|
|
|
|
import useReactiveTextInput from './useReactiveTextInput';
|
|
|
|
interface TextInputProps {
|
|
isTextArea?: boolean;
|
|
isFullHeight?: boolean;
|
|
size?: Size;
|
|
field: string;
|
|
initialText?: string;
|
|
submitHandler: (field: string, newValue: string) => void;
|
|
}
|
|
|
|
export default function TextInput(props: TextInputProps) {
|
|
const { isTextArea, isFullHeight, size = 'sm', field, initialText = '', submitHandler } = props;
|
|
const inputRef = useRef(null);
|
|
|
|
const submitCallback = useCallback((newValue: string) =>
|
|
submitHandler(field, newValue)
|
|
, [field]);
|
|
|
|
const textInputProps = useReactiveTextInput(initialText, submitCallback, { submitOnEnter: true });
|
|
const textAreaProps = useReactiveTextInput(initialText, submitCallback);
|
|
|
|
return isTextArea ? (
|
|
<Textarea
|
|
ref={inputRef}
|
|
size={size}
|
|
variant='ontime-filled'
|
|
{...textAreaProps}
|
|
style={{ height: isFullHeight ? '100%' : undefined }}
|
|
data-testid='input-textarea'
|
|
/>
|
|
) : (
|
|
<Input
|
|
ref={inputRef}
|
|
size={size}
|
|
variant='ontime-filled'
|
|
{...textInputProps}
|
|
data-testid='input-textfield'
|
|
/>
|
|
);
|
|
}
|