@payloadcms/ui 3.66.0 → 3.67.0-internal.1ea538b
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements/AddNewRelation/index.d.ts.map +1 -1
- package/dist/elements/AddNewRelation/index.js +3 -3
- package/dist/elements/AddNewRelation/index.js.map +1 -1
- package/dist/elements/ArrayAction/index.d.ts +6 -6
- package/dist/elements/ArrayAction/index.d.ts.map +1 -1
- package/dist/elements/ArrayAction/index.js +8 -8
- package/dist/elements/ArrayAction/index.js.map +1 -1
- package/dist/elements/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +5 -9
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/elements/DocumentControls/index.js +9 -9
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/PublishButton/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/index.js +5 -6
- package/dist/elements/PublishButton/index.js.map +1 -1
- package/dist/elements/withMergedProps/index.d.ts +1 -1
- package/dist/elements/withMergedProps/index.js +1 -1
- package/dist/elements/withMergedProps/index.js.map +1 -1
- package/dist/exports/client/index.d.ts +2 -0
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +12 -12
- package/dist/exports/client/index.js.map +3 -3
- package/dist/exports/shared/index.js.map +1 -1
- package/dist/fields/Array/ArrayRow.d.ts +18 -7
- package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
- package/dist/fields/Array/ArrayRow.js +65 -133
- package/dist/fields/Array/ArrayRow.js.map +1 -1
- package/dist/fields/Array/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js +10 -3
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +2 -2
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +3 -3
- package/dist/views/Edit/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArrayRow.js","names":["c","_c","getTranslation","React","ArrayAction","Collapsible","ErrorPill","ShimmerEffect","useFormSubmitted","RenderFields","RowLabel","useThrottledValue","useTranslation","baseClass","ArrayRow","t0","$","addRow","attributes","copyRow","CustomRowLabel","duplicateRow","errorCount","fields","forceRender","t1","hasMaxRows","isDragging","isLoading","isLoadingFromProps","isSortable","labels","listeners","moveRow","parentPath","pasteRow","path","permissions","readOnly","removeRow","row","rowCount","rowIndex","schemaPath","setCollapse","setNodeRef","transform","transition","undefined","i18n","hasSubmitted","fallbackLabel","singular","String","padStart","fieldHasErrors","t2","t3","filter","Boolean","classNames","join","t4","split","t5","t6","collapsed","id","t7","_jsx","ref","style","zIndex","children","actions","index","className","collapsibleStyle","dragHandleProps","header","_jsxs","height","width","CustomComponent","label","rowNumber","count","withMessage","onToggle","margins","parentIndexPath","parentSchemaPath"],"sources":["../../../src/fields/Array/ArrayRow.tsx"],"sourcesContent":["'use client'\nimport type {\n ArrayField,\n ClientComponentProps,\n ClientField,\n Row,\n SanitizedFieldPermissions,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { UseDraggableSortableReturn } from '../../elements/DraggableSortable/useDraggableSortable/types.js'\n\nimport { ArrayAction } from '../../elements/ArrayAction/index.js'\nimport { Collapsible } from '../../elements/Collapsible/index.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { ShimmerEffect } from '../../elements/ShimmerEffect/index.js'\nimport { useFormSubmitted } from '../../forms/Form/context.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { RowLabel } from '../../forms/RowLabel/index.js'\nimport { useThrottledValue } from '../../hooks/useThrottledValue.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'array-field'\n\ntype ArrayRowProps = {\n readonly addRow: (rowIndex: number) => Promise<void> | void\n readonly copyRow: (rowIndex: number) => void\n readonly CustomRowLabel?: React.ReactNode\n readonly duplicateRow: (rowIndex: number) => void\n readonly errorCount: number\n readonly fields: ClientField[]\n readonly hasMaxRows?: boolean\n readonly isLoading?: boolean\n readonly isSortable?: boolean\n readonly labels: Partial<ArrayField['labels']>\n readonly moveRow: (fromIndex: number, toIndex: number) => void\n readonly parentPath: string\n readonly pasteRow: (rowIndex: number) => void\n readonly path: string\n readonly permissions: SanitizedFieldPermissions\n readonly readOnly?: boolean\n readonly removeRow: (rowIndex: number) => void\n readonly row: Row\n readonly rowCount: number\n readonly rowIndex: number\n readonly schemaPath: string\n readonly setCollapse: (rowID: string, collapsed: boolean) => void\n} & Pick<ClientComponentProps, 'forceRender'> &\n UseDraggableSortableReturn\n\nexport const ArrayRow: React.FC<ArrayRowProps> = ({\n addRow,\n attributes,\n copyRow,\n CustomRowLabel,\n duplicateRow,\n errorCount,\n fields,\n forceRender = false,\n hasMaxRows,\n isDragging,\n isLoading: isLoadingFromProps,\n isSortable,\n labels,\n listeners,\n moveRow,\n parentPath,\n pasteRow,\n path,\n permissions,\n readOnly,\n removeRow,\n row,\n rowCount,\n rowIndex,\n schemaPath,\n setCollapse,\n setNodeRef,\n transform,\n transition,\n}) => {\n const isLoading = useThrottledValue(isLoadingFromProps, 500)\n\n const { i18n } = useTranslation()\n const hasSubmitted = useFormSubmitted()\n\n const fallbackLabel = `${getTranslation(labels.singular, i18n)} ${String(rowIndex + 1).padStart(\n 2,\n '0',\n )}`\n\n const fieldHasErrors = errorCount > 0 && hasSubmitted\n\n const classNames = [\n `${baseClass}__row`,\n fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div\n id={`${parentPath.split('.').join('-')}-row-${rowIndex}`}\n key={`${parentPath}-row-${row.id}`}\n ref={setNodeRef}\n style={{\n transform,\n transition,\n zIndex: isDragging ? 1 : undefined,\n }}\n >\n <Collapsible\n actions={\n !readOnly ? (\n <ArrayAction\n addRow={addRow}\n copyRow={copyRow}\n duplicateRow={duplicateRow}\n hasMaxRows={hasMaxRows}\n index={rowIndex}\n isSortable={isSortable}\n moveRow={moveRow}\n pasteRow={pasteRow}\n removeRow={removeRow}\n rowCount={rowCount}\n />\n ) : undefined\n }\n className={classNames}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n dragHandleProps={\n isSortable\n ? {\n id: row.id,\n attributes,\n listeners,\n }\n : undefined\n }\n header={\n <div className={`${baseClass}__row-header`}>\n {isLoading ? (\n <ShimmerEffect height=\"1rem\" width=\"8rem\" />\n ) : (\n <RowLabel\n CustomComponent={CustomRowLabel}\n label={fallbackLabel}\n path={path}\n rowNumber={rowIndex}\n />\n )}\n {fieldHasErrors && <ErrorPill count={errorCount} i18n={i18n} withMessage />}\n </div>\n }\n isCollapsed={row.collapsed}\n onToggle={(collapsed) => setCollapse(row.id, collapsed)}\n >\n {isLoading ? (\n <ShimmerEffect />\n ) : (\n <RenderFields\n className={`${baseClass}__fields`}\n fields={fields}\n forceRender={forceRender}\n margins=\"small\"\n parentIndexPath=\"\"\n parentPath={path}\n parentSchemaPath={schemaPath}\n permissions={permissions === true ? permissions : permissions?.fields}\n readOnly={readOnly}\n />\n )}\n </Collapsible>\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AASA,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,MAAW;AAIlB,SAASC,WAAW,QAAQ;AAC5B,SAASC,WAAW,QAAQ;AAC5B,SAASC,SAAS,QAAQ;AAC1B,SAASC,aAAa,QAAQ;AAC9B,SAASC,gBAAgB,QAAQ;AACjC,SAASC,YAAY,QAAQ;AAC7B,SAASC,QAAQ,QAAQ;AACzB,SAASC,iBAAiB,QAAQ;AAClC,SAASC,cAAc,QAAQ;AAC/B,OAAO;AAEP,MAAMC,SAAA,GAAY;AA4BlB,OAAO,MAAMC,QAAA,GAAoCC,EAAA;EAAA,MAAAC,CAAA,GAAAf,EAAA;EAAC;IAAAgB,MAAA;IAAAC,UAAA;IAAAC,OAAA;IAAAC,cAAA;IAAAC,YAAA;IAAAC,UAAA;IAAAC,MAAA;IAAAC,WAAA,EAAAC,EAAA;IAAAC,UAAA;IAAAC,UAAA;IAAAC,SAAA,EAAAC,kBAAA;IAAAC,UAAA;IAAAC,MAAA;IAAAC,SAAA;IAAAC,OAAA;IAAAC,UAAA;IAAAC,QAAA;IAAAC,IAAA;IAAAC,WAAA;IAAAC,QAAA;IAAAC,SAAA;IAAAC,GAAA;IAAAC,QAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,WAAA;IAAAC,UAAA;IAAAC,SAAA;IAAAC;EAAA,IAAAhC,EA8BjD;EAtBC,MAAAS,WAAA,GAAAC,EAAmB,KAAAuB,SAAA,WAAnBvB,EAAmB;EAuBnB,MAAAG,SAAA,GAAkBjB,iBAAA,CAAkBkB,kBAAA,KAAoB;EAExD;IAAAoB;EAAA,IAAiBrC,cAAA;EACjB,MAAAsC,YAAA,GAAqB1C,gBAAA;EAErB,MAAA2C,aAAA,GAAsB,GAAGjD,cAAA,CAAe6B,MAAA,CAAAqB,QAAA,EAAiBH,IAAA,KAASI,MAAA,CAAOX,QAAA,IAAW,EAAAY,QAAA,IAElF,MACC;EAEH,MAAAC,cAAA,GAAuBjC,UAAA,IAAa,IAAK4B,YAAA;EAIvC,MAAAM,EAAA,GAAAD,cAAA,GAAiB,GAAA1C,SAAA,mBAA+B,GAAG,GAAAA,SAAA,kBAA8B;EAAA,IAAA4C,EAAA;EAAA,IAAAzC,CAAA,QAAAwC,EAAA;IAFhEC,EAAA,IACjB,GAAA5C,SAAA,OAAmB,EACnB2C,EAAiF,EAAAE,MAAA,CAAAC,OAEzE;IAAA3C,CAAA,MAAAwC,EAAA;IAAAxC,CAAA,MAAAyC,EAAA;EAAA;IAAAA,EAAA,GAAAzC,CAAA;EAAA;EAJV,MAAA4C,UAAA,GAAmBH,EAIT,CAAAI,IAAA,CACF;EAIA,MAAAC,EAAA,MAAG5B,UAAA,CAAA6B,KAAA,CAAiB,KAAAF,IAAA,CAAU,YAAYnB,QAAA,EAAU;EAM9C,MAAAsB,EAAA,GAAArC,UAAA,OAAAqB,SAAiB;EAAA,IAAAiB,EAAA;EAAA,IAAAjD,CAAA,QAAAI,cAAA,IAAAJ,CAAA,QAAAC,MAAA,IAAAD,CAAA,QAAAE,UAAA,IAAAF,CAAA,QAAA4C,UAAA,IAAA5C,CAAA,QAAAG,OAAA,IAAAH,CAAA,QAAAK,YAAA,IAAAL,CAAA,QAAAM,UAAA,IAAAN,CAAA,QAAAmC,aAAA,IAAAnC,CAAA,SAAAuC,cAAA,IAAAvC,CAAA,SAAAO,MAAA,IAAAP,CAAA,SAAAQ,WAAA,IAAAR,CAAA,SAAAU,UAAA,IAAAV,CAAA,SAAAiC,IAAA,IAAAjC,CAAA,SAAAY,SAAA,IAAAZ,CAAA,SAAAc,UAAA,IAAAd,CAAA,SAAAgB,SAAA,IAAAhB,CAAA,SAAAiB,OAAA,IAAAjB,CAAA,SAAAkB,UAAA,IAAAlB,CAAA,SAAAmB,QAAA,IAAAnB,CAAA,SAAAoB,IAAA,IAAApB,CAAA,SAAAqB,WAAA,IAAArB,CAAA,SAAAsB,QAAA,IAAAtB,CAAA,SAAAuB,SAAA,IAAAvB,CAAA,SAAAwB,GAAA,CAAA0B,SAAA,IAAAlD,CAAA,SAAAwB,GAAA,CAAA2B,EAAA,IAAAnD,CAAA,SAAAyB,QAAA,IAAAzB,CAAA,SAAA0B,QAAA,IAAA1B,CAAA,SAAA2B,UAAA,IAAA3B,CAAA,SAAA4B,WAAA,IAAA5B,CAAA,SAAA6B,UAAA,IAAA7B,CAAA,SAAA8C,EAAA,IAAA9C,CAAA,SAAAgD,EAAA,IAAAhD,CAAA,SAAA8B,SAAA,IAAA9B,CAAA,SAAA+B,UAAA;IAAA,IAAAqB,EAAA;IAAA,IAAApD,CAAA,SAAAwB,GAAA,CAAA2B,EAAA,IAAAnD,CAAA,SAAA4B,WAAA;MA+CfwB,EAAA,GAAAF,SAAA,IAAetB,WAAA,CAAYJ,GAAA,CAAA2B,EAAA,EAAQD,SAAA;MAAAlD,CAAA,OAAAwB,GAAA,CAAA2B,EAAA;MAAAnD,CAAA,OAAA4B,WAAA;MAAA5B,CAAA,OAAAoD,EAAA;IAAA;MAAAA,EAAA,GAAApD,CAAA;IAAA;IAtDjDiD,EAAA,GAAAI,IAAA,CAAC;MAAAF,EAAA,EACKL,EAAoD;MAAAQ,GAAA,EAEnDzB,UAAA;MAAA0B,KAAA;QAAAzB,SAAA;QAAAC,UAAA;QAAAyB,MAAA,EAIKR;MAAiB;MAAAS,QAAA,EAG3BJ,IAAA,CAAAhE,WAAA;QAAAqE,OAAA,EAEI,CAACpC,QAAA,GACC+B,IAAA,CAAAjE,WAAA;UAAAa,MAAA;UAAAE,OAAA;UAAAE,YAAA;UAAAK,UAAA;UAAAiD,KAAA,EAKSjC,QAAA;UAAAZ,UAAA;UAAAG,OAAA;UAAAE,QAAA;UAAAI,SAAA;UAAAE;QAAA,C,aAOP;QAAAmC,SAAA,EAEKhB,UAAA;QAAAiB,gBAAA,EACOtB,cAAA,GAAiB,UAAU;QAAAuB,eAAA,EAE3ChD,UAAA;UAAAqC,EAAA,EAEU3B,GAAA,CAAA2B,EAAA;UAAAjD,UAAA;UAAAc;QAAA,IAAAgB,SAIN;QAAA+B,MAAA,EAGJC,KAAA,CAAC;UAAAJ,SAAA,EAAe,GAAA/D,SAAA,cAA0B;UAAA4D,QAAA,GACvC7C,SAAA,GACCyC,IAAA,CAAA9D,aAAA;YAAA0E,MAAA,EAAsB;YAAAC,KAAA,EAAa;UAAA,C,IAEnCb,IAAA,CAAA3D,QAAA;YAAAyE,eAAA,EACmB/D,cAAA;YAAAgE,KAAA,EACVjC,aAAA;YAAAf,IAAA;YAAAiD,SAAA,EAEI3C;UAAA,C,GAGda,cAAA,IAAkBc,IAAA,CAAA/D,SAAA;YAAAgF,KAAA,EAAkBhE,UAAA;YAAA2B,IAAA;YAAAsC,WAAA;UAAA,C;;qBAG5B/C,GAAA,CAAA0B,SAAA;QAAAsB,QAAA,EACHpB,EAAmC;QAAAK,QAAA,EAE5C7C,SAAA,GACCyC,IAAA,CAAA9D,aAAA,IAAC,IAED8D,IAAA,CAAA5D,YAAA;UAAAmE,SAAA,EACa,GAAA/D,SAAA,UAAsB;UAAAU,MAAA;UAAAC,WAAA;UAAAiE,OAAA,EAGzB;UAAAC,eAAA,EACQ;UAAAxD,UAAA,EACJE,IAAA;UAAAuD,gBAAA,EACMhD,UAAA;UAAAN,WAAA,EACLA,WAAA,SAAgB,GAAOA,WAAA,GAAcA,WAAA,EAAAd,MAAa;UAAAe;QAAA,C;;OAjEhE,GAAGJ,UAAA,QAAkBM,GAAA,CAAA2B,EAAA,EAAQ;IAAAnD,CAAA,MAAAI,cAAA;IAAAJ,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAE,UAAA;IAAAF,CAAA,MAAA4C,UAAA;IAAA5C,CAAA,MAAAG,OAAA;IAAAH,CAAA,MAAAK,YAAA;IAAAL,CAAA,MAAAM,UAAA;IAAAN,CAAA,MAAAmC,aAAA;IAAAnC,CAAA,OAAAuC,cAAA;IAAAvC,CAAA,OAAAO,MAAA;IAAAP,CAAA,OAAAQ,WAAA;IAAAR,CAAA,OAAAU,UAAA;IAAAV,CAAA,OAAAiC,IAAA;IAAAjC,CAAA,OAAAY,SAAA;IAAAZ,CAAA,OAAAc,UAAA;IAAAd,CAAA,OAAAgB,SAAA;IAAAhB,CAAA,OAAAiB,OAAA;IAAAjB,CAAA,OAAAkB,UAAA;IAAAlB,CAAA,OAAAmB,QAAA;IAAAnB,CAAA,OAAAoB,IAAA;IAAApB,CAAA,OAAAqB,WAAA;IAAArB,CAAA,OAAAsB,QAAA;IAAAtB,CAAA,OAAAuB,SAAA;IAAAvB,CAAA,OAAAwB,GAAA,CAAA0B,SAAA;IAAAlD,CAAA,OAAAwB,GAAA,CAAA2B,EAAA;IAAAnD,CAAA,OAAAyB,QAAA;IAAAzB,CAAA,OAAA0B,QAAA;IAAA1B,CAAA,OAAA2B,UAAA;IAAA3B,CAAA,OAAA4B,WAAA;IAAA5B,CAAA,OAAA6B,UAAA;IAAA7B,CAAA,OAAA8C,EAAA;IAAA9C,CAAA,OAAAgD,EAAA;IAAAhD,CAAA,OAAA8B,SAAA;IAAA9B,CAAA,OAAA+B,UAAA;IAAA/B,CAAA,OAAAiD,EAAA;EAAA;IAAAA,EAAA,GAAAjD,CAAA;EAAA;EAAA,OAFpCiD,EAEoC;AAAA,CAwExC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ArrayRow.js","names":["getTranslation","React","ArrayAction","Collapsible","ErrorPill","ShimmerEffect","useFormSubmitted","RenderFields","RowLabel","useThrottledValue","useTranslation","baseClass","ArrayRow","props","addRow","copyRow","CustomRowLabel","duplicateRow","errorCount","fields","forceRender","hasMaxRows","isLoading","isLoadingFromProps","isSortable","labels","moveRow","parentPath","pasteRow","path","permissions","readOnly","ref","removeRow","row","rowCount","rowIndex","schemaPath","setCollapse","showActions","style","i18n","hasSubmitted","fallbackLabel","singular","String","padStart","fieldHasErrors","classNames","filter","Boolean","join","_jsx","id","split","zIndex","isDragging","undefined","actions","index","className","collapsibleStyle","dragHandleProps","attributes","dragHandleAttributes","listeners","dragHandleListeners","header","_jsxs","height","width","CustomComponent","label","rowNumber","count","withMessage","isCollapsed","collapsed","onToggle","margins","parentIndexPath","parentSchemaPath"],"sources":["../../../src/fields/Array/ArrayRow.tsx"],"sourcesContent":["'use client'\nimport type {\n ArrayField,\n ClientComponentProps,\n ClientField,\n Row,\n SanitizedFieldPermissions,\n} from 'payload'\nimport type { CSSProperties } from 'react'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { UseDraggableSortableReturn } from '../../elements/DraggableSortable/useDraggableSortable/types.js'\n\nimport { ArrayAction } from '../../elements/ArrayAction/index.js'\nimport { Collapsible } from '../../elements/Collapsible/index.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { ShimmerEffect } from '../../elements/ShimmerEffect/index.js'\nimport { useFormSubmitted } from '../../forms/Form/context.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { RowLabel } from '../../forms/RowLabel/index.js'\nimport { useThrottledValue } from '../../hooks/useThrottledValue.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'array-field'\n\ntype ArrayRowProps = {\n readonly addRow?: (rowIndex: number) => Promise<void> | void\n readonly copyRow?: (rowIndex: number) => void\n readonly CustomRowLabel?: React.ReactNode\n readonly duplicateRow?: (rowIndex: number) => void\n readonly errorCount: number\n readonly fields: ClientField[]\n readonly hasMaxRows?: boolean\n readonly isLoading?: boolean\n readonly isSortable?: boolean\n readonly labels: Partial<ArrayField['labels']>\n readonly moveRow?: (fromIndex: number, toIndex: number) => void\n readonly parentPath: string\n readonly pasteRow?: (rowIndex: number) => void\n readonly path: string\n readonly permissions: SanitizedFieldPermissions\n readonly readOnly?: boolean\n readonly ref?: React.Ref<HTMLDivElement>\n readonly removeRow?: (rowIndex: number) => void\n readonly row: Row\n readonly rowCount: number\n readonly rowIndex: number\n readonly schemaPath: string\n readonly setCollapse: (rowID: string, collapsed: boolean) => void\n readonly showActions?: boolean\n readonly style?: CSSProperties\n} & (\n | {\n readonly dragHandleAttributes?: React.HTMLAttributes<HTMLElement>\n readonly dragHandleListeners?: UseDraggableSortableReturn['listeners']\n readonly isDragging?: UseDraggableSortableReturn['isDragging']\n readonly isSortable: true\n }\n | {\n readonly isSortable?: false\n }\n) &\n Pick<ClientComponentProps, 'forceRender'>\n\nexport const ArrayRow: React.FC<ArrayRowProps> = (props) => {\n const {\n addRow,\n copyRow,\n CustomRowLabel,\n duplicateRow,\n errorCount,\n fields,\n forceRender = false,\n hasMaxRows,\n isLoading: isLoadingFromProps,\n isSortable,\n labels,\n moveRow,\n parentPath,\n pasteRow,\n path,\n permissions,\n readOnly,\n ref,\n removeRow,\n row,\n rowCount,\n rowIndex,\n schemaPath,\n setCollapse,\n showActions,\n style,\n } = props\n\n const isLoading = useThrottledValue(isLoadingFromProps, 500)\n\n const { i18n } = useTranslation()\n const hasSubmitted = useFormSubmitted()\n\n const fallbackLabel = `${getTranslation(labels.singular, i18n)} ${String(rowIndex + 1).padStart(\n 2,\n '0',\n )}`\n\n const fieldHasErrors = errorCount > 0 && hasSubmitted\n\n const classNames = [\n `${baseClass}__row`,\n fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div\n id={`${parentPath.split('.').join('-')}-row-${rowIndex}`}\n key={`${parentPath}-row-${row.id}`}\n ref={ref}\n style={{\n ...(style || {}),\n zIndex: isSortable && props?.isDragging ? 1 : undefined,\n }}\n >\n <Collapsible\n actions={\n !readOnly && showActions !== false ? (\n <ArrayAction\n addRow={addRow}\n copyRow={copyRow}\n duplicateRow={duplicateRow}\n hasMaxRows={hasMaxRows}\n index={rowIndex}\n isSortable={isSortable}\n moveRow={moveRow}\n pasteRow={pasteRow}\n removeRow={removeRow}\n rowCount={rowCount}\n />\n ) : undefined\n }\n className={classNames}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n dragHandleProps={\n isSortable\n ? {\n id: row.id,\n attributes: props?.dragHandleAttributes,\n listeners: props?.dragHandleListeners,\n }\n : undefined\n }\n header={\n <div className={`${baseClass}__row-header`}>\n {isLoading ? (\n <ShimmerEffect height=\"1rem\" width=\"8rem\" />\n ) : (\n <RowLabel\n CustomComponent={CustomRowLabel}\n label={fallbackLabel}\n path={path}\n rowNumber={rowIndex}\n />\n )}\n {fieldHasErrors && <ErrorPill count={errorCount} i18n={i18n} withMessage />}\n </div>\n }\n isCollapsed={row.collapsed}\n onToggle={(collapsed) => setCollapse(row.id, collapsed)}\n >\n {isLoading ? (\n <ShimmerEffect />\n ) : (\n <RenderFields\n className={`${baseClass}__fields`}\n fields={fields}\n forceRender={forceRender}\n margins=\"small\"\n parentIndexPath=\"\"\n parentPath={path}\n parentSchemaPath={schemaPath}\n permissions={permissions === true ? permissions : permissions?.fields}\n readOnly={readOnly}\n />\n )}\n </Collapsible>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Array/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,yBAAyB,EAG1B,MAAM,SAAS,CAAA;AAGhB,OAAO,KAAyC,MAAM,OAAO,CAAA;AAiC7D,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Array/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,yBAAyB,EAG1B,MAAM,SAAS,CAAA;AAGhB,OAAO,KAAyC,MAAM,OAAO,CAAA;AAiC7D,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,mBAAmB,EAAE,yBAgcjC,CAAA;AAED,eAAO,MAAM,UAAU;;;;+EAAqC,CAAA"}
|
|
@@ -380,16 +380,18 @@ export const ArrayFieldComponent = props => {
|
|
|
380
380
|
return /*#__PURE__*/_jsx(DraggableSortableItem, {
|
|
381
381
|
disabled: readOnly || disabled || !isSortable,
|
|
382
382
|
id: rowID_0,
|
|
383
|
-
children:
|
|
384
|
-
...draggableSortableItemProps,
|
|
383
|
+
children: dragProps => /*#__PURE__*/_jsx(ArrayRow, {
|
|
385
384
|
addRow: addRow,
|
|
386
385
|
copyRow: copyRow,
|
|
387
386
|
CustomRowLabel: rows?.[i]?.customComponents?.RowLabel,
|
|
387
|
+
dragHandleAttributes: dragProps?.attributes,
|
|
388
|
+
dragHandleListeners: dragProps?.listeners,
|
|
388
389
|
duplicateRow: duplicateRow,
|
|
389
390
|
errorCount: rowErrorCount,
|
|
390
391
|
fields: fields,
|
|
391
392
|
forceRender: forceRender,
|
|
392
393
|
hasMaxRows: hasMaxRows,
|
|
394
|
+
isDragging: dragProps?.isDragging,
|
|
393
395
|
isLoading: isLoading,
|
|
394
396
|
isSortable: isSortable,
|
|
395
397
|
labels: labels,
|
|
@@ -399,12 +401,17 @@ export const ArrayFieldComponent = props => {
|
|
|
399
401
|
path: rowPath,
|
|
400
402
|
permissions: permissions,
|
|
401
403
|
readOnly: readOnly || disabled,
|
|
404
|
+
ref: dragProps?.setNodeRef,
|
|
402
405
|
removeRow: removeRow,
|
|
403
406
|
row: rowData,
|
|
404
407
|
rowCount: rows?.length,
|
|
405
408
|
rowIndex: i,
|
|
406
409
|
schemaPath: schemaPath,
|
|
407
|
-
setCollapse: setCollapse
|
|
410
|
+
setCollapse: setCollapse,
|
|
411
|
+
style: {
|
|
412
|
+
transform: dragProps?.transform,
|
|
413
|
+
transition: dragProps?.transition
|
|
414
|
+
}
|
|
408
415
|
})
|
|
409
416
|
}, rowID_0);
|
|
410
417
|
}), !valid && /*#__PURE__*/_jsxs(React.Fragment, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getTranslation","React","Fragment","useCallback","useMemo","toast","Banner","Button","clipboardCopy","clipboardPaste","ClipboardAction","mergeFormStateFromClipboard","reduceFormStateByPath","DraggableSortableItem","DraggableSortable","ErrorPill","RenderCustomComponent","FieldDescription","FieldError","FieldLabel","useForm","useFormSubmitted","extractRowsAndCollapsedIDs","toggleAllRows","NullifyLocaleField","useField","withCondition","useConfig","useDocumentInfo","useLocale","useTranslation","scrollToID","mergeFieldStyles","fieldBaseClass","ArrayRow","baseClass","ArrayFieldComponent","props","field","name","type","admin","className","description","isSortable","fields","label","localized","maxRows","minRows","minRowsProp","required","forceRender","path","pathFromProps","permissions","readOnly","schemaPath","schemaPathFromProps","validate","setDocFieldPreferences","addFieldRow","dispatchFields","getFields","moveFieldRow","removeFieldRow","replaceState","setModified","submitted","code","locale","i18n","t","config","localization","editingDefaultLocale","fallback","defaultLocale","getLabels","p","labels","plural","singular","undefined","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","errorPaths","rows","showError","valid","hasRows","potentiallyStalePath","addRow","rowIndex","setTimeout","duplicateRow","removeRow","moveRow","moveFromIndex","moveToIndex","toggleCollapseAll","collapsed","collapsedIDs","updatedRows","setCollapse","rowID","copyRow","formState","clipboardResult","getDataToCopy","error","success","pasteRow","pasteArgs","onPaste","dataFromClipboard","newState","schemaFields","pasteField","hasMaxRows","length","fieldErrorCount","fieldHasErrors","showRequired","showMinRows","styles","_jsxs","filter","Boolean","join","id","replace","style","_jsx","CustomComponent","Fallback","as","count","withMessage","onClick","allowCopy","allowPaste","fieldValue","ids","map","row","onDragEnd","rowData","i","isLoading","rowPath","rowErrorCount","errorPath","startsWith","draggableSortableItemProps","CustomRowLabel","RowLabel","errorCount","parentPath","rowCount","buttonStyle","icon","iconPosition","iconStyle","ArrayField"],"sources":["../../../src/fields/Array/index.tsx"],"sourcesContent":["'use client'\nimport type {\n ArrayFieldClientComponent,\n ArrayFieldClientProps,\n ArrayField as ArrayFieldType,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback, useMemo } from 'react'\nimport { toast } from 'sonner'\n\nimport type { ClipboardPasteData } from '../../elements/ClipboardAction/types.js'\n\nimport { Banner } from '../../elements/Banner/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { clipboardCopy, clipboardPaste } from '../../elements/ClipboardAction/clipboardUtilities.js'\nimport { ClipboardAction } from '../../elements/ClipboardAction/index.js'\nimport {\n mergeFormStateFromClipboard,\n reduceFormStateByPath,\n} from '../../elements/ClipboardAction/mergeFormStateFromClipboard.js'\nimport { DraggableSortableItem } from '../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport { DraggableSortable } from '../../elements/DraggableSortable/index.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useForm, useFormSubmitted } from '../../forms/Form/context.js'\nimport { extractRowsAndCollapsedIDs, toggleAllRows } from '../../forms/Form/rowHelpers.js'\nimport { NullifyLocaleField } from '../../forms/NullifyField/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { scrollToID } from '../../utilities/scrollToID.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { ArrayRow } from './ArrayRow.js'\nimport './index.scss'\n\nconst baseClass = 'array-field'\n\nexport const ArrayFieldComponent: ArrayFieldClientComponent = (props) => {\n const {\n field,\n field: {\n name,\n type,\n admin: { className, description, isSortable = true } = {},\n fields,\n label,\n localized,\n maxRows,\n minRows: minRowsProp,\n required,\n },\n forceRender = false,\n path: pathFromProps,\n permissions,\n readOnly,\n schemaPath: schemaPathFromProps,\n validate,\n } = props\n\n const schemaPath = schemaPathFromProps ?? name\n\n const minRows = minRowsProp ?? (required ? 1 : 0)\n\n const { setDocFieldPreferences } = useDocumentInfo()\n const {\n addFieldRow,\n dispatchFields,\n getFields,\n moveFieldRow,\n removeFieldRow,\n replaceState,\n setModified,\n } = useForm()\n const submitted = useFormSubmitted()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const {\n config: { localization },\n } = useConfig()\n\n const editingDefaultLocale = (() => {\n if (localization && localization.fallback) {\n const defaultLocale = localization.defaultLocale\n return locale === defaultLocale\n }\n\n return true\n })()\n\n // Handle labeling for Arrays, Global Arrays, and Blocks\n const getLabels = (p: ArrayFieldClientProps): Partial<ArrayFieldType['labels']> => {\n if ('labels' in p && p?.labels) {\n return p.labels\n }\n\n if ('labels' in p.field && p.field.labels) {\n return { plural: p.field.labels?.plural, singular: p.field.labels?.singular }\n }\n\n if ('label' in p.field && p.field.label) {\n return { plural: undefined, singular: p.field.label }\n }\n\n return { plural: t('general:rows'), singular: t('general:row') }\n }\n\n const labels = getLabels(props)\n\n const memoizedValidate = useCallback(\n (value, options) => {\n // alternative locales can be null\n if (!editingDefaultLocale && value === null) {\n return true\n }\n\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxRows, minRows, required })\n }\n },\n [maxRows, minRows, required, validate, editingDefaultLocale],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n errorPaths,\n path,\n rows = [],\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const addRow = useCallback(\n (rowIndex: number) => {\n addFieldRow({\n path,\n rowIndex,\n schemaPath,\n })\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex}`)\n }, 0)\n },\n [addFieldRow, path, schemaPath],\n )\n\n const duplicateRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({ type: 'DUPLICATE_ROW', path, rowIndex })\n\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex}`)\n }, 0)\n },\n [dispatchFields, path, setModified],\n )\n\n const removeRow = useCallback(\n (rowIndex: number) => {\n removeFieldRow({ path, rowIndex })\n },\n [removeFieldRow, path],\n )\n\n const moveRow = useCallback(\n (moveFromIndex: number, moveToIndex: number) => {\n moveFieldRow({\n moveFromIndex,\n moveToIndex,\n path,\n })\n },\n [path, moveFieldRow],\n )\n\n const toggleCollapseAll = useCallback(\n (collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = toggleAllRows({\n collapsed,\n rows,\n })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n dispatchFields({ type: 'SET_ALL_ROWS_COLLAPSED', path, updatedRows })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const setCollapse = useCallback(\n (rowID: string, collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = extractRowsAndCollapsedIDs({\n collapsed,\n rowID,\n rows,\n })\n\n dispatchFields({ type: 'SET_ROW_COLLAPSED', path, updatedRows })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const copyRow = useCallback(\n (rowIndex: number) => {\n const formState = { ...getFields() }\n const clipboardResult = clipboardCopy({\n type,\n fields,\n getDataToCopy: () =>\n reduceFormStateByPath({\n formState,\n path,\n rowIndex,\n }),\n path,\n rowIndex,\n t,\n })\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n } else {\n toast.success(t('general:copied'))\n }\n },\n [fields, getFields, path, t, type],\n )\n\n const pasteRow = useCallback(\n (rowIndex: number) => {\n const formState = { ...getFields() }\n const pasteArgs = {\n onPaste: (dataFromClipboard: ClipboardPasteData) => {\n const newState = mergeFormStateFromClipboard({\n dataFromClipboard,\n formState,\n path,\n rowIndex,\n })\n replaceState(newState)\n setModified(true)\n },\n path,\n schemaFields: fields,\n t,\n }\n\n const clipboardResult = clipboardPaste(pasteArgs)\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n }\n },\n [fields, getFields, path, replaceState, setModified, t],\n )\n\n const pasteField = useCallback(\n (dataFromClipboard: ClipboardPasteData) => {\n const formState = { ...getFields() }\n const newState = mergeFormStateFromClipboard({\n dataFromClipboard,\n formState,\n path,\n })\n replaceState(newState)\n setModified(true)\n },\n [getFields, path, replaceState, setModified],\n )\n\n const getDataToCopy = useCallback(\n () =>\n reduceFormStateByPath({\n formState: { ...getFields() },\n path,\n }),\n [getFields, path],\n )\n\n const hasMaxRows = maxRows && rows.length >= maxRows\n\n const fieldErrorCount = errorPaths.length\n const fieldHasErrors = submitted && errorPaths.length > 0\n\n const showRequired = (readOnly || disabled) && rows.length === 0\n const showMinRows = (rows.length && rows.length < minRows) || (required && rows.length === 0)\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n fieldHasErrors ? `${baseClass}--has-error` : `${baseClass}--has-no-error`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path.replace(/\\./g, '__')}`}\n style={styles}\n >\n {showError && (\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n )}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__header-content`}>\n <h3 className={`${baseClass}__title`}>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel\n as=\"span\"\n label={label}\n localized={localized}\n path={path}\n required={required}\n />\n }\n />\n </h3>\n {fieldHasErrors && fieldErrorCount > 0 && (\n <ErrorPill count={fieldErrorCount} i18n={i18n} withMessage />\n )}\n </div>\n <ul className={`${baseClass}__header-actions`}>\n {rows?.length > 0 && (\n <Fragment>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(true)}\n type=\"button\"\n >\n {t('fields:collapseAll')}\n </button>\n </li>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(false)}\n type=\"button\"\n >\n {t('fields:showAll')}\n </button>\n </li>\n </Fragment>\n )}\n <li>\n <ClipboardAction\n allowCopy={rows?.length > 0}\n allowPaste={!readOnly}\n className={`${baseClass}__header-action`}\n disabled={disabled}\n fields={fields}\n getDataToCopy={getDataToCopy}\n onPaste={pasteField}\n path={path}\n type={type}\n />\n </li>\n </ul>\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </header>\n <NullifyLocaleField\n fieldValue={value}\n localized={localized}\n path={path}\n readOnly={readOnly}\n />\n {BeforeInput}\n {(rows?.length > 0 || (!valid && (showRequired || showMinRows))) && (\n <DraggableSortable\n className={`${baseClass}__draggable-rows`}\n ids={rows.map((row) => row.id)}\n onDragEnd={({ moveFromIndex, moveToIndex }) => moveRow(moveFromIndex, moveToIndex)}\n >\n {rows.map((rowData, i) => {\n const { id: rowID, isLoading } = rowData\n\n const rowPath = `${path}.${i}`\n\n const rowErrorCount = errorPaths?.filter((errorPath) =>\n errorPath.startsWith(rowPath + '.'),\n ).length\n\n return (\n <DraggableSortableItem\n disabled={readOnly || disabled || !isSortable}\n id={rowID}\n key={rowID}\n >\n {(draggableSortableItemProps) => (\n <ArrayRow\n {...draggableSortableItemProps}\n addRow={addRow}\n copyRow={copyRow}\n CustomRowLabel={rows?.[i]?.customComponents?.RowLabel}\n duplicateRow={duplicateRow}\n errorCount={rowErrorCount}\n fields={fields}\n forceRender={forceRender}\n hasMaxRows={hasMaxRows}\n isLoading={isLoading}\n isSortable={isSortable}\n labels={labels}\n moveRow={moveRow}\n parentPath={path}\n pasteRow={pasteRow}\n path={rowPath}\n permissions={permissions}\n readOnly={readOnly || disabled}\n removeRow={removeRow}\n row={rowData}\n rowCount={rows?.length}\n rowIndex={i}\n schemaPath={schemaPath}\n setCollapse={setCollapse}\n />\n )}\n </DraggableSortableItem>\n )\n })}\n {!valid && (\n <React.Fragment>\n {showRequired && (\n <Banner>\n {t('validation:fieldHasNo', { label: getTranslation(labels.plural, i18n) })}\n </Banner>\n )}\n {showMinRows && (\n <Banner type=\"error\">\n {t('validation:requiresAtLeast', {\n count: minRows,\n label:\n getTranslation(minRows > 1 ? labels.plural : labels.singular, i18n) ||\n t(minRows > 1 ? 'general:rows' : 'general:row'),\n })}\n </Banner>\n )}\n </React.Fragment>\n )}\n </DraggableSortable>\n )}\n {!hasMaxRows && !readOnly && (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-row`}\n disabled={disabled}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n void addRow(value || 0)\n }}\n >\n {t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })}\n </Button>\n )}\n {AfterInput}\n </div>\n )\n}\n\nexport const ArrayField = withCondition(ArrayFieldComponent)\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getTranslation","React","Fragment","useCallback","useMemo","toast","Banner","Button","clipboardCopy","clipboardPaste","ClipboardAction","mergeFormStateFromClipboard","reduceFormStateByPath","DraggableSortableItem","DraggableSortable","ErrorPill","RenderCustomComponent","FieldDescription","FieldError","FieldLabel","useForm","useFormSubmitted","extractRowsAndCollapsedIDs","toggleAllRows","NullifyLocaleField","useField","withCondition","useConfig","useDocumentInfo","useLocale","useTranslation","scrollToID","mergeFieldStyles","fieldBaseClass","ArrayRow","baseClass","ArrayFieldComponent","props","field","name","type","admin","className","description","isSortable","fields","label","localized","maxRows","minRows","minRowsProp","required","forceRender","path","pathFromProps","permissions","readOnly","schemaPath","schemaPathFromProps","validate","setDocFieldPreferences","addFieldRow","dispatchFields","getFields","moveFieldRow","removeFieldRow","replaceState","setModified","submitted","code","locale","i18n","t","config","localization","editingDefaultLocale","fallback","defaultLocale","getLabels","p","labels","plural","singular","undefined","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","errorPaths","rows","showError","valid","hasRows","potentiallyStalePath","addRow","rowIndex","setTimeout","duplicateRow","removeRow","moveRow","moveFromIndex","moveToIndex","toggleCollapseAll","collapsed","collapsedIDs","updatedRows","setCollapse","rowID","copyRow","formState","clipboardResult","getDataToCopy","error","success","pasteRow","pasteArgs","onPaste","dataFromClipboard","newState","schemaFields","pasteField","hasMaxRows","length","fieldErrorCount","fieldHasErrors","showRequired","showMinRows","styles","_jsxs","filter","Boolean","join","id","replace","style","_jsx","CustomComponent","Fallback","as","count","withMessage","onClick","allowCopy","allowPaste","fieldValue","ids","map","row","onDragEnd","rowData","i","isLoading","rowPath","rowErrorCount","errorPath","startsWith","dragProps","CustomRowLabel","RowLabel","dragHandleAttributes","attributes","dragHandleListeners","listeners","errorCount","isDragging","parentPath","ref","setNodeRef","rowCount","transform","transition","buttonStyle","icon","iconPosition","iconStyle","ArrayField"],"sources":["../../../src/fields/Array/index.tsx"],"sourcesContent":["'use client'\nimport type {\n ArrayFieldClientComponent,\n ArrayFieldClientProps,\n ArrayField as ArrayFieldType,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback, useMemo } from 'react'\nimport { toast } from 'sonner'\n\nimport type { ClipboardPasteData } from '../../elements/ClipboardAction/types.js'\n\nimport { Banner } from '../../elements/Banner/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { clipboardCopy, clipboardPaste } from '../../elements/ClipboardAction/clipboardUtilities.js'\nimport { ClipboardAction } from '../../elements/ClipboardAction/index.js'\nimport {\n mergeFormStateFromClipboard,\n reduceFormStateByPath,\n} from '../../elements/ClipboardAction/mergeFormStateFromClipboard.js'\nimport { DraggableSortableItem } from '../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport { DraggableSortable } from '../../elements/DraggableSortable/index.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useForm, useFormSubmitted } from '../../forms/Form/context.js'\nimport { extractRowsAndCollapsedIDs, toggleAllRows } from '../../forms/Form/rowHelpers.js'\nimport { NullifyLocaleField } from '../../forms/NullifyField/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { scrollToID } from '../../utilities/scrollToID.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { ArrayRow } from './ArrayRow.js'\nimport './index.scss'\n\nconst baseClass = 'array-field'\n\nexport const ArrayFieldComponent: ArrayFieldClientComponent = (props) => {\n const {\n field,\n field: {\n name,\n type,\n admin: { className, description, isSortable = true } = {},\n fields,\n label,\n localized,\n maxRows,\n minRows: minRowsProp,\n required,\n },\n forceRender = false,\n path: pathFromProps,\n permissions,\n readOnly,\n schemaPath: schemaPathFromProps,\n validate,\n } = props\n\n const schemaPath = schemaPathFromProps ?? name\n\n const minRows = minRowsProp ?? (required ? 1 : 0)\n\n const { setDocFieldPreferences } = useDocumentInfo()\n const {\n addFieldRow,\n dispatchFields,\n getFields,\n moveFieldRow,\n removeFieldRow,\n replaceState,\n setModified,\n } = useForm()\n const submitted = useFormSubmitted()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const {\n config: { localization },\n } = useConfig()\n\n const editingDefaultLocale = (() => {\n if (localization && localization.fallback) {\n const defaultLocale = localization.defaultLocale\n return locale === defaultLocale\n }\n\n return true\n })()\n\n // Handle labeling for Arrays, Global Arrays, and Blocks\n const getLabels = (p: ArrayFieldClientProps): Partial<ArrayFieldType['labels']> => {\n if ('labels' in p && p?.labels) {\n return p.labels\n }\n\n if ('labels' in p.field && p.field.labels) {\n return { plural: p.field.labels?.plural, singular: p.field.labels?.singular }\n }\n\n if ('label' in p.field && p.field.label) {\n return { plural: undefined, singular: p.field.label }\n }\n\n return { plural: t('general:rows'), singular: t('general:row') }\n }\n\n const labels = getLabels(props)\n\n const memoizedValidate = useCallback(\n (value, options) => {\n // alternative locales can be null\n if (!editingDefaultLocale && value === null) {\n return true\n }\n\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxRows, minRows, required })\n }\n },\n [maxRows, minRows, required, validate, editingDefaultLocale],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n errorPaths,\n path,\n rows = [],\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const addRow = useCallback(\n (rowIndex: number) => {\n addFieldRow({\n path,\n rowIndex,\n schemaPath,\n })\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex}`)\n }, 0)\n },\n [addFieldRow, path, schemaPath],\n )\n\n const duplicateRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({ type: 'DUPLICATE_ROW', path, rowIndex })\n\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex}`)\n }, 0)\n },\n [dispatchFields, path, setModified],\n )\n\n const removeRow = useCallback(\n (rowIndex: number) => {\n removeFieldRow({ path, rowIndex })\n },\n [removeFieldRow, path],\n )\n\n const moveRow = useCallback(\n (moveFromIndex: number, moveToIndex: number) => {\n moveFieldRow({\n moveFromIndex,\n moveToIndex,\n path,\n })\n },\n [path, moveFieldRow],\n )\n\n const toggleCollapseAll = useCallback(\n (collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = toggleAllRows({\n collapsed,\n rows,\n })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n dispatchFields({ type: 'SET_ALL_ROWS_COLLAPSED', path, updatedRows })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const setCollapse = useCallback(\n (rowID: string, collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = extractRowsAndCollapsedIDs({\n collapsed,\n rowID,\n rows,\n })\n\n dispatchFields({ type: 'SET_ROW_COLLAPSED', path, updatedRows })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const copyRow = useCallback(\n (rowIndex: number) => {\n const formState = { ...getFields() }\n const clipboardResult = clipboardCopy({\n type,\n fields,\n getDataToCopy: () =>\n reduceFormStateByPath({\n formState,\n path,\n rowIndex,\n }),\n path,\n rowIndex,\n t,\n })\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n } else {\n toast.success(t('general:copied'))\n }\n },\n [fields, getFields, path, t, type],\n )\n\n const pasteRow = useCallback(\n (rowIndex: number) => {\n const formState = { ...getFields() }\n const pasteArgs = {\n onPaste: (dataFromClipboard: ClipboardPasteData) => {\n const newState = mergeFormStateFromClipboard({\n dataFromClipboard,\n formState,\n path,\n rowIndex,\n })\n replaceState(newState)\n setModified(true)\n },\n path,\n schemaFields: fields,\n t,\n }\n\n const clipboardResult = clipboardPaste(pasteArgs)\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n }\n },\n [fields, getFields, path, replaceState, setModified, t],\n )\n\n const pasteField = useCallback(\n (dataFromClipboard: ClipboardPasteData) => {\n const formState = { ...getFields() }\n const newState = mergeFormStateFromClipboard({\n dataFromClipboard,\n formState,\n path,\n })\n replaceState(newState)\n setModified(true)\n },\n [getFields, path, replaceState, setModified],\n )\n\n const getDataToCopy = useCallback(\n () =>\n reduceFormStateByPath({\n formState: { ...getFields() },\n path,\n }),\n [getFields, path],\n )\n\n const hasMaxRows = maxRows && rows.length >= maxRows\n\n const fieldErrorCount = errorPaths.length\n const fieldHasErrors = submitted && errorPaths.length > 0\n\n const showRequired = (readOnly || disabled) && rows.length === 0\n const showMinRows = (rows.length && rows.length < minRows) || (required && rows.length === 0)\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n fieldHasErrors ? `${baseClass}--has-error` : `${baseClass}--has-no-error`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path.replace(/\\./g, '__')}`}\n style={styles}\n >\n {showError && (\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n )}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__header-content`}>\n <h3 className={`${baseClass}__title`}>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel\n as=\"span\"\n label={label}\n localized={localized}\n path={path}\n required={required}\n />\n }\n />\n </h3>\n {fieldHasErrors && fieldErrorCount > 0 && (\n <ErrorPill count={fieldErrorCount} i18n={i18n} withMessage />\n )}\n </div>\n <ul className={`${baseClass}__header-actions`}>\n {rows?.length > 0 && (\n <Fragment>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(true)}\n type=\"button\"\n >\n {t('fields:collapseAll')}\n </button>\n </li>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(false)}\n type=\"button\"\n >\n {t('fields:showAll')}\n </button>\n </li>\n </Fragment>\n )}\n <li>\n <ClipboardAction\n allowCopy={rows?.length > 0}\n allowPaste={!readOnly}\n className={`${baseClass}__header-action`}\n disabled={disabled}\n fields={fields}\n getDataToCopy={getDataToCopy}\n onPaste={pasteField}\n path={path}\n type={type}\n />\n </li>\n </ul>\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </header>\n <NullifyLocaleField\n fieldValue={value}\n localized={localized}\n path={path}\n readOnly={readOnly}\n />\n {BeforeInput}\n {(rows?.length > 0 || (!valid && (showRequired || showMinRows))) && (\n <DraggableSortable\n className={`${baseClass}__draggable-rows`}\n ids={rows.map((row) => row.id)}\n onDragEnd={({ moveFromIndex, moveToIndex }) => moveRow(moveFromIndex, moveToIndex)}\n >\n {rows.map((rowData, i) => {\n const { id: rowID, isLoading } = rowData\n\n const rowPath = `${path}.${i}`\n\n const rowErrorCount = errorPaths?.filter((errorPath) =>\n errorPath.startsWith(rowPath + '.'),\n ).length\n\n return (\n <DraggableSortableItem\n disabled={readOnly || disabled || !isSortable}\n id={rowID}\n key={rowID}\n >\n {(dragProps) => (\n <ArrayRow\n addRow={addRow}\n copyRow={copyRow}\n CustomRowLabel={rows?.[i]?.customComponents?.RowLabel}\n dragHandleAttributes={dragProps?.attributes}\n dragHandleListeners={dragProps?.listeners}\n duplicateRow={duplicateRow}\n errorCount={rowErrorCount}\n fields={fields}\n forceRender={forceRender}\n hasMaxRows={hasMaxRows}\n isDragging={dragProps?.isDragging}\n isLoading={isLoading}\n isSortable={isSortable}\n labels={labels}\n moveRow={moveRow}\n parentPath={path}\n pasteRow={pasteRow}\n path={rowPath}\n permissions={permissions}\n readOnly={readOnly || disabled}\n ref={dragProps?.setNodeRef}\n removeRow={removeRow}\n row={rowData}\n rowCount={rows?.length}\n rowIndex={i}\n schemaPath={schemaPath}\n setCollapse={setCollapse}\n style={{\n transform: dragProps?.transform,\n transition: dragProps?.transition,\n }}\n />\n )}\n </DraggableSortableItem>\n )\n })}\n {!valid && (\n <React.Fragment>\n {showRequired && (\n <Banner>\n {t('validation:fieldHasNo', { label: getTranslation(labels.plural, i18n) })}\n </Banner>\n )}\n {showMinRows && (\n <Banner type=\"error\">\n {t('validation:requiresAtLeast', {\n count: minRows,\n label:\n getTranslation(minRows > 1 ? labels.plural : labels.singular, i18n) ||\n t(minRows > 1 ? 'general:rows' : 'general:row'),\n })}\n </Banner>\n )}\n </React.Fragment>\n )}\n </DraggableSortable>\n )}\n {!hasMaxRows && !readOnly && (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-row`}\n disabled={disabled}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n void addRow(value || 0)\n }}\n >\n {t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })}\n </Button>\n )}\n {AfterInput}\n </div>\n )\n}\n\nexport const ArrayField = withCondition(ArrayFieldComponent)\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/index.tsx"],"names":[],"mappings":"AAaA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAGnF,OAAO,KAAK,EAGV,SAAS,EAIV,MAAM,YAAY,CAAA;AAoCnB,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CA4xBpC,CAAA;AAED,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,OAAO,EACP,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,GACb,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,SAAS,EAAE,CAAA"}
|
package/dist/forms/Form/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
4
4
|
import { dequal } from 'dequal/lite'; // lite: no need for Map and Set support
|
|
5
5
|
import { useRouter } from 'next/navigation.js';
|
|
6
6
|
import { serialize } from 'object-to-formdata';
|
|
7
|
-
import { deepCopyObjectSimpleWithoutReactComponents, getDataByPath as getDataByPathFunc, getSiblingData as getSiblingDataFunc, reduceFieldsToValues, wait } from 'payload/shared';
|
|
7
|
+
import { deepCopyObjectSimpleWithoutReactComponents, getDataByPath as getDataByPathFunc, getSiblingData as getSiblingDataFunc, hasDraftValidationEnabled, reduceFieldsToValues, wait } from 'payload/shared';
|
|
8
8
|
import React, { useCallback, useEffect, useReducer, useRef, useState } from 'react';
|
|
9
9
|
import { toast } from 'sonner';
|
|
10
10
|
import { FieldErrorsToast } from '../../elements/Toasts/fieldErrors.js';
|
|
@@ -37,7 +37,7 @@ export const Form = props => {
|
|
|
37
37
|
getDocPreferences,
|
|
38
38
|
globalSlug
|
|
39
39
|
} = useDocumentInfo();
|
|
40
|
-
const validateDrafts = docConfig
|
|
40
|
+
const validateDrafts = hasDraftValidationEnabled(docConfig);
|
|
41
41
|
const {
|
|
42
42
|
action,
|
|
43
43
|
beforeSubmit,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["dequal","useRouter","serialize","deepCopyObjectSimpleWithoutReactComponents","getDataByPath","getDataByPathFunc","getSiblingData","getSiblingDataFunc","reduceFieldsToValues","wait","React","useCallback","useEffect","useReducer","useRef","useState","toast","FieldErrorsToast","useDebouncedEffect","useEffectEvent","useQueue","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useLocale","useOperation","useRouteTransition","useServerFunctions","useTranslation","useUploadHandlers","abortAndIgnore","handleAbortRef","requests","BackgroundProcessingContext","DocumentFormContext","FormContext","FormFieldsContext","FormWatchContext","InitializingContext","ModifiedContext","ProcessingContext","SubmittedContext","useDocumentForm","errorMessages","fieldReducer","initContextState","baseClass","Form","props","id","collectionSlug","docConfig","docPermissions","getDocPreferences","globalSlug","validateDrafts","versions","drafts","validate","action","beforeSubmit","children","className","disabled","disabledFromProps","disableSuccessStatus","disableValidationOnSubmit","el","handleResponse","initialState","isDocumentForm","isInitializing","initializingFromProps","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","documentForm","code","locale","i18n","t","refreshCookie","user","operation","queueTask","getFormState","startRouteTransition","getUploadHandler","config","setDisabled","isMounted","setIsMounted","modified","setModified","isValid","setIsValid","initializing","setInitializing","processing","setProcessing","backgroundProcessing","setBackgroundProcessing","setSubmitted","formRef","contextRef","abortResetFormRef","isFirstRenderRef","fieldsReducer","formState","dispatchFields","current","fields","prevFormState","validateForm","validatedFieldState","data","getData","validationPromises","Object","entries","map","path","field","validatedField","pathSegments","split","passesCondition","validationResult","valid","valueToValidate","value","rows","Array","isArray","blockData","event","preferences","req","payload","siblingData","errorMessage","Promise","all","type","state","submit","options","e","acceptValues","actionArg","context","disableFormWhileProcessing","disableSuccessStatusFromArgs","methodToUse","overrides","overridesFromArgs","skipValidation","disableToast","preventDefault","errorToast","successToast","promise","resolve","reject","hasFormSubmitAction","success","error","loading","stopPropagation","serializableFormState","revalidatedFormState","reduce","priorOnChange","beforeSubmitFn","result","every","key","formData","createFormData","mergeOverrideData","Boolean","res","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","newFormState","prevStateRef","serverState","push","message","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","_jsx","statusText","console","getFields","getField","dataFromArgs","file","upload","handler","filename","name","clientUploadContext","updateFilename","JSON","stringify","mimeType","size","dataToSerialize","_payload","indices","nullsAsUndefineds","reset","controller","docPreferences","newState","renderAllFields","schemaPath","signal","replaceState","addFieldRow","blockType","rowIndex","rowIndexArg","subFieldState","newRows","length","moveFieldRow","moveFromIndex","moveToIndex","removeFieldRow","replaceFieldRow","currentRows","abortOnChange","optimize","sanitize","classes","filter","join","executeOnChange","onChangeFn","DocumentFormContextComponent","Fragment","documentFormContextProps","El","noValidate","ref","Provider","useAllFormFields","useForm","useFormFields","useFormModified","useFormProcessing","useFormSubmitted","useWatchForm"],"sources":["../../../src/forms/Form/index.tsx"],"sourcesContent":["'use client'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { useRouter } from 'next/navigation.js'\nimport { serialize } from 'object-to-formdata'\nimport { type FormState, type PayloadRequest } from 'payload'\nimport {\n deepCopyObjectSimpleWithoutReactComponents,\n getDataByPath as getDataByPathFunc,\n getSiblingData as getSiblingDataFunc,\n reduceFieldsToValues,\n wait,\n} from 'payload/shared'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type {\n CreateFormData,\n Context as FormContextType,\n FormProps,\n GetDataByPath,\n Submit,\n SubmitOptions,\n} from './types.js'\n\nimport { FieldErrorsToast } from '../../elements/Toasts/fieldErrors.js'\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useQueue } from '../../hooks/useQueue.js'\nimport { useThrottledEffect } from '../../hooks/useThrottledEffect.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useUploadHandlers } from '../../providers/UploadHandlers/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { requests } from '../../utilities/api.js'\nimport {\n BackgroundProcessingContext,\n DocumentFormContext,\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n InitializingContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useDocumentForm,\n} from './context.js'\nimport { errorMessages } from './errorMessages.js'\nimport { fieldReducer } from './fieldReducer.js'\nimport { initContextState } from './initContextState.js'\n\nconst baseClass = 'form'\n\nexport const Form: React.FC<FormProps> = (props) => {\n const { id, collectionSlug, docConfig, docPermissions, getDocPreferences, globalSlug } =\n useDocumentInfo()\n\n const validateDrafts =\n docConfig?.versions?.drafts && typeof docConfig?.versions?.drafts === 'object'\n ? (docConfig.versions.drafts.validate ?? false)\n : false\n\n const {\n action,\n beforeSubmit,\n children,\n className,\n disabled: disabledFromProps,\n disableSuccessStatus,\n disableValidationOnSubmit,\n // fields: fieldsFromProps = collection?.fields || global?.fields,\n el,\n handleResponse,\n initialState, // fully formed initial field state\n isDocumentForm,\n isInitializing: initializingFromProps,\n onChange,\n onSubmit,\n onSuccess,\n redirect,\n submitted: submittedFromProps,\n uuid,\n waitForAutocomplete,\n } = props\n\n const method = 'method' in props ? props?.method : undefined\n\n const router = useRouter()\n\n const documentForm = useDocumentForm()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { refreshCookie, user } = useAuth()\n const operation = useOperation()\n const { queueTask } = useQueue()\n\n const { getFormState } = useServerFunctions()\n const { startRouteTransition } = useRouteTransition()\n const { getUploadHandler } = useUploadHandlers()\n\n const { config } = useConfig()\n\n const [disabled, setDisabled] = useState(disabledFromProps || false)\n const [isMounted, setIsMounted] = useState(false)\n const [modified, setModified] = useState(false)\n\n /**\n * Tracks wether the form state passes validation.\n * For example the state could be submitted but invalid as field errors have been returned.\n */\n const [isValid, setIsValid] = useState(true)\n const [initializing, setInitializing] = useState(initializingFromProps)\n\n const [processing, setProcessing] = useState(false)\n const [backgroundProcessing, setBackgroundProcessing] = useState(false)\n\n const [submitted, setSubmitted] = useState(false)\n const formRef = useRef<HTMLFormElement>(null)\n const contextRef = useRef({} as FormContextType)\n const abortResetFormRef = useRef<AbortController>(null)\n const isFirstRenderRef = useRef(true)\n\n const fieldsReducer = useReducer(fieldReducer, {}, () => initialState)\n\n const [formState, dispatchFields] = fieldsReducer\n\n contextRef.current.fields = formState\n\n const prevFormState = useRef(formState)\n\n const validateForm = useCallback(async () => {\n const validatedFieldState = {}\n let isValid = true\n\n const data = contextRef.current.getData()\n\n const validationPromises = Object.entries(contextRef.current.fields).map(\n async ([path, field]) => {\n const validatedField = field\n const pathSegments = path ? path.split('.') : []\n\n if (field.passesCondition !== false) {\n let validationResult: boolean | string = validatedField.valid\n\n if ('validate' in field && typeof field.validate === 'function') {\n let valueToValidate = field.value\n\n if (field?.rows && Array.isArray(field.rows)) {\n valueToValidate = contextRef.current.getDataByPath(path)\n }\n\n validationResult = await field.validate(valueToValidate, {\n ...field,\n id,\n collectionSlug,\n // If there is a parent document form, we can get the data from that form\n blockData: undefined, // Will be expensive to get - not worth to pass to client-side validation, as this can be obtained by the user using `useFormFields()`\n data: documentForm?.getData ? documentForm.getData() : data,\n event: 'submit',\n operation,\n path: pathSegments,\n preferences: {} as any,\n req: {\n payload: {\n config,\n },\n t,\n user,\n } as unknown as PayloadRequest,\n siblingData: contextRef.current.getSiblingData(path),\n })\n\n if (typeof validationResult === 'string') {\n validatedField.errorMessage = validationResult\n validatedField.valid = false\n } else {\n validatedField.valid = true\n validatedField.errorMessage = undefined\n }\n }\n\n if (validatedField.valid === false) {\n isValid = false\n }\n }\n\n validatedFieldState[path] = validatedField\n },\n )\n\n await Promise.all(validationPromises)\n\n if (!dequal(contextRef.current.fields, validatedFieldState)) {\n dispatchFields({ type: 'REPLACE_STATE', state: validatedFieldState })\n }\n\n setIsValid(isValid)\n\n return isValid\n }, [collectionSlug, config, dispatchFields, id, operation, t, user, documentForm])\n\n const submit = useCallback<Submit>(\n async (options, e) => {\n const {\n acceptValues = true,\n action: actionArg = action,\n context,\n disableFormWhileProcessing = true,\n disableSuccessStatus: disableSuccessStatusFromArgs,\n method: methodToUse = method,\n overrides: overridesFromArgs = {},\n skipValidation,\n } = options || ({} as SubmitOptions)\n\n const disableToast = disableSuccessStatusFromArgs ?? disableSuccessStatus\n\n if (disabled) {\n if (e) {\n e.preventDefault()\n }\n return\n }\n\n // create new toast promise which will resolve manually later\n let errorToast, successToast\n\n const promise = new Promise((resolve, reject) => {\n successToast = resolve\n errorToast = reject\n })\n\n const hasFormSubmitAction =\n actionArg || typeof action === 'string' || typeof action === 'function'\n\n if (redirect || disableToast || !hasFormSubmitAction) {\n // Do not show submitting toast, as the promise toast may never disappear under these conditions.\n // Instead, make successToast() or errorToast() throw toast.success / toast.error\n successToast = (data) => toast.success(data)\n errorToast = (data) => toast.error(data)\n } else {\n toast.promise(promise, {\n error: (data) => {\n return data as string\n },\n loading: t('general:submitting'),\n success: (data) => {\n return data as string\n },\n })\n }\n\n if (e) {\n e.stopPropagation()\n e.preventDefault()\n }\n\n if (disableFormWhileProcessing) {\n setProcessing(true)\n setDisabled(true)\n }\n\n if (waitForAutocomplete) {\n await wait(100)\n }\n\n const data = reduceFieldsToValues(contextRef.current.fields, true)\n\n const serializableFormState = deepCopyObjectSimpleWithoutReactComponents(\n contextRef.current.fields,\n )\n\n // Execute server side validations\n if (Array.isArray(beforeSubmit)) {\n let revalidatedFormState: FormState\n\n await beforeSubmit.reduce(async (priorOnChange, beforeSubmitFn) => {\n await priorOnChange\n\n const result = await beforeSubmitFn({\n formState: serializableFormState,\n })\n\n revalidatedFormState = result\n }, Promise.resolve())\n\n const isValid = Object.entries(revalidatedFormState).every(\n ([, field]) => field.valid !== false,\n )\n\n setIsValid(isValid)\n\n if (!isValid) {\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return dispatchFields({ type: 'REPLACE_STATE', state: revalidatedFormState })\n }\n }\n\n const isValid =\n skipValidation || disableValidationOnSubmit ? true : await contextRef.current.validateForm()\n\n setIsValid(isValid)\n\n // If not valid, prevent submission\n if (!isValid) {\n errorToast(t('error:correctInvalidFields'))\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n let overrides = {}\n\n if (typeof overridesFromArgs === 'function') {\n overrides = overridesFromArgs(contextRef.current.fields)\n } else if (typeof overridesFromArgs === 'object') {\n overrides = overridesFromArgs\n }\n\n // If submit handler comes through via props, run that\n if (onSubmit) {\n for (const [key, value] of Object.entries(overrides)) {\n data[key] = value\n }\n\n onSubmit(contextRef.current.fields, data)\n }\n\n if (!hasFormSubmitAction) {\n // No action provided, so we should return. An example where this happens are lexical link drawers. Upon submitting the drawer, we\n // want to close it without submitting the form. Stuff like validation would be handled by lexical before this, through beforeSubmit\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n const formData = await contextRef.current.createFormData(overrides, {\n data,\n mergeOverrideData: Boolean(typeof overridesFromArgs !== 'function'),\n })\n\n try {\n let res\n\n if (typeof actionArg === 'string') {\n res = await requests[methodToUse.toLowerCase()](actionArg, {\n body: formData,\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n } else if (typeof action === 'function') {\n res = await action(formData)\n }\n\n setModified(false)\n setDisabled(false)\n\n if (typeof handleResponse === 'function') {\n handleResponse(res, successToast, errorToast)\n return\n }\n\n const contentType = res.headers.get('content-type')\n const isJSON = contentType && contentType.indexOf('application/json') !== -1\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let json: Record<string, any> = {}\n\n if (isJSON) {\n json = await res.json()\n }\n\n if (res.status < 400) {\n if (typeof onSuccess === 'function') {\n const newFormState = await onSuccess(json, {\n context,\n formState: serializableFormState,\n })\n\n if (newFormState) {\n dispatchFields({\n type: 'MERGE_SERVER_STATE',\n acceptValues,\n prevStateRef: prevFormState,\n serverState: newFormState,\n })\n }\n }\n\n setSubmitted(false)\n setProcessing(false)\n\n if (redirect) {\n startRouteTransition(() => router.push(redirect))\n } else if (!disableToast) {\n successToast(json.message || t('general:submissionSuccessful'))\n }\n } else {\n setProcessing(false)\n setSubmitted(true)\n\n // When there was an error submitting a draft,\n // set the form state to unsubmitted, to not trigger visible form validation on changes after the failed submit.\n // Also keep the form as modified so the save button remains enabled for retry.\n if (overridesFromArgs['_status'] === 'draft') {\n setModified(true)\n if (!validateDrafts) {\n setSubmitted(false)\n }\n }\n\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n\n if (json.message) {\n errorToast(json.message)\n return\n }\n\n if (Array.isArray(json.errors)) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs = []\n const newNonFieldErrs = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data?.errors)) {\n err.data?.errors.forEach((dataError) => {\n if (dataError?.path) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n setIsValid(false)\n\n dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n errorToast(<FieldErrorsToast errorMessage={err.message || t('error:unknown')} />)\n })\n\n return\n }\n\n const message = errorMessages?.[res.status] || res?.statusText || t('error:unknown')\n\n errorToast(message)\n }\n\n return { formState: contextRef.current.fields, res }\n } catch (err) {\n console.error('Error submitting form', err) // eslint-disable-line no-console\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n errorToast(err.message)\n }\n },\n [\n beforeSubmit,\n startRouteTransition,\n action,\n disableSuccessStatus,\n disableValidationOnSubmit,\n disabled,\n dispatchFields,\n handleResponse,\n method,\n onSubmit,\n onSuccess,\n redirect,\n router,\n t,\n i18n,\n validateDrafts,\n waitForAutocomplete,\n ],\n )\n\n const getFields = useCallback(() => contextRef.current.fields, [])\n\n const getField = useCallback((path: string) => contextRef.current.fields[path], [])\n\n const getData = useCallback(() => reduceFieldsToValues(contextRef.current.fields, true), [])\n\n const getSiblingData = useCallback(\n (path: string) => getSiblingDataFunc(contextRef.current.fields, path),\n [],\n )\n\n const getDataByPath = useCallback<GetDataByPath>(\n (path: string) => getDataByPathFunc(contextRef.current.fields, path),\n [],\n )\n\n const createFormData = useCallback<CreateFormData>(\n async (overrides, { data: dataFromArgs, mergeOverrideData = true }) => {\n let data = dataFromArgs || reduceFieldsToValues(contextRef.current.fields, true)\n\n let file = data?.file\n\n if (docConfig && 'upload' in docConfig && docConfig.upload && file) {\n delete data.file\n\n const handler = getUploadHandler({ collectionSlug })\n\n if (typeof handler === 'function') {\n let filename = file.name\n const clientUploadContext = await handler({\n file,\n updateFilename: (value) => {\n filename = value\n },\n })\n\n file = JSON.stringify({\n clientUploadContext,\n collectionSlug,\n filename,\n mimeType: file.type,\n size: file.size,\n })\n }\n }\n\n if (mergeOverrideData) {\n data = {\n ...data,\n ...overrides,\n }\n } else {\n data = overrides\n }\n\n const dataToSerialize: Record<string, unknown> = {\n _payload: JSON.stringify(data),\n }\n\n if (docConfig && 'upload' in docConfig && docConfig.upload && file) {\n dataToSerialize.file = file\n }\n\n // nullAsUndefineds is important to allow uploads and relationship fields to clear themselves\n const formData = serialize(dataToSerialize, {\n indices: true,\n nullsAsUndefineds: false,\n })\n\n return formData\n },\n [collectionSlug, docConfig, getUploadHandler],\n )\n\n const reset = useCallback(\n async (data: unknown) => {\n const controller = handleAbortRef(abortResetFormRef)\n\n const docPreferences = await getDocPreferences()\n\n const { state: newState } = await getFormState({\n id,\n collectionSlug,\n data,\n docPermissions,\n docPreferences,\n globalSlug,\n locale,\n operation,\n renderAllFields: true,\n schemaPath: collectionSlug ? collectionSlug : globalSlug,\n signal: controller.signal,\n skipValidation: true,\n })\n\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state: newState })\n\n abortResetFormRef.current = null\n },\n [\n collectionSlug,\n dispatchFields,\n globalSlug,\n id,\n operation,\n getFormState,\n docPermissions,\n getDocPreferences,\n locale,\n ],\n )\n\n const replaceState = useCallback(\n (state: FormState) => {\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state })\n },\n [dispatchFields],\n )\n\n const addFieldRow: FormContextType['addFieldRow'] = useCallback(\n ({ blockType, path, rowIndex: rowIndexArg, subFieldState }) => {\n const newRows: unknown[] = getDataByPath(path) || []\n const rowIndex = rowIndexArg === undefined ? newRows.length : rowIndexArg\n\n // dispatch ADD_ROW adds a blank row to local form state.\n // This performs no form state request, as the debounced onChange effect will do that for us.\n dispatchFields({\n type: 'ADD_ROW',\n blockType,\n path,\n rowIndex,\n subFieldState,\n })\n\n setModified(true)\n },\n [dispatchFields, getDataByPath],\n )\n\n const moveFieldRow: FormContextType['moveFieldRow'] = useCallback(\n ({ moveFromIndex, moveToIndex, path }) => {\n dispatchFields({\n type: 'MOVE_ROW',\n moveFromIndex,\n moveToIndex,\n path,\n })\n\n setModified(true)\n },\n [dispatchFields],\n )\n\n const removeFieldRow: FormContextType['removeFieldRow'] = useCallback(\n ({ path, rowIndex }) => {\n dispatchFields({ type: 'REMOVE_ROW', path, rowIndex })\n\n setModified(true)\n },\n [dispatchFields],\n )\n\n const replaceFieldRow: FormContextType['replaceFieldRow'] = useCallback(\n ({ blockType, path, rowIndex: rowIndexArg, subFieldState }) => {\n const currentRows: unknown[] = getDataByPath(path)\n const rowIndex = rowIndexArg === undefined ? currentRows.length : rowIndexArg\n\n dispatchFields({\n type: 'REPLACE_ROW',\n blockType,\n path,\n rowIndex,\n subFieldState,\n })\n\n setModified(true)\n },\n [dispatchFields, getDataByPath],\n )\n\n useEffect(() => {\n const abortOnChange = abortResetFormRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n }\n }, [])\n\n useEffect(() => {\n if (initializingFromProps !== undefined) {\n setInitializing(initializingFromProps)\n }\n }, [initializingFromProps])\n\n contextRef.current.submit = submit\n contextRef.current.getFields = getFields\n contextRef.current.getField = getField\n contextRef.current.getData = getData\n contextRef.current.getSiblingData = getSiblingData\n contextRef.current.getDataByPath = getDataByPath\n contextRef.current.validateForm = validateForm\n contextRef.current.createFormData = createFormData\n contextRef.current.setModified = setModified\n contextRef.current.setProcessing = setProcessing\n contextRef.current.setBackgroundProcessing = setBackgroundProcessing\n\n contextRef.current.setSubmitted = setSubmitted\n contextRef.current.setIsValid = setIsValid\n contextRef.current.disabled = disabled\n contextRef.current.setDisabled = setDisabled\n contextRef.current.formRef = formRef\n contextRef.current.reset = reset\n contextRef.current.replaceState = replaceState\n contextRef.current.dispatchFields = dispatchFields\n contextRef.current.addFieldRow = addFieldRow\n contextRef.current.removeFieldRow = removeFieldRow\n contextRef.current.moveFieldRow = moveFieldRow\n contextRef.current.replaceFieldRow = replaceFieldRow\n contextRef.current.uuid = uuid\n contextRef.current.initializing = initializing\n contextRef.current.isValid = isValid\n\n useEffect(() => {\n setIsMounted(true)\n }, [])\n\n useEffect(() => {\n if (typeof disabledFromProps === 'boolean') {\n setDisabled(disabledFromProps)\n }\n }, [disabledFromProps])\n\n useEffect(() => {\n if (typeof submittedFromProps === 'boolean') {\n setSubmitted(submittedFromProps)\n }\n }, [submittedFromProps])\n\n useEffect(() => {\n if (initialState) {\n contextRef.current = { ...initContextState } as FormContextType\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n sanitize: true,\n state: initialState,\n })\n }\n }, [initialState, dispatchFields])\n\n useThrottledEffect(\n () => {\n refreshCookie()\n },\n 15000,\n [formState],\n )\n\n useEffect(() => {\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n setModified(false)\n }, [locale])\n\n const classes = [className, baseClass].filter(Boolean).join(' ')\n\n const executeOnChange = useEffectEvent((submitted: boolean) => {\n queueTask(async () => {\n if (Array.isArray(onChange)) {\n let serverState: FormState\n\n for (const onChangeFn of onChange) {\n // Edit view default onChange is in packages/ui/src/views/Edit/index.tsx. This onChange usually sends a form state request\n serverState = await onChangeFn({\n formState: deepCopyObjectSimpleWithoutReactComponents(formState),\n submitted,\n })\n }\n\n dispatchFields({\n type: 'MERGE_SERVER_STATE',\n prevStateRef: prevFormState,\n serverState,\n })\n }\n })\n })\n\n useDebouncedEffect(\n () => {\n if ((isFirstRenderRef.current || !dequal(formState, prevFormState.current)) && modified) {\n executeOnChange(submitted)\n }\n\n prevFormState.current = formState\n isFirstRenderRef.current = false\n },\n [modified, submitted, formState],\n 250,\n )\n\n const DocumentFormContextComponent: React.FC<any> = isDocumentForm\n ? DocumentFormContext\n : React.Fragment\n\n const documentFormContextProps = isDocumentForm\n ? {\n value: contextRef.current,\n }\n : {}\n\n const El: 'form' = (el as unknown as 'form') || 'form'\n\n return (\n <El\n action={typeof action === 'function' ? void action : action}\n className={classes}\n method={method}\n noValidate\n onSubmit={(e) => void contextRef.current.submit({}, e)}\n ref={formRef}\n >\n <DocumentFormContextComponent {...documentFormContextProps}>\n <FormContext value={contextRef.current}>\n <FormWatchContext\n value={{\n fields: formState,\n ...contextRef.current,\n }}\n >\n <SubmittedContext value={submitted}>\n <InitializingContext value={!isMounted || (isMounted && initializing)}>\n <ProcessingContext value={processing}>\n <BackgroundProcessingContext value={backgroundProcessing}>\n <ModifiedContext value={modified}>\n {/* eslint-disable-next-line @eslint-react/no-context-provider */}\n <FormFieldsContext.Provider value={fieldsReducer}>\n {children}\n </FormFieldsContext.Provider>\n </ModifiedContext>\n </BackgroundProcessingContext>\n </ProcessingContext>\n </InitializingContext>\n </SubmittedContext>\n </FormWatchContext>\n </FormContext>\n </DocumentFormContextComponent>\n </El>\n )\n}\n\nexport {\n DocumentFormContext,\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useAllFormFields,\n useDocumentForm,\n useForm,\n useFormFields,\n useFormModified,\n useFormProcessing,\n useFormSubmitted,\n useWatchForm,\n} from './context.js'\n\nexport { FormProps }\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["dequal","useRouter","serialize","deepCopyObjectSimpleWithoutReactComponents","getDataByPath","getDataByPathFunc","getSiblingData","getSiblingDataFunc","hasDraftValidationEnabled","reduceFieldsToValues","wait","React","useCallback","useEffect","useReducer","useRef","useState","toast","FieldErrorsToast","useDebouncedEffect","useEffectEvent","useQueue","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useLocale","useOperation","useRouteTransition","useServerFunctions","useTranslation","useUploadHandlers","abortAndIgnore","handleAbortRef","requests","BackgroundProcessingContext","DocumentFormContext","FormContext","FormFieldsContext","FormWatchContext","InitializingContext","ModifiedContext","ProcessingContext","SubmittedContext","useDocumentForm","errorMessages","fieldReducer","initContextState","baseClass","Form","props","id","collectionSlug","docConfig","docPermissions","getDocPreferences","globalSlug","validateDrafts","action","beforeSubmit","children","className","disabled","disabledFromProps","disableSuccessStatus","disableValidationOnSubmit","el","handleResponse","initialState","isDocumentForm","isInitializing","initializingFromProps","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","documentForm","code","locale","i18n","t","refreshCookie","user","operation","queueTask","getFormState","startRouteTransition","getUploadHandler","config","setDisabled","isMounted","setIsMounted","modified","setModified","isValid","setIsValid","initializing","setInitializing","processing","setProcessing","backgroundProcessing","setBackgroundProcessing","setSubmitted","formRef","contextRef","abortResetFormRef","isFirstRenderRef","fieldsReducer","formState","dispatchFields","current","fields","prevFormState","validateForm","validatedFieldState","data","getData","validationPromises","Object","entries","map","path","field","validatedField","pathSegments","split","passesCondition","validationResult","valid","validate","valueToValidate","value","rows","Array","isArray","blockData","event","preferences","req","payload","siblingData","errorMessage","Promise","all","type","state","submit","options","e","acceptValues","actionArg","context","disableFormWhileProcessing","disableSuccessStatusFromArgs","methodToUse","overrides","overridesFromArgs","skipValidation","disableToast","preventDefault","errorToast","successToast","promise","resolve","reject","hasFormSubmitAction","success","error","loading","stopPropagation","serializableFormState","revalidatedFormState","reduce","priorOnChange","beforeSubmitFn","result","every","key","formData","createFormData","mergeOverrideData","Boolean","res","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","newFormState","prevStateRef","serverState","push","message","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","_jsx","statusText","console","getFields","getField","dataFromArgs","file","upload","handler","filename","name","clientUploadContext","updateFilename","JSON","stringify","mimeType","size","dataToSerialize","_payload","indices","nullsAsUndefineds","reset","controller","docPreferences","newState","renderAllFields","schemaPath","signal","replaceState","addFieldRow","blockType","rowIndex","rowIndexArg","subFieldState","newRows","length","moveFieldRow","moveFromIndex","moveToIndex","removeFieldRow","replaceFieldRow","currentRows","abortOnChange","optimize","sanitize","classes","filter","join","executeOnChange","onChangeFn","DocumentFormContextComponent","Fragment","documentFormContextProps","El","noValidate","ref","Provider","useAllFormFields","useForm","useFormFields","useFormModified","useFormProcessing","useFormSubmitted","useWatchForm"],"sources":["../../../src/forms/Form/index.tsx"],"sourcesContent":["'use client'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { useRouter } from 'next/navigation.js'\nimport { serialize } from 'object-to-formdata'\nimport { type FormState, type PayloadRequest } from 'payload'\nimport {\n deepCopyObjectSimpleWithoutReactComponents,\n getDataByPath as getDataByPathFunc,\n getSiblingData as getSiblingDataFunc,\n hasDraftValidationEnabled,\n reduceFieldsToValues,\n wait,\n} from 'payload/shared'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type {\n CreateFormData,\n Context as FormContextType,\n FormProps,\n GetDataByPath,\n Submit,\n SubmitOptions,\n} from './types.js'\n\nimport { FieldErrorsToast } from '../../elements/Toasts/fieldErrors.js'\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useQueue } from '../../hooks/useQueue.js'\nimport { useThrottledEffect } from '../../hooks/useThrottledEffect.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useUploadHandlers } from '../../providers/UploadHandlers/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { requests } from '../../utilities/api.js'\nimport {\n BackgroundProcessingContext,\n DocumentFormContext,\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n InitializingContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useDocumentForm,\n} from './context.js'\nimport { errorMessages } from './errorMessages.js'\nimport { fieldReducer } from './fieldReducer.js'\nimport { initContextState } from './initContextState.js'\n\nconst baseClass = 'form'\n\nexport const Form: React.FC<FormProps> = (props) => {\n const { id, collectionSlug, docConfig, docPermissions, getDocPreferences, globalSlug } =\n useDocumentInfo()\n\n const validateDrafts = hasDraftValidationEnabled(docConfig)\n\n const {\n action,\n beforeSubmit,\n children,\n className,\n disabled: disabledFromProps,\n disableSuccessStatus,\n disableValidationOnSubmit,\n // fields: fieldsFromProps = collection?.fields || global?.fields,\n el,\n handleResponse,\n initialState, // fully formed initial field state\n isDocumentForm,\n isInitializing: initializingFromProps,\n onChange,\n onSubmit,\n onSuccess,\n redirect,\n submitted: submittedFromProps,\n uuid,\n waitForAutocomplete,\n } = props\n\n const method = 'method' in props ? props?.method : undefined\n\n const router = useRouter()\n\n const documentForm = useDocumentForm()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { refreshCookie, user } = useAuth()\n const operation = useOperation()\n const { queueTask } = useQueue()\n\n const { getFormState } = useServerFunctions()\n const { startRouteTransition } = useRouteTransition()\n const { getUploadHandler } = useUploadHandlers()\n\n const { config } = useConfig()\n\n const [disabled, setDisabled] = useState(disabledFromProps || false)\n const [isMounted, setIsMounted] = useState(false)\n const [modified, setModified] = useState(false)\n\n /**\n * Tracks wether the form state passes validation.\n * For example the state could be submitted but invalid as field errors have been returned.\n */\n const [isValid, setIsValid] = useState(true)\n const [initializing, setInitializing] = useState(initializingFromProps)\n\n const [processing, setProcessing] = useState(false)\n const [backgroundProcessing, setBackgroundProcessing] = useState(false)\n\n const [submitted, setSubmitted] = useState(false)\n const formRef = useRef<HTMLFormElement>(null)\n const contextRef = useRef({} as FormContextType)\n const abortResetFormRef = useRef<AbortController>(null)\n const isFirstRenderRef = useRef(true)\n\n const fieldsReducer = useReducer(fieldReducer, {}, () => initialState)\n\n const [formState, dispatchFields] = fieldsReducer\n\n contextRef.current.fields = formState\n\n const prevFormState = useRef(formState)\n\n const validateForm = useCallback(async () => {\n const validatedFieldState = {}\n let isValid = true\n\n const data = contextRef.current.getData()\n\n const validationPromises = Object.entries(contextRef.current.fields).map(\n async ([path, field]) => {\n const validatedField = field\n const pathSegments = path ? path.split('.') : []\n\n if (field.passesCondition !== false) {\n let validationResult: boolean | string = validatedField.valid\n\n if ('validate' in field && typeof field.validate === 'function') {\n let valueToValidate = field.value\n\n if (field?.rows && Array.isArray(field.rows)) {\n valueToValidate = contextRef.current.getDataByPath(path)\n }\n\n validationResult = await field.validate(valueToValidate, {\n ...field,\n id,\n collectionSlug,\n // If there is a parent document form, we can get the data from that form\n blockData: undefined, // Will be expensive to get - not worth to pass to client-side validation, as this can be obtained by the user using `useFormFields()`\n data: documentForm?.getData ? documentForm.getData() : data,\n event: 'submit',\n operation,\n path: pathSegments,\n preferences: {} as any,\n req: {\n payload: {\n config,\n },\n t,\n user,\n } as unknown as PayloadRequest,\n siblingData: contextRef.current.getSiblingData(path),\n })\n\n if (typeof validationResult === 'string') {\n validatedField.errorMessage = validationResult\n validatedField.valid = false\n } else {\n validatedField.valid = true\n validatedField.errorMessage = undefined\n }\n }\n\n if (validatedField.valid === false) {\n isValid = false\n }\n }\n\n validatedFieldState[path] = validatedField\n },\n )\n\n await Promise.all(validationPromises)\n\n if (!dequal(contextRef.current.fields, validatedFieldState)) {\n dispatchFields({ type: 'REPLACE_STATE', state: validatedFieldState })\n }\n\n setIsValid(isValid)\n\n return isValid\n }, [collectionSlug, config, dispatchFields, id, operation, t, user, documentForm])\n\n const submit = useCallback<Submit>(\n async (options, e) => {\n const {\n acceptValues = true,\n action: actionArg = action,\n context,\n disableFormWhileProcessing = true,\n disableSuccessStatus: disableSuccessStatusFromArgs,\n method: methodToUse = method,\n overrides: overridesFromArgs = {},\n skipValidation,\n } = options || ({} as SubmitOptions)\n\n const disableToast = disableSuccessStatusFromArgs ?? disableSuccessStatus\n\n if (disabled) {\n if (e) {\n e.preventDefault()\n }\n return\n }\n\n // create new toast promise which will resolve manually later\n let errorToast, successToast\n\n const promise = new Promise((resolve, reject) => {\n successToast = resolve\n errorToast = reject\n })\n\n const hasFormSubmitAction =\n actionArg || typeof action === 'string' || typeof action === 'function'\n\n if (redirect || disableToast || !hasFormSubmitAction) {\n // Do not show submitting toast, as the promise toast may never disappear under these conditions.\n // Instead, make successToast() or errorToast() throw toast.success / toast.error\n successToast = (data) => toast.success(data)\n errorToast = (data) => toast.error(data)\n } else {\n toast.promise(promise, {\n error: (data) => {\n return data as string\n },\n loading: t('general:submitting'),\n success: (data) => {\n return data as string\n },\n })\n }\n\n if (e) {\n e.stopPropagation()\n e.preventDefault()\n }\n\n if (disableFormWhileProcessing) {\n setProcessing(true)\n setDisabled(true)\n }\n\n if (waitForAutocomplete) {\n await wait(100)\n }\n\n const data = reduceFieldsToValues(contextRef.current.fields, true)\n\n const serializableFormState = deepCopyObjectSimpleWithoutReactComponents(\n contextRef.current.fields,\n )\n\n // Execute server side validations\n if (Array.isArray(beforeSubmit)) {\n let revalidatedFormState: FormState\n\n await beforeSubmit.reduce(async (priorOnChange, beforeSubmitFn) => {\n await priorOnChange\n\n const result = await beforeSubmitFn({\n formState: serializableFormState,\n })\n\n revalidatedFormState = result\n }, Promise.resolve())\n\n const isValid = Object.entries(revalidatedFormState).every(\n ([, field]) => field.valid !== false,\n )\n\n setIsValid(isValid)\n\n if (!isValid) {\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return dispatchFields({ type: 'REPLACE_STATE', state: revalidatedFormState })\n }\n }\n\n const isValid =\n skipValidation || disableValidationOnSubmit ? true : await contextRef.current.validateForm()\n\n setIsValid(isValid)\n\n // If not valid, prevent submission\n if (!isValid) {\n errorToast(t('error:correctInvalidFields'))\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n let overrides = {}\n\n if (typeof overridesFromArgs === 'function') {\n overrides = overridesFromArgs(contextRef.current.fields)\n } else if (typeof overridesFromArgs === 'object') {\n overrides = overridesFromArgs\n }\n\n // If submit handler comes through via props, run that\n if (onSubmit) {\n for (const [key, value] of Object.entries(overrides)) {\n data[key] = value\n }\n\n onSubmit(contextRef.current.fields, data)\n }\n\n if (!hasFormSubmitAction) {\n // No action provided, so we should return. An example where this happens are lexical link drawers. Upon submitting the drawer, we\n // want to close it without submitting the form. Stuff like validation would be handled by lexical before this, through beforeSubmit\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n const formData = await contextRef.current.createFormData(overrides, {\n data,\n mergeOverrideData: Boolean(typeof overridesFromArgs !== 'function'),\n })\n\n try {\n let res\n\n if (typeof actionArg === 'string') {\n res = await requests[methodToUse.toLowerCase()](actionArg, {\n body: formData,\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n } else if (typeof action === 'function') {\n res = await action(formData)\n }\n\n setModified(false)\n setDisabled(false)\n\n if (typeof handleResponse === 'function') {\n handleResponse(res, successToast, errorToast)\n return\n }\n\n const contentType = res.headers.get('content-type')\n const isJSON = contentType && contentType.indexOf('application/json') !== -1\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let json: Record<string, any> = {}\n\n if (isJSON) {\n json = await res.json()\n }\n\n if (res.status < 400) {\n if (typeof onSuccess === 'function') {\n const newFormState = await onSuccess(json, {\n context,\n formState: serializableFormState,\n })\n\n if (newFormState) {\n dispatchFields({\n type: 'MERGE_SERVER_STATE',\n acceptValues,\n prevStateRef: prevFormState,\n serverState: newFormState,\n })\n }\n }\n\n setSubmitted(false)\n setProcessing(false)\n\n if (redirect) {\n startRouteTransition(() => router.push(redirect))\n } else if (!disableToast) {\n successToast(json.message || t('general:submissionSuccessful'))\n }\n } else {\n setProcessing(false)\n setSubmitted(true)\n\n // When there was an error submitting a draft,\n // set the form state to unsubmitted, to not trigger visible form validation on changes after the failed submit.\n // Also keep the form as modified so the save button remains enabled for retry.\n if (overridesFromArgs['_status'] === 'draft') {\n setModified(true)\n if (!validateDrafts) {\n setSubmitted(false)\n }\n }\n\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n\n if (json.message) {\n errorToast(json.message)\n return\n }\n\n if (Array.isArray(json.errors)) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs = []\n const newNonFieldErrs = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data?.errors)) {\n err.data?.errors.forEach((dataError) => {\n if (dataError?.path) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n setIsValid(false)\n\n dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n errorToast(<FieldErrorsToast errorMessage={err.message || t('error:unknown')} />)\n })\n\n return\n }\n\n const message = errorMessages?.[res.status] || res?.statusText || t('error:unknown')\n\n errorToast(message)\n }\n\n return { formState: contextRef.current.fields, res }\n } catch (err) {\n console.error('Error submitting form', err) // eslint-disable-line no-console\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n errorToast(err.message)\n }\n },\n [\n beforeSubmit,\n startRouteTransition,\n action,\n disableSuccessStatus,\n disableValidationOnSubmit,\n disabled,\n dispatchFields,\n handleResponse,\n method,\n onSubmit,\n onSuccess,\n redirect,\n router,\n t,\n i18n,\n validateDrafts,\n waitForAutocomplete,\n ],\n )\n\n const getFields = useCallback(() => contextRef.current.fields, [])\n\n const getField = useCallback((path: string) => contextRef.current.fields[path], [])\n\n const getData = useCallback(() => reduceFieldsToValues(contextRef.current.fields, true), [])\n\n const getSiblingData = useCallback(\n (path: string) => getSiblingDataFunc(contextRef.current.fields, path),\n [],\n )\n\n const getDataByPath = useCallback<GetDataByPath>(\n (path: string) => getDataByPathFunc(contextRef.current.fields, path),\n [],\n )\n\n const createFormData = useCallback<CreateFormData>(\n async (overrides, { data: dataFromArgs, mergeOverrideData = true }) => {\n let data = dataFromArgs || reduceFieldsToValues(contextRef.current.fields, true)\n\n let file = data?.file\n\n if (docConfig && 'upload' in docConfig && docConfig.upload && file) {\n delete data.file\n\n const handler = getUploadHandler({ collectionSlug })\n\n if (typeof handler === 'function') {\n let filename = file.name\n const clientUploadContext = await handler({\n file,\n updateFilename: (value) => {\n filename = value\n },\n })\n\n file = JSON.stringify({\n clientUploadContext,\n collectionSlug,\n filename,\n mimeType: file.type,\n size: file.size,\n })\n }\n }\n\n if (mergeOverrideData) {\n data = {\n ...data,\n ...overrides,\n }\n } else {\n data = overrides\n }\n\n const dataToSerialize: Record<string, unknown> = {\n _payload: JSON.stringify(data),\n }\n\n if (docConfig && 'upload' in docConfig && docConfig.upload && file) {\n dataToSerialize.file = file\n }\n\n // nullAsUndefineds is important to allow uploads and relationship fields to clear themselves\n const formData = serialize(dataToSerialize, {\n indices: true,\n nullsAsUndefineds: false,\n })\n\n return formData\n },\n [collectionSlug, docConfig, getUploadHandler],\n )\n\n const reset = useCallback(\n async (data: unknown) => {\n const controller = handleAbortRef(abortResetFormRef)\n\n const docPreferences = await getDocPreferences()\n\n const { state: newState } = await getFormState({\n id,\n collectionSlug,\n data,\n docPermissions,\n docPreferences,\n globalSlug,\n locale,\n operation,\n renderAllFields: true,\n schemaPath: collectionSlug ? collectionSlug : globalSlug,\n signal: controller.signal,\n skipValidation: true,\n })\n\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state: newState })\n\n abortResetFormRef.current = null\n },\n [\n collectionSlug,\n dispatchFields,\n globalSlug,\n id,\n operation,\n getFormState,\n docPermissions,\n getDocPreferences,\n locale,\n ],\n )\n\n const replaceState = useCallback(\n (state: FormState) => {\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state })\n },\n [dispatchFields],\n )\n\n const addFieldRow: FormContextType['addFieldRow'] = useCallback(\n ({ blockType, path, rowIndex: rowIndexArg, subFieldState }) => {\n const newRows: unknown[] = getDataByPath(path) || []\n const rowIndex = rowIndexArg === undefined ? newRows.length : rowIndexArg\n\n // dispatch ADD_ROW adds a blank row to local form state.\n // This performs no form state request, as the debounced onChange effect will do that for us.\n dispatchFields({\n type: 'ADD_ROW',\n blockType,\n path,\n rowIndex,\n subFieldState,\n })\n\n setModified(true)\n },\n [dispatchFields, getDataByPath],\n )\n\n const moveFieldRow: FormContextType['moveFieldRow'] = useCallback(\n ({ moveFromIndex, moveToIndex, path }) => {\n dispatchFields({\n type: 'MOVE_ROW',\n moveFromIndex,\n moveToIndex,\n path,\n })\n\n setModified(true)\n },\n [dispatchFields],\n )\n\n const removeFieldRow: FormContextType['removeFieldRow'] = useCallback(\n ({ path, rowIndex }) => {\n dispatchFields({ type: 'REMOVE_ROW', path, rowIndex })\n\n setModified(true)\n },\n [dispatchFields],\n )\n\n const replaceFieldRow: FormContextType['replaceFieldRow'] = useCallback(\n ({ blockType, path, rowIndex: rowIndexArg, subFieldState }) => {\n const currentRows: unknown[] = getDataByPath(path)\n const rowIndex = rowIndexArg === undefined ? currentRows.length : rowIndexArg\n\n dispatchFields({\n type: 'REPLACE_ROW',\n blockType,\n path,\n rowIndex,\n subFieldState,\n })\n\n setModified(true)\n },\n [dispatchFields, getDataByPath],\n )\n\n useEffect(() => {\n const abortOnChange = abortResetFormRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n }\n }, [])\n\n useEffect(() => {\n if (initializingFromProps !== undefined) {\n setInitializing(initializingFromProps)\n }\n }, [initializingFromProps])\n\n contextRef.current.submit = submit\n contextRef.current.getFields = getFields\n contextRef.current.getField = getField\n contextRef.current.getData = getData\n contextRef.current.getSiblingData = getSiblingData\n contextRef.current.getDataByPath = getDataByPath\n contextRef.current.validateForm = validateForm\n contextRef.current.createFormData = createFormData\n contextRef.current.setModified = setModified\n contextRef.current.setProcessing = setProcessing\n contextRef.current.setBackgroundProcessing = setBackgroundProcessing\n\n contextRef.current.setSubmitted = setSubmitted\n contextRef.current.setIsValid = setIsValid\n contextRef.current.disabled = disabled\n contextRef.current.setDisabled = setDisabled\n contextRef.current.formRef = formRef\n contextRef.current.reset = reset\n contextRef.current.replaceState = replaceState\n contextRef.current.dispatchFields = dispatchFields\n contextRef.current.addFieldRow = addFieldRow\n contextRef.current.removeFieldRow = removeFieldRow\n contextRef.current.moveFieldRow = moveFieldRow\n contextRef.current.replaceFieldRow = replaceFieldRow\n contextRef.current.uuid = uuid\n contextRef.current.initializing = initializing\n contextRef.current.isValid = isValid\n\n useEffect(() => {\n setIsMounted(true)\n }, [])\n\n useEffect(() => {\n if (typeof disabledFromProps === 'boolean') {\n setDisabled(disabledFromProps)\n }\n }, [disabledFromProps])\n\n useEffect(() => {\n if (typeof submittedFromProps === 'boolean') {\n setSubmitted(submittedFromProps)\n }\n }, [submittedFromProps])\n\n useEffect(() => {\n if (initialState) {\n contextRef.current = { ...initContextState } as FormContextType\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n sanitize: true,\n state: initialState,\n })\n }\n }, [initialState, dispatchFields])\n\n useThrottledEffect(\n () => {\n refreshCookie()\n },\n 15000,\n [formState],\n )\n\n useEffect(() => {\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n setModified(false)\n }, [locale])\n\n const classes = [className, baseClass].filter(Boolean).join(' ')\n\n const executeOnChange = useEffectEvent((submitted: boolean) => {\n queueTask(async () => {\n if (Array.isArray(onChange)) {\n let serverState: FormState\n\n for (const onChangeFn of onChange) {\n // Edit view default onChange is in packages/ui/src/views/Edit/index.tsx. This onChange usually sends a form state request\n serverState = await onChangeFn({\n formState: deepCopyObjectSimpleWithoutReactComponents(formState),\n submitted,\n })\n }\n\n dispatchFields({\n type: 'MERGE_SERVER_STATE',\n prevStateRef: prevFormState,\n serverState,\n })\n }\n })\n })\n\n useDebouncedEffect(\n () => {\n if ((isFirstRenderRef.current || !dequal(formState, prevFormState.current)) && modified) {\n executeOnChange(submitted)\n }\n\n prevFormState.current = formState\n isFirstRenderRef.current = false\n },\n [modified, submitted, formState],\n 250,\n )\n\n const DocumentFormContextComponent: React.FC<any> = isDocumentForm\n ? DocumentFormContext\n : React.Fragment\n\n const documentFormContextProps = isDocumentForm\n ? {\n value: contextRef.current,\n }\n : {}\n\n const El: 'form' = (el as unknown as 'form') || 'form'\n\n return (\n <El\n action={typeof action === 'function' ? void action : action}\n className={classes}\n method={method}\n noValidate\n onSubmit={(e) => void contextRef.current.submit({}, e)}\n ref={formRef}\n >\n <DocumentFormContextComponent {...documentFormContextProps}>\n <FormContext value={contextRef.current}>\n <FormWatchContext\n value={{\n fields: formState,\n ...contextRef.current,\n }}\n >\n <SubmittedContext value={submitted}>\n <InitializingContext value={!isMounted || (isMounted && initializing)}>\n <ProcessingContext value={processing}>\n <BackgroundProcessingContext value={backgroundProcessing}>\n <ModifiedContext value={modified}>\n {/* eslint-disable-next-line @eslint-react/no-context-provider */}\n <FormFieldsContext.Provider value={fieldsReducer}>\n {children}\n </FormFieldsContext.Provider>\n </ModifiedContext>\n </BackgroundProcessingContext>\n </ProcessingContext>\n </InitializingContext>\n </SubmittedContext>\n </FormWatchContext>\n </FormContext>\n </DocumentFormContextComponent>\n </El>\n )\n}\n\nexport {\n DocumentFormContext,\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useAllFormFields,\n useDocumentForm,\n useForm,\n useFormFields,\n useFormModified,\n useFormProcessing,\n useFormSubmitted,\n useWatchForm,\n} from './context.js'\n\nexport { FormProps }\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Edit/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAc,uBAAuB,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Edit/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAc,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAIlE,OAAO,KAAsE,MAAM,OAAO,CAAA;AAmC1F,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,aAAa,GAAG;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AAKD,wBAAgB,eAAe,CAAC,EAC9B,sBAAsB,EACtB,WAAW,EACX,aAAa,EACb,WAAW,EAAE,iBAAiB,EAC9B,aAAa,EACb,aAAa,EACb,UAAU,EACV,eAAe,EACf,MAAM,EAAE,YAAY,EACpB,cAAc,GACf,EAAE,uBAAuB,qBA2pBzB"}
|
package/dist/views/Edit/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
4
4
|
import { useRouter, useSearchParams } from 'next/navigation.js';
|
|
5
|
-
import { formatAdminURL } from 'payload/shared';
|
|
5
|
+
import { formatAdminURL, hasAutosaveEnabled } from 'payload/shared';
|
|
6
6
|
import React, { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
7
7
|
import { DocumentControls } from '../../elements/DocumentControls/index.js';
|
|
8
8
|
import { DocumentDrawerHeader } from '../../elements/DocumentDrawer/DrawerHeader/index.js';
|
|
@@ -32,8 +32,8 @@ import { handleGoBack } from '../../utilities/handleGoBack.js';
|
|
|
32
32
|
import { handleTakeOver } from '../../utilities/handleTakeOver.js';
|
|
33
33
|
import { Auth } from './Auth/index.js';
|
|
34
34
|
import { SetDocumentStepNav } from './SetDocumentStepNav/index.js';
|
|
35
|
-
import './index.scss';
|
|
36
35
|
import { SetDocumentTitle } from './SetDocumentTitle/index.js';
|
|
36
|
+
import './index.scss';
|
|
37
37
|
const baseClass = 'collection-edit';
|
|
38
38
|
// This component receives props only on _pages_
|
|
39
39
|
// When rendered within a drawer, props are empty
|
|
@@ -164,7 +164,7 @@ export function DefaultEditView({
|
|
|
164
164
|
;
|
|
165
165
|
const lockDuration = typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault;
|
|
166
166
|
const lockDurationInMilliseconds = lockDuration * 1000;
|
|
167
|
-
const autosaveEnabled =
|
|
167
|
+
const autosaveEnabled = hasAutosaveEnabled(docConfig);
|
|
168
168
|
const [isReadOnlyForIncomingUser, setIsReadOnlyForIncomingUser] = useState(false);
|
|
169
169
|
const [showTakeOverModal, setShowTakeOverModal] = useState(false);
|
|
170
170
|
const [editSessionStartTime, setEditSessionStartTime] = useState(Date.now());
|