@payloadcms/ui 3.0.0-alpha.46 → 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 (74) hide show
  1. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  2. package/dist/elements/DocumentDrawer/DrawerContent.js +22 -14
  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/ThumbnailCard/index.d.ts.map +1 -1
  18. package/dist/elements/ThumbnailCard/index.js +8 -4
  19. package/dist/elements/ThumbnailCard/index.js.map +1 -1
  20. package/dist/elements/ThumbnailCard/types.d.ts +4 -2
  21. package/dist/elements/ThumbnailCard/types.d.ts.map +1 -1
  22. package/dist/elements/ThumbnailCard/types.js.map +1 -1
  23. package/dist/forms/Form/index.d.ts.map +1 -1
  24. package/dist/forms/Form/index.js +5 -8
  25. package/dist/forms/Form/index.js.map +1 -1
  26. package/dist/forms/Form/mergeServerFormState.d.ts +7 -0
  27. package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
  28. package/dist/forms/Form/mergeServerFormState.js +7 -1
  29. package/dist/forms/Form/mergeServerFormState.js.map +1 -1
  30. package/dist/forms/Label/index.d.ts.map +1 -1
  31. package/dist/forms/Label/index.js +7 -1
  32. package/dist/forms/Label/index.js.map +1 -1
  33. package/dist/forms/RenderFields/RenderField.js +2 -2
  34. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  35. package/dist/forms/fields/Array/index.d.ts.map +1 -1
  36. package/dist/forms/fields/Array/index.js +0 -1
  37. package/dist/forms/fields/Array/index.js.map +1 -1
  38. package/dist/forms/fields/Blocks/index.d.ts.map +1 -1
  39. package/dist/forms/fields/Blocks/index.js +0 -1
  40. package/dist/forms/fields/Blocks/index.js.map +1 -1
  41. package/dist/forms/fields/Checkbox/index.d.ts.map +1 -1
  42. package/dist/forms/fields/Checkbox/index.js +2 -1
  43. package/dist/forms/fields/Checkbox/index.js.map +1 -1
  44. package/dist/forms/fields/JSON/index.d.ts.map +1 -1
  45. package/dist/forms/fields/JSON/index.js +4 -2
  46. package/dist/forms/fields/JSON/index.js.map +1 -1
  47. package/dist/forms/fields/Relationship/optionsReducer.d.ts.map +1 -1
  48. package/dist/forms/fields/Relationship/optionsReducer.js +12 -8
  49. package/dist/forms/fields/Relationship/optionsReducer.js.map +1 -1
  50. package/dist/forms/fields/Tabs/index.d.ts.map +1 -1
  51. package/dist/forms/fields/Tabs/index.js +4 -5
  52. package/dist/forms/fields/Tabs/index.js.map +1 -1
  53. package/dist/forms/fields/Tabs/types.d.ts +2 -0
  54. package/dist/forms/fields/Tabs/types.d.ts.map +1 -1
  55. package/dist/forms/fields/Tabs/types.js.map +1 -1
  56. package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.d.ts.map +1 -1
  57. package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.js +11 -1
  58. package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.js.map +1 -1
  59. package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
  60. package/dist/hooks/usePayloadAPI.js +12 -2
  61. package/dist/hooks/usePayloadAPI.js.map +1 -1
  62. package/dist/prod/styles.css +1 -1
  63. package/dist/utilities/buildComponentMap/mapFields.d.ts.map +1 -1
  64. package/dist/utilities/buildComponentMap/mapFields.js +6 -9
  65. package/dist/utilities/buildComponentMap/mapFields.js.map +1 -1
  66. package/dist/utilities/formatDocTitle.d.ts +7 -7
  67. package/dist/utilities/formatDocTitle.d.ts.map +1 -1
  68. package/dist/utilities/formatDocTitle.js +21 -16
  69. package/dist/utilities/formatDocTitle.js.map +1 -1
  70. package/dist/utilities/generateFieldID.d.ts +2 -0
  71. package/dist/utilities/generateFieldID.d.ts.map +1 -0
  72. package/dist/utilities/generateFieldID.js +5 -0
  73. package/dist/utilities/generateFieldID.js.map +1 -0
  74. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"DrawerContent.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/DrawerContent.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAGvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAqKrD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAwB/D,CAAA"}
1
+ {"version":3,"file":"DrawerContent.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/DrawerContent.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAGvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AA2KrD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAwB/D,CAAA"}
@@ -1,6 +1,5 @@
1
1
  'use client';
2
2
  import * as facelessUIImport from '@faceless-ui/modal';
3
- import { getTranslation } from '@payloadcms/translations';
4
3
  import queryString from 'qs';
5
4
  import React, { useCallback, useEffect, useRef, useState } from 'react';
6
5
  import { toast } from 'react-toastify';
@@ -8,7 +7,7 @@ import { FieldPathProvider, useFieldPath } from '../../forms/FieldPathProvider/i
8
7
  import { useRelatedCollections } from '../../forms/fields/Relationship/AddNew/useRelatedCollections.js';
9
8
  import usePayloadAPI from '../../hooks/usePayloadAPI.js';
10
9
  import { X } from '../../icons/X/index.js';
11
- import { useAuth } from '../../index.js';
10
+ import { formatDocTitle, useAuth } from '../../index.js';
12
11
  import { useComponentMap } from '../../providers/ComponentMapProvider/index.js';
13
12
  import { useConfig } from '../../providers/Config/index.js';
14
13
  import { DocumentInfoProvider } from '../../providers/DocumentInfo/index.js';
@@ -19,8 +18,9 @@ import { getFormState } from '../../utilities/getFormState.js';
19
18
  import { Gutter } from '../Gutter/index.js';
20
19
  import IDLabel from '../IDLabel/index.js';
21
20
  import { LoadingOverlay } from '../Loading/index.js';
21
+ import { RenderTitle } from '../RenderTitle/index.js';
22
22
  import { baseClass } from './index.js';
