@payloadcms/ui 3.44.0-canary.10 → 3.44.0-canary.3
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/BulkUpload/FileSidebar/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.js +29 -74
- package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.scss +4 -5
- package/dist/elements/BulkUpload/FormsManager/index.d.ts +1 -0
- package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +64 -37
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/reducer.d.ts +0 -1
- package/dist/elements/BulkUpload/FormsManager/reducer.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/reducer.js +0 -1
- package/dist/elements/BulkUpload/FormsManager/reducer.js.map +1 -1
- package/dist/elements/BulkUpload/index.scss +0 -0
- package/dist/elements/EditMany/DrawerContent.d.ts +1 -5
- package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/EditMany/DrawerContent.js +1 -5
- package/dist/elements/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/EditMany/index.d.ts +0 -1
- package/dist/elements/EditMany/index.d.ts.map +1 -1
- package/dist/elements/EditMany/index.js +18 -32
- package/dist/elements/EditMany/index.js.map +1 -1
- package/dist/elements/EmailAndUsername/index.d.ts +0 -1
- package/dist/elements/EmailAndUsername/index.d.ts.map +1 -1
- package/dist/elements/EmailAndUsername/index.js +30 -64
- package/dist/elements/EmailAndUsername/index.js.map +1 -1
- package/dist/elements/PublishMany/DrawerContent.d.ts +0 -1
- package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/PublishMany/DrawerContent.js +1 -5
- package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/PublishMany/index.d.ts +0 -1
- package/dist/elements/PublishMany/index.d.ts.map +1 -1
- package/dist/elements/PublishMany/index.js +17 -31
- package/dist/elements/PublishMany/index.js.map +1 -1
- package/dist/elements/ShimmerEffect/index.d.ts +0 -2
- package/dist/elements/ShimmerEffect/index.d.ts.map +1 -1
- package/dist/elements/ShimmerEffect/index.js +3 -5
- package/dist/elements/ShimmerEffect/index.js.map +1 -1
- package/dist/elements/Thumbnail/createThumbnail.d.ts.map +1 -1
- package/dist/elements/Thumbnail/createThumbnail.js +2 -8
- package/dist/elements/Thumbnail/createThumbnail.js.map +1 -1
- package/dist/elements/UnpublishMany/DrawerContent.d.ts +0 -1
- package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/UnpublishMany/DrawerContent.js +1 -5
- package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/UnpublishMany/index.d.ts +0 -1
- package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
- package/dist/elements/UnpublishMany/index.js +17 -31
- package/dist/elements/UnpublishMany/index.js.map +1 -1
- package/dist/exports/client/{CodeEditor-YP63NRLU.js → CodeEditor-Z3ZZJH7C.js} +2 -2
- package/dist/exports/client/{chunk-5EP6VERX.js → chunk-CNCOIY3Y.js} +4 -4
- package/dist/exports/client/{chunk-5EP6VERX.js.map → chunk-CNCOIY3Y.js.map} +3 -3
- package/dist/exports/client/index.d.ts +0 -2
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +16 -16
- package/dist/exports/client/index.js.map +4 -4
- package/dist/fields/Checkbox/index.d.ts.map +1 -1
- package/dist/fields/Checkbox/index.js +0 -9
- package/dist/fields/Checkbox/index.js.map +1 -1
- package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
- package/dist/forms/Form/fieldReducer.js +0 -5
- package/dist/forms/Form/fieldReducer.js.map +1 -1
- package/dist/forms/useField/index.d.ts.map +1 -1
- package/dist/forms/useField/index.js +1 -2
- package/dist/forms/useField/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utilities/getFolderResultsComponentAndData.d.ts.map +1 -1
- package/dist/utilities/getFolderResultsComponentAndData.js +2 -1
- package/dist/utilities/getFolderResultsComponentAndData.js.map +1 -1
- package/dist/views/Edit/Auth/index.d.ts.map +1 -1
- package/dist/views/Edit/Auth/index.js +136 -163
- package/dist/views/Edit/Auth/index.js.map +1 -1
- package/dist/views/Edit/SetDocumentTitle/index.d.ts.map +1 -1
- package/dist/views/Edit/SetDocumentTitle/index.js +21 -24
- package/dist/views/Edit/SetDocumentTitle/index.js.map +1 -1
- package/dist/views/List/ListSelection/index.d.ts.map +1 -1
- package/dist/views/List/ListSelection/index.js +18 -31
- package/dist/views/List/ListSelection/index.js.map +1 -1
- package/package.json +5 -5
- package/dist/elements/EmailAndUsername/index.scss +0 -9
- /package/dist/exports/client/{CodeEditor-YP63NRLU.js.map → CodeEditor-Z3ZZJH7C.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Checkbox/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Checkbox/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,SAAS,CAAA;AAEhB,OAAO,KAA+B,MAAM,OAAO,CAAA;AAEnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAYpD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,cAAc,CAAA;AAIrB,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,CAAA;AAqG3E,eAAO,MAAM,aAAa;;;;;;;;;;+EAAwC,CAAA"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
-
import { rtlLanguages } from '@payloadcms/translations';
|
|
5
4
|
import React, { useCallback, useMemo } from 'react';
|
|
6
5
|
import { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js';
|
|
7
6
|
import { FieldDescription } from '../../fields/FieldDescription/index.js';
|
|
@@ -10,7 +9,6 @@ import { useForm } from '../../forms/Form/context.js';
|
|
|
10
9
|
import { useField } from '../../forms/useField/index.js';
|
|
11
10
|
import { withCondition } from '../../forms/withCondition/index.js';
|
|
12
11
|
import { useEditDepth } from '../../providers/EditDepth/index.js';
|
|
13
|
-
import { useTranslation } from '../../providers/Translation/index.js';
|
|
14
12
|
import { generateFieldID } from '../../utilities/generateFieldID.js';
|
|
15
13
|
import { mergeFieldStyles } from '../mergeFieldStyles.js';
|
|
16
14
|
import { fieldBaseClass } from '../shared/index.js';
|
|
@@ -42,12 +40,6 @@ const CheckboxFieldComponent = props => {
|
|
|
42
40
|
uuid
|
|
43
41
|
} = useForm();
|
|
44
42
|
const editDepth = useEditDepth();
|
|
45
|
-
const {
|
|
46
|
-
i18n: {
|
|
47
|
-
language
|
|
48
|
-
}
|
|
49
|
-
} = useTranslation();
|
|
50
|
-
const isRTL = rtlLanguages.includes(language);
|
|
51
43
|
const memoizedValidate = useCallback((value, options) => {
|
|
52
44
|
if (typeof validate === 'function') {
|
|
53
45
|
return validate(value, {
|
|
@@ -91,7 +83,6 @@ const CheckboxFieldComponent = props => {
|
|
|
91
83
|
children: [/*#__PURE__*/_jsx(RenderCustomComponent, {
|
|
92
84
|
CustomComponent: Error,
|
|
93
85
|
Fallback: /*#__PURE__*/_jsx(FieldError, {
|
|
94
|
-
alignCaret: isRTL ? 'right' : 'left',
|
|
95
86
|
path: path,
|
|
96
87
|
showError: showError
|
|
97
88
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useCallback","useMemo","RenderCustomComponent","FieldDescription","FieldError","useForm","useField","withCondition","useEditDepth","generateFieldID","mergeFieldStyles","fieldBaseClass","CheckboxInput","baseClass","CheckboxFieldComponent","props","id","checked","checkedFromProps","disableFormData","field","admin","className","description","label","required","onChange","onChangeFromProps","partialChecked","path","pathFromProps","readOnly","validate","uuid","editDepth","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","setValue","showError","potentiallyStalePath","onToggle","Boolean","fieldID","styles","_jsxs","filter","join","style","_jsx","CustomComponent","Fallback","inputRef","name","CheckboxField"],"sources":["../../../src/fields/Checkbox/index.tsx"],"sourcesContent":["'use client'\nimport type {\n CheckboxFieldClientComponent,\n CheckboxFieldClientProps,\n CheckboxFieldValidation,\n} from 'payload'\n\nimport React, { useCallback, useMemo } from 'react'\n\nimport type { CheckboxInputProps } from './Input.js'\n\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { useForm } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { generateFieldID } from '../../utilities/generateFieldID.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { CheckboxInput } from './Input.js'\nimport './index.scss'\n\nconst baseClass = 'checkbox'\n\nexport { CheckboxFieldClientProps, CheckboxInput, type CheckboxInputProps }\n\nconst CheckboxFieldComponent: CheckboxFieldClientComponent = (props) => {\n const {\n id,\n checked: checkedFromProps,\n disableFormData,\n field,\n field: {\n admin: { className, description } = {} as CheckboxFieldClientProps['field']['admin'],\n label,\n required,\n } = {} as CheckboxFieldClientProps['field'],\n onChange: onChangeFromProps,\n partialChecked,\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const { uuid } = useForm()\n\n const editDepth = useEditDepth()\n\n const memoizedValidate: CheckboxFieldValidation = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n path,\n setValue,\n showError,\n value,\n } = useField({\n disableFormData,\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const onToggle = useCallback(() => {\n if (!readOnly) {\n setValue(!value)\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(!value)\n }\n }\n }, [onChangeFromProps, readOnly, setValue, value])\n\n const checked = checkedFromProps || Boolean(value)\n\n const fieldID = id || generateFieldID(path, editDepth, uuid)\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n showError && 'error',\n className,\n value && `${baseClass}--checked`,\n (readOnly || disabled) && `${baseClass}--read-only`,\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n <CheckboxInput\n AfterInput={AfterInput}\n BeforeInput={BeforeInput}\n checked={checked}\n id={fieldID}\n inputRef={null}\n Label={Label}\n label={label}\n name={path}\n onToggle={onToggle}\n partialChecked={partialChecked}\n readOnly={readOnly || disabled}\n required={required}\n />\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const CheckboxField = withCondition(CheckboxFieldComponent)\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldReducer.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/fieldReducer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAa,SAAS,EAAO,MAAM,SAAS,CAAA;AAMxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAQ7C;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"fieldReducer.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/fieldReducer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAa,SAAS,EAAO,MAAM,SAAS,CAAA;AAMxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAQ7C;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,SAAS,CAyY7E"}
|
|
@@ -135,11 +135,6 @@ export function fieldReducer(state, action) {
|
|
|
135
135
|
if (duplicateRowMetadata.id) {
|
|
136
136
|
duplicateRowMetadata.id = new ObjectId().toHexString();
|
|
137
137
|
}
|
|
138
|
-
if (rowsMetadata[rowIndex]?.customComponents?.RowLabel) {
|
|
139
|
-
duplicateRowMetadata.customComponents = {
|
|
140
|
-
RowLabel: rowsMetadata[rowIndex].customComponents.RowLabel
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
138
|
const duplicateRowState = deepCopyObjectSimpleWithoutReactComponents(rows[rowIndex]);
|
|
144
139
|
if (duplicateRowState.id) {
|
|
145
140
|
duplicateRowState.id.value = new ObjectId().toHexString();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldReducer.js","names":["ObjectIdImport","dequal","deepCopyObjectSimpleWithoutReactComponents","mergeServerFormState","flattenRows","separateRows","ObjectId","default","fieldReducer","state","action","type","blockType","path","rowIndex","rowIndexFromArgs","subFieldState","rows","length","withNewRow","newRow","id","value","toHexString","collapsed","isLoading","splice","initialValue","valid","remainingFields","siblingRows","newState","passesCondition","disableFormData","errorPaths","errors","forEach","message","fieldPath","errorMessage","segments","split","push","fieldErrorPath","parentPath","slice","join","Object","entries","reduce","acc","fieldState","fieldErrorPaths","errorACC","startsWith","changed","newErrorPaths","Array","isArray","includes","rowsMetadata","duplicateRowMetadata","customComponents","RowLabel","duplicateRowState","key","keys","filter","endsWith","idState","isValid","acceptValues","prevStateRef","serverState","currentState","incomingState","current","moveFromIndex","moveToIndex","topLevelRows","copyOfMovingRow","rowsWithinField","copyOfMovingRow2","rowIndexArg","Math","max","min","undefined","optimize","newField","oldField","sanitize","field","values","updatedRows","formState"],"sources":["../../../src/forms/Form/fieldReducer.ts"],"sourcesContent":["'use client'\nimport type { FormField, FormState, Row } from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { deepCopyObjectSimpleWithoutReactComponents } from 'payload/shared'\n\nimport type { FieldAction } from './types.js'\n\nimport { mergeServerFormState } from './mergeServerFormState.js'\nimport { flattenRows, separateRows } from './rows.js'\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\n\n/**\n * Reducer which modifies the form field state (all the current data of the fields in the form). When called using dispatch, it will return a new state object.\n */\nexport function fieldReducer(state: FormState, action: FieldAction): FormState {\n switch (action.type) {\n case 'ADD_ROW': {\n const { blockType, path, rowIndex: rowIndexFromArgs, subFieldState = {} } = action\n\n const rowIndex =\n typeof rowIndexFromArgs === 'number' ? rowIndexFromArgs : state[path]?.rows?.length || 0\n\n const withNewRow = [...(state[path]?.rows || [])]\n\n const newRow: Row = {\n id: (subFieldState?.id?.value as string) || new ObjectId().toHexString(),\n collapsed: false,\n isLoading: true,\n }\n\n if (blockType) {\n newRow.blockType = blockType\n }\n\n withNewRow.splice(rowIndex, 0, newRow)\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // add new row to array _field state_\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n\n siblingRows.splice(rowIndex, 0, subFieldState)\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [`${path}.${rowIndex}.id`]: {\n initialValue: newRow.id,\n passesCondition: true,\n valid: true,\n value: newRow.id,\n },\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: withNewRow,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'ADD_SERVER_ERRORS': {\n let newState = { ...state }\n\n const errorPaths: { fieldErrorPath: string; parentPath: string }[] = []\n\n action.errors.forEach(({ message, path: fieldPath }) => {\n newState[fieldPath] = {\n ...(newState[fieldPath] || {\n initialValue: null,\n value: null,\n }),\n errorMessage: message,\n valid: false,\n }\n\n const segments = fieldPath.split('.')\n if (segments.length > 1) {\n errorPaths.push({\n fieldErrorPath: fieldPath,\n parentPath: segments.slice(0, segments.length - 1).join('.'),\n })\n }\n })\n\n newState = Object.entries(newState).reduce((acc, [path, fieldState]) => {\n const fieldErrorPaths = errorPaths.reduce((errorACC, { fieldErrorPath, parentPath }) => {\n if (parentPath.startsWith(path)) {\n errorACC.push(fieldErrorPath)\n }\n return errorACC\n }, [])\n\n let changed = false\n\n if (fieldErrorPaths.length > 0) {\n const newErrorPaths = Array.isArray(fieldState.errorPaths) ? fieldState.errorPaths : []\n\n fieldErrorPaths.forEach((fieldErrorPath) => {\n if (!newErrorPaths.includes(fieldErrorPath)) {\n newErrorPaths.push(fieldErrorPath)\n changed = true\n }\n })\n\n if (changed) {\n acc[path] = {\n ...fieldState,\n errorPaths: newErrorPaths,\n }\n }\n }\n\n if (!changed) {\n acc[path] = fieldState\n }\n\n return acc\n }, {})\n\n return newState\n }\n\n case 'DUPLICATE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n const rowsMetadata = [...(state[path].rows || [])]\n\n const duplicateRowMetadata = deepCopyObjectSimpleWithoutReactComponents(\n rowsMetadata[rowIndex],\n )\n\n if (duplicateRowMetadata.id) {\n duplicateRowMetadata.id = new ObjectId().toHexString()\n }\n\n if (rowsMetadata[rowIndex]?.customComponents?.RowLabel) {\n duplicateRowMetadata.customComponents = {\n RowLabel: rowsMetadata[rowIndex].customComponents.RowLabel,\n }\n }\n\n const duplicateRowState = deepCopyObjectSimpleWithoutReactComponents(rows[rowIndex])\n\n if (duplicateRowState.id) {\n duplicateRowState.id.value = new ObjectId().toHexString()\n duplicateRowState.id.initialValue = new ObjectId().toHexString()\n }\n\n for (const key of Object.keys(duplicateRowState).filter((key) => key.endsWith('.id'))) {\n const idState = duplicateRowState[key]\n\n if (idState && typeof idState.value === 'string' && ObjectId.isValid(idState.value)) {\n duplicateRowState[key].value = new ObjectId().toHexString()\n duplicateRowState[key].initialValue = new ObjectId().toHexString()\n }\n }\n\n // If there are subfields\n if (Object.keys(duplicateRowState).length > 0) {\n // Add new object containing subfield names to unflattenedRows array\n rows.splice(rowIndex + 1, 0, duplicateRowState)\n rowsMetadata.splice(rowIndex + 1, 0, duplicateRowMetadata)\n }\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, rows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: rowsMetadata,\n value: rows.length,\n },\n }\n\n return newState\n }\n\n case 'MERGE_SERVER_STATE': {\n const { acceptValues, prevStateRef, serverState } = action\n\n const newState = mergeServerFormState({\n acceptValues,\n currentState: state || {},\n incomingState: serverState,\n })\n\n prevStateRef.current = newState\n\n return newState\n }\n\n case 'MOVE_ROW': {\n const { moveFromIndex, moveToIndex, path } = action\n\n // Handle moving rows on the top-level, i.e. `array.0.text` -> `array.1.text`\n const { remainingFields, rows: topLevelRows } = separateRows(path, state)\n const copyOfMovingRow = topLevelRows[moveFromIndex]\n topLevelRows.splice(moveFromIndex, 1)\n topLevelRows.splice(moveToIndex, 0, copyOfMovingRow)\n\n // modify array/block internal row state (i.e. collapsed, blockType)\n const rowsWithinField = [...(state[path]?.rows || [])]\n const copyOfMovingRow2 = { ...rowsWithinField[moveFromIndex] }\n rowsWithinField.splice(moveFromIndex, 1)\n rowsWithinField.splice(moveToIndex, 0, copyOfMovingRow2)\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, topLevelRows),\n [path]: {\n ...state[path],\n rows: rowsWithinField,\n },\n }\n\n return newState\n }\n\n case 'REMOVE': {\n const newState = { ...state }\n if (newState[action.path]) {\n delete newState[action.path]\n }\n return newState\n }\n\n case 'REMOVE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n const rowsMetadata = [...(state[path]?.rows || [])]\n\n rows.splice(rowIndex, 1)\n rowsMetadata.splice(rowIndex, 1)\n\n const newState: FormState = {\n ...remainingFields,\n [path]: {\n ...state[path],\n disableFormData: rows.length > 0,\n rows: rowsMetadata,\n value: rows.length,\n },\n ...flattenRows(path, rows),\n }\n\n return newState\n }\n\n case 'REPLACE_ROW': {\n const { blockType, path, rowIndex: rowIndexArg, subFieldState = {} } = action\n\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n const rowIndex = Math.max(0, Math.min(rowIndexArg, siblingRows?.length - 1 || 0))\n\n const rowsMetadata = [...(state[path]?.rows || [])]\n rowsMetadata[rowIndex] = {\n id: new ObjectId().toHexString(),\n blockType: blockType || undefined,\n collapsed: false,\n }\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // replace form _field state_\n siblingRows[rowIndex] = subFieldState\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: rowsMetadata,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'REPLACE_STATE': {\n if (action.optimize !== false) {\n // Only update fields that have changed\n // by comparing old value / initialValue to new\n // ..\n // This is a performance enhancement for saving\n // large documents with hundreds of fields\n const newState: FormState = {}\n\n for (const [path, newField] of Object.entries(action.state)) {\n const oldField = state[path]\n\n if (newField.valid !== false) {\n newField.valid = true\n }\n if (newField.passesCondition !== false) {\n newField.passesCondition = true\n }\n\n if (!dequal(oldField, newField)) {\n newState[path] = newField\n } else if (oldField) {\n newState[path] = oldField\n }\n }\n\n return newState\n }\n\n // TODO: Remove this in 4.0 - this is a temporary fix to prevent a breaking change\n if (action.sanitize) {\n for (const field of Object.values(action.state)) {\n if (field.valid !== false) {\n field.valid = true\n }\n if (field.passesCondition !== false) {\n field.passesCondition = true\n }\n }\n }\n // If we're not optimizing, just set the state to the new state\n return action.state\n }\n\n case 'SET_ALL_ROWS_COLLAPSED': {\n const { path, updatedRows } = action\n\n return {\n ...state,\n [path]: {\n ...state[path],\n rows: updatedRows,\n },\n }\n }\n\n case 'SET_ROW_COLLAPSED': {\n const { path, updatedRows } = action\n\n const newState = {\n ...state,\n [path]: {\n ...state[path],\n rows: updatedRows,\n },\n }\n\n return newState\n }\n\n case 'UPDATE': {\n const newField = Object.entries(action).reduce(\n (field, [key, value]) => {\n if (\n [\n 'disableFormData',\n 'errorMessage',\n 'initialValue',\n 'rows',\n 'valid',\n 'validate',\n 'value',\n ].includes(key)\n ) {\n return {\n ...field,\n [key]: value,\n }\n }\n\n return field\n },\n state?.[action.path] || ({} as FormField),\n )\n\n const newState = {\n ...state,\n [action.path]: newField,\n }\n\n return newState\n }\n\n case 'UPDATE_MANY': {\n const newState = { ...state }\n\n Object.entries(action.formState).forEach(([path, field]) => {\n newState[path] = field\n })\n\n return newState\n }\n\n default: {\n return state\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"fieldReducer.js","names":["ObjectIdImport","dequal","deepCopyObjectSimpleWithoutReactComponents","mergeServerFormState","flattenRows","separateRows","ObjectId","default","fieldReducer","state","action","type","blockType","path","rowIndex","rowIndexFromArgs","subFieldState","rows","length","withNewRow","newRow","id","value","toHexString","collapsed","isLoading","splice","initialValue","valid","remainingFields","siblingRows","newState","passesCondition","disableFormData","errorPaths","errors","forEach","message","fieldPath","errorMessage","segments","split","push","fieldErrorPath","parentPath","slice","join","Object","entries","reduce","acc","fieldState","fieldErrorPaths","errorACC","startsWith","changed","newErrorPaths","Array","isArray","includes","rowsMetadata","duplicateRowMetadata","duplicateRowState","key","keys","filter","endsWith","idState","isValid","acceptValues","prevStateRef","serverState","currentState","incomingState","current","moveFromIndex","moveToIndex","topLevelRows","copyOfMovingRow","rowsWithinField","copyOfMovingRow2","rowIndexArg","Math","max","min","undefined","optimize","newField","oldField","sanitize","field","values","updatedRows","formState"],"sources":["../../../src/forms/Form/fieldReducer.ts"],"sourcesContent":["'use client'\nimport type { FormField, FormState, Row } from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { deepCopyObjectSimpleWithoutReactComponents } from 'payload/shared'\n\nimport type { FieldAction } from './types.js'\n\nimport { mergeServerFormState } from './mergeServerFormState.js'\nimport { flattenRows, separateRows } from './rows.js'\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\n\n/**\n * Reducer which modifies the form field state (all the current data of the fields in the form). When called using dispatch, it will return a new state object.\n */\nexport function fieldReducer(state: FormState, action: FieldAction): FormState {\n switch (action.type) {\n case 'ADD_ROW': {\n const { blockType, path, rowIndex: rowIndexFromArgs, subFieldState = {} } = action\n\n const rowIndex =\n typeof rowIndexFromArgs === 'number' ? rowIndexFromArgs : state[path]?.rows?.length || 0\n\n const withNewRow = [...(state[path]?.rows || [])]\n\n const newRow: Row = {\n id: (subFieldState?.id?.value as string) || new ObjectId().toHexString(),\n collapsed: false,\n isLoading: true,\n }\n\n if (blockType) {\n newRow.blockType = blockType\n }\n\n withNewRow.splice(rowIndex, 0, newRow)\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // add new row to array _field state_\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n\n siblingRows.splice(rowIndex, 0, subFieldState)\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [`${path}.${rowIndex}.id`]: {\n initialValue: newRow.id,\n passesCondition: true,\n valid: true,\n value: newRow.id,\n },\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: withNewRow,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'ADD_SERVER_ERRORS': {\n let newState = { ...state }\n\n const errorPaths: { fieldErrorPath: string; parentPath: string }[] = []\n\n action.errors.forEach(({ message, path: fieldPath }) => {\n newState[fieldPath] = {\n ...(newState[fieldPath] || {\n initialValue: null,\n value: null,\n }),\n errorMessage: message,\n valid: false,\n }\n\n const segments = fieldPath.split('.')\n if (segments.length > 1) {\n errorPaths.push({\n fieldErrorPath: fieldPath,\n parentPath: segments.slice(0, segments.length - 1).join('.'),\n })\n }\n })\n\n newState = Object.entries(newState).reduce((acc, [path, fieldState]) => {\n const fieldErrorPaths = errorPaths.reduce((errorACC, { fieldErrorPath, parentPath }) => {\n if (parentPath.startsWith(path)) {\n errorACC.push(fieldErrorPath)\n }\n return errorACC\n }, [])\n\n let changed = false\n\n if (fieldErrorPaths.length > 0) {\n const newErrorPaths = Array.isArray(fieldState.errorPaths) ? fieldState.errorPaths : []\n\n fieldErrorPaths.forEach((fieldErrorPath) => {\n if (!newErrorPaths.includes(fieldErrorPath)) {\n newErrorPaths.push(fieldErrorPath)\n changed = true\n }\n })\n\n if (changed) {\n acc[path] = {\n ...fieldState,\n errorPaths: newErrorPaths,\n }\n }\n }\n\n if (!changed) {\n acc[path] = fieldState\n }\n\n return acc\n }, {})\n\n return newState\n }\n\n case 'DUPLICATE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n const rowsMetadata = [...(state[path].rows || [])]\n\n const duplicateRowMetadata = deepCopyObjectSimpleWithoutReactComponents(\n rowsMetadata[rowIndex],\n )\n\n if (duplicateRowMetadata.id) {\n duplicateRowMetadata.id = new ObjectId().toHexString()\n }\n\n const duplicateRowState = deepCopyObjectSimpleWithoutReactComponents(rows[rowIndex])\n\n if (duplicateRowState.id) {\n duplicateRowState.id.value = new ObjectId().toHexString()\n duplicateRowState.id.initialValue = new ObjectId().toHexString()\n }\n\n for (const key of Object.keys(duplicateRowState).filter((key) => key.endsWith('.id'))) {\n const idState = duplicateRowState[key]\n\n if (idState && typeof idState.value === 'string' && ObjectId.isValid(idState.value)) {\n duplicateRowState[key].value = new ObjectId().toHexString()\n duplicateRowState[key].initialValue = new ObjectId().toHexString()\n }\n }\n\n // If there are subfields\n if (Object.keys(duplicateRowState).length > 0) {\n // Add new object containing subfield names to unflattenedRows array\n rows.splice(rowIndex + 1, 0, duplicateRowState)\n rowsMetadata.splice(rowIndex + 1, 0, duplicateRowMetadata)\n }\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, rows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: rowsMetadata,\n value: rows.length,\n },\n }\n\n return newState\n }\n\n case 'MERGE_SERVER_STATE': {\n const { acceptValues, prevStateRef, serverState } = action\n\n const newState = mergeServerFormState({\n acceptValues,\n currentState: state || {},\n incomingState: serverState,\n })\n\n prevStateRef.current = newState\n\n return newState\n }\n\n case 'MOVE_ROW': {\n const { moveFromIndex, moveToIndex, path } = action\n\n // Handle moving rows on the top-level, i.e. `array.0.text` -> `array.1.text`\n const { remainingFields, rows: topLevelRows } = separateRows(path, state)\n const copyOfMovingRow = topLevelRows[moveFromIndex]\n topLevelRows.splice(moveFromIndex, 1)\n topLevelRows.splice(moveToIndex, 0, copyOfMovingRow)\n\n // modify array/block internal row state (i.e. collapsed, blockType)\n const rowsWithinField = [...(state[path]?.rows || [])]\n const copyOfMovingRow2 = { ...rowsWithinField[moveFromIndex] }\n rowsWithinField.splice(moveFromIndex, 1)\n rowsWithinField.splice(moveToIndex, 0, copyOfMovingRow2)\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, topLevelRows),\n [path]: {\n ...state[path],\n rows: rowsWithinField,\n },\n }\n\n return newState\n }\n\n case 'REMOVE': {\n const newState = { ...state }\n if (newState[action.path]) {\n delete newState[action.path]\n }\n return newState\n }\n\n case 'REMOVE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n const rowsMetadata = [...(state[path]?.rows || [])]\n\n rows.splice(rowIndex, 1)\n rowsMetadata.splice(rowIndex, 1)\n\n const newState: FormState = {\n ...remainingFields,\n [path]: {\n ...state[path],\n disableFormData: rows.length > 0,\n rows: rowsMetadata,\n value: rows.length,\n },\n ...flattenRows(path, rows),\n }\n\n return newState\n }\n\n case 'REPLACE_ROW': {\n const { blockType, path, rowIndex: rowIndexArg, subFieldState = {} } = action\n\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n const rowIndex = Math.max(0, Math.min(rowIndexArg, siblingRows?.length - 1 || 0))\n\n const rowsMetadata = [...(state[path]?.rows || [])]\n rowsMetadata[rowIndex] = {\n id: new ObjectId().toHexString(),\n blockType: blockType || undefined,\n collapsed: false,\n }\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // replace form _field state_\n siblingRows[rowIndex] = subFieldState\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: rowsMetadata,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'REPLACE_STATE': {\n if (action.optimize !== false) {\n // Only update fields that have changed\n // by comparing old value / initialValue to new\n // ..\n // This is a performance enhancement for saving\n // large documents with hundreds of fields\n const newState: FormState = {}\n\n for (const [path, newField] of Object.entries(action.state)) {\n const oldField = state[path]\n\n if (newField.valid !== false) {\n newField.valid = true\n }\n if (newField.passesCondition !== false) {\n newField.passesCondition = true\n }\n\n if (!dequal(oldField, newField)) {\n newState[path] = newField\n } else if (oldField) {\n newState[path] = oldField\n }\n }\n\n return newState\n }\n\n // TODO: Remove this in 4.0 - this is a temporary fix to prevent a breaking change\n if (action.sanitize) {\n for (const field of Object.values(action.state)) {\n if (field.valid !== false) {\n field.valid = true\n }\n if (field.passesCondition !== false) {\n field.passesCondition = true\n }\n }\n }\n // If we're not optimizing, just set the state to the new state\n return action.state\n }\n\n case 'SET_ALL_ROWS_COLLAPSED': {\n const { path, updatedRows } = action\n\n return {\n ...state,\n [path]: {\n ...state[path],\n rows: updatedRows,\n },\n }\n }\n\n case 'SET_ROW_COLLAPSED': {\n const { path, updatedRows } = action\n\n const newState = {\n ...state,\n [path]: {\n ...state[path],\n rows: updatedRows,\n },\n }\n\n return newState\n }\n\n case 'UPDATE': {\n const newField = Object.entries(action).reduce(\n (field, [key, value]) => {\n if (\n [\n 'disableFormData',\n 'errorMessage',\n 'initialValue',\n 'rows',\n 'valid',\n 'validate',\n 'value',\n ].includes(key)\n ) {\n return {\n ...field,\n [key]: value,\n }\n }\n\n return field\n },\n state?.[action.path] || ({} as FormField),\n )\n\n const newState = {\n ...state,\n [action.path]: newField,\n }\n\n return newState\n }\n\n case 'UPDATE_MANY': {\n const newState = { ...state }\n\n Object.entries(action.formState).forEach(([path, field]) => {\n newState[path] = field\n })\n\n return newState\n }\n\n default: {\n return state\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/useField/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpD,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AAmBlC;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,MAAM,YAAa,OAAO,KAAG,SAAS,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/useField/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpD,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AAmBlC;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,MAAM,YAAa,OAAO,KAAG,SAAS,CAAC,MAAM,CAmNrE,CAAA"}
|
|
@@ -93,8 +93,7 @@ export const useField = options => {
|
|
|
93
93
|
if ($[6] !== disableFormData || $[7] !== dispatchField || $[8] !== hasRows || $[9] !== modified || $[10] !== path || $[11] !== setModified) {
|
|
94
94
|
t4 = (e, t5) => {
|
|
95
95
|
const disableModifyingForm = t5 === undefined ? false : t5;
|
|
96
|
-
const
|
|
97
|
-
const val = isEvent ? e.target.value : e;
|
|
96
|
+
const val = e && e.target ? e.target.value : e;
|
|
98
97
|
dispatchField({
|
|
99
98
|
type: "UPDATE",
|
|
100
99
|
disableFormData: disableFormData || hasRows && val > 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useCallback","useMemo","useRef","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useOperation","useTranslation","useDocumentForm","useForm","useFormFields","useFormInitializing","useFormModified","useFormProcessing","useFormSubmitted","useFieldPath","useField","options","$","t0","disableFormData","t1","hasRows","path","pathFromOptions","potentiallyStalePath","validate","undefined","pathFromContext","submitted","processing","initializing","user","id","collectionSlug","operation","dispatchField","_temp","t2","t3","fields","field","t","config","getData","getDataByPath","getSiblingData","setModified","documentForm","modified","filterOptions","value","initialValue","valid","showError","prevValid","prevErrorMessage","errorMessage","split","pathSegments","t4","e","t5","disableModifyingForm","isEvent","preventDefault","stopPropagation","val","target","type","setTimeout","setValue","t6","customComponents","t7","t8","t9","errorPaths","t10","rows","t11","selectFilterOptions","t12","t13","disabled","formInitializing","formProcessing","formSubmitted","result","t14","validateField","valueToValidate","Array","isArray","current","valid_0","data","isValid","blockData","event","preferences","req","payload","siblingData","update","t15","t16","dispatch"],"sources":["../../../src/forms/useField/index.tsx"],"sourcesContent":["'use client'\nimport type { PayloadRequest } from 'payload'\n\nimport { useCallback, useMemo, useRef } from 'react'\n\nimport type { UPDATE } from '../Form/types.js'\nimport type { FieldType, Options } from './types.js'\n\nexport type { FieldType, Options }\n\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 { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport {\n useDocumentForm,\n useForm,\n useFormFields,\n useFormInitializing,\n useFormModified,\n useFormProcessing,\n useFormSubmitted,\n} from '../Form/context.js'\nimport { useFieldPath } from '../RenderFields/context.js'\n\n/**\n * Get and set the value of a form field.\n *\n * @see https://payloadcms.com/docs/admin/react-hooks#usefield\n */\nexport const useField = <TValue,>(options?: Options): FieldType<TValue> => {\n const {\n disableFormData = false,\n hasRows,\n path: pathFromOptions,\n potentiallyStalePath,\n validate,\n } = options || {}\n\n const pathFromContext = useFieldPath()\n\n // This is a workaround for stale props given to server rendered components.\n // See the notes in the `potentiallyStalePath` type definition for more details.\n const path = pathFromOptions || pathFromContext || potentiallyStalePath\n\n const submitted = useFormSubmitted()\n const processing = useFormProcessing()\n const initializing = useFormInitializing()\n const { user } = useAuth()\n const { id, collectionSlug } = useDocumentInfo()\n const operation = useOperation()\n\n const dispatchField = useFormFields(([_, dispatch]) => dispatch)\n const field = useFormFields(([fields]) => (fields && fields?.[path]) || null)\n\n const { t } = useTranslation()\n const { config } = useConfig()\n\n const { getData, getDataByPath, getSiblingData, setModified } = useForm()\n const documentForm = useDocumentForm()\n const modified = useFormModified()\n\n const filterOptions = field?.filterOptions\n const value = field?.value as TValue\n const initialValue = field?.initialValue as TValue\n const valid = typeof field?.valid === 'boolean' ? field.valid : true\n const showError = valid === false && submitted\n\n const prevValid = useRef(valid)\n const prevErrorMessage = useRef(field?.errorMessage)\n\n const pathSegments = path ? path.split('.') : []\n\n // Method to return from `useField`, used to\n // update field values from field component(s)\n const setValue = useCallback(\n (e, disableModifyingForm = false) => {\n // TODO:\n // There are no built-in fields that pass events into `e`.\n // Remove this check in the next major version.\n const isEvent =\n e &&\n typeof e === 'object' &&\n typeof e.preventDefault === 'function' &&\n typeof e.stopPropagation === 'function'\n\n const val = isEvent ? e.target.value : e\n\n dispatchField({\n type: 'UPDATE',\n disableFormData: disableFormData || (hasRows && val > 0),\n path,\n value: val,\n })\n\n if (!disableModifyingForm) {\n if (typeof setModified === 'function') {\n // Only update setModified to true if the form is not already set to modified. Otherwise the following could happen:\n // 1. Text field: someone types in it in an unmodified form\n // 2. After setTimeout triggers setModified(true): form is set to modified. Save Button becomes available. Good!\n // 3. Type something in text field\n // 4. Click on save button before setTimeout in useField has finished (so setModified(true) has not been run yet)\n // 5. Form is saved, setModified(false) is set in the Form/index.tsx `submit` function, \"saved successfully\" toast appears\n // 6. setModified(true) inside the timeout is run, form is set to modified again, even though it was already saved and thus set to unmodified. Bad! This should have happened before the form is saved. Now the form should be unmodified and stay that way\n // until a NEW change happens. Due to this, the \"Leave without saving\" modal appears even though it should not when leaving the page fast immediately after saving the document.\n // This is only an issue for forms which have already been set to modified true, as that causes the save button to be enabled. If we prevent this setTimeout to be run\n // for already-modified forms first place (which is unnecessary), we can avoid this issue. As for unmodified forms, this race issue will not happen, because you cannot click the save button faster\n // than the timeout in useField is run. That's because the save button won't even be enabled for clicking until the setTimeout in useField has run.\n // This fixes e2e test flakes, as e2e tests were often so fast that they were saving the form before the timeout in useField has run.\n // Specifically, this fixes the 'should not warn about unsaved changes when navigating to lexical editor with blocks node and then leaving the page after making a change and saving' lexical e2e test.\n if (modified === false) {\n // Update modified state after field value comes back\n // to avoid cursor jump caused by state value / DOM mismatch\n setTimeout(() => {\n setModified(true)\n }, 10)\n }\n }\n }\n },\n [setModified, path, dispatchField, disableFormData, hasRows, modified],\n )\n\n // Store result from hook as ref\n // to prevent unnecessary rerenders\n const result: FieldType<TValue> = useMemo(\n () => ({\n customComponents: field?.customComponents,\n disabled: processing || initializing,\n errorMessage: field?.errorMessage,\n errorPaths: field?.errorPaths || [],\n filterOptions,\n formInitializing: initializing,\n formProcessing: processing,\n formSubmitted: submitted,\n initialValue,\n path,\n rows: field?.rows,\n selectFilterOptions: field?.selectFilterOptions,\n setValue,\n showError,\n valid: field?.valid,\n value,\n }),\n [\n field,\n processing,\n setValue,\n showError,\n submitted,\n value,\n initialValue,\n path,\n filterOptions,\n initializing,\n ],\n )\n\n // Throttle the validate function\n useThrottledEffect(\n () => {\n const validateField = async () => {\n let valueToValidate = value\n\n if (field?.rows && Array.isArray(field.rows)) {\n valueToValidate = getDataByPath(path)\n }\n\n let errorMessage: string | undefined = prevErrorMessage.current\n let valid: boolean | string = prevValid.current\n\n const data = getData()\n const isValid =\n typeof validate === 'function'\n ? await validate(valueToValidate, {\n id,\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 collectionSlug,\n data: documentForm?.getData ? documentForm.getData() : data,\n event: 'onChange',\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: getSiblingData(path),\n })\n : typeof prevErrorMessage.current === 'string'\n ? prevErrorMessage.current\n : prevValid.current\n\n if (typeof isValid === 'string') {\n valid = false\n errorMessage = isValid\n } else if (typeof isValid === 'boolean') {\n valid = isValid\n errorMessage = undefined\n }\n\n // Only dispatch if the validation result has changed\n // This will prevent unnecessary rerenders\n if (valid !== prevValid.current || errorMessage !== prevErrorMessage.current) {\n prevValid.current = valid\n prevErrorMessage.current = errorMessage\n\n const update: UPDATE = {\n type: 'UPDATE',\n errorMessage,\n path,\n rows: field?.rows,\n valid,\n validate,\n value,\n }\n\n if (disableFormData || (hasRows ? typeof value === 'number' && value > 0 : false)) {\n update.disableFormData = true\n }\n\n if (typeof dispatchField === 'function') {\n dispatchField(update)\n }\n }\n }\n\n void validateField()\n },\n 150,\n [\n value,\n disableFormData,\n dispatchField,\n getData,\n getSiblingData,\n getDataByPath,\n id,\n operation,\n path,\n user,\n validate,\n field?.rows,\n collectionSlug,\n ],\n )\n\n return result\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useCallback","useMemo","useRef","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useOperation","useTranslation","useDocumentForm","useForm","useFormFields","useFormInitializing","useFormModified","useFormProcessing","useFormSubmitted","useFieldPath","useField","options","$","t0","disableFormData","t1","hasRows","path","pathFromOptions","potentiallyStalePath","validate","undefined","pathFromContext","submitted","processing","initializing","user","id","collectionSlug","operation","dispatchField","_temp","t2","t3","fields","field","t","config","getData","getDataByPath","getSiblingData","setModified","documentForm","modified","filterOptions","value","initialValue","valid","showError","prevValid","prevErrorMessage","errorMessage","split","pathSegments","t4","e","t5","disableModifyingForm","val","target","type","setTimeout","setValue","t6","customComponents","t7","t8","t9","errorPaths","t10","rows","t11","selectFilterOptions","t12","t13","disabled","formInitializing","formProcessing","formSubmitted","result","t14","validateField","valueToValidate","Array","isArray","current","valid_0","data","isValid","blockData","event","preferences","req","payload","siblingData","update","t15","t16","dispatch"],"sources":["../../../src/forms/useField/index.tsx"],"sourcesContent":["'use client'\nimport type { PayloadRequest } from 'payload'\n\nimport { useCallback, useMemo, useRef } from 'react'\n\nimport type { UPDATE } from '../Form/types.js'\nimport type { FieldType, Options } from './types.js'\n\nexport type { FieldType, Options }\n\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 { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport {\n useDocumentForm,\n useForm,\n useFormFields,\n useFormInitializing,\n useFormModified,\n useFormProcessing,\n useFormSubmitted,\n} from '../Form/context.js'\nimport { useFieldPath } from '../RenderFields/context.js'\n\n/**\n * Get and set the value of a form field.\n *\n * @see https://payloadcms.com/docs/admin/react-hooks#usefield\n */\nexport const useField = <TValue,>(options?: Options): FieldType<TValue> => {\n const {\n disableFormData = false,\n hasRows,\n path: pathFromOptions,\n potentiallyStalePath,\n validate,\n } = options || {}\n\n const pathFromContext = useFieldPath()\n\n // This is a workaround for stale props given to server rendered components.\n // See the notes in the `potentiallyStalePath` type definition for more details.\n const path = pathFromOptions || pathFromContext || potentiallyStalePath\n\n const submitted = useFormSubmitted()\n const processing = useFormProcessing()\n const initializing = useFormInitializing()\n const { user } = useAuth()\n const { id, collectionSlug } = useDocumentInfo()\n const operation = useOperation()\n\n const dispatchField = useFormFields(([_, dispatch]) => dispatch)\n const field = useFormFields(([fields]) => (fields && fields?.[path]) || null)\n\n const { t } = useTranslation()\n const { config } = useConfig()\n\n const { getData, getDataByPath, getSiblingData, setModified } = useForm()\n const documentForm = useDocumentForm()\n const modified = useFormModified()\n\n const filterOptions = field?.filterOptions\n const value = field?.value as TValue\n const initialValue = field?.initialValue as TValue\n const valid = typeof field?.valid === 'boolean' ? field.valid : true\n const showError = valid === false && submitted\n\n const prevValid = useRef(valid)\n const prevErrorMessage = useRef(field?.errorMessage)\n\n const pathSegments = path ? path.split('.') : []\n\n // Method to return from `useField`, used to\n // update field values from field component(s)\n const setValue = useCallback(\n (e, disableModifyingForm = false) => {\n const val = e && e.target ? e.target.value : e\n dispatchField({\n type: 'UPDATE',\n disableFormData: disableFormData || (hasRows && val > 0),\n path,\n value: val,\n })\n\n if (!disableModifyingForm) {\n if (typeof setModified === 'function') {\n // Only update setModified to true if the form is not already set to modified. Otherwise the following could happen:\n // 1. Text field: someone types in it in an unmodified form\n // 2. After setTimeout triggers setModified(true): form is set to modified. Save Button becomes available. Good!\n // 3. Type something in text field\n // 4. Click on save button before setTimeout in useField has finished (so setModified(true) has not been run yet)\n // 5. Form is saved, setModified(false) is set in the Form/index.tsx `submit` function, \"saved successfully\" toast appears\n // 6. setModified(true) inside the timeout is run, form is set to modified again, even though it was already saved and thus set to unmodified. Bad! This should have happened before the form is saved. Now the form should be unmodified and stay that way\n // until a NEW change happens. Due to this, the \"Leave without saving\" modal appears even though it should not when leaving the page fast immediately after saving the document.\n // This is only an issue for forms which have already been set to modified true, as that causes the save button to be enabled. If we prevent this setTimeout to be run\n // for already-modified forms first place (which is unnecessary), we can avoid this issue. As for unmodified forms, this race issue will not happen, because you cannot click the save button faster\n // than the timeout in useField is run. That's because the save button won't even be enabled for clicking until the setTimeout in useField has run.\n // This fixes e2e test flakes, as e2e tests were often so fast that they were saving the form before the timeout in useField has run.\n // Specifically, this fixes the 'should not warn about unsaved changes when navigating to lexical editor with blocks node and then leaving the page after making a change and saving' lexical e2e test.\n if (modified === false) {\n // Update modified state after field value comes back\n // to avoid cursor jump caused by state value / DOM mismatch\n setTimeout(() => {\n setModified(true)\n }, 10)\n }\n }\n }\n },\n [setModified, path, dispatchField, disableFormData, hasRows, modified],\n )\n\n // Store result from hook as ref\n // to prevent unnecessary rerenders\n const result: FieldType<TValue> = useMemo(\n () => ({\n customComponents: field?.customComponents,\n disabled: processing || initializing,\n errorMessage: field?.errorMessage,\n errorPaths: field?.errorPaths || [],\n filterOptions,\n formInitializing: initializing,\n formProcessing: processing,\n formSubmitted: submitted,\n initialValue,\n path,\n rows: field?.rows,\n selectFilterOptions: field?.selectFilterOptions,\n setValue,\n showError,\n valid: field?.valid,\n value,\n }),\n [\n field,\n processing,\n setValue,\n showError,\n submitted,\n value,\n initialValue,\n path,\n filterOptions,\n initializing,\n ],\n )\n\n // Throttle the validate function\n useThrottledEffect(\n () => {\n const validateField = async () => {\n let valueToValidate = value\n\n if (field?.rows && Array.isArray(field.rows)) {\n valueToValidate = getDataByPath(path)\n }\n\n let errorMessage: string | undefined = prevErrorMessage.current\n let valid: boolean | string = prevValid.current\n\n const data = getData()\n const isValid =\n typeof validate === 'function'\n ? await validate(valueToValidate, {\n id,\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 collectionSlug,\n data: documentForm?.getData ? documentForm.getData() : data,\n event: 'onChange',\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: getSiblingData(path),\n })\n : typeof prevErrorMessage.current === 'string'\n ? prevErrorMessage.current\n : prevValid.current\n\n if (typeof isValid === 'string') {\n valid = false\n errorMessage = isValid\n } else if (typeof isValid === 'boolean') {\n valid = isValid\n errorMessage = undefined\n }\n\n // Only dispatch if the validation result has changed\n // This will prevent unnecessary rerenders\n if (valid !== prevValid.current || errorMessage !== prevErrorMessage.current) {\n prevValid.current = valid\n prevErrorMessage.current = errorMessage\n\n const update: UPDATE = {\n type: 'UPDATE',\n errorMessage,\n path,\n rows: field?.rows,\n valid,\n validate,\n value,\n }\n\n if (disableFormData || (hasRows ? typeof value === 'number' && value > 0 : false)) {\n update.disableFormData = true\n }\n\n if (typeof dispatchField === 'function') {\n dispatchField(update)\n }\n }\n }\n\n void validateField()\n },\n 150,\n [\n value,\n disableFormData,\n dispatchField,\n getData,\n getSiblingData,\n getDataByPath,\n id,\n operation,\n path,\n user,\n validate,\n field?.rows,\n collectionSlug,\n ],\n )\n\n return result\n}\n"],"mappings":"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","ignoreList":[]}
|