UNPKG

@vtaits/react-hook-form-schema

Version:

Integration of react-hook-form and @vtaits/form-schema

116 lines (114 loc) 2.57 kB
import { renderError } from "./chunk-XUSORK34.js"; import { renderBySchema } from "./chunk-VHBMH3GH.js"; // src/fields/list/list.tsx import { list as listBase } from "@vtaits/form-schema/fields/list"; import { useUI } from "@vtaits/react-form-schema-base-ui"; import { Fragment } from "react"; import { get, useFieldArray } from "react-hook-form"; import { jsx } from "react/jsx-runtime"; function ListComponent({ renderParams: { fieldPath, fieldSchema, fieldSchema: { addButtonLabel = "Add", compact, disabled, getBlockLabel, label, hint, inline, renderListItemWrapper: renderListItemWrapperParam, required }, getFieldSchema, getFieldType, name: nameParam, parents }, formResult, formResult: { clearErrors, control, formState: { errors } } }) { const { renderListAddButton, renderListItemWrapper: renderListItemWrapperBase, renderListWrapper } = useUI(); const renderListItemWrapper = renderListItemWrapperParam || renderListItemWrapperBase; const error = renderError(get(errors, fieldPath)); const { append, fields, remove } = useFieldArray({ control, name: fieldPath }); const wrapperParams = { error, hint, label, name: fieldPath, required }; const itemParents = [ ...parents, { name: nameParam, values: fields } ]; return renderListWrapper({ ...wrapperParams, compact, actions: renderListAddButton({ disabled, children: addButtonLabel, onClick: () => { append( Object.hasOwn(fieldSchema, "initialItem") ? fieldSchema.initialItem : {} ); clearErrors(fieldPath); } }), inline, items: fields.map((field, index) => { return /* @__PURE__ */ jsx(Fragment, { children: renderListItemWrapper({ children: renderBySchema( formResult, getFieldSchema, getFieldType, () => field, `${index}`, void 0, itemParents ), compact, disabled, handleRemove: () => { remove(index); clearErrors(fieldPath); }, inline, name: `${fieldPath}[${index}]`, title: getBlockLabel?.(index) }) }, field.id); }), name: fieldPath }); } var list = { ...listBase, render: (renderParams, formResult) => /* @__PURE__ */ jsx(ListComponent, { renderParams, formResult }) }; export { list }; //# sourceMappingURL=chunk-CRJ7DBVQ.js.map