@payloadcms/ui 3.0.0-alpha.46 → 3.0.0-alpha.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerContent.js +22 -14
- package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/DocumentDrawer/types.d.ts +3 -1
- package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/types.js.map +1 -1
- package/dist/elements/DocumentHeader/index.d.ts.map +1 -1
- package/dist/elements/DocumentHeader/index.js +2 -3
- package/dist/elements/DocumentHeader/index.js.map +1 -1
- package/dist/elements/RenderTitle/index.d.ts +1 -2
- package/dist/elements/RenderTitle/index.d.ts.map +1 -1
- package/dist/elements/RenderTitle/index.js +2 -3
- package/dist/elements/RenderTitle/index.js.map +1 -1
- package/dist/elements/RenderTitle/types.d.ts +1 -0
- package/dist/elements/RenderTitle/types.d.ts.map +1 -1
- package/dist/elements/RenderTitle/types.js.map +1 -1
- package/dist/elements/ThumbnailCard/index.d.ts.map +1 -1
- package/dist/elements/ThumbnailCard/index.js +8 -4
- package/dist/elements/ThumbnailCard/index.js.map +1 -1
- package/dist/elements/ThumbnailCard/types.d.ts +4 -2
- package/dist/elements/ThumbnailCard/types.d.ts.map +1 -1
- package/dist/elements/ThumbnailCard/types.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +5 -8
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/mergeServerFormState.d.ts +7 -0
- package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
- package/dist/forms/Form/mergeServerFormState.js +7 -1
- package/dist/forms/Form/mergeServerFormState.js.map +1 -1
- package/dist/forms/Label/index.d.ts.map +1 -1
- package/dist/forms/Label/index.js +7 -1
- package/dist/forms/Label/index.js.map +1 -1
- package/dist/forms/RenderFields/RenderField.js +2 -2
- package/dist/forms/RenderFields/RenderField.js.map +1 -1
- package/dist/forms/fields/Array/index.d.ts.map +1 -1
- package/dist/forms/fields/Array/index.js +0 -1
- package/dist/forms/fields/Array/index.js.map +1 -1
- package/dist/forms/fields/Blocks/index.d.ts.map +1 -1
- package/dist/forms/fields/Blocks/index.js +0 -1
- package/dist/forms/fields/Blocks/index.js.map +1 -1
- package/dist/forms/fields/Checkbox/index.d.ts.map +1 -1
- package/dist/forms/fields/Checkbox/index.js +2 -1
- package/dist/forms/fields/Checkbox/index.js.map +1 -1
- package/dist/forms/fields/JSON/index.d.ts.map +1 -1
- package/dist/forms/fields/JSON/index.js +4 -2
- package/dist/forms/fields/JSON/index.js.map +1 -1
- package/dist/forms/fields/Relationship/optionsReducer.d.ts.map +1 -1
- package/dist/forms/fields/Relationship/optionsReducer.js +12 -8
- package/dist/forms/fields/Relationship/optionsReducer.js.map +1 -1
- package/dist/forms/fields/Tabs/index.d.ts.map +1 -1
- package/dist/forms/fields/Tabs/index.js +4 -5
- package/dist/forms/fields/Tabs/index.js.map +1 -1
- package/dist/forms/fields/Tabs/types.d.ts +2 -0
- package/dist/forms/fields/Tabs/types.d.ts.map +1 -1
- package/dist/forms/fields/Tabs/types.js.map +1 -1
- package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.js +11 -1
- package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.js.map +1 -1
- package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
- package/dist/hooks/usePayloadAPI.js +12 -2
- package/dist/hooks/usePayloadAPI.js.map +1 -1
- package/dist/prod/styles.css +1 -1
- package/dist/utilities/buildComponentMap/mapFields.d.ts.map +1 -1
- package/dist/utilities/buildComponentMap/mapFields.js +6 -9
- package/dist/utilities/buildComponentMap/mapFields.js.map +1 -1
- package/dist/utilities/formatDocTitle.d.ts +7 -7
- package/dist/utilities/formatDocTitle.d.ts.map +1 -1
- package/dist/utilities/formatDocTitle.js +21 -16
- package/dist/utilities/formatDocTitle.js.map +1 -1
- package/dist/utilities/generateFieldID.d.ts +2 -0
- package/dist/utilities/generateFieldID.d.ts.map +1 -0
- package/dist/utilities/generateFieldID.js +5 -0
- package/dist/utilities/generateFieldID.js.map +1 -0
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawerContent.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/DrawerContent.tsx"],"names":[],"mappings":"
|
|
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 ||
|
|
116
|
-
|
|
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
|
-
|
|
138
|
-
|
|
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 [
|
|
155
|
+
const [doc, setDoc] = useState();
|
|
149
156
|
const onSave = useCallback((args)=>{
|
|
150
|
-
|
|
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;
|
|
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":"
|
|
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,
|
|
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
|
|
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 +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,
|
|
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\
|
|
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"}
|
|
@@ -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,
|
|
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;
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
|
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?:
|
|
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;
|
|
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?:
|
|
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,
|
|
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"}
|
package/dist/forms/Form/index.js
CHANGED
|
@@ -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
|
-
|
|
458
|
-
await
|
|
459
|
-
|
|
460
|
-
formState: fields
|
|
456
|
+
let revalidatedFormState = fields;
|
|
457
|
+
for (const onChangeFn of onChange){
|
|
458
|
+
revalidatedFormState = await onChangeFn({
|
|
459
|
+
formState: revalidatedFormState
|
|
461
460
|
});
|
|
462
|
-
|
|
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
|