@payloadcms/ui 3.0.0-alpha.45 → 3.0.0-alpha.47

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.
Files changed (93) hide show
  1. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  2. package/dist/elements/DocumentDrawer/DrawerContent.js +27 -16
  3. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  4. package/dist/elements/DocumentDrawer/types.d.ts +3 -1
  5. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  6. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  7. package/dist/elements/DocumentHeader/index.d.ts.map +1 -1
  8. package/dist/elements/DocumentHeader/index.js +2 -3
  9. package/dist/elements/DocumentHeader/index.js.map +1 -1
  10. package/dist/elements/RenderTitle/index.d.ts +1 -2
  11. package/dist/elements/RenderTitle/index.d.ts.map +1 -1
  12. package/dist/elements/RenderTitle/index.js +2 -3
  13. package/dist/elements/RenderTitle/index.js.map +1 -1
  14. package/dist/elements/RenderTitle/types.d.ts +1 -0
  15. package/dist/elements/RenderTitle/types.d.ts.map +1 -1
  16. package/dist/elements/RenderTitle/types.js.map +1 -1
  17. package/dist/elements/TableColumns/buildColumns.d.ts.map +1 -1
  18. package/dist/elements/TableColumns/buildColumns.js +7 -6
  19. package/dist/elements/TableColumns/buildColumns.js.map +1 -1
  20. package/dist/elements/TableColumns/columnReducer.d.ts.map +1 -1
  21. package/dist/elements/TableColumns/columnReducer.js +26 -4
  22. package/dist/elements/TableColumns/columnReducer.js.map +1 -1
  23. package/dist/elements/TableColumns/index.js +1 -1
  24. package/dist/elements/TableColumns/index.js.map +1 -1
  25. package/dist/elements/ThumbnailCard/index.d.ts.map +1 -1
  26. package/dist/elements/ThumbnailCard/index.js +8 -4
  27. package/dist/elements/ThumbnailCard/index.js.map +1 -1
  28. package/dist/elements/ThumbnailCard/types.d.ts +4 -2
  29. package/dist/elements/ThumbnailCard/types.d.ts.map +1 -1
  30. package/dist/elements/ThumbnailCard/types.js.map +1 -1
  31. package/dist/forms/Form/index.d.ts.map +1 -1
  32. package/dist/forms/Form/index.js +19 -22
  33. package/dist/forms/Form/index.js.map +1 -1
  34. package/dist/forms/Form/mergeServerFormState.d.ts +7 -0
  35. package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
  36. package/dist/forms/Form/mergeServerFormState.js +7 -1
  37. package/dist/forms/Form/mergeServerFormState.js.map +1 -1
  38. package/dist/forms/Form/types.d.ts +4 -2
  39. package/dist/forms/Form/types.d.ts.map +1 -1
  40. package/dist/forms/Form/types.js.map +1 -1
  41. package/dist/forms/Label/index.d.ts.map +1 -1
  42. package/dist/forms/Label/index.js +7 -1
  43. package/dist/forms/Label/index.js.map +1 -1
  44. package/dist/forms/RenderFields/RenderField.js +2 -2
  45. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  46. package/dist/forms/fields/Array/index.d.ts.map +1 -1
  47. package/dist/forms/fields/Array/index.js +12 -11
  48. package/dist/forms/fields/Array/index.js.map +1 -1
  49. package/dist/forms/fields/Blocks/BlockRow.d.ts.map +1 -1
  50. package/dist/forms/fields/Blocks/BlockRow.js +1 -1
  51. package/dist/forms/fields/Blocks/BlockRow.js.map +1 -1
  52. package/dist/forms/fields/Blocks/index.d.ts.map +1 -1
  53. package/dist/forms/fields/Blocks/index.js +14 -11
  54. package/dist/forms/fields/Blocks/index.js.map +1 -1
  55. package/dist/forms/fields/Checkbox/index.d.ts.map +1 -1
  56. package/dist/forms/fields/Checkbox/index.js +2 -1
  57. package/dist/forms/fields/Checkbox/index.js.map +1 -1
  58. package/dist/forms/fields/JSON/index.d.ts.map +1 -1
  59. package/dist/forms/fields/JSON/index.js +4 -2
  60. package/dist/forms/fields/JSON/index.js.map +1 -1
  61. package/dist/forms/fields/Relationship/AddNew/index.d.ts.map +1 -1
  62. package/dist/forms/fields/Relationship/AddNew/index.js +4 -8
  63. package/dist/forms/fields/Relationship/AddNew/index.js.map +1 -1
  64. package/dist/forms/fields/Relationship/optionsReducer.d.ts.map +1 -1
  65. package/dist/forms/fields/Relationship/optionsReducer.js +12 -8
  66. package/dist/forms/fields/Relationship/optionsReducer.js.map +1 -1
  67. package/dist/forms/fields/Tabs/index.d.ts.map +1 -1
  68. package/dist/forms/fields/Tabs/index.js +4 -5
  69. package/dist/forms/fields/Tabs/index.js.map +1 -1
  70. package/dist/forms/fields/Tabs/types.d.ts +2 -0
  71. package/dist/forms/fields/Tabs/types.d.ts.map +1 -1
  72. package/dist/forms/fields/Tabs/types.js.map +1 -1
  73. package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.d.ts.map +1 -1
  74. package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.js +11 -1
  75. package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.js.map +1 -1
  76. package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
  77. package/dist/hooks/usePayloadAPI.js +12 -2
  78. package/dist/hooks/usePayloadAPI.js.map +1 -1
  79. package/dist/prod/styles.css +1 -1
  80. package/dist/utilities/buildComponentMap/mapFields.d.ts.map +1 -1
  81. package/dist/utilities/buildComponentMap/mapFields.js +6 -9
  82. package/dist/utilities/buildComponentMap/mapFields.js.map +1 -1
  83. package/dist/utilities/buildFieldSchemaMap/traverseFields.js +7 -1
  84. package/dist/utilities/buildFieldSchemaMap/traverseFields.js.map +1 -1
  85. package/dist/utilities/formatDocTitle.d.ts +7 -7
  86. package/dist/utilities/formatDocTitle.d.ts.map +1 -1
  87. package/dist/utilities/formatDocTitle.js +21 -16
  88. package/dist/utilities/formatDocTitle.js.map +1 -1
  89. package/dist/utilities/generateFieldID.d.ts +2 -0
  90. package/dist/utilities/generateFieldID.d.ts.map +1 -0
  91. package/dist/utilities/generateFieldID.js +5 -0
  92. package/dist/utilities/generateFieldID.js.map +1 -0
  93. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/ThumbnailCard/index.tsx"],"sourcesContent":["import React from 'react'\n\nimport type { Props } from './types.js'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatDocTitle } from '../../utilities/formatDocTitle.js'\nimport Thumbnail from '../Thumbnail/index.js'\nimport './index.scss'\n\nconst baseClass = 'thumbnail-card'\n\nexport const ThumbnailCard: React.FC<Props> = (props) => {\n const {\n alignLabel,\n className,\n collection,\n doc,\n label: labelFromProps,\n onClick,\n thumbnail,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const classes = [\n baseClass,\n className,\n typeof onClick === 'function' && `${baseClass}--has-on-click`,\n alignLabel && `${baseClass}--align-label-${alignLabel}`,\n ]\n .filter(Boolean)\n .join(' ')\n\n let title = labelFromProps\n\n if (!title) {\n title =\n formatDocTitle({\n doc,\n i18n,\n useAsTitle: collection?.admin?.useAsTitle,\n }) ||\n (doc?.filename as string) ||\n `[${t('general:untitled')}]`\n }\n\n return (\n <button className={classes} onClick={onClick} title={title} type=\"button\">\n <div className={`${baseClass}__thumbnail`}>\n {thumbnail && thumbnail}\n {!thumbnail && collection && doc && <Thumbnail doc={doc} size=\"expand\" />}\n </div>\n <div className={`${baseClass}__label`}>{title}</div>\n </button>\n )\n}\n"],"names":["React","useTranslation","formatDocTitle","Thumbnail","baseClass","ThumbnailCard","props","alignLabel","className","collection","doc","label","labelFromProps","onClick","thumbnail","i18n","t","classes","filter","Boolean","join","title","useAsTitle","admin","filename","button","type","div","size"],"mappings":"AAAA,OAAOA,WAAW,QAAO;AAIzB,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,cAAc,QAAQ,oCAAmC;AAClE,OAAOC,eAAe,wBAAuB;AAG7C,MAAMC,YAAY;AAElB,OAAO,MAAMC,gBAAiC,CAACC;IAC7C,MAAM,EACJC,UAAU,EACVC,SAAS,EACTC,UAAU,EACVC,GAAG,EACHC,OAAOC,cAAc,EACrBC,OAAO,EACPC,SAAS,EACV,GAAGR;IAEJ,MAAM,EAAES,IAAI,EAAEC,CAAC,EAAE,GAAGf;IAEpB,MAAMgB,UAAU;QACdb;QACAI;QACA,OAAOK,YAAY,cAAc,CAAC,EAAET,UAAU,cAAc,CAAC;QAC7DG,cAAc,CAAC,EAAEH,UAAU,cAAc,EAAEG,WAAW,CAAC;KACxD,CACEW,MAAM,CAACC,SACPC,IAAI,CAAC;IAER,IAAIC,QAAQT;IAEZ,IAAI,CAACS,OAAO;QACVA,QACEnB,eAAe;YACbQ;YACAK;YACAO,YAAYb,YAAYc,OAAOD;QACjC,MACCZ,KAAKc,YACN,CAAC,CAAC,EAAER,EAAE,oBAAoB,CAAC,CAAC;IAChC;IAEA,qBACE,oBAACS;QAAOjB,WAAWS;QAASJ,SAASA;QAASQ,OAAOA;QAAOK,MAAK;qBAC/D,oBAACC;QAAInB,WAAW,CAAC,EAAEJ,UAAU,WAAW,CAAC;OACtCU,aAAaA,WACb,CAACA,aAAaL,cAAcC,qBAAO,oBAACP;QAAUO,KAAKA;QAAKkB,MAAK;uBAEhE,oBAACD;QAAInB,WAAW,CAAC,EAAEJ,UAAU,OAAO,CAAC;OAAGiB;AAG9C,EAAC"}
1
+ {"version":3,"sources":["../../../src/elements/ThumbnailCard/index.tsx"],"sourcesContent":["import React from 'react'\n\nimport type { Props } from './types.js'\n\nimport { useConfig } from '../../index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatDocTitle } from '../../utilities/formatDocTitle.js'\nimport Thumbnail from '../Thumbnail/index.js'\nimport './index.scss'\n\nconst baseClass = 'thumbnail-card'\n\nexport const ThumbnailCard: React.FC<Props> = (props) => {\n const {\n alignLabel,\n className,\n collection,\n doc,\n label: labelFromProps,\n onClick,\n thumbnail,\n } = props\n\n const config = useConfig()\n\n const { i18n, t } = useTranslation()\n\n const classes = [\n baseClass,\n className,\n typeof onClick === 'function' && `${baseClass}--has-on-click`,\n alignLabel && `${baseClass}--align-label-${alignLabel}`,\n ]\n .filter(Boolean)\n .join(' ')\n\n let title = labelFromProps\n\n if (!title) {\n title = formatDocTitle({\n collectionConfig: collection,\n data: doc,\n dateFormat: config.admin.dateFormat,\n fallback: doc?.filename,\n i18n,\n })\n }\n\n return (\n <button className={classes} onClick={onClick} title={title} type=\"button\">\n <div className={`${baseClass}__thumbnail`}>\n {thumbnail && thumbnail}\n {!thumbnail && collection && doc && <Thumbnail doc={doc} size=\"expand\" />}\n </div>\n <div className={`${baseClass}__label`}>{title}</div>\n </button>\n )\n}\n"],"names":["React","useConfig","useTranslation","formatDocTitle","Thumbnail","baseClass","ThumbnailCard","props","alignLabel","className","collection","doc","label","labelFromProps","onClick","thumbnail","config","i18n","t","classes","filter","Boolean","join","title","collectionConfig","data","dateFormat","admin","fallback","filename","button","type","div","size"],"mappings":"AAAA,OAAOA,WAAW,QAAO;AAIzB,SAASC,SAAS,QAAQ,iBAAgB;AAC1C,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,cAAc,QAAQ,oCAAmC;AAClE,OAAOC,eAAe,wBAAuB;AAG7C,MAAMC,YAAY;AAElB,OAAO,MAAMC,gBAAiC,CAACC;IAC7C,MAAM,EACJC,UAAU,EACVC,SAAS,EACTC,UAAU,EACVC,GAAG,EACHC,OAAOC,cAAc,EACrBC,OAAO,EACPC,SAAS,EACV,GAAGR;IAEJ,MAAMS,SAASf;IAEf,MAAM,EAAEgB,IAAI,EAAEC,CAAC,EAAE,GAAGhB;IAEpB,MAAMiB,UAAU;QACdd;QACAI;QACA,OAAOK,YAAY,cAAc,CAAC,EAAET,UAAU,cAAc,CAAC;QAC7DG,cAAc,CAAC,EAAEH,UAAU,cAAc,EAAEG,WAAW,CAAC;KACxD,CACEY,MAAM,CAACC,SACPC,IAAI,CAAC;IAER,IAAIC,QAAQV;IAEZ,IAAI,CAACU,OAAO;QACVA,QAAQpB,eAAe;YACrBqB,kBAAkBd;YAClBe,MAAMd;YACNe,YAAYV,OAAOW,KAAK,CAACD,UAAU;YACnCE,UAAUjB,KAAKkB;YACfZ;QACF;IACF;IAEA,qBACE,oBAACa;QAAOrB,WAAWU;QAASL,SAASA;QAASS,OAAOA;QAAOQ,MAAK;qBAC/D,oBAACC;QAAIvB,WAAW,CAAC,EAAEJ,UAAU,WAAW,CAAC;OACtCU,aAAaA,WACb,CAACA,aAAaL,cAAcC,qBAAO,oBAACP;QAAUO,KAAKA;QAAKsB,MAAK;uBAEhE,oBAACD;QAAIvB,WAAW,CAAC,EAAEJ,UAAU,OAAO,CAAC;OAAGkB;AAG9C,EAAC"}
@@ -1,10 +1,12 @@
1
1
  /// <reference types="react" resolution-mode="require"/>
2
- import type { SanitizedCollectionConfig } from 'payload/types';
2
+ import type { SanitizedCollectionConfig, TypeWithID } from 'payload/types';
3
3
  export type Props = {
4
4
  alignLabel?: 'center' | 'left';
5
5
  className?: string;
6
6
  collection?: SanitizedCollectionConfig;
7
- doc?: Record<string, unknown>;
7
+ doc?: TypeWithID & {
8
+ filename?: string;
9
+ };
8
10
  label?: string;
9
11
  onClick?: () => void;
10
12
  onKeyDown?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/ThumbnailCard/types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AAE9D,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,yBAAyB,CAAA;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC5B,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/ThumbnailCard/types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1E,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,yBAAyB,CAAA;IACtC,GAAG,CAAC,EAAE,UAAU,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACxC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC5B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/ThumbnailCard/types.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from 'payload/types'\n\nexport type Props = {\n alignLabel?: 'center' | 'left'\n className?: string\n collection?: SanitizedCollectionConfig\n doc?: Record<string, unknown>\n label?: string\n onClick?: () => void\n onKeyDown?: () => void\n thumbnail?: React.ReactNode\n}\n"],"names":[],"mappings":"AAEA,WASC"}
1
+ {"version":3,"sources":["../../../src/elements/ThumbnailCard/types.ts"],"sourcesContent":["import type { SanitizedCollectionConfig, TypeWithID } from 'payload/types'\n\nexport type Props = {\n alignLabel?: 'center' | 'left'\n className?: string\n collection?: SanitizedCollectionConfig\n doc?: TypeWithID & { filename?: string }\n label?: string\n onClick?: () => void\n onKeyDown?: () => void\n thumbnail?: React.ReactNode\n}\n"],"names":[],"mappings":"AAEA,WASC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/index.tsx"],"names":[],"mappings":"AASA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAGnF,OAAO,KAAK,EAA6C,KAAK,EAAiB,MAAM,YAAY,CAAA;AA+BjG,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAkiBzB,CAAA;AAED,eAAe,IAAI,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/index.tsx"],"names":[],"mappings":"AASA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAGnF,OAAO,KAAK,EAA6C,KAAK,EAAiB,MAAM,YAAY,CAAA;AA+BjG,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA4hBzB,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -27,10 +27,10 @@ import { mergeServerFormState } from './mergeServerFormState.js';
27
27
  import reduceFieldsToValues from './reduceFieldsToValues.js';
28
28
  const baseClass = 'form';
29
29
  const Form = (props)=>{
30
- const { id, collectionSlug, getDocPreferences, globalSlug } = useDocumentInfo();
30
+ const { id, collectionSlug, globalSlug } = useDocumentInfo();
31
31
  const { action, children, className, disableSuccessStatus, disabled, // fields: fieldsFromProps = collection?.fields || global?.fields,
32
32
  beforeSubmit, handleResponse, initialState, onChange, onSubmit, onSuccess, redirect, submitted: submittedFromProps, uuid, waitForAutocomplete } = props;
33
- const method = 'method' in props ? props.method : undefined;
33
+ const method = 'method' in props ? props?.method : undefined;
34
34
  const router = useRouter();
35
35
  const { code: locale } = useLocale();
36
36
  const { i18n, t } = useTranslation();
@@ -174,6 +174,7 @@ const Form = (props)=>{
174
174
  setProcessing(false);
175
175
  const contentType = res.headers.get('content-type');
176
176
  const isJSON = contentType && contentType.indexOf('application/json') !== -1;
177
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
177
178
  let json = {};
178
179
  if (isJSON) json = await res.json();
179
180
  if (res.status < 400) {
@@ -269,6 +270,7 @@ const Form = (props)=>{
269
270
  const getData = useCallback(()=>reduceFieldsToValues(contextRef.current.fields, true), []);
270
271
  const getSiblingData = useCallback((path)=>getSiblingDataFunc(contextRef.current.fields, path), []);
271
272
  const getDataByPath = useCallback((path)=>getDataByPathFunc(contextRef.current.fields, path), []);
273
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
272
274
  const createFormData = useCallback((overrides = {})=>{
273
275
  const data = reduceFieldsToValues(contextRef.current.fields, true);
274
276
  const file = data?.file;
@@ -332,17 +334,14 @@ const Form = (props)=>{
332
334
  }, [
333
335
  dispatchFields
334
336
  ]);
335
- const getFieldStateByPath = useCallback(async ({ data, path })=>{
337
+ const getFieldStateBySchemaPath = useCallback(async ({ data, schemaPath })=>{
336
338
  const fieldSchema = await getFormState({
337
339
  apiRoute,
338
340
  body: {
339
341
  collectionSlug,
340
342
  data,
341
343
  globalSlug,
342
- /**
343
- Turns: 'arrayField.0.group123field.arrayField.0.textField'
344
- Into: 'arrayField.group123field.arrayField.textField'
345
- */ schemaPath: `${collectionSlug || globalSlug}.${path}`.replace(/\.\d+\./g, '.')
344
+ schemaPath
346
345
  },
347
346
  serverURL
348
347
  });
@@ -353,10 +352,10 @@ const Form = (props)=>{
353
352
  globalSlug,
354
353
  serverURL
355
354
  ]);
356
- const addFieldRow = useCallback(async ({ data, path, rowIndex })=>{
357
- const subFieldState = await getFieldStateByPath({
355
+ const addFieldRow = useCallback(async ({ data, path, rowIndex, schemaPath })=>{
356
+ const subFieldState = await getFieldStateBySchemaPath({
358
357
  data,
359
- path
358
+ schemaPath
360
359
  });
361
360
  dispatchFields({
362
361
  type: 'ADD_ROW',
@@ -366,7 +365,7 @@ const Form = (props)=>{
366
365
  subFieldState
367
366
  });
368
367
  }, [
369
- getFieldStateByPath,
368
+ getFieldStateBySchemaPath,
370
369
  dispatchFields
371
370
  ]);
372
371
  const removeFieldRow = useCallback(({ path, rowIndex })=>{
@@ -378,10 +377,10 @@ const Form = (props)=>{
378
377
  }, [
379
378
  dispatchFields
380
379
  ]);
381
- const replaceFieldRow = useCallback(async ({ data, path, rowIndex })=>{
382
- const subFieldState = await getFieldStateByPath({
380
+ const replaceFieldRow = useCallback(async ({ data, path, rowIndex, schemaPath })=>{
381
+ const subFieldState = await getFieldStateBySchemaPath({
383
382
  data,
384
- path
383
+ schemaPath
385
384
  });
386
385
  dispatchFields({
387
386
  type: 'REPLACE_ROW',
@@ -391,7 +390,7 @@ const Form = (props)=>{
391
390
  subFieldState
392
391
  });
393
392
  }, [
394
- getFieldStateByPath,
393
+ getFieldStateBySchemaPath,
395
394
  dispatchFields
396
395
  ]);
397
396
  contextRef.current.submit = submit;
@@ -454,14 +453,12 @@ const Form = (props)=>{
454
453
  useDebouncedEffect(()=>{
455
454
  const executeOnChange = async ()=>{
456
455
  if (Array.isArray(onChange)) {
457
- let revalidatedFormState;
458
- await onChange.reduce(async (priorOnChange, onChangeFn)=>{
459
- await priorOnChange;
460
- const result = await onChangeFn({
461
- formState: fields
456
+ let revalidatedFormState = fields;
457
+ for (const onChangeFn of onChange){
458
+ revalidatedFormState = await onChangeFn({
459
+ formState: revalidatedFormState
462
460
  });
463
- revalidatedFormState = result;
464
- }, Promise.resolve());
461
+ }
465
462
  const { changed, newState } = mergeServerFormState(fields, revalidatedFormState);
466
463
  if (changed) {
467
464
  dispatchFields({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/forms/Form/index.tsx"],"sourcesContent":["'use client'\nimport type { Field, FormState } from 'payload/types'\n\n/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\nimport isDeepEqual from 'deep-equal'\nimport { useRouter } from 'next/navigation.js'\nimport { serialize } from 'object-to-formdata'\nimport { wait } from 'payload/utilities'\nimport QueryString from 'qs'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\nimport { toast } from 'react-toastify'\n\nimport type { Context as FormContextType, GetDataByPath, Props, SubmitOptions } from './types.js'\n\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.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 { useFormQueryParams } from '../../providers/FormQueryParams/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/OperationProvider/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { getFormState } from '../../utilities/getFormState.js'\nimport {\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n} from './context.js'\nimport errorMessages from './errorMessages.js'\nimport { fieldReducer } from './fieldReducer.js'\nimport getDataByPathFunc from './getDataByPath.js'\nimport getSiblingDataFunc from './getSiblingData.js'\nimport initContextState from './initContextState.js'\nimport { mergeServerFormState } from './mergeServerFormState.js'\nimport reduceFieldsToValues from './reduceFieldsToValues.js'\n\nconst baseClass = 'form'\n\nconst Form: React.FC<Props> = (props) => {\n const { id, collectionSlug, getDocPreferences, globalSlug } = useDocumentInfo()\n\n const {\n action,\n children,\n className,\n disableSuccessStatus,\n disabled,\n // fields: fieldsFromProps = collection?.fields || global?.fields,\n beforeSubmit,\n handleResponse,\n initialState, // fully formed initial field state\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 { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { refreshCookie, user } = useAuth()\n const operation = useOperation()\n const { formQueryParams } = useFormQueryParams()\n\n const config = useConfig()\n const {\n routes: { api: apiRoute },\n serverURL,\n } = config\n\n const [modified, setModified] = useState(false)\n const [processing, setProcessing] = useState(false)\n const [submitted, setSubmitted] = useState(false)\n const formRef = useRef<HTMLFormElement>(null)\n const contextRef = useRef({} as FormContextType)\n\n const fieldsReducer = useReducer(fieldReducer, {}, () => initialState)\n /**\n * `fields` is the current, up-to-date state/data of all fields in the form. It can be modified by using dispatchFields,\n * which calls the fieldReducer, which then updates the state.\n */\n const [fields, dispatchFields] = fieldsReducer\n\n contextRef.current.fields = fields\n\n const validateForm = useCallback(async () => {\n const validatedFieldState = {}\n let isValid = true\n\n const dataFromContext = contextRef.current.getData()\n const data = dataFromContext\n\n const validationPromises = Object.entries(contextRef.current.fields).map(\n async ([path, field]) => {\n const validatedField = {\n ...field,\n valid: true,\n }\n\n if (field.passesCondition !== false) {\n let validationResult: boolean | string = true\n\n if (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 id,\n config,\n data,\n operation,\n siblingData: contextRef.current.getSiblingData(path),\n t,\n user,\n })\n }\n\n if (typeof validationResult === 'string') {\n validatedField.errorMessage = validationResult\n validatedField.valid = false\n isValid = false\n }\n }\n\n validatedFieldState[path] = validatedField\n },\n )\n\n await Promise.all(validationPromises)\n\n if (!isDeepEqual(contextRef.current.fields, validatedFieldState)) {\n dispatchFields({ type: 'REPLACE_STATE', state: validatedFieldState })\n }\n\n return isValid\n }, [id, user, operation, t, dispatchFields, config])\n\n const submit = useCallback(\n async (options: SubmitOptions = {}, e): Promise<void> => {\n const {\n action: actionArg,\n method: methodToUse = method,\n overrides = {},\n skipValidation,\n } = options\n\n if (disabled) {\n if (e) {\n e.preventDefault()\n }\n return\n }\n\n if (e) {\n e.stopPropagation()\n e.preventDefault()\n }\n\n setProcessing(true)\n setSubmitted(true)\n\n if (waitForAutocomplete) await wait(100)\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: fields,\n })\n\n revalidatedFormState = result\n }, Promise.resolve())\n\n const isValid = Object.entries(revalidatedFormState).every(([, field]) => field.valid)\n\n if (!isValid) {\n setProcessing(false)\n return dispatchFields({ type: 'REPLACE_STATE', state: revalidatedFormState })\n }\n }\n\n const isValid = skipValidation ? true : await contextRef.current.validateForm()\n\n // If not valid, prevent submission\n if (!isValid) {\n toast.error(t('error:correctInvalidFields'))\n setProcessing(false)\n\n return\n }\n\n // If submit handler comes through via props, run that\n if (onSubmit) {\n const data = {\n ...reduceFieldsToValues(fields, true),\n ...overrides,\n }\n\n onSubmit(fields, data)\n }\n\n const formData = contextRef.current.createFormData(overrides)\n\n try {\n let res\n const actionEndpoint =\n actionArg ||\n (typeof action === 'string'\n ? `${action}${QueryString.stringify(formQueryParams, { addQueryPrefix: true })}`\n : null)\n\n if (actionEndpoint) {\n res = await requests[methodToUse.toLowerCase()](actionEndpoint, {\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\n if (typeof handleResponse === 'function') {\n handleResponse(res)\n return\n }\n\n setProcessing(false)\n\n const contentType = res.headers.get('content-type')\n const isJSON = contentType && contentType.indexOf('application/json') !== -1\n\n let json: Record<string, any> = {}\n\n if (isJSON) json = await res.json()\n\n if (res.status < 400) {\n setSubmitted(false)\n\n if (typeof onSuccess === 'function') onSuccess(json)\n\n if (redirect) {\n router.push(redirect)\n } else if (!disableSuccessStatus) {\n toast.success(json.message || t('general:submissionSuccessful'), { autoClose: 3000 })\n }\n } else {\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n if (json.message) {\n toast.error(json.message)\n\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)) {\n err.data.forEach((dataError) => {\n if (dataError?.field) {\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 fieldErrors.forEach((err) => {\n dispatchFields({\n type: 'UPDATE',\n ...(contextRef.current?.fields?.[err.field] || {}),\n errorMessage: err.message,\n path: err.field,\n valid: false,\n })\n })\n\n nonFieldErrors.forEach((err) => {\n toast.error(err.message || t('error:unknown'))\n })\n\n return\n }\n\n const message = errorMessages?.[res.status] || res?.statusText || t('error:unknown')\n\n toast.error(message)\n }\n } catch (err) {\n setProcessing(false)\n\n toast.error(err)\n }\n },\n [\n action,\n disableSuccessStatus,\n disabled,\n dispatchFields,\n fields,\n handleResponse,\n method,\n onSubmit,\n onSuccess,\n redirect,\n router,\n t,\n i18n,\n waitForAutocomplete,\n beforeSubmit,\n formQueryParams,\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 const getDataByPath = useCallback<GetDataByPath>(\n (path: string) => getDataByPathFunc(contextRef.current.fields, path),\n [],\n )\n\n const createFormData = useCallback((overrides: any = {}) => {\n const data = reduceFieldsToValues(contextRef.current.fields, true)\n\n const file = data?.file\n\n if (file) {\n delete data.file\n }\n\n const dataWithOverrides = {\n ...data,\n ...overrides,\n }\n\n const dataToSerialize = {\n _payload: JSON.stringify(dataWithOverrides),\n file,\n }\n\n // nullAsUndefineds is important to allow uploads and relationship fields to clear themselves\n const formData = serialize(dataToSerialize, { indices: true, nullsAsUndefineds: false })\n\n return formData\n }, [])\n\n const reset = useCallback(\n async (data: unknown) => {\n const newState = await getFormState({\n apiRoute,\n body: {\n id,\n collectionSlug,\n data,\n globalSlug,\n operation,\n schemaPath: collectionSlug || globalSlug,\n },\n serverURL,\n })\n\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state: newState })\n },\n [apiRoute, collectionSlug, dispatchFields, globalSlug, id, operation, serverURL],\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 getFieldStateByPath = useCallback(\n async ({ data, path }) => {\n const fieldSchema = await getFormState({\n apiRoute,\n body: {\n collectionSlug,\n data,\n globalSlug,\n /**\n Turns: 'arrayField.0.group123field.arrayField.0.textField'\n Into: 'arrayField.group123field.arrayField.textField'\n */\n schemaPath: `${collectionSlug || globalSlug}.${path}`.replace(/\\.\\d+\\./g, '.'),\n },\n serverURL,\n })\n return fieldSchema\n },\n [apiRoute, collectionSlug, globalSlug, serverURL],\n )\n\n const addFieldRow: FormContextType['addFieldRow'] = useCallback(\n async ({ data, path, rowIndex }) => {\n const subFieldState = await getFieldStateByPath({ data, path })\n\n dispatchFields({\n type: 'ADD_ROW',\n blockType: data?.blockType,\n path,\n rowIndex,\n subFieldState,\n })\n },\n [getFieldStateByPath, dispatchFields],\n )\n\n const removeFieldRow: FormContextType['removeFieldRow'] = useCallback(\n ({ path, rowIndex }) => {\n dispatchFields({ type: 'REMOVE_ROW', path, rowIndex })\n },\n [dispatchFields],\n )\n\n const replaceFieldRow: FormContextType['replaceFieldRow'] = useCallback(\n async ({ data, path, rowIndex }) => {\n const subFieldState = await getFieldStateByPath({ data, path })\n\n dispatchFields({\n type: 'REPLACE_ROW',\n blockType: data?.blockType,\n path,\n rowIndex,\n subFieldState,\n })\n },\n [getFieldStateByPath, dispatchFields],\n )\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.setSubmitted = setSubmitted\n contextRef.current.disabled = disabled\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.replaceFieldRow = replaceFieldRow\n contextRef.current.uuid = uuid\n\n useEffect(() => {\n if (typeof submittedFromProps === 'boolean') setSubmitted(submittedFromProps)\n }, [submittedFromProps])\n\n useEffect(() => {\n if (initialState) {\n contextRef.current = { ...initContextState } as FormContextType\n dispatchFields({ type: 'REPLACE_STATE', state: initialState })\n }\n }, [initialState, dispatchFields])\n\n useThrottledEffect(\n () => {\n refreshCookie()\n },\n 15000,\n [fields],\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 useDebouncedEffect(\n () => {\n const executeOnChange = async () => {\n if (Array.isArray(onChange)) {\n let revalidatedFormState: FormState\n\n await onChange.reduce(async (priorOnChange, onChangeFn) => {\n await priorOnChange\n\n const result = await onChangeFn({\n formState: fields,\n })\n\n revalidatedFormState = result\n }, Promise.resolve())\n\n const { changed, newState } = mergeServerFormState(fields, revalidatedFormState)\n\n if (changed) {\n dispatchFields({ type: 'REPLACE_STATE', optimize: false, state: newState })\n }\n }\n }\n\n void executeOnChange() // eslint-disable-line @typescript-eslint/no-floating-promises\n },\n 150,\n [fields, dispatchFields, onChange],\n )\n\n const actionString =\n typeof action === 'string'\n ? `${action}${QueryString.stringify(formQueryParams, { addQueryPrefix: true })}`\n : ''\n\n return (\n <form\n action={method ? actionString : action}\n className={classes}\n method={method}\n noValidate\n onSubmit={(e) => contextRef.current.submit({}, e)}\n ref={formRef}\n >\n <FormContext.Provider value={contextRef.current}>\n <FormWatchContext.Provider\n value={{\n fields,\n ...contextRef.current,\n }}\n >\n <SubmittedContext.Provider value={submitted}>\n <ProcessingContext.Provider value={processing}>\n <ModifiedContext.Provider value={modified}>\n <FormFieldsContext.Provider value={fieldsReducer}>\n {children}\n </FormFieldsContext.Provider>\n </ModifiedContext.Provider>\n </ProcessingContext.Provider>\n </SubmittedContext.Provider>\n </FormWatchContext.Provider>\n </FormContext.Provider>\n </form>\n )\n}\n\nexport default Form\n"],"names":["isDeepEqual","useRouter","serialize","wait","QueryString","React","useCallback","useEffect","useReducer","useRef","useState","toast","useDebouncedEffect","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useFormQueryParams","useLocale","useOperation","useTranslation","requests","getFormState","FormContext","FormFieldsContext","FormWatchContext","ModifiedContext","ProcessingContext","SubmittedContext","errorMessages","fieldReducer","getDataByPathFunc","getSiblingDataFunc","initContextState","mergeServerFormState","reduceFieldsToValues","baseClass","Form","props","id","collectionSlug","getDocPreferences","globalSlug","action","children","className","disableSuccessStatus","disabled","beforeSubmit","handleResponse","initialState","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","code","locale","i18n","t","refreshCookie","user","operation","formQueryParams","config","routes","api","apiRoute","serverURL","modified","setModified","processing","setProcessing","setSubmitted","formRef","contextRef","fieldsReducer","fields","dispatchFields","current","validateForm","validatedFieldState","isValid","dataFromContext","getData","data","validationPromises","Object","entries","map","path","field","validatedField","valid","passesCondition","validationResult","validate","valueToValidate","value","rows","Array","isArray","getDataByPath","siblingData","getSiblingData","errorMessage","Promise","all","type","state","submit","options","e","actionArg","methodToUse","overrides","skipValidation","preventDefault","stopPropagation","revalidatedFormState","reduce","priorOnChange","beforeSubmitFn","result","formState","resolve","every","error","formData","createFormData","res","actionEndpoint","stringify","addQueryPrefix","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","push","success","message","autoClose","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","statusText","getFields","getField","file","dataWithOverrides","dataToSerialize","_payload","JSON","indices","nullsAsUndefineds","reset","newState","schemaPath","replaceState","getFieldStateByPath","fieldSchema","replace","addFieldRow","rowIndex","subFieldState","blockType","removeFieldRow","replaceFieldRow","classes","filter","Boolean","join","executeOnChange","onChangeFn","changed","optimize","actionString","form","noValidate","ref","Provider"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/forms/Form/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload/types'\n\n/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\nimport isDeepEqual from 'deep-equal'\nimport { useRouter } from 'next/navigation.js'\nimport { serialize } from 'object-to-formdata'\nimport { wait } from 'payload/utilities'\nimport QueryString from 'qs'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\nimport { toast } from 'react-toastify'\n\nimport type { Context as FormContextType, GetDataByPath, Props, SubmitOptions } from './types.js'\n\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.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 { useFormQueryParams } from '../../providers/FormQueryParams/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/OperationProvider/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { getFormState } from '../../utilities/getFormState.js'\nimport {\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n} from './context.js'\nimport errorMessages from './errorMessages.js'\nimport { fieldReducer } from './fieldReducer.js'\nimport getDataByPathFunc from './getDataByPath.js'\nimport getSiblingDataFunc from './getSiblingData.js'\nimport initContextState from './initContextState.js'\nimport { mergeServerFormState } from './mergeServerFormState.js'\nimport reduceFieldsToValues from './reduceFieldsToValues.js'\n\nconst baseClass = 'form'\n\nconst Form: React.FC<Props> = (props) => {\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n\n const {\n action,\n children,\n className,\n disableSuccessStatus,\n disabled,\n // fields: fieldsFromProps = collection?.fields || global?.fields,\n beforeSubmit,\n handleResponse,\n initialState, // fully formed initial field state\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 { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { refreshCookie, user } = useAuth()\n const operation = useOperation()\n const { formQueryParams } = useFormQueryParams()\n\n const config = useConfig()\n const {\n routes: { api: apiRoute },\n serverURL,\n } = config\n\n const [modified, setModified] = useState(false)\n const [processing, setProcessing] = useState(false)\n const [submitted, setSubmitted] = useState(false)\n const formRef = useRef<HTMLFormElement>(null)\n const contextRef = useRef({} as FormContextType)\n\n const fieldsReducer = useReducer(fieldReducer, {}, () => initialState)\n /**\n * `fields` is the current, up-to-date state/data of all fields in the form. It can be modified by using dispatchFields,\n * which calls the fieldReducer, which then updates the state.\n */\n const [fields, dispatchFields] = fieldsReducer\n\n contextRef.current.fields = fields\n\n const validateForm = useCallback(async () => {\n const validatedFieldState = {}\n let isValid = true\n\n const dataFromContext = contextRef.current.getData()\n const data = dataFromContext\n\n const validationPromises = Object.entries(contextRef.current.fields).map(\n async ([path, field]) => {\n const validatedField = {\n ...field,\n valid: true,\n }\n\n if (field.passesCondition !== false) {\n let validationResult: boolean | string = true\n\n if (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 id,\n config,\n data,\n operation,\n siblingData: contextRef.current.getSiblingData(path),\n t,\n user,\n })\n }\n\n if (typeof validationResult === 'string') {\n validatedField.errorMessage = validationResult\n validatedField.valid = false\n isValid = false\n }\n }\n\n validatedFieldState[path] = validatedField\n },\n )\n\n await Promise.all(validationPromises)\n\n if (!isDeepEqual(contextRef.current.fields, validatedFieldState)) {\n dispatchFields({ type: 'REPLACE_STATE', state: validatedFieldState })\n }\n\n return isValid\n }, [id, user, operation, t, dispatchFields, config])\n\n const submit = useCallback(\n async (options: SubmitOptions = {}, e): Promise<void> => {\n const {\n action: actionArg,\n method: methodToUse = method,\n overrides = {},\n skipValidation,\n } = options\n\n if (disabled) {\n if (e) {\n e.preventDefault()\n }\n return\n }\n\n if (e) {\n e.stopPropagation()\n e.preventDefault()\n }\n\n setProcessing(true)\n setSubmitted(true)\n\n if (waitForAutocomplete) await wait(100)\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: fields,\n })\n\n revalidatedFormState = result\n }, Promise.resolve())\n\n const isValid = Object.entries(revalidatedFormState).every(([, field]) => field.valid)\n\n if (!isValid) {\n setProcessing(false)\n return dispatchFields({ type: 'REPLACE_STATE', state: revalidatedFormState })\n }\n }\n\n const isValid = skipValidation ? true : await contextRef.current.validateForm()\n\n // If not valid, prevent submission\n if (!isValid) {\n toast.error(t('error:correctInvalidFields'))\n setProcessing(false)\n\n return\n }\n\n // If submit handler comes through via props, run that\n if (onSubmit) {\n const data = {\n ...reduceFieldsToValues(fields, true),\n ...overrides,\n }\n\n onSubmit(fields, data)\n }\n\n const formData = contextRef.current.createFormData(overrides)\n\n try {\n let res\n const actionEndpoint =\n actionArg ||\n (typeof action === 'string'\n ? `${action}${QueryString.stringify(formQueryParams, { addQueryPrefix: true })}`\n : null)\n\n if (actionEndpoint) {\n res = await requests[methodToUse.toLowerCase()](actionEndpoint, {\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\n if (typeof handleResponse === 'function') {\n handleResponse(res)\n return\n }\n\n setProcessing(false)\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) json = await res.json()\n\n if (res.status < 400) {\n setSubmitted(false)\n\n if (typeof onSuccess === 'function') onSuccess(json)\n\n if (redirect) {\n router.push(redirect)\n } else if (!disableSuccessStatus) {\n toast.success(json.message || t('general:submissionSuccessful'), { autoClose: 3000 })\n }\n } else {\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n if (json.message) {\n toast.error(json.message)\n\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)) {\n err.data.forEach((dataError) => {\n if (dataError?.field) {\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 fieldErrors.forEach((err) => {\n dispatchFields({\n type: 'UPDATE',\n ...(contextRef.current?.fields?.[err.field] || {}),\n errorMessage: err.message,\n path: err.field,\n valid: false,\n })\n })\n\n nonFieldErrors.forEach((err) => {\n toast.error(err.message || t('error:unknown'))\n })\n\n return\n }\n\n const message = errorMessages?.[res.status] || res?.statusText || t('error:unknown')\n\n toast.error(message)\n }\n } catch (err) {\n setProcessing(false)\n\n toast.error(err)\n }\n },\n [\n action,\n disableSuccessStatus,\n disabled,\n dispatchFields,\n fields,\n handleResponse,\n method,\n onSubmit,\n onSuccess,\n redirect,\n router,\n t,\n i18n,\n waitForAutocomplete,\n beforeSubmit,\n formQueryParams,\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 const getDataByPath = useCallback<GetDataByPath>(\n (path: string) => getDataByPathFunc(contextRef.current.fields, path),\n [],\n )\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const createFormData = useCallback((overrides: any = {}) => {\n const data = reduceFieldsToValues(contextRef.current.fields, true)\n\n const file = data?.file\n\n if (file) {\n delete data.file\n }\n\n const dataWithOverrides = {\n ...data,\n ...overrides,\n }\n\n const dataToSerialize = {\n _payload: JSON.stringify(dataWithOverrides),\n file,\n }\n\n // nullAsUndefineds is important to allow uploads and relationship fields to clear themselves\n const formData = serialize(dataToSerialize, { indices: true, nullsAsUndefineds: false })\n\n return formData\n }, [])\n\n const reset = useCallback(\n async (data: unknown) => {\n const newState = await getFormState({\n apiRoute,\n body: {\n id,\n collectionSlug,\n data,\n globalSlug,\n operation,\n schemaPath: collectionSlug || globalSlug,\n },\n serverURL,\n })\n\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state: newState })\n },\n [apiRoute, collectionSlug, dispatchFields, globalSlug, id, operation, serverURL],\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 getFieldStateBySchemaPath = useCallback(\n async ({ data, schemaPath }) => {\n const fieldSchema = await getFormState({\n apiRoute,\n body: {\n collectionSlug,\n data,\n globalSlug,\n schemaPath,\n },\n serverURL,\n })\n return fieldSchema\n },\n [apiRoute, collectionSlug, globalSlug, serverURL],\n )\n\n const addFieldRow: FormContextType['addFieldRow'] = useCallback(\n async ({ data, path, rowIndex, schemaPath }) => {\n const subFieldState = await getFieldStateBySchemaPath({ data, schemaPath })\n\n dispatchFields({\n type: 'ADD_ROW',\n blockType: data?.blockType,\n path,\n rowIndex,\n subFieldState,\n })\n },\n [getFieldStateBySchemaPath, dispatchFields],\n )\n\n const removeFieldRow: FormContextType['removeFieldRow'] = useCallback(\n ({ path, rowIndex }) => {\n dispatchFields({ type: 'REMOVE_ROW', path, rowIndex })\n },\n [dispatchFields],\n )\n\n const replaceFieldRow: FormContextType['replaceFieldRow'] = useCallback(\n async ({ data, path, rowIndex, schemaPath }) => {\n const subFieldState = await getFieldStateBySchemaPath({ data, schemaPath })\n\n dispatchFields({\n type: 'REPLACE_ROW',\n blockType: data?.blockType,\n path,\n rowIndex,\n subFieldState,\n })\n },\n [getFieldStateBySchemaPath, dispatchFields],\n )\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.setSubmitted = setSubmitted\n contextRef.current.disabled = disabled\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.replaceFieldRow = replaceFieldRow\n contextRef.current.uuid = uuid\n\n useEffect(() => {\n if (typeof submittedFromProps === 'boolean') setSubmitted(submittedFromProps)\n }, [submittedFromProps])\n\n useEffect(() => {\n if (initialState) {\n contextRef.current = { ...initContextState } as FormContextType\n dispatchFields({ type: 'REPLACE_STATE', state: initialState })\n }\n }, [initialState, dispatchFields])\n\n useThrottledEffect(\n () => {\n refreshCookie()\n },\n 15000,\n [fields],\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 useDebouncedEffect(\n () => {\n const executeOnChange = async () => {\n if (Array.isArray(onChange)) {\n let revalidatedFormState: FormState = fields\n\n for (const onChangeFn of onChange) {\n revalidatedFormState = await onChangeFn({\n formState: revalidatedFormState,\n })\n }\n\n const { changed, newState } = mergeServerFormState(fields, revalidatedFormState)\n\n if (changed) {\n dispatchFields({ type: 'REPLACE_STATE', optimize: false, state: newState })\n }\n }\n }\n\n void executeOnChange() // eslint-disable-line @typescript-eslint/no-floating-promises\n },\n 150,\n [fields, dispatchFields, onChange],\n )\n\n const actionString =\n typeof action === 'string'\n ? `${action}${QueryString.stringify(formQueryParams, { addQueryPrefix: true })}`\n : ''\n\n return (\n <form\n action={method ? actionString : action}\n className={classes}\n method={method}\n noValidate\n onSubmit={(e) => contextRef.current.submit({}, e)}\n ref={formRef}\n >\n <FormContext.Provider value={contextRef.current}>\n <FormWatchContext.Provider\n value={{\n fields,\n ...contextRef.current,\n }}\n >\n <SubmittedContext.Provider value={submitted}>\n <ProcessingContext.Provider value={processing}>\n <ModifiedContext.Provider value={modified}>\n <FormFieldsContext.Provider value={fieldsReducer}>\n {children}\n </FormFieldsContext.Provider>\n </ModifiedContext.Provider>\n </ProcessingContext.Provider>\n </SubmittedContext.Provider>\n </FormWatchContext.Provider>\n </FormContext.Provider>\n </form>\n )\n}\n\nexport default Form\n"],"names":["isDeepEqual","useRouter","serialize","wait","QueryString","React","useCallback","useEffect","useReducer","useRef","useState","toast","useDebouncedEffect","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useFormQueryParams","useLocale","useOperation","useTranslation","requests","getFormState","FormContext","FormFieldsContext","FormWatchContext","ModifiedContext","ProcessingContext","SubmittedContext","errorMessages","fieldReducer","getDataByPathFunc","getSiblingDataFunc","initContextState","mergeServerFormState","reduceFieldsToValues","baseClass","Form","props","id","collectionSlug","globalSlug","action","children","className","disableSuccessStatus","disabled","beforeSubmit","handleResponse","initialState","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","code","locale","i18n","t","refreshCookie","user","operation","formQueryParams","config","routes","api","apiRoute","serverURL","modified","setModified","processing","setProcessing","setSubmitted","formRef","contextRef","fieldsReducer","fields","dispatchFields","current","validateForm","validatedFieldState","isValid","dataFromContext","getData","data","validationPromises","Object","entries","map","path","field","validatedField","valid","passesCondition","validationResult","validate","valueToValidate","value","rows","Array","isArray","getDataByPath","siblingData","getSiblingData","errorMessage","Promise","all","type","state","submit","options","e","actionArg","methodToUse","overrides","skipValidation","preventDefault","stopPropagation","revalidatedFormState","reduce","priorOnChange","beforeSubmitFn","result","formState","resolve","every","error","formData","createFormData","res","actionEndpoint","stringify","addQueryPrefix","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","push","success","message","autoClose","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","statusText","getFields","getField","file","dataWithOverrides","dataToSerialize","_payload","JSON","indices","nullsAsUndefineds","reset","newState","schemaPath","replaceState","getFieldStateBySchemaPath","fieldSchema","addFieldRow","rowIndex","subFieldState","blockType","removeFieldRow","replaceFieldRow","classes","filter","Boolean","join","executeOnChange","onChangeFn","changed","optimize","actionString","form","noValidate","ref","Provider"],"mappings":"AAAA;AAGA,kEAAkE,GAClE,OAAOA,iBAAiB,aAAY;AACpC,SAASC,SAAS,QAAQ,qBAAoB;AAC9C,SAASC,SAAS,QAAQ,qBAAoB;AAC9C,SAASC,IAAI,QAAQ,oBAAmB;AACxC,OAAOC,iBAAiB,KAAI;AAC5B,OAAOC,SAASC,WAAW,EAAEC,SAAS,EAAEC,UAAU,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAO;AACnF,SAASC,KAAK,QAAQ,iBAAgB;AAItC,SAASC,kBAAkB,QAAQ,oCAAmC;AACtE,OAAOC,wBAAwB,oCAAmC;AAClE,SAASC,OAAO,QAAQ,gCAA+B;AACvD,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,eAAe,QAAQ,wCAAuC;AACvE,SAASC,kBAAkB,QAAQ,2CAA0C;AAC7E,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,YAAY,QAAQ,6CAA4C;AACzE,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,QAAQ,QAAQ,yBAAwB;AACjD,SAASC,YAAY,QAAQ,kCAAiC;AAC9D,SACEC,WAAW,EACXC,iBAAiB,EACjBC,gBAAgB,EAChBC,eAAe,EACfC,iBAAiB,EACjBC,gBAAgB,QACX,eAAc;AACrB,OAAOC,mBAAmB,qBAAoB;AAC9C,SAASC,YAAY,QAAQ,oBAAmB;AAChD,OAAOC,uBAAuB,qBAAoB;AAClD,OAAOC,wBAAwB,sBAAqB;AACpD,OAAOC,sBAAsB,wBAAuB;AACpD,SAASC,oBAAoB,QAAQ,4BAA2B;AAChE,OAAOC,0BAA0B,4BAA2B;AAE5D,MAAMC,YAAY;AAElB,MAAMC,OAAwB,CAACC;IAC7B,MAAM,EAAEC,EAAE,EAAEC,cAAc,EAAEC,UAAU,EAAE,GAAGzB;IAE3C,MAAM,EACJ0B,MAAM,EACNC,QAAQ,EACRC,SAAS,EACTC,oBAAoB,EACpBC,QAAQ,EACR,kEAAkE;IAClEC,YAAY,EACZC,cAAc,EACdC,YAAY,EACZC,QAAQ,EACRC,QAAQ,EACRC,SAAS,EACTC,QAAQ,EACRC,WAAWC,kBAAkB,EAC7BC,IAAI,EACJC,mBAAmB,EACpB,GAAGnB;IAEJ,MAAMoB,SAAS,YAAYpB,QAAQA,OAAOoB,SAASC;IAEnD,MAAMC,SAAS3D;IAEf,MAAM,EAAE4D,MAAMC,MAAM,EAAE,GAAG5C;IACzB,MAAM,EAAE6C,IAAI,EAAEC,CAAC,EAAE,GAAG5C;IACpB,MAAM,EAAE6C,aAAa,EAAEC,IAAI,EAAE,GAAGpD;IAChC,MAAMqD,YAAYhD;IAClB,MAAM,EAAEiD,eAAe,EAAE,GAAGnD;IAE5B,MAAMoD,SAAStD;IACf,MAAM,EACJuD,QAAQ,EAAEC,KAAKC,QAAQ,EAAE,EACzBC,SAAS,EACV,GAAGJ;IAEJ,MAAM,CAACK,UAAUC,YAAY,GAAGjE,SAAS;IACzC,MAAM,CAACkE,YAAYC,cAAc,GAAGnE,SAAS;IAC7C,MAAM,CAAC4C,WAAWwB,aAAa,GAAGpE,SAAS;IAC3C,MAAMqE,UAAUtE,OAAwB;IACxC,MAAMuE,aAAavE,OAAO,CAAC;IAE3B,MAAMwE,gBAAgBzE,WAAWsB,cAAc,CAAC,GAAG,IAAMmB;IACzD;;;GAGC,GACD,MAAM,CAACiC,QAAQC,eAAe,GAAGF;IAEjCD,WAAWI,OAAO,CAACF,MAAM,GAAGA;IAE5B,MAAMG,eAAe/E,YAAY;QAC/B,MAAMgF,sBAAsB,CAAC;QAC7B,IAAIC,UAAU;QAEd,MAAMC,kBAAkBR,WAAWI,OAAO,CAACK,OAAO;QAClD,MAAMC,OAAOF;QAEb,MAAMG,qBAAqBC,OAAOC,OAAO,CAACb,WAAWI,OAAO,CAACF,MAAM,EAAEY,GAAG,CACtE,OAAO,CAACC,MAAMC,MAAM;YAClB,MAAMC,iBAAiB;gBACrB,GAAGD,KAAK;gBACRE,OAAO;YACT;YAEA,IAAIF,MAAMG,eAAe,KAAK,OAAO;gBACnC,IAAIC,mBAAqC;gBAEzC,IAAI,OAAOJ,MAAMK,QAAQ,KAAK,YAAY;oBACxC,IAAIC,kBAAkBN,MAAMO,KAAK;oBAEjC,IAAIP,OAAOQ,QAAQC,MAAMC,OAAO,CAACV,MAAMQ,IAAI,GAAG;wBAC5CF,kBAAkBtB,WAAWI,OAAO,CAACuB,aAAa,CAACZ;oBACrD;oBAEAK,mBAAmB,MAAMJ,MAAMK,QAAQ,CAACC,iBAAiB;wBACvD/D;wBACA8B;wBACAqB;wBACAvB;wBACAyC,aAAa5B,WAAWI,OAAO,CAACyB,cAAc,CAACd;wBAC/C/B;wBACAE;oBACF;gBACF;gBAEA,IAAI,OAAOkC,qBAAqB,UAAU;oBACxCH,eAAea,YAAY,GAAGV;oBAC9BH,eAAeC,KAAK,GAAG;oBACvBX,UAAU;gBACZ;YACF;YAEAD,mBAAmB,CAACS,KAAK,GAAGE;QAC9B;QAGF,MAAMc,QAAQC,GAAG,CAACrB;QAElB,IAAI,CAAC3F,YAAYgF,WAAWI,OAAO,CAACF,MAAM,EAAEI,sBAAsB;YAChEH,eAAe;gBAAE8B,MAAM;gBAAiBC,OAAO5B;YAAoB;QACrE;QAEA,OAAOC;IACT,GAAG;QAAChD;QAAI2B;QAAMC;QAAWH;QAAGmB;QAAgBd;KAAO;IAEnD,MAAM8C,SAAS7G,YACb,OAAO8G,UAAyB,CAAC,CAAC,EAAEC;QAClC,MAAM,EACJ3E,QAAQ4E,SAAS,EACjB5D,QAAQ6D,cAAc7D,MAAM,EAC5B8D,YAAY,CAAC,CAAC,EACdC,cAAc,EACf,GAAGL;QAEJ,IAAItE,UAAU;YACZ,IAAIuE,GAAG;gBACLA,EAAEK,cAAc;YAClB;YACA;QACF;QAEA,IAAIL,GAAG;YACLA,EAAEM,eAAe;YACjBN,EAAEK,cAAc;QAClB;QAEA7C,cAAc;QACdC,aAAa;QAEb,IAAIrB,qBAAqB,MAAMtD,KAAK;QAEpC,kCAAkC;QAClC,IAAIsG,MAAMC,OAAO,CAAC3D,eAAe;YAC/B,IAAI6E;YAEJ,MAAM7E,aAAa8E,MAAM,CAAC,OAAOC,eAAeC;gBAC9C,MAAMD;gBAEN,MAAME,SAAS,MAAMD,eAAe;oBAClCE,WAAW/C;gBACb;gBAEA0C,uBAAuBI;YACzB,GAAGjB,QAAQmB,OAAO;YAElB,MAAM3C,UAAUK,OAAOC,OAAO,CAAC+B,sBAAsBO,KAAK,CAAC,CAAC,GAAGnC,MAAM,GAAKA,MAAME,KAAK;YAErF,IAAI,CAACX,SAAS;gBACZV,cAAc;gBACd,OAAOM,eAAe;oBAAE8B,MAAM;oBAAiBC,OAAOU;gBAAqB;YAC7E;QACF;QAEA,MAAMrC,UAAUkC,iBAAiB,OAAO,MAAMzC,WAAWI,OAAO,CAACC,YAAY;QAE7E,mCAAmC;QACnC,IAAI,CAACE,SAAS;YACZ5E,MAAMyH,KAAK,CAACpE,EAAE;YACda,cAAc;YAEd;QACF;QAEA,sDAAsD;QACtD,IAAI1B,UAAU;YACZ,MAAMuC,OAAO;gBACX,GAAGvD,qBAAqB+C,QAAQ,KAAK;gBACrC,GAAGsC,SAAS;YACd;YAEArE,SAAS+B,QAAQQ;QACnB;QAEA,MAAM2C,WAAWrD,WAAWI,OAAO,CAACkD,cAAc,CAACd;QAEnD,IAAI;YACF,IAAIe;YACJ,MAAMC,iBACJlB,aACC,CAAA,OAAO5E,WAAW,WACf,CAAC,EAAEA,OAAO,EAAEtC,YAAYqI,SAAS,CAACrE,iBAAiB;gBAAEsE,gBAAgB;YAAK,GAAG,CAAC,GAC9E,IAAG;YAET,IAAIF,gBAAgB;gBAClBD,MAAM,MAAMlH,QAAQ,CAACkG,YAAYoB,WAAW,GAAG,CAACH,gBAAgB;oBAC9DI,MAAMP;oBACNQ,SAAS;wBACP,mBAAmB9E,KAAK+E,QAAQ;oBAClC;gBACF;YACF,OAAO,IAAI,OAAOpG,WAAW,YAAY;gBACvC6F,MAAM,MAAM7F,OAAO2F;YACrB;YAEA1D,YAAY;YAEZ,IAAI,OAAO3B,mBAAmB,YAAY;gBACxCA,eAAeuF;gBACf;YACF;YAEA1D,cAAc;YAEd,MAAMkE,cAAcR,IAAIM,OAAO,CAACG,GAAG,CAAC;YACpC,MAAMC,SAASF,eAAeA,YAAYG,OAAO,CAAC,wBAAwB,CAAC;YAE3E,8DAA8D;YAC9D,IAAIC,OAA4B,CAAC;YAEjC,IAAIF,QAAQE,OAAO,MAAMZ,IAAIY,IAAI;YAEjC,IAAIZ,IAAIa,MAAM,GAAG,KAAK;gBACpBtE,aAAa;gBAEb,IAAI,OAAO1B,cAAc,YAAYA,UAAU+F;gBAE/C,IAAI9F,UAAU;oBACZO,OAAOyF,IAAI,CAAChG;gBACd,OAAO,IAAI,CAACR,sBAAsB;oBAChClC,MAAM2I,OAAO,CAACH,KAAKI,OAAO,IAAIvF,EAAE,iCAAiC;wBAAEwF,WAAW;oBAAK;gBACrF;YACF,OAAO;gBACLxE,WAAWI,OAAO,GAAG;oBAAE,GAAGJ,WAAWI,OAAO;gBAAC,EAAE,6DAA6D;;gBAC5G,IAAI+D,KAAKI,OAAO,EAAE;oBAChB5I,MAAMyH,KAAK,CAACe,KAAKI,OAAO;oBAExB;gBACF;gBAEA,IAAI9C,MAAMC,OAAO,CAACyC,KAAKM,MAAM,GAAG;oBAC9B,MAAM,CAACC,aAAaC,eAAe,GAAGR,KAAKM,MAAM,CAAC5B,MAAM,CACtD,CAAC,CAAC+B,WAAWC,aAAa,EAAEC;wBAC1B,MAAMC,eAAe,EAAE;wBACvB,MAAMC,kBAAkB,EAAE;wBAE1B,IAAIF,KAAKP,SAAS;4BAChBS,gBAAgBX,IAAI,CAACS;wBACvB;wBAEA,IAAIrD,MAAMC,OAAO,CAACoD,KAAKpE,OAAO;4BAC5BoE,IAAIpE,IAAI,CAACuE,OAAO,CAAC,CAACC;gCAChB,IAAIA,WAAWlE,OAAO;oCACpB+D,aAAaV,IAAI,CAACa;gCACpB,OAAO;oCACLF,gBAAgBX,IAAI,CAACa;gCACvB;4BACF;wBACF;wBAEA,OAAO;4BACL;mCAAIN;mCAAcG;6BAAa;4BAC/B;mCAAIF;mCAAiBG;6BAAgB;yBACtC;oBACH,GACA;wBAAC,EAAE;wBAAE,EAAE;qBAAC;oBAGVN,YAAYO,OAAO,CAAC,CAACH;wBACnB3E,eAAe;4BACb8B,MAAM;4BACN,GAAIjC,WAAWI,OAAO,EAAEF,QAAQ,CAAC4E,IAAI9D,KAAK,CAAC,IAAI,CAAC,CAAC;4BACjDc,cAAcgD,IAAIP,OAAO;4BACzBxD,MAAM+D,IAAI9D,KAAK;4BACfE,OAAO;wBACT;oBACF;oBAEAyD,eAAeM,OAAO,CAAC,CAACH;wBACtBnJ,MAAMyH,KAAK,CAAC0B,IAAIP,OAAO,IAAIvF,EAAE;oBAC/B;oBAEA;gBACF;gBAEA,MAAMuF,UAAU1H,eAAe,CAAC0G,IAAIa,MAAM,CAAC,IAAIb,KAAK4B,cAAcnG,EAAE;gBAEpErD,MAAMyH,KAAK,CAACmB;YACd;QACF,EAAE,OAAOO,KAAK;YACZjF,cAAc;YAEdlE,MAAMyH,KAAK,CAAC0B;QACd;IACF,GACA;QACEpH;QACAG;QACAC;QACAqC;QACAD;QACAlC;QACAU;QACAP;QACAC;QACAC;QACAO;QACAI;QACAD;QACAN;QACAV;QACAqB;KACD;IAGH,MAAMgG,YAAY9J,YAAY,IAAM0E,WAAWI,OAAO,CAACF,MAAM,EAAE,EAAE;IAEjE,MAAMmF,WAAW/J,YAAY,CAACyF,OAAiBf,WAAWI,OAAO,CAACF,MAAM,CAACa,KAAK,EAAE,EAAE;IAElF,MAAMN,UAAUnF,YAAY,IAAM6B,qBAAqB6C,WAAWI,OAAO,CAACF,MAAM,EAAE,OAAO,EAAE;IAE3F,MAAM2B,iBAAiBvG,YACrB,CAACyF,OAAiB/D,mBAAmBgD,WAAWI,OAAO,CAACF,MAAM,EAAEa,OAChE,EAAE;IAEJ,MAAMY,gBAAgBrG,YACpB,CAACyF,OAAiBhE,kBAAkBiD,WAAWI,OAAO,CAACF,MAAM,EAAEa,OAC/D,EAAE;IAGJ,8DAA8D;IAC9D,MAAMuC,iBAAiBhI,YAAY,CAACkH,YAAiB,CAAC,CAAC;QACrD,MAAM9B,OAAOvD,qBAAqB6C,WAAWI,OAAO,CAACF,MAAM,EAAE;QAE7D,MAAMoF,OAAO5E,MAAM4E;QAEnB,IAAIA,MAAM;YACR,OAAO5E,KAAK4E,IAAI;QAClB;QAEA,MAAMC,oBAAoB;YACxB,GAAG7E,IAAI;YACP,GAAG8B,SAAS;QACd;QAEA,MAAMgD,kBAAkB;YACtBC,UAAUC,KAAKjC,SAAS,CAAC8B;YACzBD;QACF;QAEA,6FAA6F;QAC7F,MAAMjC,WAAWnI,UAAUsK,iBAAiB;YAAEG,SAAS;YAAMC,mBAAmB;QAAM;QAEtF,OAAOvC;IACT,GAAG,EAAE;IAEL,MAAMwC,QAAQvK,YACZ,OAAOoF;QACL,MAAMoF,WAAW,MAAMxJ,aAAa;YAClCkD;YACAoE,MAAM;gBACJrG;gBACAC;gBACAkD;gBACAjD;gBACA0B;gBACA4G,YAAYvI,kBAAkBC;YAChC;YACAgC;QACF;QAEAO,WAAWI,OAAO,GAAG;YAAE,GAAGnD,gBAAgB;QAAC;QAC3C0C,YAAY;QACZQ,eAAe;YAAE8B,MAAM;YAAiBC,OAAO4D;QAAS;IAC1D,GACA;QAACtG;QAAUhC;QAAgB2C;QAAgB1C;QAAYF;QAAI4B;QAAWM;KAAU;IAGlF,MAAMuG,eAAe1K,YACnB,CAAC4G;QACClC,WAAWI,OAAO,GAAG;YAAE,GAAGnD,gBAAgB;QAAC;QAC3C0C,YAAY;QACZQ,eAAe;YAAE8B,MAAM;YAAiBC;QAAM;IAChD,GACA;QAAC/B;KAAe;IAGlB,MAAM8F,4BAA4B3K,YAChC,OAAO,EAAEoF,IAAI,EAAEqF,UAAU,EAAE;QACzB,MAAMG,cAAc,MAAM5J,aAAa;YACrCkD;YACAoE,MAAM;gBACJpG;gBACAkD;gBACAjD;gBACAsI;YACF;YACAtG;QACF;QACA,OAAOyG;IACT,GACA;QAAC1G;QAAUhC;QAAgBC;QAAYgC;KAAU;IAGnD,MAAM0G,cAA8C7K,YAClD,OAAO,EAAEoF,IAAI,EAAEK,IAAI,EAAEqF,QAAQ,EAAEL,UAAU,EAAE;QACzC,MAAMM,gBAAgB,MAAMJ,0BAA0B;YAAEvF;YAAMqF;QAAW;QAEzE5F,eAAe;YACb8B,MAAM;YACNqE,WAAW5F,MAAM4F;YACjBvF;YACAqF;YACAC;QACF;IACF,GACA;QAACJ;QAA2B9F;KAAe;IAG7C,MAAMoG,iBAAoDjL,YACxD,CAAC,EAAEyF,IAAI,EAAEqF,QAAQ,EAAE;QACjBjG,eAAe;YAAE8B,MAAM;YAAclB;YAAMqF;QAAS;IACtD,GACA;QAACjG;KAAe;IAGlB,MAAMqG,kBAAsDlL,YAC1D,OAAO,EAAEoF,IAAI,EAAEK,IAAI,EAAEqF,QAAQ,EAAEL,UAAU,EAAE;QACzC,MAAMM,gBAAgB,MAAMJ,0BAA0B;YAAEvF;YAAMqF;QAAW;QAEzE5F,eAAe;YACb8B,MAAM;YACNqE,WAAW5F,MAAM4F;YACjBvF;YACAqF;YACAC;QACF;IACF,GACA;QAACJ;QAA2B9F;KAAe;IAG7CH,WAAWI,OAAO,CAAC+B,MAAM,GAAGA;IAC5BnC,WAAWI,OAAO,CAACgF,SAAS,GAAGA;IAC/BpF,WAAWI,OAAO,CAACiF,QAAQ,GAAGA;IAC9BrF,WAAWI,OAAO,CAACK,OAAO,GAAGA;IAC7BT,WAAWI,OAAO,CAACyB,cAAc,GAAGA;IACpC7B,WAAWI,OAAO,CAACuB,aAAa,GAAGA;IACnC3B,WAAWI,OAAO,CAACC,YAAY,GAAGA;IAClCL,WAAWI,OAAO,CAACkD,cAAc,GAAGA;IACpCtD,WAAWI,OAAO,CAACT,WAAW,GAAGA;IACjCK,WAAWI,OAAO,CAACP,aAAa,GAAGA;IACnCG,WAAWI,OAAO,CAACN,YAAY,GAAGA;IAClCE,WAAWI,OAAO,CAACtC,QAAQ,GAAGA;IAC9BkC,WAAWI,OAAO,CAACL,OAAO,GAAGA;IAC7BC,WAAWI,OAAO,CAACyF,KAAK,GAAGA;IAC3B7F,WAAWI,OAAO,CAAC4F,YAAY,GAAGA;IAClChG,WAAWI,OAAO,CAACD,cAAc,GAAGA;IACpCH,WAAWI,OAAO,CAAC+F,WAAW,GAAGA;IACjCnG,WAAWI,OAAO,CAACmG,cAAc,GAAGA;IACpCvG,WAAWI,OAAO,CAACoG,eAAe,GAAGA;IACrCxG,WAAWI,OAAO,CAAC5B,IAAI,GAAGA;IAE1BjD,UAAU;QACR,IAAI,OAAOgD,uBAAuB,WAAWuB,aAAavB;IAC5D,GAAG;QAACA;KAAmB;IAEvBhD,UAAU;QACR,IAAI0C,cAAc;YAChB+B,WAAWI,OAAO,GAAG;gBAAE,GAAGnD,gBAAgB;YAAC;YAC3CkD,eAAe;gBAAE8B,MAAM;gBAAiBC,OAAOjE;YAAa;QAC9D;IACF,GAAG;QAACA;QAAckC;KAAe;IAEjCtE,mBACE;QACEoD;IACF,GACA,OACA;QAACiB;KAAO;IAGV3E,UAAU;QACRyE,WAAWI,OAAO,GAAG;YAAE,GAAGJ,WAAWI,OAAO;QAAC,EAAE,6DAA6D;;QAC5GT,YAAY;IACd,GAAG;QAACb;KAAO;IAEX,MAAM2H,UAAU;QAAC7I;QAAWR;KAAU,CAACsJ,MAAM,CAACC,SAASC,IAAI,CAAC;IAE5DhL,mBACE;QACE,MAAMiL,kBAAkB;YACtB,IAAIpF,MAAMC,OAAO,CAACxD,WAAW;gBAC3B,IAAI0E,uBAAkC1C;gBAEtC,KAAK,MAAM4G,cAAc5I,SAAU;oBACjC0E,uBAAuB,MAAMkE,WAAW;wBACtC7D,WAAWL;oBACb;gBACF;gBAEA,MAAM,EAAEmE,OAAO,EAAEjB,QAAQ,EAAE,GAAG5I,qBAAqBgD,QAAQ0C;gBAE3D,IAAImE,SAAS;oBACX5G,eAAe;wBAAE8B,MAAM;wBAAiB+E,UAAU;wBAAO9E,OAAO4D;oBAAS;gBAC3E;YACF;QACF;QAEA,KAAKe,kBAAkB,8DAA8D;;IACvF,GACA,KACA;QAAC3G;QAAQC;QAAgBjC;KAAS;IAGpC,MAAM+I,eACJ,OAAOvJ,WAAW,WACd,CAAC,EAAEA,OAAO,EAAEtC,YAAYqI,SAAS,CAACrE,iBAAiB;QAAEsE,gBAAgB;IAAK,GAAG,CAAC,GAC9E;IAEN,qBACE,oBAACwD;QACCxJ,QAAQgB,SAASuI,eAAevJ;QAChCE,WAAW6I;QACX/H,QAAQA;QACRyI,YAAAA;QACAhJ,UAAU,CAACkE,IAAMrC,WAAWI,OAAO,CAAC+B,MAAM,CAAC,CAAC,GAAGE;QAC/C+E,KAAKrH;qBAEL,oBAACxD,YAAY8K,QAAQ;QAAC9F,OAAOvB,WAAWI,OAAO;qBAC7C,oBAAC3D,iBAAiB4K,QAAQ;QACxB9F,OAAO;YACLrB;YACA,GAAGF,WAAWI,OAAO;QACvB;qBAEA,oBAACxD,iBAAiByK,QAAQ;QAAC9F,OAAOjD;qBAChC,oBAAC3B,kBAAkB0K,QAAQ;QAAC9F,OAAO3B;qBACjC,oBAAClD,gBAAgB2K,QAAQ;QAAC9F,OAAO7B;qBAC/B,oBAAClD,kBAAkB6K,QAAQ;QAAC9F,OAAOtB;OAChCtC;AASnB;AAEA,eAAeN,KAAI"}
@@ -1,4 +1,11 @@
1
1
  import type { FormState } from 'payload/types';
2
+ /**
3
+ * Merges certain properties from the server state into the client state. These do not include values,
4
+ * as we do not want to update them on the client like that, which would cause flickering.
5
+ *
6
+ * We want to use this to update the error state, and other properties that are not user input, as the error state
7
+ * is the thing we want to keep in sync with the server (where it's calculated) on the client.
8
+ */
2
9
  export declare const mergeServerFormState: (oldState: FormState, newState: FormState) => {
3
10
  changed: boolean;
4
11
  newState: FormState;
@@ -1 +1 @@
1
- {"version":3,"file":"mergeServerFormState.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/mergeServerFormState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAM9C,eAAO,MAAM,oBAAoB,aACrB,SAAS,YACT,SAAS;aACP,OAAO;cAAY,SAAS;CAkCzC,CAAA"}
1
+ {"version":3,"file":"mergeServerFormState.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/mergeServerFormState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAM9C;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,aACrB,SAAS,YACT,SAAS;aACP,OAAO;cAAY,SAAS;CAkCzC,CAAA"}
@@ -4,7 +4,13 @@ const propsToCheck = [
4
4
  'valid',
5
5
  'errorMessage'
6
6
  ];
7
- export const mergeServerFormState = (oldState, newState)=>{
7
+ /**
8
+ * Merges certain properties from the server state into the client state. These do not include values,
9
+ * as we do not want to update them on the client like that, which would cause flickering.
10
+ *
11
+ * We want to use this to update the error state, and other properties that are not user input, as the error state
12
+ * is the thing we want to keep in sync with the server (where it's calculated) on the client.
13
+ */ export const mergeServerFormState = (oldState, newState)=>{
8
14
  let changed = false;
9
15
  Object.entries(newState).forEach(([path, newFieldState])=>{
10
16
  newFieldState.initialValue = oldState[path]?.initialValue;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/forms/Form/mergeServerFormState.ts"],"sourcesContent":["import type { FormState } from 'payload/types'\n\nimport { arraysHaveSameStrings } from '../../utilities/arraysHaveSameStrings.js'\n\nconst propsToCheck = ['passesCondition', 'valid', 'errorMessage']\n\nexport const mergeServerFormState = (\n oldState: FormState,\n newState: FormState,\n): { changed: boolean; newState: FormState } => {\n let changed = false\n\n Object.entries(newState).forEach(([path, newFieldState]) => {\n newFieldState.initialValue = oldState[path]?.initialValue\n newFieldState.value = oldState[path].value\n\n const oldErrorPaths: string[] = []\n const newErrorPaths: string[] = []\n\n if (oldState[path].errorPaths instanceof Set) {\n oldState[path].errorPaths.forEach((path) => oldErrorPaths.push(path))\n }\n\n if (\n newFieldState.errorPaths &&\n !Array.isArray(newFieldState.errorPaths) &&\n typeof newFieldState.errorPaths\n ) {\n Object.values(newFieldState.errorPaths).forEach((path) => newErrorPaths.push(path))\n }\n\n if (!arraysHaveSameStrings(oldErrorPaths, newErrorPaths)) {\n changed = true\n }\n\n propsToCheck.forEach((prop) => {\n if (newFieldState[prop] != oldState[path][prop]) {\n changed = true\n }\n })\n })\n\n return { changed, newState }\n}\n"],"names":["arraysHaveSameStrings","propsToCheck","mergeServerFormState","oldState","newState","changed","Object","entries","forEach","path","newFieldState","initialValue","value","oldErrorPaths","newErrorPaths","errorPaths","Set","push","Array","isArray","values","prop"],"mappings":"AAEA,SAASA,qBAAqB,QAAQ,2CAA0C;AAEhF,MAAMC,eAAe;IAAC;IAAmB;IAAS;CAAe;AAEjE,OAAO,MAAMC,uBAAuB,CAClCC,UACAC;IAEA,IAAIC,UAAU;IAEdC,OAAOC,OAAO,CAACH,UAAUI,OAAO,CAAC,CAAC,CAACC,MAAMC,cAAc;QACrDA,cAAcC,YAAY,GAAGR,QAAQ,CAACM,KAAK,EAAEE;QAC7CD,cAAcE,KAAK,GAAGT,QAAQ,CAACM,KAAK,CAACG,KAAK;QAE1C,MAAMC,gBAA0B,EAAE;QAClC,MAAMC,gBAA0B,EAAE;QAElC,IAAIX,QAAQ,CAACM,KAAK,CAACM,UAAU,YAAYC,KAAK;YAC5Cb,QAAQ,CAACM,KAAK,CAACM,UAAU,CAACP,OAAO,CAAC,CAACC,OAASI,cAAcI,IAAI,CAACR;QACjE;QAEA,IACEC,cAAcK,UAAU,IACxB,CAACG,MAAMC,OAAO,CAACT,cAAcK,UAAU,KACvC,OAAOL,cAAcK,UAAU,EAC/B;YACAT,OAAOc,MAAM,CAACV,cAAcK,UAAU,EAAEP,OAAO,CAAC,CAACC,OAASK,cAAcG,IAAI,CAACR;QAC/E;QAEA,IAAI,CAACT,sBAAsBa,eAAeC,gBAAgB;YACxDT,UAAU;QACZ;QAEAJ,aAAaO,OAAO,CAAC,CAACa;YACpB,IAAIX,aAAa,CAACW,KAAK,IAAIlB,QAAQ,CAACM,KAAK,CAACY,KAAK,EAAE;gBAC/ChB,UAAU;YACZ;QACF;IACF;IAEA,OAAO;QAAEA;QAASD;IAAS;AAC7B,EAAC"}
1
+ {"version":3,"sources":["../../../src/forms/Form/mergeServerFormState.ts"],"sourcesContent":["import type { FormState } from 'payload/types'\n\nimport { arraysHaveSameStrings } from '../../utilities/arraysHaveSameStrings.js'\n\nconst propsToCheck = ['passesCondition', 'valid', 'errorMessage']\n\n/**\n * Merges certain properties from the server state into the client state. These do not include values,\n * as we do not want to update them on the client like that, which would cause flickering.\n *\n * We want to use this to update the error state, and other properties that are not user input, as the error state\n * is the thing we want to keep in sync with the server (where it's calculated) on the client.\n */\nexport const mergeServerFormState = (\n oldState: FormState,\n newState: FormState,\n): { changed: boolean; newState: FormState } => {\n let changed = false\n\n Object.entries(newState).forEach(([path, newFieldState]) => {\n newFieldState.initialValue = oldState[path]?.initialValue\n newFieldState.value = oldState[path].value\n\n const oldErrorPaths: string[] = []\n const newErrorPaths: string[] = []\n\n if (oldState[path].errorPaths instanceof Set) {\n oldState[path].errorPaths.forEach((path) => oldErrorPaths.push(path))\n }\n\n if (\n newFieldState.errorPaths &&\n !Array.isArray(newFieldState.errorPaths) &&\n typeof newFieldState.errorPaths\n ) {\n Object.values(newFieldState.errorPaths).forEach((path) => newErrorPaths.push(path))\n }\n\n if (!arraysHaveSameStrings(oldErrorPaths, newErrorPaths)) {\n changed = true\n }\n\n propsToCheck.forEach((prop) => {\n if (newFieldState[prop] != oldState[path][prop]) {\n changed = true\n }\n })\n })\n\n return { changed, newState }\n}\n"],"names":["arraysHaveSameStrings","propsToCheck","mergeServerFormState","oldState","newState","changed","Object","entries","forEach","path","newFieldState","initialValue","value","oldErrorPaths","newErrorPaths","errorPaths","Set","push","Array","isArray","values","prop"],"mappings":"AAEA,SAASA,qBAAqB,QAAQ,2CAA0C;AAEhF,MAAMC,eAAe;IAAC;IAAmB;IAAS;CAAe;AAEjE;;;;;;CAMC,GACD,OAAO,MAAMC,uBAAuB,CAClCC,UACAC;IAEA,IAAIC,UAAU;IAEdC,OAAOC,OAAO,CAACH,UAAUI,OAAO,CAAC,CAAC,CAACC,MAAMC,cAAc;QACrDA,cAAcC,YAAY,GAAGR,QAAQ,CAACM,KAAK,EAAEE;QAC7CD,cAAcE,KAAK,GAAGT,QAAQ,CAACM,KAAK,CAACG,KAAK;QAE1C,MAAMC,gBAA0B,EAAE;QAClC,MAAMC,gBAA0B,EAAE;QAElC,IAAIX,QAAQ,CAACM,KAAK,CAACM,UAAU,YAAYC,KAAK;YAC5Cb,QAAQ,CAACM,KAAK,CAACM,UAAU,CAACP,OAAO,CAAC,CAACC,OAASI,cAAcI,IAAI,CAACR;QACjE;QAEA,IACEC,cAAcK,UAAU,IACxB,CAACG,MAAMC,OAAO,CAACT,cAAcK,UAAU,KACvC,OAAOL,cAAcK,UAAU,EAC/B;YACAT,OAAOc,MAAM,CAACV,cAAcK,UAAU,EAAEP,OAAO,CAAC,CAACC,OAASK,cAAcG,IAAI,CAACR;QAC/E;QAEA,IAAI,CAACT,sBAAsBa,eAAeC,gBAAgB;YACxDT,UAAU;QACZ;QAEAJ,aAAaO,OAAO,CAAC,CAACa;YACpB,IAAIX,aAAa,CAACW,KAAK,IAAIlB,QAAQ,CAACM,KAAK,CAACY,KAAK,EAAE;gBAC/ChB,UAAU;YACZ;QACF;IACF;IAEA,OAAO;QAAEA;QAASD;IAAS;AAC7B,EAAC"}
@@ -127,10 +127,11 @@ export type SET_ALL_ROWS_COLLAPSED = {
127
127
  export type FieldAction = ADD_ROW | DUPLICATE_ROW | MODIFY_CONDITION | MOVE_ROW | REMOVE | REMOVE_ROW | REPLACE_ROW | REPLACE_STATE | SET_ALL_ROWS_COLLAPSED | SET_ROW_COLLAPSED | UPDATE;
128
128
  export type FormFieldsContext = [FormState, Dispatch<FieldAction>];
129
129
  export type Context = {
130
- addFieldRow: ({ data, path, rowIndex, }: {
130
+ addFieldRow: ({ data, path, rowIndex, schemaPath, }: {
131
131
  data?: Data;
132
132
  path: string;
133
133
  rowIndex?: number;
134
+ schemaPath: string;
134
135
  }) => Promise<void>;
135
136
  buildRowErrors: () => void;
136
137
  createFormData: CreateFormData;
@@ -150,10 +151,11 @@ export type Context = {
150
151
  path: string;
151
152
  rowIndex: number;
152
153
  }) => void;
153
- replaceFieldRow: ({ data, path, rowIndex, }: {
154
+ replaceFieldRow: ({ data, path, rowIndex, schemaPath, }: {
154
155
  data?: Data;
155
156
  path: string;
156
157
  rowIndex: number;
158
+ schemaPath: string;
157
159
  }) => Promise<void>;
158
160
  replaceState: (state: FormState) => void;
159
161
  reset: Reset;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAChE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAErC,MAAM,MAAM,WAAW,GAAG;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,KAAK,GAAG,CAChB;IACE,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9C,GACD;IACE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAA;CAC7C,CACJ,GAAG;IACF,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,SAAS,CAAA;KAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAA;IACzE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;IAChB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAA;IACxC,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,SAAS,CAAA;KAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAA;IACrE,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAClD,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,mBAAmB,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IACzC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAChD,MAAM,MAAM,MAAM,GAAG,CACnB,OAAO,CAAC,EAAE,aAAa,EACvB,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,KACjC,OAAO,CAAC,IAAI,CAAC,CAAA;AAClB,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;AACjD,MAAM,MAAM,cAAc,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,QAAQ,CAAA;AAC1D,MAAM,MAAM,SAAS,GAAG,MAAM,SAAS,CAAA;AACvC,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAA;AAClD,MAAM,MAAM,OAAO,GAAG,MAAM,IAAI,CAAA;AAChC,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;AACnD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC,CAAA;AAC5D,MAAM,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;AACrD,MAAM,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAA;AACvD,MAAM,MAAM,aAAa,GAAG,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;AAEzD,MAAM,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAEpD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,SAAS,CAAA;IAChB,IAAI,EAAE,eAAe,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,QAAQ,CAAA;CACf,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,kBAAkB,CAAA;IACxB,IAAI,EAAE,IAAI,CAAA;CACX,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,QAAQ,CAAA;CACf,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AAEtB,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,YAAY,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,IAAI,EAAE,SAAS,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,IAAI,EAAE,aAAa,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,eAAe,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,UAAU,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;IAC7F,IAAI,EAAE,mBAAmB,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;IAC7F,IAAI,EAAE,wBAAwB,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,WAAW,GACnB,OAAO,GACP,aAAa,GACb,gBAAgB,GAChB,QAAQ,GACR,MAAM,GACN,UAAU,GACV,WAAW,GACX,aAAa,GACb,sBAAsB,GACtB,iBAAiB,GACjB,MAAM,CAAA;AAEV,MAAM,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAA;AAElE,MAAM,MAAM,OAAO,GAAG;IACpB,WAAW,EAAE,CAAC,EACZ,IAAI,EACJ,IAAI,EACJ,QAAQ,GACT,EAAE;QACD,IAAI,CAAC,EAAE,IAAI,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;QAIZ,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnB,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,cAAc,EAAE,cAAc,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;IACrC;;OAEG;IACH,MAAM,EAAE,SAAS,CAAA;IACjB,OAAO,EAAE,KAAK,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAA;IAChD,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,aAAa,CAAA;IAC5B,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,EAAE,SAAS,CAAA;IACpB,cAAc,EAAE,cAAc,CAAA;IAC9B,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAChF,eAAe,EAAE,CAAC,EAChB,IAAI,EACJ,IAAI,EACJ,QAAQ,GACT,EAAE;QACD,IAAI,CAAC,EAAE,IAAI,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;KACjB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnB,YAAY,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAA;IACxC,KAAK,EAAE,KAAK,CAAA;IACZ,WAAW,EAAE,WAAW,CAAA;IACxB,aAAa,EAAE,aAAa,CAAA;IAC5B,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,YAAY,CAAA;CAC3B,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/forms/Form/types.ts"],"sourcesContent":["import type { User } from 'payload/auth'\nimport type { Field, FormField, FormState } from 'payload/types'\nimport type { Data } from 'payload/types'\nimport type React from 'react'\nimport type { Dispatch } from 'react'\n\nexport type Preferences = {\n [key: string]: unknown\n}\n\nexport type Props = (\n | {\n action: (formData: FormData) => Promise<void>\n }\n | {\n action?: string\n method?: 'DELETE' | 'GET' | 'PATCH' | 'POST'\n }\n) & {\n beforeSubmit?: ((args: { formState: FormState }) => Promise<FormState>)[]\n children?: React.ReactNode\n className?: string\n disableSuccessStatus?: boolean\n disabled?: boolean\n /**\n * By default, the form will get the field schema (not data) from the current document. If you pass this in, you can override that behavior.\n * This is very useful for sub-forms, where the form's field schema is not necessarily the field schema of the current document (e.g. for the Blocks\n * feature of the Lexical Rich Text field)\n */\n fields?: Field[]\n handleResponse?: (res: Response) => void\n initialState?: FormState\n log?: boolean\n onChange?: ((args: { formState: FormState }) => Promise<FormState>)[]\n onSubmit?: (fields: FormState, data: Data) => void\n onSuccess?: (json: unknown) => void\n redirect?: string\n submitted?: boolean\n uuid?: string\n validationOperation?: 'create' | 'update'\n waitForAutocomplete?: boolean\n}\n\nexport type SubmitOptions = {\n action?: string\n method?: string\n overrides?: Record<string, unknown>\n skipValidation?: boolean\n}\n\nexport type DispatchFields = React.Dispatch<any>\nexport type Submit = (\n options?: SubmitOptions,\n e?: React.FormEvent<HTMLFormElement>,\n) => Promise<void>\nexport type ValidateForm = () => Promise<boolean>\nexport type CreateFormData = (overrides?: any) => FormData\nexport type GetFields = () => FormState\nexport type GetField = (path: string) => FormField\nexport type GetData = () => Data\nexport type GetSiblingData = (path: string) => Data\nexport type GetDataByPath = <T = unknown>(path: string) => T\nexport type SetModified = (modified: boolean) => void\nexport type SetSubmitted = (submitted: boolean) => void\nexport type SetProcessing = (processing: boolean) => void\n\nexport type Reset = (data: unknown) => Promise<void>\n\nexport type REPLACE_STATE = {\n optimize?: boolean\n state: FormState\n type: 'REPLACE_STATE'\n}\n\nexport type REMOVE = {\n path: string\n type: 'REMOVE'\n}\n\nexport type MODIFY_CONDITION = {\n path: string\n result: boolean\n type: 'MODIFY_CONDITION'\n user: User\n}\n\nexport type UPDATE = {\n path: string\n type: 'UPDATE'\n} & Partial<FormField>\n\nexport type REMOVE_ROW = {\n path: string\n rowIndex: number\n type: 'REMOVE_ROW'\n}\n\nexport type ADD_ROW = {\n blockType?: string\n path: string\n rowIndex?: number\n subFieldState?: FormState\n type: 'ADD_ROW'\n}\n\nexport type REPLACE_ROW = {\n blockType?: string\n path: string\n rowIndex: number\n subFieldState?: FormState\n type: 'REPLACE_ROW'\n}\n\nexport type DUPLICATE_ROW = {\n path: string\n rowIndex: number\n type: 'DUPLICATE_ROW'\n}\n\nexport type MOVE_ROW = {\n moveFromIndex: number\n moveToIndex: number\n path: string\n type: 'MOVE_ROW'\n}\n\nexport type SET_ROW_COLLAPSED = {\n collapsed: boolean\n path: string\n rowID: string\n setDocFieldPreferences: (field: string, fieldPreferences: { [key: string]: unknown }) => void\n type: 'SET_ROW_COLLAPSED'\n}\n\nexport type SET_ALL_ROWS_COLLAPSED = {\n collapsed: boolean\n path: string\n setDocFieldPreferences: (field: string, fieldPreferences: { [key: string]: unknown }) => void\n type: 'SET_ALL_ROWS_COLLAPSED'\n}\n\nexport type FieldAction =\n | ADD_ROW\n | DUPLICATE_ROW\n | MODIFY_CONDITION\n | MOVE_ROW\n | REMOVE\n | REMOVE_ROW\n | REPLACE_ROW\n | REPLACE_STATE\n | SET_ALL_ROWS_COLLAPSED\n | SET_ROW_COLLAPSED\n | UPDATE\n\nexport type FormFieldsContext = [FormState, Dispatch<FieldAction>]\n\nexport type Context = {\n addFieldRow: ({\n data,\n path,\n rowIndex,\n }: {\n data?: Data\n path: string\n /*\n * by default the new row will be added to the end of the list\n */\n rowIndex?: number\n }) => Promise<void>\n buildRowErrors: () => void\n createFormData: CreateFormData\n disabled: boolean\n dispatchFields: Dispatch<FieldAction>\n /**\n * @deprecated Form context fields may be outdated and should not be relied on. Instead, prefer `useFormFields`.\n */\n fields: FormState\n formRef: React.MutableRefObject<HTMLFormElement>\n getData: GetData\n getDataByPath: GetDataByPath\n getField: GetField\n getFields: GetFields\n getSiblingData: GetSiblingData\n removeFieldRow: ({ path, rowIndex }: { path: string; rowIndex: number }) => void\n replaceFieldRow: ({\n data,\n path,\n rowIndex,\n }: {\n data?: Data\n path: string\n rowIndex: number\n }) => Promise<void>\n replaceState: (state: FormState) => void\n reset: Reset\n setModified: SetModified\n setProcessing: SetProcessing\n setSubmitted: SetSubmitted\n submit: Submit\n uuid?: string\n validateForm: ValidateForm\n}\n"],"names":[],"mappings":"AA4JA,WA6CC"}
1
+ {"version":3,"sources":["../../../src/forms/Form/types.ts"],"sourcesContent":["import type { User } from 'payload/auth'\nimport type { Field, FormField, FormState } from 'payload/types'\nimport type { Data } from 'payload/types'\nimport type React from 'react'\nimport type { Dispatch } from 'react'\n\nexport type Preferences = {\n [key: string]: unknown\n}\n\nexport type Props = (\n | {\n action: (formData: FormData) => Promise<void>\n }\n | {\n action?: string\n method?: 'DELETE' | 'GET' | 'PATCH' | 'POST'\n }\n) & {\n beforeSubmit?: ((args: { formState: FormState }) => Promise<FormState>)[]\n children?: React.ReactNode\n className?: string\n disableSuccessStatus?: boolean\n disabled?: boolean\n /**\n * By default, the form will get the field schema (not data) from the current document. If you pass this in, you can override that behavior.\n * This is very useful for sub-forms, where the form's field schema is not necessarily the field schema of the current document (e.g. for the Blocks\n * feature of the Lexical Rich Text field)\n */\n fields?: Field[]\n handleResponse?: (res: Response) => void\n initialState?: FormState\n log?: boolean\n onChange?: ((args: { formState: FormState }) => Promise<FormState>)[]\n onSubmit?: (fields: FormState, data: Data) => void\n onSuccess?: (json: unknown) => void\n redirect?: string\n submitted?: boolean\n uuid?: string\n validationOperation?: 'create' | 'update'\n waitForAutocomplete?: boolean\n}\n\nexport type SubmitOptions = {\n action?: string\n method?: string\n overrides?: Record<string, unknown>\n skipValidation?: boolean\n}\n\nexport type DispatchFields = React.Dispatch<any>\nexport type Submit = (\n options?: SubmitOptions,\n e?: React.FormEvent<HTMLFormElement>,\n) => Promise<void>\nexport type ValidateForm = () => Promise<boolean>\nexport type CreateFormData = (overrides?: any) => FormData\nexport type GetFields = () => FormState\nexport type GetField = (path: string) => FormField\nexport type GetData = () => Data\nexport type GetSiblingData = (path: string) => Data\nexport type GetDataByPath = <T = unknown>(path: string) => T\nexport type SetModified = (modified: boolean) => void\nexport type SetSubmitted = (submitted: boolean) => void\nexport type SetProcessing = (processing: boolean) => void\n\nexport type Reset = (data: unknown) => Promise<void>\n\nexport type REPLACE_STATE = {\n optimize?: boolean\n state: FormState\n type: 'REPLACE_STATE'\n}\n\nexport type REMOVE = {\n path: string\n type: 'REMOVE'\n}\n\nexport type MODIFY_CONDITION = {\n path: string\n result: boolean\n type: 'MODIFY_CONDITION'\n user: User\n}\n\nexport type UPDATE = {\n path: string\n type: 'UPDATE'\n} & Partial<FormField>\n\nexport type REMOVE_ROW = {\n path: string\n rowIndex: number\n type: 'REMOVE_ROW'\n}\n\nexport type ADD_ROW = {\n blockType?: string\n path: string\n rowIndex?: number\n subFieldState?: FormState\n type: 'ADD_ROW'\n}\n\nexport type REPLACE_ROW = {\n blockType?: string\n path: string\n rowIndex: number\n subFieldState?: FormState\n type: 'REPLACE_ROW'\n}\n\nexport type DUPLICATE_ROW = {\n path: string\n rowIndex: number\n type: 'DUPLICATE_ROW'\n}\n\nexport type MOVE_ROW = {\n moveFromIndex: number\n moveToIndex: number\n path: string\n type: 'MOVE_ROW'\n}\n\nexport type SET_ROW_COLLAPSED = {\n collapsed: boolean\n path: string\n rowID: string\n setDocFieldPreferences: (field: string, fieldPreferences: { [key: string]: unknown }) => void\n type: 'SET_ROW_COLLAPSED'\n}\n\nexport type SET_ALL_ROWS_COLLAPSED = {\n collapsed: boolean\n path: string\n setDocFieldPreferences: (field: string, fieldPreferences: { [key: string]: unknown }) => void\n type: 'SET_ALL_ROWS_COLLAPSED'\n}\n\nexport type FieldAction =\n | ADD_ROW\n | DUPLICATE_ROW\n | MODIFY_CONDITION\n | MOVE_ROW\n | REMOVE\n | REMOVE_ROW\n | REPLACE_ROW\n | REPLACE_STATE\n | SET_ALL_ROWS_COLLAPSED\n | SET_ROW_COLLAPSED\n | UPDATE\n\nexport type FormFieldsContext = [FormState, Dispatch<FieldAction>]\n\nexport type Context = {\n addFieldRow: ({\n data,\n path,\n rowIndex,\n schemaPath,\n }: {\n data?: Data\n path: string\n /*\n * by default the new row will be added to the end of the list\n */\n rowIndex?: number\n schemaPath: string\n }) => Promise<void>\n buildRowErrors: () => void\n createFormData: CreateFormData\n disabled: boolean\n dispatchFields: Dispatch<FieldAction>\n /**\n * @deprecated Form context fields may be outdated and should not be relied on. Instead, prefer `useFormFields`.\n */\n fields: FormState\n formRef: React.MutableRefObject<HTMLFormElement>\n getData: GetData\n getDataByPath: GetDataByPath\n getField: GetField\n getFields: GetFields\n getSiblingData: GetSiblingData\n removeFieldRow: ({ path, rowIndex }: { path: string; rowIndex: number }) => void\n replaceFieldRow: ({\n data,\n path,\n rowIndex,\n schemaPath,\n }: {\n data?: Data\n path: string\n rowIndex: number\n schemaPath: string\n }) => Promise<void>\n replaceState: (state: FormState) => void\n reset: Reset\n setModified: SetModified\n setProcessing: SetProcessing\n setSubmitted: SetSubmitted\n submit: Submit\n uuid?: string\n validateForm: ValidateForm\n}\n"],"names":[],"mappings":"AA4JA,WAiDC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/Label/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG/C,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,cAAc,CAAA;AAErB,QAAA,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAe/B,CAAA;AAED,eAAe,KAAK,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/Label/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG/C,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,OAAO,cAAc,CAAA;AAErB,QAAA,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAkB/B,CAAA;AAED,eAAe,KAAK,CAAA"}
@@ -2,8 +2,14 @@
2
2
  import { getTranslation } from '@payloadcms/translations';
3
3
  import React from 'react';
4
4
  import { useTranslation } from '../../providers/Translation/index.js';
5
+ import { generateFieldID } from '../../utilities/generateFieldID.js';
6
+ import { useFieldPath } from '../FieldPathProvider/index.js';
7
+ import { useForm } from '../Form/context.js';
5
8
  const Label = (props)=>{
6
- const { htmlFor, label, required = false } = props;
9
+ const { htmlFor: htmlForFromProps, label, required = false } = props;
10
+ const { uuid } = useForm();
11
+ const { path } = useFieldPath();
12
+ const htmlFor = htmlForFromProps || generateFieldID(path, uuid);
7
13
  const { i18n } = useTranslation();
8
14
  if (label) {
9
15
  return /*#__PURE__*/ React.createElement("label", {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/forms/Label/index.tsx"],"sourcesContent":["'use client'\nimport type { LabelProps } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\n\nconst Label: React.FC<LabelProps> = (props) => {\n const { htmlFor, label, required = false } = props\n\n const { i18n } = useTranslation()\n\n if (label) {\n return (\n <label className=\"field-label\" htmlFor={htmlFor}>\n {getTranslation(label, i18n)}\n {required && <span className=\"required\">*</span>}\n </label>\n )\n }\n\n return null\n}\n\nexport default Label\n"],"names":["getTranslation","React","useTranslation","Label","props","htmlFor","label","required","i18n","className","span"],"mappings":"AAAA;AAGA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,OAAOC,WAAW,QAAO;AAEzB,SAASC,cAAc,QAAQ,uCAAsC;AAGrE,MAAMC,QAA8B,CAACC;IACnC,MAAM,EAAEC,OAAO,EAAEC,KAAK,EAAEC,WAAW,KAAK,EAAE,GAAGH;IAE7C,MAAM,EAAEI,IAAI,EAAE,GAAGN;IAEjB,IAAII,OAAO;QACT,qBACE,oBAACA;YAAMG,WAAU;YAAcJ,SAASA;WACrCL,eAAeM,OAAOE,OACtBD,0BAAY,oBAACG;YAAKD,WAAU;WAAW;IAG9C;IAEA,OAAO;AACT;AAEA,eAAeN,MAAK"}
1
+ {"version":3,"sources":["../../../src/forms/Label/index.tsx"],"sourcesContent":["'use client'\nimport type { LabelProps } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { generateFieldID } from '../../utilities/generateFieldID.js'\nimport { useFieldPath } from '../FieldPathProvider/index.js'\nimport { useForm } from '../Form/context.js'\nimport './index.scss'\n\nconst Label: React.FC<LabelProps> = (props) => {\n const { htmlFor: htmlForFromProps, label, required = false } = props\n const { uuid } = useForm()\n const { path } = useFieldPath()\n const htmlFor = htmlForFromProps || generateFieldID(path, uuid)\n\n const { i18n } = useTranslation()\n\n if (label) {\n return (\n <label className=\"field-label\" htmlFor={htmlFor}>\n {getTranslation(label, i18n)}\n {required && <span className=\"required\">*</span>}\n </label>\n )\n }\n\n return null\n}\n\nexport default Label\n"],"names":["getTranslation","React","useTranslation","generateFieldID","useFieldPath","useForm","Label","props","htmlFor","htmlForFromProps","label","required","uuid","path","i18n","className","span"],"mappings":"AAAA;AAGA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,OAAOC,WAAW,QAAO;AAEzB,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,YAAY,QAAQ,gCAA+B;AAC5D,SAASC,OAAO,QAAQ,qBAAoB;AAG5C,MAAMC,QAA8B,CAACC;IACnC,MAAM,EAAEC,SAASC,gBAAgB,EAAEC,KAAK,EAAEC,WAAW,KAAK,EAAE,GAAGJ;IAC/D,MAAM,EAAEK,IAAI,EAAE,GAAGP;IACjB,MAAM,EAAEQ,IAAI,EAAE,GAAGT;IACjB,MAAMI,UAAUC,oBAAoBN,gBAAgBU,MAAMD;IAE1D,MAAM,EAAEE,IAAI,EAAE,GAAGZ;IAEjB,IAAIQ,OAAO;QACT,qBACE,oBAACA;YAAMK,WAAU;YAAcP,SAASA;WACrCR,eAAeU,OAAOI,OACtBH,0BAAY,oBAACK;YAAKD,WAAU;WAAW;IAG9C;IAEA,OAAO;AACT;AAEA,eAAeT,MAAK"}
@@ -8,8 +8,8 @@ export const RenderField = (props)=>{
8
8
  const { path: pathFromContext, schemaPath: schemaPathFromContext } = useFieldPath();
9
9
  const readOnlyFromContext = useReadOnly();
10
10
  const operation = useOperation();
11
- const path = `${pathFromContext ? `${pathFromContext}.` : ''}${name || ''}`;
12
- const schemaPath = `${schemaPathFromContext ? `${schemaPathFromContext}.` : ''}${name || ''}`;
11
+ const path = `${pathFromContext ? `${pathFromContext}.` : ''}${name ? `${name}` : ''}`;
12
+ const schemaPath = `${schemaPathFromContext ? `${schemaPathFromContext}` : ''}${name ? `.${name}` : ''}`;
13
13
  // if the user cannot read the field, then filter it out
14
14
  // this is different from `admin.readOnly` which is executed based on `operation`
15
15
  if (fieldPermissions?.read?.permission === false) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/forms/RenderFields/RenderField.tsx"],"sourcesContent":["'use client'\nimport type { FieldPermissions } from 'payload/auth'\n\nimport React from 'react'\n\nimport { useOperation } from '../../providers/OperationProvider/index.js'\nimport { FieldPathProvider, useFieldPath } from '../FieldPathProvider/index.js'\nimport { ReadOnlyProvider, useReadOnly } from '../ReadOnlyProvider/index.js'\n\nexport const RenderField: React.FC<{\n Field: React.ReactNode\n fieldPermissions: FieldPermissions\n name?: string\n readOnly?: boolean\n}> = (props) => {\n const { name, Field, fieldPermissions, readOnly: readOnlyFromProps } = props\n\n const { path: pathFromContext, schemaPath: schemaPathFromContext } = useFieldPath()\n\n const readOnlyFromContext = useReadOnly()\n\n const operation = useOperation()\n\n const path = `${pathFromContext ? `${pathFromContext}.` : ''}${name || ''}`\n const schemaPath = `${schemaPathFromContext ? `${schemaPathFromContext}.` : ''}${name || ''}`\n\n // if the user cannot read the field, then filter it out\n // this is different from `admin.readOnly` which is executed based on `operation`\n if (fieldPermissions?.read?.permission === false) {\n return null\n }\n\n // `admin.readOnly` displays the value but prevents the field from being edited\n let readOnly = readOnlyFromProps\n\n // if parent field is `readOnly: true`, but this field is `readOnly: false`, the field should still be editable\n if (readOnlyFromContext && readOnly !== false) readOnly = true\n\n // if the user does not have access control to begin with, force it to be read-only\n if (fieldPermissions?.[operation]?.permission === false) {\n readOnly = true\n }\n\n return (\n <ReadOnlyProvider readOnly={readOnly}>\n <FieldPathProvider path={path} schemaPath={schemaPath}>\n {Field}\n </FieldPathProvider>\n </ReadOnlyProvider>\n )\n}\n"],"names":["React","useOperation","FieldPathProvider","useFieldPath","ReadOnlyProvider","useReadOnly","RenderField","props","name","Field","fieldPermissions","readOnly","readOnlyFromProps","path","pathFromContext","schemaPath","schemaPathFromContext","readOnlyFromContext","operation","read","permission"],"mappings":"AAAA;AAGA,OAAOA,WAAW,QAAO;AAEzB,SAASC,YAAY,QAAQ,6CAA4C;AACzE,SAASC,iBAAiB,EAAEC,YAAY,QAAQ,gCAA+B;AAC/E,SAASC,gBAAgB,EAAEC,WAAW,QAAQ,+BAA8B;AAE5E,OAAO,MAAMC,cAKR,CAACC;IACJ,MAAM,EAAEC,IAAI,EAAEC,KAAK,EAAEC,gBAAgB,EAAEC,UAAUC,iBAAiB,EAAE,GAAGL;IAEvE,MAAM,EAAEM,MAAMC,eAAe,EAAEC,YAAYC,qBAAqB,EAAE,GAAGb;IAErE,MAAMc,sBAAsBZ;IAE5B,MAAMa,YAAYjB;IAElB,MAAMY,OAAO,CAAC,EAAEC,kBAAkB,CAAC,EAAEA,gBAAgB,CAAC,CAAC,GAAG,GAAG,EAAEN,QAAQ,GAAG,CAAC;IAC3E,MAAMO,aAAa,CAAC,EAAEC,wBAAwB,CAAC,EAAEA,sBAAsB,CAAC,CAAC,GAAG,GAAG,EAAER,QAAQ,GAAG,CAAC;IAE7F,wDAAwD;IACxD,iFAAiF;IACjF,IAAIE,kBAAkBS,MAAMC,eAAe,OAAO;QAChD,OAAO;IACT;IAEA,+EAA+E;IAC/E,IAAIT,WAAWC;IAEf,+GAA+G;IAC/G,IAAIK,uBAAuBN,aAAa,OAAOA,WAAW;IAE1D,mFAAmF;IACnF,IAAID,kBAAkB,CAACQ,UAAU,EAAEE,eAAe,OAAO;QACvDT,WAAW;IACb;IAEA,qBACE,oBAACP;QAAiBO,UAAUA;qBAC1B,oBAACT;QAAkBW,MAAMA;QAAME,YAAYA;OACxCN;AAIT,EAAC"}
1
+ {"version":3,"sources":["../../../src/forms/RenderFields/RenderField.tsx"],"sourcesContent":["'use client'\nimport type { FieldPermissions } from 'payload/auth'\n\nimport React from 'react'\n\nimport { useOperation } from '../../providers/OperationProvider/index.js'\nimport { FieldPathProvider, useFieldPath } from '../FieldPathProvider/index.js'\nimport { ReadOnlyProvider, useReadOnly } from '../ReadOnlyProvider/index.js'\n\nexport const RenderField: React.FC<{\n Field: React.ReactNode\n fieldPermissions: FieldPermissions\n name?: string\n readOnly?: boolean\n}> = (props) => {\n const { name, Field, fieldPermissions, readOnly: readOnlyFromProps } = props\n\n const { path: pathFromContext, schemaPath: schemaPathFromContext } = useFieldPath()\n\n const readOnlyFromContext = useReadOnly()\n\n const operation = useOperation()\n\n const path = `${pathFromContext ? `${pathFromContext}.` : ''}${name ? `${name}` : ''}`\n const schemaPath = `${schemaPathFromContext ? `${schemaPathFromContext}` : ''}${name ? `.${name}` : ''}`\n\n // if the user cannot read the field, then filter it out\n // this is different from `admin.readOnly` which is executed based on `operation`\n if (fieldPermissions?.read?.permission === false) {\n return null\n }\n\n // `admin.readOnly` displays the value but prevents the field from being edited\n let readOnly = readOnlyFromProps\n\n // if parent field is `readOnly: true`, but this field is `readOnly: false`, the field should still be editable\n if (readOnlyFromContext && readOnly !== false) readOnly = true\n\n // if the user does not have access control to begin with, force it to be read-only\n if (fieldPermissions?.[operation]?.permission === false) {\n readOnly = true\n }\n\n return (\n <ReadOnlyProvider readOnly={readOnly}>\n <FieldPathProvider path={path} schemaPath={schemaPath}>\n {Field}\n </FieldPathProvider>\n </ReadOnlyProvider>\n )\n}\n"],"names":["React","useOperation","FieldPathProvider","useFieldPath","ReadOnlyProvider","useReadOnly","RenderField","props","name","Field","fieldPermissions","readOnly","readOnlyFromProps","path","pathFromContext","schemaPath","schemaPathFromContext","readOnlyFromContext","operation","read","permission"],"mappings":"AAAA;AAGA,OAAOA,WAAW,QAAO;AAEzB,SAASC,YAAY,QAAQ,6CAA4C;AACzE,SAASC,iBAAiB,EAAEC,YAAY,QAAQ,gCAA+B;AAC/E,SAASC,gBAAgB,EAAEC,WAAW,QAAQ,+BAA8B;AAE5E,OAAO,MAAMC,cAKR,CAACC;IACJ,MAAM,EAAEC,IAAI,EAAEC,KAAK,EAAEC,gBAAgB,EAAEC,UAAUC,iBAAiB,EAAE,GAAGL;IAEvE,MAAM,EAAEM,MAAMC,eAAe,EAAEC,YAAYC,qBAAqB,EAAE,GAAGb;IAErE,MAAMc,sBAAsBZ;IAE5B,MAAMa,YAAYjB;IAElB,MAAMY,OAAO,CAAC,EAAEC,kBAAkB,CAAC,EAAEA,gBAAgB,CAAC,CAAC,GAAG,GAAG,EAAEN,OAAO,CAAC,EAAEA,KAAK,CAAC,GAAG,GAAG,CAAC;IACtF,MAAMO,aAAa,CAAC,EAAEC,wBAAwB,CAAC,EAAEA,sBAAsB,CAAC,GAAG,GAAG,EAAER,OAAO,CAAC,CAAC,EAAEA,KAAK,CAAC,GAAG,GAAG,CAAC;IAExG,wDAAwD;IACxD,iFAAiF;IACjF,IAAIE,kBAAkBS,MAAMC,eAAe,OAAO;QAChD,OAAO;IACT;IAEA,+EAA+E;IAC/E,IAAIT,WAAWC;IAEf,+GAA+G;IAC/G,IAAIK,uBAAuBN,aAAa,OAAOA,WAAW;IAE1D,mFAAmF;IACnF,IAAID,kBAAkB,CAACQ,UAAU,EAAEE,eAAe,OAAO;QACvDT,WAAW;IACb;IAEA,qBACE,oBAACP;QAAiBO,UAAUA;qBAC1B,oBAACT;QAAkBW,MAAMA;QAAME,YAAYA;OACxCN;AAIT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/forms/fields/Array/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAkBvC,OAAO,cAAc,CAAA;AAIrB,QAAA,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAiQnC,CAAA;AAED,eAAe,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/forms/fields/Array/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAkBvC,OAAO,cAAc,CAAA;AAIrB,QAAA,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA6PnC,CAAA;AAED,eAAe,cAAc,CAAA"}
@@ -3,8 +3,8 @@ import { getTranslation } from '@payloadcms/translations';
3
3
  import React, { useCallback } from 'react';
4
4
  import Banner from '../../../elements/Banner/index.js';
5
5
  import { Button } from '../../../elements/Button/index.js';
6
- import DraggableSortable from '../../../elements/DraggableSortable/index.js';
7
6
  import DraggableSortableItem from '../../../elements/DraggableSortable/DraggableSortableItem/index.js';
7
+ import DraggableSortable from '../../../elements/DraggableSortable/index.js';
8
8
  import { ErrorPill } from '../../../elements/ErrorPill/index.js';
9
9
  import { useConfig } from '../../../providers/Config/index.js';
10
10
  import { useDocumentInfo } from '../../../providers/DocumentInfo/index.js';
@@ -24,10 +24,10 @@ const ArrayFieldType = (props)=>{
24
24
  label: label,
25
25
  required: required
26
26
  });
27
- const minRows = 'minRows' in props ? props.minRows : 0;
28
- const maxRows = 'maxRows' in props ? props.maxRows : undefined;
27
+ const minRows = 'minRows' in props ? props?.minRows : 0;
28
+ const maxRows = 'maxRows' in props ? props?.maxRows : undefined;
29
29
  const { setDocFieldPreferences } = useDocumentInfo();
30
- const { dispatchFields, setModified } = useForm();
30
+ const { addFieldRow, dispatchFields, setModified } = useForm();
31
31
  const submitted = useFormSubmitted();
32
32
  const { code: locale } = useLocale();
33
33
  const { i18n, t } = useTranslation();
@@ -72,25 +72,26 @@ const ArrayFieldType = (props)=>{
72
72
  validate,
73
73
  editingDefaultLocale
74
74
  ]);
75
- const { path, rows = [], showError, valid, value } = useField({
75
+ const { path, rows = [], schemaPath, showError, valid, value } = useField({
76
76
  hasRows: true,
77
77
  path: pathFromProps || name,
78
78
  validate: memoizedValidate
79
79
  });
80
- const addRow = useCallback((rowIndex)=>{
81
- dispatchFields({
82
- type: 'ADD_ROW',
80
+ const addRow = useCallback(async (rowIndex)=>{
81
+ await addFieldRow({
83
82
  path,
84
- rowIndex
83
+ rowIndex,
84
+ schemaPath
85
85
  });
86
86
  setModified(true);
87
87
  setTimeout(()=>{
88
88
  scrollToID(`${path}-row-${rowIndex + 1}`);
89
89
  }, 0);
90
90
  }, [
91
- dispatchFields,
91
+ addFieldRow,
92
92
  path,
93
- setModified
93
+ setModified,
94
+ schemaPath
94
95
  ]);
95
96
  const duplicateRow = useCallback((rowIndex)=>{
96
97
  dispatchFields({