import React, { useCallback, useRef } from 'react'; import { SilkeSchemaFields } from '../silke-schema-fields'; import { SilkeTextField } from '../../silke-text-field'; import { FieldRegisterModel, FormObjectProvider } from '../../silke-form/form-context'; import { SilkeText } from '../../silke-text'; import { SilkeBox } from '../../silke-box'; import { SilkeButton } from '../../silke-button'; import { generateTitle } from './utils'; import { VevProps } from '@vev/utils'; type Props = { selected: number; value: any[]; schema: VevProps | string; disabled?: boolean; onChange: (value: any[]) => void; onDelete: () => void; onClose: () => void; }; export function ArrayFieldInline({ value, disabled, selected, schema, onChange, onDelete, onClose, }: Props) { const valueRef = useRef(value); const fieldRefs = useRef({}); const registerField = useCallback((name: any, v: FieldRegisterModel) => { fieldRefs.current[name] = v; }, []); return ( {generateTitle(value[selected], schema) || 'Untitled'} {typeof schema === 'string' ? ( { const update = value || []; update[selected] = val; onChange(update); }} /> ) : ( {}} onChange={(name, update) => { value[selected] = { ...value[selected], [name]: update, }; onChange(value); }} register={registerField} > )} ); }