23
- const Content = ({ id, Header, collectionSlug, drawerSlug, onSave })=>{
23
+ const Content = ({ id, Header, collectionSlug, drawerSlug, initialData, onSave })=>{
24
24
  const { useModal } = facelessUIImport;
25
25
  const config = useConfig();
26
26
  const { routes: { api: apiRoute }, serverURL } = config;
@@ -40,6 +40,7 @@ const Content = ({ id, Header, collectionSlug, drawerSlug, onSave })=>{
40
40
  // no need to an additional requests when creating new documents
41
41
  const initialID = useRef(id);
42
42
  const [{ data, isError, isLoading: isLoadingDocument }] = usePayloadAPI(initialID.current ? `${serverURL}${apiRoute}/${collectionSlug}/${initialID.current}` : null, {
43
+ initialData,
43
44
  initialParams: {
44
45
  depth: 0,
45
46
  draft: 'true',
@@ -94,17 +95,23 @@ const Content = ({ id, Header, collectionSlug, drawerSlug, onSave })=>{
94
95
  }, [
95
96
  apiRoute,
96
97
  data,
97
- id,
98
98
  isEditing,
99
99
  schemaPath,
100
100
  serverURL,
101
- collectionSlug
101
+ collectionSlug,
102
+ id
102
103
  ]);
103
104
  if (isError) return null;
104
105
  if (!initialState || isLoadingDocument) {
105
106
  return /*#__PURE__*/ React.createElement(LoadingOverlay, null);
106
107
  }
107
108
  const docPermissions = permissions?.collections[collectionSlug];
109
+ const title = formatDocTitle({
110
+ collectionConfig,
111
+ data,
112
+ dateFormat: config.admin.dateFormat,
113
+ i18n
114
+ });
108
115
  return /*#__PURE__*/ React.createElement(DocumentInfoProvider, {
109
116
  BeforeDocument: /*#__PURE__*/ React.createElement(Gutter, {
110
117
  className: `${baseClass}__header`
@@ -112,16 +119,16 @@ const Content = ({ id, Header, collectionSlug, drawerSlug, onSave })=>{
112
119
  className: `${baseClass}__header-content`
113
120
  }, /*#__PURE__*/ React.createElement("h2", {
114
121
  className: `${baseClass}__header-text`
115
- }, Header || t(!id ? 'fields:addNewLabel' : 'general:editLabel', {
116
- label: getTranslation(collectionConfig.labels.singular, i18n)
122
+ }, Header || /*#__PURE__*/ React.createElement(RenderTitle, {
123
+ element: "span"
117
124
  })), /*#__PURE__*/ React.createElement("button", {
118
125
  "aria-label": t('general:close'),
119
126
  className: `${baseClass}__header-close`,
120
127
  onClick: ()=>toggleModal(drawerSlug),
121
128
  type: "button"
122
- }, /*#__PURE__*/ React.createElement(X, null))), id && /*#__PURE__*/ React.createElement(IDLabel, {
129
+ }, /*#__PURE__*/ React.createElement(X, null))), id && id !== title ? /*#__PURE__*/ React.createElement(IDLabel, {
123
130
  id: id.toString()
124
- })),
131
+ }) : null),
125
132
  action: action,
126
133
  apiURL: apiURL,
127
134
  collectionSlug: collectionConfig.slug,
@@ -134,8 +141,8 @@ const Content = ({ id, Header, collectionSlug, drawerSlug, onSave })=>{
134
141
  initialData: data,
135
142
  initialState: initialState,
136
143
  isEditing: isEditing,
137
- // me: true,
138
- onSave: onSave
144
+ onSave: onSave,
145
+ title: title
139
146
  }, Edit);
140
147
  };
141
148
  // First provide the document context using `DocumentInfoProvider`
@@ -145,9 +152,9 @@ const Content = ({ id, Header, collectionSlug, drawerSlug, onSave })=>{
145
152
  export const DocumentDrawerContent = (props)=>{
146
153
  const { id: idFromProps, collectionSlug, onSave: onSaveFromProps } = props;
147
154
  const [collectionConfig] = useRelatedCollections(collectionSlug);
148
- const [id, setId] = useState(idFromProps);
155
+ const [doc, setDoc] = useState();
149
156
  const onSave = useCallback((args)=>{
150
- setId(args.doc.id);
157
+ setDoc(args.doc);
151
158
  if (typeof onSaveFromProps === 'function') {
152
159
  void onSaveFromProps({
153
160
  ...args,
@@ -163,7 +170,8 @@ export const DocumentDrawerContent = (props)=>{
163
170
  schemaPath: collectionSlug
164
171
  }, /*#__PURE__*/ React.createElement(Content, {
165
172
  ...props,
166
- id: id,
173
+ id: idFromProps || doc?.id,
174
+ initialData: doc,
167
175
  onSave: onSave
168
176
  }));
169
177
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/DocumentDrawer/DrawerContent.tsx"],"sourcesContent":["'use client'\n\nimport type { FormState } from 'payload/types'\n\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport queryString from 'qs'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { toast } from 'react-toastify'\n\nimport type { DocumentDrawerProps } from './types.js'\n\nimport { FieldPathProvider, useFieldPath } from '../../forms/FieldPathProvider/index.js'\nimport { useRelatedCollections } from '../../forms/fields/Relationship/AddNew/useRelatedCollections.js'\nimport usePayloadAPI from '../../hooks/usePayloadAPI.js'\nimport { X } from '../../icons/X/index.js'\nimport { useAuth } from '../../index.js'\nimport { useComponentMap } from '../../providers/ComponentMapProvider/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { DocumentInfoProvider } from '../../providers/DocumentInfo/index.js'\nimport { useFormQueryParams } from '../../providers/FormQueryParams/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { getFormState } from '../../utilities/getFormState.js'\nimport { Gutter } from '../Gutter/index.js'\nimport IDLabel from '../IDLabel/index.js'\nimport { LoadingOverlay } from '../Loading/index.js'\nimport { baseClass } from './index.js'\n\nconst Content: React.FC<DocumentDrawerProps> = ({\n id,\n Header,\n collectionSlug,\n drawerSlug,\n onSave,\n}) => {\n const { useModal } = facelessUIImport\n\n const config = useConfig()\n\n const {\n routes: { api: apiRoute },\n serverURL,\n } = config\n\n const { closeModal, modalState, toggleModal } = useModal()\n const locale = useLocale()\n const [initialState, setInitialState] = useState<FormState>()\n const { i18n, t } = useTranslation()\n const hasInitializedState = useRef(false)\n const [isOpen, setIsOpen] = useState(false)\n const [collectionConfig] = useRelatedCollections(collectionSlug)\n const { formQueryParams } = useFormQueryParams()\n const formattedQueryParams = queryString.stringify(formQueryParams)\n\n const { permissions } = useAuth()\n\n const { schemaPath } = useFieldPath()\n\n const { componentMap } = useComponentMap()\n\n const { Edit } = componentMap[`${collectionSlug ? 'collections' : 'globals'}`][collectionSlug]\n\n // no need to an additional requests when creating new documents\n const initialID = useRef(id)\n\n const [{ data, isError, isLoading: isLoadingDocument }] = usePayloadAPI(\n initialID.current ? `${serverURL}${apiRoute}/${collectionSlug}/${initialID.current}` : null,\n { initialParams: { depth: 0, draft: 'true', 'fallback-locale': 'null' } },\n )\n\n useEffect(() => {\n setIsOpen(Boolean(modalState[drawerSlug]?.isOpen))\n }, [modalState, drawerSlug])\n\n useEffect(() => {\n if (isOpen && !isLoadingDocument && isError) {\n closeModal(drawerSlug)\n toast.error(data.errors?.[0].message || t('error:unspecific'))\n }\n }, [isError, t, isOpen, data, drawerSlug, closeModal, isLoadingDocument])\n\n const isEditing = Boolean(id)\n\n const apiURL = id ? `${serverURL}${apiRoute}/${collectionSlug}/${id}?locale=${locale.code}` : null\n\n const action = `${serverURL}${apiRoute}/${collectionSlug}${\n isEditing ? `/${id}` : ''\n }?${formattedQueryParams}`\n\n // const hasSavePermission =\n // (isEditing && docPermissions?.update?.permission) ||\n // (!isEditing && (docPermissions as CollectionPermission)?.create?.permission)\n\n useEffect(() => {\n if (!hasInitializedState.current && (!initialID.current || (initialID.current && data))) {\n const getInitialState = async () => {\n const result = await getFormState({\n apiRoute,\n body: {\n id,\n collectionSlug,\n data: data || {},\n operation: isEditing ? 'update' : 'create',\n schemaPath,\n },\n serverURL,\n })\n\n setInitialState(result)\n hasInitializedState.current = true\n }\n\n void getInitialState()\n }\n }, [apiRoute, data, id, isEditing, schemaPath, serverURL, collectionSlug])\n\n if (isError) return null\n\n if (!initialState || isLoadingDocument) {\n return <LoadingOverlay />\n }\n\n const docPermissions = permissions?.collections[collectionSlug]\n\n return (\n <DocumentInfoProvider\n BeforeDocument={\n <Gutter className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-content`}>\n <h2 className={`${baseClass}__header-text`}>\n {Header ||\n t(!id ? 'fields:addNewLabel' : 'general:editLabel', {\n label: getTranslation(collectionConfig.labels.singular, i18n),\n })}\n </h2>\n {/* TODO: the `button` HTML element breaks CSS transitions on the drawer for some reason...\n i.e. changing to a `div` element will fix the animation issue but will break accessibility\n */}\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header-close`}\n onClick={() => toggleModal(drawerSlug)}\n type=\"button\"\n >\n <X />\n </button>\n </div>\n {id && <IDLabel id={id.toString()} />}\n </Gutter>\n }\n action={action}\n apiURL={apiURL}\n collectionSlug={collectionConfig.slug}\n disableActions\n disableLeaveWithoutSaving\n docPermissions={docPermissions}\n hasSavePermission={docPermissions?.update?.permission}\n // isLoading,\n id={id}\n initialData={data}\n initialState={initialState}\n isEditing={isEditing}\n // me: true,\n onSave={onSave}\n >\n {Edit}\n </DocumentInfoProvider>\n )\n}\n\n// First provide the document context using `DocumentInfoProvider`\n// this is so we can utilize the `useDocumentInfo` hook in the `Content` component\n// this drawer is used for both creating and editing documents\n// this means that the `id` may be unknown until the document is created\nexport const DocumentDrawerContent: React.FC<DocumentDrawerProps> = (props) => {\n const { id: idFromProps, collectionSlug, onSave: onSaveFromProps } = props\n const [collectionConfig] = useRelatedCollections(collectionSlug)\n const [id, setId] = useState<null | number | string>(idFromProps)\n\n const onSave = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n setId(args.doc.id)\n\n if (typeof onSaveFromProps === 'function') {\n void onSaveFromProps({\n ...args,\n collectionConfig,\n })\n }\n },\n [onSaveFromProps, collectionConfig],\n )\n\n return (\n <FieldPathProvider path=\"\" schemaPath={collectionSlug}>\n <Content {...props} id={id} onSave={onSave} />\n </FieldPathProvider>\n )\n}\n"],"names":["facelessUIImport","getTranslation","queryString","React","useCallback","useEffect","useRef","useState","toast","FieldPathProvider","useFieldPath","useRelatedCollections","usePayloadAPI","X","useAuth","useComponentMap","useConfig","DocumentInfoProvider","useFormQueryParams","useLocale","useTranslation","getFormState","Gutter","IDLabel","LoadingOverlay","baseClass","Content","id","Header","collectionSlug","drawerSlug","onSave","useModal","config","routes","api","apiRoute","serverURL","closeModal","modalState","toggleModal","locale","initialState","setInitialState","i18n","t","hasInitializedState","isOpen","setIsOpen","collectionConfig","formQueryParams","formattedQueryParams","stringify","permissions","schemaPath","componentMap","Edit","initialID","data","isError","isLoading","isLoadingDocument","current","initialParams","depth","draft","Boolean","error","errors","message","isEditing","apiURL","code","action","getInitialState","result","body","operation","docPermissions","collections","BeforeDocument","className","div","h2","label","labels","singular","button","aria-label","onClick","type","toString","slug","disableActions","disableLeaveWithoutSaving","hasSavePermission","update","permission","initialData","DocumentDrawerContent","props","idFromProps","onSaveFromProps","setId","args","doc","path"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/elements/DocumentDrawer/DrawerContent.tsx"],"sourcesContent":["'use client'\n\nimport type { FormState, TypeWithID } from 'payload/types'\n\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport queryString from 'qs'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { toast } from 'react-toastify'\n\nimport type { DocumentDrawerProps } from './types.js'\n\nimport { FieldPathProvider, useFieldPath } from '../../forms/FieldPathProvider/index.js'\nimport { useRelatedCollections } from '../../forms/fields/Relationship/AddNew/useRelatedCollections.js'\nimport usePayloadAPI from '../../hooks/usePayloadAPI.js'\nimport { X } from '../../icons/X/index.js'\nimport { formatDocTitle, useAuth } from '../../index.js'\nimport { useComponentMap } from '../../providers/ComponentMapProvider/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { DocumentInfoProvider } from '../../providers/DocumentInfo/index.js'\nimport { useFormQueryParams } from '../../providers/FormQueryParams/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { getFormState } from '../../utilities/getFormState.js'\nimport { Gutter } from '../Gutter/index.js'\nimport IDLabel from '../IDLabel/index.js'\nimport { LoadingOverlay } from '../Loading/index.js'\nimport { RenderTitle } from '../RenderTitle/index.js'\nimport { baseClass } from './index.js'\n\nconst Content: React.FC<DocumentDrawerProps> = ({\n id,\n Header,\n collectionSlug,\n drawerSlug,\n initialData,\n onSave,\n}) => {\n const { useModal } = facelessUIImport\n\n const config = useConfig()\n\n const {\n routes: { api: apiRoute },\n serverURL,\n } = config\n\n const { closeModal, modalState, toggleModal } = useModal()\n const locale = useLocale()\n const [initialState, setInitialState] = useState<FormState>()\n const { i18n, t } = useTranslation()\n const hasInitializedState = useRef(false)\n const [isOpen, setIsOpen] = useState(false)\n const [collectionConfig] = useRelatedCollections(collectionSlug)\n const { formQueryParams } = useFormQueryParams()\n const formattedQueryParams = queryString.stringify(formQueryParams)\n\n const { permissions } = useAuth()\n\n const { schemaPath } = useFieldPath()\n\n const { componentMap } = useComponentMap()\n\n const { Edit } = componentMap[`${collectionSlug ? 'collections' : 'globals'}`][collectionSlug]\n\n // no need to an additional requests when creating new documents\n const initialID = useRef(id)\n\n const [{ data, isError, isLoading: isLoadingDocument }] = usePayloadAPI(\n initialID.current ? `${serverURL}${apiRoute}/${collectionSlug}/${initialID.current}` : null,\n { initialData, initialParams: { depth: 0, draft: 'true', 'fallback-locale': 'null' } },\n )\n\n useEffect(() => {\n setIsOpen(Boolean(modalState[drawerSlug]?.isOpen))\n }, [modalState, drawerSlug])\n\n useEffect(() => {\n if (isOpen && !isLoadingDocument && isError) {\n closeModal(drawerSlug)\n toast.error(data.errors?.[0].message || t('error:unspecific'))\n }\n }, [isError, t, isOpen, data, drawerSlug, closeModal, isLoadingDocument])\n\n const isEditing = Boolean(id)\n\n const apiURL = id ? `${serverURL}${apiRoute}/${collectionSlug}/${id}?locale=${locale.code}` : null\n\n const action = `${serverURL}${apiRoute}/${collectionSlug}${\n isEditing ? `/${id}` : ''\n }?${formattedQueryParams}`\n\n // const hasSavePermission =\n // (isEditing && docPermissions?.update?.permission) ||\n // (!isEditing && (docPermissions as CollectionPermission)?.create?.permission)\n\n useEffect(() => {\n if (!hasInitializedState.current && (!initialID.current || (initialID.current && data))) {\n const getInitialState = async () => {\n const result = await getFormState({\n apiRoute,\n body: {\n id,\n collectionSlug,\n data: data || {},\n operation: isEditing ? 'update' : 'create',\n schemaPath,\n },\n serverURL,\n })\n\n setInitialState(result)\n hasInitializedState.current = true\n }\n\n void getInitialState()\n }\n }, [apiRoute, data, isEditing, schemaPath, serverURL, collectionSlug, id])\n\n if (isError) return null\n\n if (!initialState || isLoadingDocument) {\n return <LoadingOverlay />\n }\n\n const docPermissions = permissions?.collections[collectionSlug]\n\n const title = formatDocTitle({\n collectionConfig,\n data,\n dateFormat: config.admin.dateFormat,\n i18n,\n })\n\n return (\n <DocumentInfoProvider\n BeforeDocument={\n <Gutter className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-content`}>\n <h2 className={`${baseClass}__header-text`}>\n {Header || <RenderTitle element=\"span\" />}\n </h2>\n {/* TODO: the `button` HTML element breaks CSS transitions on the drawer for some reason...\n i.e. changing to a `div` element will fix the animation issue but will break accessibility\n */}\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header-close`}\n onClick={() => toggleModal(drawerSlug)}\n type=\"button\"\n >\n <X />\n </button>\n </div>\n {id && id !== title ? <IDLabel id={id.toString()} /> : null}\n </Gutter>\n }\n action={action}\n apiURL={apiURL}\n collectionSlug={collectionConfig.slug}\n disableActions\n disableLeaveWithoutSaving\n docPermissions={docPermissions}\n hasSavePermission={docPermissions?.update?.permission}\n // isLoading,\n id={id}\n initialData={data}\n initialState={initialState}\n isEditing={isEditing}\n onSave={onSave}\n title={title}\n >\n {Edit}\n </DocumentInfoProvider>\n )\n}\n\n// First provide the document context using `DocumentInfoProvider`\n// this is so we can utilize the `useDocumentInfo` hook in the `Content` component\n// this drawer is used for both creating and editing documents\n// this means that the `id` may be unknown until the document is created\nexport const DocumentDrawerContent: React.FC<DocumentDrawerProps> = (props) => {\n const { id: idFromProps, collectionSlug, onSave: onSaveFromProps } = props\n const [collectionConfig] = useRelatedCollections(collectionSlug)\n const [doc, setDoc] = useState<TypeWithID | null>()\n\n const onSave = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n setDoc(args.doc)\n\n if (typeof onSaveFromProps === 'function') {\n void onSaveFromProps({\n ...args,\n collectionConfig,\n })\n }\n },\n [onSaveFromProps, collectionConfig],\n )\n\n return (\n <FieldPathProvider path=\"\" schemaPath={collectionSlug}>\n <Content {...props} id={idFromProps || doc?.id} initialData={doc} onSave={onSave} />\n </FieldPathProvider>\n )\n}\n"],"names":["facelessUIImport","queryString","React","useCallback","useEffect","useRef","useState","toast","FieldPathProvider","useFieldPath","useRelatedCollections","usePayloadAPI","X","formatDocTitle","useAuth","useComponentMap","useConfig","DocumentInfoProvider","useFormQueryParams","useLocale","useTranslation","getFormState","Gutter","IDLabel","LoadingOverlay","RenderTitle","baseClass","Content","id","Header","collectionSlug","drawerSlug","initialData","onSave","useModal","config","routes","api","apiRoute","serverURL","closeModal","modalState","toggleModal","locale","initialState","setInitialState","i18n","t","hasInitializedState","isOpen","setIsOpen","collectionConfig","formQueryParams","formattedQueryParams","stringify","permissions","schemaPath","componentMap","Edit","initialID","data","isError","isLoading","isLoadingDocument","current","initialParams","depth","draft","Boolean","error","errors","message","isEditing","apiURL","code","action","getInitialState","result","body","operation","docPermissions","collections","title","dateFormat","admin","BeforeDocument","className","div","h2","element","button","aria-label","onClick","type","toString","slug","disableActions","disableLeaveWithoutSaving","hasSavePermission","update","permission","DocumentDrawerContent","props","idFromProps","onSaveFromProps","doc","setDoc","args","path"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { TypeWithID } from 'payload/types.js';
1
2
  import type React from 'react';
2
3
  import type { HTMLAttributes } from 'react';
3
4
  import type { DocumentInfoContext } from '../../providers/DocumentInfo/types.js';
@@ -5,7 +6,8 @@ import type { Props as DrawerProps } from '../Drawer/types.js';
5
6
  export type DocumentDrawerProps = Pick<DrawerProps, 'Header'> & {
6
7
  collectionSlug: string;
7
8
  drawerSlug?: string;
8
- id?: number | string;
9
+ id?: null | number | string;
10
+ initialData?: TypeWithID;
9
11
  onSave?: DocumentInfoContext['onSave'];
10
12
  };
11
13
  export type DocumentTogglerProps = HTMLAttributes<HTMLButtonElement> & {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAChF,OAAO,KAAK,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAE9D,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG;IAC9D,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,iBAAiB,CAAC,GAAG;IACrE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,KAAK;IAC1F,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAC5D,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAC7D;QACE,WAAW,EAAE,MAAM,IAAI,CAAA;QACvB,WAAW,EAAE,MAAM,CAAA;QACnB,UAAU,EAAE,MAAM,CAAA;QAClB,YAAY,EAAE,OAAO,CAAA;QACrB,UAAU,EAAE,MAAM,IAAI,CAAA;QACtB,YAAY,EAAE,MAAM,IAAI,CAAA;KACzB;CACF,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAChF,OAAO,KAAK,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAE9D,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG;IAC9D,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;IAC3B,WAAW,CAAC,EAAE,UAAU,CAAA;IACxB,MAAM,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,iBAAiB,CAAC,GAAG;IACrE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,KAAK;IAC1F,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAC5D,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAC7D;QACE,WAAW,EAAE,MAAM,IAAI,CAAA;QACvB,WAAW,EAAE,MAAM,CAAA;QACnB,UAAU,EAAE,MAAM,CAAA;QAClB,YAAY,EAAE,OAAO,CAAA;QACrB,UAAU,EAAE,MAAM,IAAI,CAAA;QACtB,YAAY,EAAE,MAAM,IAAI,CAAA;KACzB;CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/DocumentDrawer/types.ts"],"sourcesContent":["import type React from 'react'\nimport type { HTMLAttributes } from 'react'\n\nimport type { DocumentInfoContext } from '../../providers/DocumentInfo/types.js'\nimport type { Props as DrawerProps } from '../Drawer/types.js'\n\nexport type DocumentDrawerProps = Pick<DrawerProps, 'Header'> & {\n collectionSlug: string\n drawerSlug?: string\n id?: number | string\n onSave?: DocumentInfoContext['onSave']\n}\n\nexport type DocumentTogglerProps = HTMLAttributes<HTMLButtonElement> & {\n children?: React.ReactNode\n className?: string\n collectionSlug: string\n disabled?: boolean\n drawerSlug?: string\n id?: string\n}\n\nexport type UseDocumentDrawer = (args: { collectionSlug: string; id?: number | string }) => [\n React.FC<Omit<DocumentDrawerProps, 'collectionSlug' | 'id'>>, // drawer\n React.FC<Omit<DocumentTogglerProps, 'collectionSlug' | 'id'>>, // toggler\n {\n closeDrawer: () => void\n drawerDepth: number\n drawerSlug: string\n isDrawerOpen: boolean\n openDrawer: () => void\n toggleDrawer: () => void\n },\n]\n"],"names":[],"mappings":"AAsBA,WAWC"}
1
+ {"version":3,"sources":["../../../src/elements/DocumentDrawer/types.ts"],"sourcesContent":["import type { TypeWithID } from 'payload/types.js'\nimport type React from 'react'\nimport type { HTMLAttributes } from 'react'\n\nimport type { DocumentInfoContext } from '../../providers/DocumentInfo/types.js'\nimport type { Props as DrawerProps } from '../Drawer/types.js'\n\nexport type DocumentDrawerProps = Pick<DrawerProps, 'Header'> & {\n collectionSlug: string\n drawerSlug?: string\n id?: null | number | string\n initialData?: TypeWithID\n onSave?: DocumentInfoContext['onSave']\n}\n\nexport type DocumentTogglerProps = HTMLAttributes<HTMLButtonElement> & {\n children?: React.ReactNode\n className?: string\n collectionSlug: string\n disabled?: boolean\n drawerSlug?: string\n id?: string\n}\n\nexport type UseDocumentDrawer = (args: { collectionSlug: string; id?: number | string }) => [\n React.FC<Omit<DocumentDrawerProps, 'collectionSlug' | 'id'>>, // drawer\n React.FC<Omit<DocumentTogglerProps, 'collectionSlug' | 'id'>>, // toggler\n {\n closeDrawer: () => void\n drawerDepth: number\n drawerSlug: string\n isDrawerOpen: boolean\n openDrawer: () => void\n toggleDrawer: () => void\n },\n]\n"],"names":[],"mappings":"AAwBA,WAWC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentHeader/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EACV,yBAAyB,EACzB,eAAe,EACf,qBAAqB,EACtB,MAAM,eAAe,CAAA;AAEtB,OAAO,KAAmB,MAAM,OAAO,CAAA;AAKvC,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IACpC,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,MAAM,EAAE,eAAe,CAAA;IACvB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC9B,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,IAAI,CAAA;CACX,CAwBA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentHeader/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EACV,yBAAyB,EACzB,eAAe,EACf,qBAAqB,EACtB,MAAM,eAAe,CAAA;AAEtB,OAAO,KAAmB,MAAM,OAAO,CAAA;AAKvC,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IACpC,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,MAAM,EAAE,eAAe,CAAA;IACvB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC9B,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,IAAI,CAAA;CACX,CAqBA,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import React, { Fragment } from 'react';
2
2
  import { Gutter } from '../Gutter/index.js';
3
- import RenderTitle from '../RenderTitle/index.js';
3
+ import { RenderTitle } from '../RenderTitle/index.js';
4
4
  import { DocumentTabs } from './Tabs/index.js';
5
5
  const baseClass = `doc-header`;
6
6
  export const DocumentHeader = (props)=>{
@@ -8,8 +8,7 @@ export const DocumentHeader = (props)=>{
8
8
  return /*#__PURE__*/ React.createElement(Gutter, {
9
9
  className: baseClass
10
10
  }, customHeader && customHeader, !customHeader && /*#__PURE__*/ React.createElement(Fragment, null, /*#__PURE__*/ React.createElement(RenderTitle, {
11
- className: `${baseClass}__title`,
12
- fallback: `[${i18n.t('general:untitled')}]`
11
+ className: `${baseClass}__title`
13
12
  }), !hideTabs && /*#__PURE__*/ React.createElement(DocumentTabs, {
14
13
  collectionConfig: collectionConfig,
15
14
  config: config,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/DocumentHeader/index.tsx"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type {\n SanitizedCollectionConfig,\n SanitizedConfig,\n SanitizedGlobalConfig,\n} from 'payload/types'\n\nimport React, { Fragment } from 'react'\n\nimport { Gutter } from '../Gutter/index.js'\nimport RenderTitle from '../RenderTitle/index.js'\nimport { DocumentTabs } from './Tabs/index.js'\nimport './index.scss'\n\nconst baseClass = `doc-header`\n\nexport const DocumentHeader: React.FC<{\n collectionConfig?: SanitizedCollectionConfig\n config: SanitizedConfig\n customHeader?: React.ReactNode\n globalConfig?: SanitizedGlobalConfig\n hideTabs?: boolean\n i18n: I18n\n}> = (props) => {\n const { collectionConfig, config, customHeader, globalConfig, hideTabs, i18n } = props\n\n return (\n <Gutter className={baseClass}>\n {customHeader && customHeader}\n {!customHeader && (\n <Fragment>\n <RenderTitle\n className={`${baseClass}__title`}\n fallback={`[${i18n.t('general:untitled')}]`}\n />\n {!hideTabs && (\n <DocumentTabs\n collectionConfig={collectionConfig}\n config={config}\n globalConfig={globalConfig}\n i18n={i18n}\n />\n )}\n </Fragment>\n )}\n </Gutter>\n )\n}\n"],"names":["React","Fragment","Gutter","RenderTitle","DocumentTabs","baseClass","DocumentHeader","props","collectionConfig","config","customHeader","globalConfig","hideTabs","i18n","className","fallback","t"],"mappings":"AAOA,OAAOA,SAASC,QAAQ,QAAQ,QAAO;AAEvC,SAASC,MAAM,QAAQ,qBAAoB;AAC3C,OAAOC,iBAAiB,0BAAyB;AACjD,SAASC,YAAY,QAAQ,kBAAiB;AAG9C,MAAMC,YAAY,CAAC,UAAU,CAAC;AAE9B,OAAO,MAAMC,iBAOR,CAACC;IACJ,MAAM,EAAEC,gBAAgB,EAAEC,MAAM,EAAEC,YAAY,EAAEC,YAAY,EAAEC,QAAQ,EAAEC,IAAI,EAAE,GAAGN;IAEjF,qBACE,oBAACL;QAAOY,WAAWT;OAChBK,gBAAgBA,cAChB,CAACA,8BACA,oBAACT,8BACC,oBAACE;QACCW,WAAW,CAAC,EAAET,UAAU,OAAO,CAAC;QAChCU,UAAU,CAAC,CAAC,EAAEF,KAAKG,CAAC,CAAC,oBAAoB,CAAC,CAAC;QAE5C,CAACJ,0BACA,oBAACR;QACCI,kBAAkBA;QAClBC,QAAQA;QACRE,cAAcA;QACdE,MAAMA;;AAOpB,EAAC"}
1
+ {"version":3,"sources":["../../../src/elements/DocumentHeader/index.tsx"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type {\n SanitizedCollectionConfig,\n SanitizedConfig,\n SanitizedGlobalConfig,\n} from 'payload/types'\n\nimport React, { Fragment } from 'react'\n\nimport { Gutter } from '../Gutter/index.js'\nimport { RenderTitle } from '../RenderTitle/index.js'\nimport { DocumentTabs } from './Tabs/index.js'\nimport './index.scss'\n\nconst baseClass = `doc-header`\n\nexport const DocumentHeader: React.FC<{\n collectionConfig?: SanitizedCollectionConfig\n config: SanitizedConfig\n customHeader?: React.ReactNode\n globalConfig?: SanitizedGlobalConfig\n hideTabs?: boolean\n i18n: I18n\n}> = (props) => {\n const { collectionConfig, config, customHeader, globalConfig, hideTabs, i18n } = props\n\n return (\n <Gutter className={baseClass}>\n {customHeader && customHeader}\n {!customHeader && (\n <Fragment>\n <RenderTitle className={`${baseClass}__title`} />\n {!hideTabs && (\n <DocumentTabs\n collectionConfig={collectionConfig}\n config={config}\n globalConfig={globalConfig}\n i18n={i18n}\n />\n )}\n </Fragment>\n )}\n </Gutter>\n )\n}\n"],"names":["React","Fragment","Gutter","RenderTitle","DocumentTabs","baseClass","DocumentHeader","props","collectionConfig","config","customHeader","globalConfig","hideTabs","i18n","className"],"mappings":"AAOA,OAAOA,SAASC,QAAQ,QAAQ,QAAO;AAEvC,SAASC,MAAM,QAAQ,qBAAoB;AAC3C,SAASC,WAAW,QAAQ,0BAAyB;AACrD,SAASC,YAAY,QAAQ,kBAAiB;AAG9C,MAAMC,YAAY,CAAC,UAAU,CAAC;AAE9B,OAAO,MAAMC,iBAOR,CAACC;IACJ,MAAM,EAAEC,gBAAgB,EAAEC,MAAM,EAAEC,YAAY,EAAEC,YAAY,EAAEC,QAAQ,EAAEC,IAAI,EAAE,GAAGN;IAEjF,qBACE,oBAACL;QAAOY,WAAWT;OAChBK,gBAAgBA,cAChB,CAACA,8BACA,oBAACT,8BACC,oBAACE;QAAYW,WAAW,CAAC,EAAET,UAAU,OAAO,CAAC;QAC5C,CAACO,0BACA,oBAACR;QACCI,kBAAkBA;QAClBC,QAAQA;QACRE,cAAcA;QACdE,MAAMA;;AAOpB,EAAC"}
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
2
  import type { Props } from './types.js';
3
3
  import './index.scss';
4
- declare const RenderTitle: React.FC<Props>;
5
- export default RenderTitle;
4
+ export declare const RenderTitle: React.FC<Props>;
6
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/RenderTitle/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAIvC,OAAO,cAAc,CAAA;AAIrB,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuBhC,CAAA;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/RenderTitle/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAIvC,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuBvC,CAAA"}
@@ -3,7 +3,7 @@ import React from 'react';
3
3
  import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
4
4
  import IDLabel from '../IDLabel/index.js';
5
5
  const baseClass = 'render-title';
6
- const RenderTitle = (props)=>{
6
+ export const RenderTitle = (props)=>{
7
7
  const { className, element = 'h1', fallback, title: titleFromProps } = props;
8
8
  const documentInfo = useDocumentInfo();
9
9
  const { id, title: titleFromContext } = documentInfo;
@@ -20,8 +20,7 @@ const RenderTitle = (props)=>{
20
20
  }, idAsTitle ? /*#__PURE__*/ React.createElement(IDLabel, {
21
21
  className: `${baseClass}__id`,
22
22
  id: id
23
- }) : title);
23
+ }) : title || null);
24
24
  };
25
- export default RenderTitle;
26
25
 
27
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/RenderTitle/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport type { Props } from './types.js'\n\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport IDLabel from '../IDLabel/index.js'\nimport './index.scss'\n\nconst baseClass = 'render-title'\n\nconst RenderTitle: React.FC<Props> = (props) => {\n const { className, element = 'h1', fallback, title: titleFromProps } = props\n\n const documentInfo = useDocumentInfo()\n\n const { id, title: titleFromContext } = documentInfo\n\n const title = titleFromProps || titleFromContext || fallback\n\n const idAsTitle = title === id\n\n const Tag = element\n\n return (\n <Tag\n className={[className, baseClass, idAsTitle && `${baseClass}--has-id`]\n .filter(Boolean)\n .join(' ')}\n title={title}\n >\n {idAsTitle ? <IDLabel className={`${baseClass}__id`} id={id} /> : title}\n </Tag>\n )\n}\n\nexport default RenderTitle\n"],"names":["React","useDocumentInfo","IDLabel","baseClass","RenderTitle","props","className","element","fallback","title","titleFromProps","documentInfo","id","titleFromContext","idAsTitle","Tag","filter","Boolean","join"],"mappings":"AAAA;AACA,OAAOA,WAAW,QAAO;AAIzB,SAASC,eAAe,QAAQ,wCAAuC;AACvE,OAAOC,aAAa,sBAAqB;AAGzC,MAAMC,YAAY;AAElB,MAAMC,cAA+B,CAACC;IACpC,MAAM,EAAEC,SAAS,EAAEC,UAAU,IAAI,EAAEC,QAAQ,EAAEC,OAAOC,cAAc,EAAE,GAAGL;IAEvE,MAAMM,eAAeV;IAErB,MAAM,EAAEW,EAAE,EAAEH,OAAOI,gBAAgB,EAAE,GAAGF;IAExC,MAAMF,QAAQC,kBAAkBG,oBAAoBL;IAEpD,MAAMM,YAAYL,UAAUG;IAE5B,MAAMG,MAAMR;IAEZ,qBACE,oBAACQ;QACCT,WAAW;YAACA;YAAWH;YAAWW,aAAa,CAAC,EAAEX,UAAU,QAAQ,CAAC;SAAC,CACnEa,MAAM,CAACC,SACPC,IAAI,CAAC;QACRT,OAAOA;OAENK,0BAAY,oBAACZ;QAAQI,WAAW,CAAC,EAAEH,UAAU,IAAI,CAAC;QAAES,IAAIA;SAASH;AAGxE;AAEA,eAAeL,YAAW"}
1
+ {"version":3,"sources":["../../../src/elements/RenderTitle/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport type { Props } from './types.js'\n\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport IDLabel from '../IDLabel/index.js'\nimport './index.scss'\n\nconst baseClass = 'render-title'\n\nexport const RenderTitle: React.FC<Props> = (props) => {\n const { className, element = 'h1', fallback, title: titleFromProps } = props\n\n const documentInfo = useDocumentInfo()\n\n const { id, title: titleFromContext } = documentInfo\n\n const title = titleFromProps || titleFromContext || fallback\n\n const idAsTitle = title === id\n\n const Tag = element\n\n return (\n <Tag\n className={[className, baseClass, idAsTitle && `${baseClass}--has-id`]\n .filter(Boolean)\n .join(' ')}\n title={title}\n >\n {idAsTitle ? <IDLabel className={`${baseClass}__id`} id={id} /> : title || null}\n </Tag>\n )\n}\n"],"names":["React","useDocumentInfo","IDLabel","baseClass","RenderTitle","props","className","element","fallback","title","titleFromProps","documentInfo","id","titleFromContext","idAsTitle","Tag","filter","Boolean","join"],"mappings":"AAAA;AACA,OAAOA,WAAW,QAAO;AAIzB,SAASC,eAAe,QAAQ,wCAAuC;AACvE,OAAOC,aAAa,sBAAqB;AAGzC,MAAMC,YAAY;AAElB,OAAO,MAAMC,cAA+B,CAACC;IAC3C,MAAM,EAAEC,SAAS,EAAEC,UAAU,IAAI,EAAEC,QAAQ,EAAEC,OAAOC,cAAc,EAAE,GAAGL;IAEvE,MAAMM,eAAeV;IAErB,MAAM,EAAEW,EAAE,EAAEH,OAAOI,gBAAgB,EAAE,GAAGF;IAExC,MAAMF,QAAQC,kBAAkBG,oBAAoBL;IAEpD,MAAMM,YAAYL,UAAUG;IAE5B,MAAMG,MAAMR;IAEZ,qBACE,oBAACQ;QACCT,WAAW;YAACA;YAAWH;YAAWW,aAAa,CAAC,EAAEX,UAAU,QAAQ,CAAC;SAAC,CACnEa,MAAM,CAACC,SACPC,IAAI,CAAC;QACRT,OAAOA;OAENK,0BAAY,oBAACZ;QAAQI,WAAW,CAAC,EAAEH,UAAU,IAAI,CAAC;QAAES,IAAIA;SAASH,SAAS;AAGjF,EAAC"}
@@ -3,6 +3,7 @@ export type Props = {
3
3
  className?: string;
4
4
  element?: React.ElementType;
5
5
  fallback?: string;
6
+ fallbackToID?: boolean;
6
7
  title?: string;
7
8
  };
8
9
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/RenderTitle/types.ts"],"names":[],"mappings":";AAAA,MAAM,MAAM,KAAK,GAAG;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC,WAAW,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/RenderTitle/types.ts"],"names":[],"mappings":";AAAA,MAAM,MAAM,KAAK,GAAG;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC,WAAW,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/RenderTitle/types.ts"],"sourcesContent":["export type Props = {\n className?: string\n element?: React.ElementType\n fallback?: string\n title?: string\n}\n"],"names":[],"mappings":"AAAA,WAKC"}
1
+ {"version":3,"sources":["../../../src/elements/RenderTitle/types.ts"],"sourcesContent":["export type Props = {\n className?: string\n element?: React.ElementType\n fallback?: string\n fallbackToID?: boolean\n title?: string\n}\n"],"names":[],"mappings":"AAAA,WAMC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ThumbnailCard/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAKvC,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA4CzC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ThumbnailCard/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAMvC,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA6CzC,CAAA"}
@@ -1,10 +1,12 @@
1
1
  import React from 'react';
2
+ import { useConfig } from '../../index.js';
2
3
  import { useTranslation } from '../../providers/Translation/index.js';
3
4
  import { formatDocTitle } from '../../utilities/formatDocTitle.js';
4
5
  import Thumbnail from '../Thumbnail/index.js';
5
6
  const baseClass = 'thumbnail-card';
6
7
  export const ThumbnailCard = (props)=>{
7
8
  const { alignLabel, className, collection, doc, label: labelFromProps, onClick, thumbnail } = props;
9
+ const config = useConfig();
8
10
  const { i18n, t } = useTranslation();
9
11
  const classes = [
10
12
  baseClass,
@@ -15,10 +17,12 @@ export const ThumbnailCard = (props)=>{
15
17
  let title = labelFromProps;
16
18
  if (!title) {
17
19
  title = formatDocTitle({
18
- doc,
19
- i18n,
20
- useAsTitle: collection?.admin?.useAsTitle
21
- }) || doc?.filename || `[${t('general:untitled')}]`;
20
+ collectionConfig: collection,
21
+ data: doc,
22
+ dateFormat: config.admin.dateFormat,
23
+ fallback: doc?.filename,
24
+ i18n
25
+ });
22
26
  }
23
27
  return /*#__PURE__*/ React.createElement("button", {
24
28
  className: classes,
@@ -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,CAgiBzB,CAAA;AAGD,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"}
@@ -453,14 +453,12 @@ const Form = (props)=>{
453
453
  useDebouncedEffect(()=>{
454
454
  const executeOnChange = async ()=>{
455
455
  if (Array.isArray(onChange)) {
456
- let revalidatedFormState;
457
- await onChange.reduce(async (priorOnChange, onChangeFn)=>{
458
- await priorOnChange;
459
- const result = await onChangeFn({
460
- formState: fields
456
+ let revalidatedFormState = fields;
457
+ for (const onChangeFn of onChange){
458
+ revalidatedFormState = await onChangeFn({
459
+ formState: revalidatedFormState
461
460
  });
462
- revalidatedFormState = result;
463
- }, Promise.resolve());
461
+ }
464
462
  const { changed, newState } = mergeServerFormState(fields, revalidatedFormState);
465
463
  if (changed) {
466
464
  dispatchFields({
@@ -505,7 +503,6 @@ const Form = (props)=>{
505
503
  value: fieldsReducer
506
504
  }, children)))))));
507
505
  };
508
- // eslint-disable-next-line no-restricted-exports
509
506
  export default Form;
510
507
 
511
508
  //# sourceMappingURL=index.js.map