import { FormDisplayerProps, FormFieldValueDisplayerProps, useForm } from 'onekijs-framework'; import React, { FC } from 'react'; import Textarea from '.'; import { titlelize } from '../../utils/misc'; import FieldDisplayer from '../field/FieldDisplayer'; import FieldLayout from '../field/FieldLayout'; import useFieldLayout from '../field/hooks/useFieldLayout'; import { FormTextareaProps, TextareaProps } from './typings'; const FormTextareaValueDisplayer: React.FC = ({ value }) => { return ( {value ? value.split('\n').map((v: string, index: number) =>
{v}
) : ''}
); }; const FormTextarea: FC = React.memo((props) => { const [fieldLayoutProps, fieldComponentProps] = useFieldLayout( Object.assign({}, props, { isUndefined: (value: any) => value === undefined || value === null, defaultValue: props.defaultValue === undefined ? '' : props.defaultValue, Displayer: props.Displayer === undefined ? (displayerProps: FormDisplayerProps) => { const form = useForm(); let value = form.getValue(displayerProps.name) ?? ''; const ValueDisplayer = props.ValueDisplayer ?? FormTextareaValueDisplayer; return ( } format={displayerProps.format} /> ); } : props.Displayer, }), ); const Component = props.FieldComponent || Textarea; return ( ); }); FormTextarea.displayName = 'FormTextarea'; export default FormTextarea;