import React from 'react'; import { useDispatch, useSelector } from 'react-redux'; import i18n from 'vj/utils/i18n'; import type { RootState } from './reducer/index'; import FileSelectAutoComplete from '../autocomplete/components/FileSelectAutoComplete'; export function FormItem({ columns, label, children, helpText = '', disableLabel = false, ...props }) { return (
); } type KeyType = { [Q in keyof K]: K[Q] extends T ? Q : never; }[keyof K]; export function ManagedInput({ placeholder, formKey }: { placeholder?: string, formKey: KeyType }) { const value = useSelector((state: RootState) => state.config[formKey]); const dispatch = useDispatch(); return ( { dispatch({ type: 'CONFIG_FORM_UPDATE', key: formKey, value: ev.currentTarget.value }); }} className="textbox" /> ); } export function ManagedSelect({ options, formKey }: { options: string[], formKey: KeyType }) { const value = useSelector((state: RootState) => state.config[formKey]); const dispatch = useDispatch(); return ( ); } export function SingleFileSelect({ formKey }: { formKey: KeyType }) { const value = useSelector((state: RootState) => state.config[formKey]); const Files = useSelector((state: RootState) => state.testdata); const dispatch = useDispatch(); return ( dispatch({ type: 'CONFIG_FORM_UPDATE', key: formKey, value: val })} /> ); }