@payloadcms/ui 3.68.0-internal.e81dde6 → 3.68.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements/AddNewRelation/index.js +59 -60
- package/dist/elements/AddNewRelation/index.js.map +1 -1
- package/dist/elements/DuplicateDocument/index.js +2 -2
- package/dist/elements/DuplicateDocument/index.js.map +1 -1
- package/dist/exports/client/index.js +12 -12
- package/dist/exports/client/index.js.map +3 -3
- package/dist/providers/ListQuery/index.d.ts.map +1 -1
- package/dist/providers/ListQuery/index.js +1 -0
- package/dist/providers/ListQuery/index.js.map +1 -1
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +5 -0
- package/dist/views/Edit/index.js.map +1 -1
- package/package.json +7 -6
|
@@ -17,7 +17,7 @@ import './index.scss';
|
|
|
17
17
|
import { Tooltip } from '../Tooltip/index.js';
|
|
18
18
|
const baseClass = 'relationship-add-new';
|
|
19
19
|
export const AddNewRelation = t0 => {
|
|
20
|
-
const $ = _c(
|
|
20
|
+
const $ = _c(46);
|
|
21
21
|
const {
|
|
22
22
|
Button: ButtonFromProps,
|
|
23
23
|
hasMany,
|
|
@@ -67,7 +67,7 @@ export const AddNewRelation = t0 => {
|
|
|
67
67
|
toggleDrawer
|
|
68
68
|
} = t4;
|
|
69
69
|
let t5;
|
|
70
|
-
if ($[5] !== collectionConfig || $[6] !== hasMany || $[7] !== onChange || $[8] !==
|
|
70
|
+
if ($[5] !== collectionConfig || $[6] !== hasMany || $[7] !== onChange || $[8] !== value) {
|
|
71
71
|
t5 = t6 => {
|
|
72
72
|
const {
|
|
73
73
|
doc,
|
|
@@ -88,7 +88,7 @@ export const AddNewRelation = t0 => {
|
|
|
88
88
|
}]);
|
|
89
89
|
} else {
|
|
90
90
|
onChange({
|
|
91
|
-
relationTo:
|
|
91
|
+
relationTo: collectionConfig?.slug,
|
|
92
92
|
value: doc.id
|
|
93
93
|
});
|
|
94
94
|
}
|
|
@@ -99,26 +99,25 @@ export const AddNewRelation = t0 => {
|
|
|
99
99
|
$[5] = collectionConfig;
|
|
100
100
|
$[6] = hasMany;
|
|
101
101
|
$[7] = onChange;
|
|
102
|
-
$[8] =
|
|
103
|
-
$[9] =
|
|
104
|
-
$[10] = t5;
|
|
102
|
+
$[8] = value;
|
|
103
|
+
$[9] = t5;
|
|
105
104
|
} else {
|
|
106
|
-
t5 = $[
|
|
105
|
+
t5 = $[9];
|
|
107
106
|
}
|
|
108
107
|
const onSave = t5;
|
|
109
108
|
let t6;
|
|
110
|
-
if ($[
|
|
109
|
+
if ($[10] === Symbol.for("react.memo_cache_sentinel")) {
|
|
111
110
|
t6 = state => {
|
|
112
111
|
setPopupOpen(state);
|
|
113
112
|
};
|
|
114
|
-
$[
|
|
113
|
+
$[10] = t6;
|
|
115
114
|
} else {
|
|
116
|
-
t6 = $[
|
|
115
|
+
t6 = $[10];
|
|
117
116
|
}
|
|
118
117
|
const onPopupToggle = t6;
|
|
119
118
|
let t7;
|
|
120
119
|
let t8;
|
|
121
|
-
if ($[
|
|
120
|
+
if ($[11] !== permissions || $[12] !== relatedCollections) {
|
|
122
121
|
t7 = () => {
|
|
123
122
|
if (permissions) {
|
|
124
123
|
if (relatedCollections.length === 1) {
|
|
@@ -129,37 +128,37 @@ export const AddNewRelation = t0 => {
|
|
|
129
128
|
}
|
|
130
129
|
};
|
|
131
130
|
t8 = [permissions, relatedCollections];
|
|
132
|
-
$[
|
|
133
|
-
$[
|
|
134
|
-
$[
|
|
135
|
-
$[
|
|
131
|
+
$[11] = permissions;
|
|
132
|
+
$[12] = relatedCollections;
|
|
133
|
+
$[13] = t7;
|
|
134
|
+
$[14] = t8;
|
|
136
135
|
} else {
|
|
137
|
-
t7 = $[
|
|
138
|
-
t8 = $[
|
|
136
|
+
t7 = $[13];
|
|
137
|
+
t8 = $[14];
|
|
139
138
|
}
|
|
140
139
|
useEffect(t7, t8);
|
|
141
140
|
let t10;
|
|
142
141
|
let t9;
|
|
143
|
-
if ($[
|
|
142
|
+
if ($[15] !== relatedCollections || $[16] !== relatedToMany || $[17] !== selectedCollection) {
|
|
144
143
|
t9 = () => {
|
|
145
144
|
if (relatedToMany && selectedCollection) {
|
|
146
145
|
setCollectionConfig(relatedCollections.find(collection_0 => collection_0?.slug === selectedCollection));
|
|
147
146
|
}
|
|
148
147
|
};
|
|
149
148
|
t10 = [selectedCollection, relatedToMany, relatedCollections];
|
|
150
|
-
$[
|
|
151
|
-
$[
|
|
152
|
-
$[
|
|
153
|
-
$[
|
|
154
|
-
$[
|
|
149
|
+
$[15] = relatedCollections;
|
|
150
|
+
$[16] = relatedToMany;
|
|
151
|
+
$[17] = selectedCollection;
|
|
152
|
+
$[18] = t10;
|
|
153
|
+
$[19] = t9;
|
|
155
154
|
} else {
|
|
156
|
-
t10 = $[
|
|
157
|
-
t9 = $[
|
|
155
|
+
t10 = $[18];
|
|
156
|
+
t9 = $[19];
|
|
158
157
|
}
|
|
159
158
|
useEffect(t9, t10);
|
|
160
159
|
let t11;
|
|
161
160
|
let t12;
|
|
162
|
-
if ($[
|
|
161
|
+
if ($[20] !== collectionConfig || $[21] !== relatedToMany || $[22] !== toggleDrawer) {
|
|
163
162
|
t11 = () => {
|
|
164
163
|
if (relatedToMany && collectionConfig) {
|
|
165
164
|
toggleDrawer();
|
|
@@ -167,38 +166,38 @@ export const AddNewRelation = t0 => {
|
|
|
167
166
|
}
|
|
168
167
|
};
|
|
169
168
|
t12 = [toggleDrawer, relatedToMany, collectionConfig];
|
|
170
|
-
$[
|
|
171
|
-
$[
|
|
172
|
-
$[
|
|
173
|
-
$[
|
|
174
|
-
$[
|
|
169
|
+
$[20] = collectionConfig;
|
|
170
|
+
$[21] = relatedToMany;
|
|
171
|
+
$[22] = toggleDrawer;
|
|
172
|
+
$[23] = t11;
|
|
173
|
+
$[24] = t12;
|
|
175
174
|
} else {
|
|
176
|
-
t11 = $[
|
|
177
|
-
t12 = $[
|
|
175
|
+
t11 = $[23];
|
|
176
|
+
t12 = $[24];
|
|
178
177
|
}
|
|
179
178
|
useEffect(t11, t12);
|
|
180
179
|
let t13;
|
|
181
180
|
let t14;
|
|
182
|
-
if ($[
|
|
181
|
+
if ($[25] !== isDrawerOpen || $[26] !== relatedToMany) {
|
|
183
182
|
t13 = () => {
|
|
184
183
|
if (relatedToMany && !isDrawerOpen) {
|
|
185
184
|
setCollectionConfig(undefined);
|
|
186
185
|
}
|
|
187
186
|
};
|
|
188
187
|
t14 = [isDrawerOpen, relatedToMany];
|
|
189
|
-
$[
|
|
190
|
-
$[
|
|
191
|
-
$[
|
|
192
|
-
$[
|
|
188
|
+
$[25] = isDrawerOpen;
|
|
189
|
+
$[26] = relatedToMany;
|
|
190
|
+
$[27] = t13;
|
|
191
|
+
$[28] = t14;
|
|
193
192
|
} else {
|
|
194
|
-
t13 = $[
|
|
195
|
-
t14 = $[
|
|
193
|
+
t13 = $[27];
|
|
194
|
+
t14 = $[28];
|
|
196
195
|
}
|
|
197
196
|
useEffect(t13, t14);
|
|
198
197
|
const t15 = relatedCollections[0]?.labels.singular;
|
|
199
198
|
let t16;
|
|
200
199
|
let t17;
|
|
201
|
-
if ($[
|
|
200
|
+
if ($[29] !== ButtonFromProps || $[30] !== DocumentDrawer || $[31] !== DocumentDrawerToggler || $[32] !== collectionConfig || $[33] !== i18n || $[34] !== onSave || $[35] !== path || $[36] !== permissions || $[37] !== popupOpen || $[38] !== relatedCollections || $[39] !== show || $[40] !== showTooltip || $[41] !== t || $[42] !== t15 || $[43] !== unstyled) {
|
|
202
201
|
t17 = Symbol.for("react.early_return_sentinel");
|
|
203
202
|
bb0: {
|
|
204
203
|
const label = t("fields:addNewLabel", {
|
|
@@ -267,26 +266,26 @@ export const AddNewRelation = t0 => {
|
|
|
267
266
|
})]
|
|
268
267
|
});
|
|
269
268
|
}
|
|
270
|
-
$[
|
|
271
|
-
$[
|
|
272
|
-
$[
|
|
273
|
-
$[
|
|
274
|
-
$[
|
|
275
|
-
$[
|
|
276
|
-
$[
|
|
277
|
-
$[
|
|
278
|
-
$[
|
|
279
|
-
$[
|
|
280
|
-
$[
|
|
281
|
-
$[
|
|
282
|
-
$[
|
|
283
|
-
$[
|
|
284
|
-
$[
|
|
285
|
-
$[
|
|
286
|
-
$[
|
|
269
|
+
$[29] = ButtonFromProps;
|
|
270
|
+
$[30] = DocumentDrawer;
|
|
271
|
+
$[31] = DocumentDrawerToggler;
|
|
272
|
+
$[32] = collectionConfig;
|
|
273
|
+
$[33] = i18n;
|
|
274
|
+
$[34] = onSave;
|
|
275
|
+
$[35] = path;
|
|
276
|
+
$[36] = permissions;
|
|
277
|
+
$[37] = popupOpen;
|
|
278
|
+
$[38] = relatedCollections;
|
|
279
|
+
$[39] = show;
|
|
280
|
+
$[40] = showTooltip;
|
|
281
|
+
$[41] = t;
|
|
282
|
+
$[42] = t15;
|
|
283
|
+
$[43] = unstyled;
|
|
284
|
+
$[44] = t16;
|
|
285
|
+
$[45] = t17;
|
|
287
286
|
} else {
|
|
288
|
-
t16 = $[
|
|
289
|
-
t17 = $[
|
|
287
|
+
t16 = $[44];
|
|
288
|
+
t17 = $[45];
|
|
290
289
|
}
|
|
291
290
|
if (t17 !== Symbol.for("react.early_return_sentinel")) {
|
|
292
291
|
return t17;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","getTranslation","hasAutosaveEnabled","React","Fragment","useCallback","useEffect","useState","useRelatedCollections","PlusIcon","useAuth","useTranslation","Button","useDocumentDrawer","Popup","PopupList","Tooltip","baseClass","AddNewRelation","t0","$","ButtonFromProps","hasMany","onChange","path","relationTo","unstyled","value","relatedCollections","permissions","show","setShow","selectedCollection","setSelectedCollection","relatedToMany","length","t1","undefined","collectionConfig","setCollectionConfig","popupOpen","setPopupOpen","i18n","t","showTooltip","setShowTooltip","t2","slug","t3","collectionSlug","DocumentDrawer","DocumentDrawerToggler","t4","isDrawerOpen","toggleDrawer","t5","t6","doc","operation","isNewValue","some","v","id","Array","isArray","onSave","Symbol","for","state","onPopupToggle","t7","t8","collections","create","collection","t10","t9","find","collection_0","t11","t12","t13","t14","t15","labels","singular","t16","t17","bb0","label","_jsxs","className","children","_jsx","filter","Boolean","join","onClick","onMouseEnter","onMouseLeave","button","buttonStyle","tooltip","horizontalAlign","onToggleOpen","render","t18","close","closePopup","ButtonGroup","map","relatedCollection"],"sources":["../../../src/elements/AddNewRelation/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { hasAutosaveEnabled } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useState } from 'react'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\nimport type { Props } from './types.js'\n\nimport { useRelatedCollections } from '../../hooks/useRelatedCollections.js'\nimport { PlusIcon } from '../../icons/Plus/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { Popup } from '../Popup/index.js'\nimport * as PopupList from '../Popup/PopupButtonList/index.js'\nimport './index.scss'\nimport { Tooltip } from '../Tooltip/index.js'\n\nconst baseClass = 'relationship-add-new'\n\nexport const AddNewRelation: React.FC<Props> = ({\n Button: ButtonFromProps,\n hasMany,\n onChange,\n path,\n relationTo,\n unstyled,\n value,\n}) => {\n const relatedCollections = useRelatedCollections(relationTo)\n const { permissions } = useAuth()\n const [show, setShow] = useState(false)\n const [selectedCollection, setSelectedCollection] = useState<string>()\n\n const relatedToMany = relatedCollections.length > 1\n\n const [collectionConfig, setCollectionConfig] = useState<ClientCollectionConfig>(() =>\n !relatedToMany ? relatedCollections[0] : undefined,\n )\n\n const [popupOpen, setPopupOpen] = useState(false)\n const { i18n, t } = useTranslation()\n const [showTooltip, setShowTooltip] = useState(false)\n\n const [DocumentDrawer, DocumentDrawerToggler, { isDrawerOpen, toggleDrawer }] = useDocumentDrawer(\n {\n collectionSlug: collectionConfig?.slug,\n },\n )\n\n const onSave: DocumentDrawerContextType['onSave'] = useCallback(\n ({ doc, operation }) => {\n // if autosave is enabled, the operation will be 'update'\n if (\n operation === 'create' ||\n (operation === 'update' && hasAutosaveEnabled(collectionConfig))\n ) {\n // ensure the value is not already in the array\n let isNewValue = false\n if (!value) {\n isNewValue = true\n } else {\n isNewValue = Array.isArray(value)\n ? !value.some((v) => v && v.value === doc.id)\n : value.value !== doc.id\n }\n\n if (isNewValue) {\n if (hasMany === true) {\n onChange([\n ...(Array.isArray(value) ? value : []),\n {\n relationTo: collectionConfig?.slug,\n value: doc.id,\n },\n ])\n } else {\n onChange({\n relationTo: relatedCollections[0].slug,\n value: doc.id,\n })\n }\n }\n\n setSelectedCollection(undefined)\n }\n },\n [collectionConfig, hasMany, onChange, value, relatedCollections],\n )\n\n const onPopupToggle = useCallback((state) => {\n setPopupOpen(state)\n }, [])\n\n useEffect(() => {\n if (permissions) {\n if (relatedCollections.length === 1) {\n setShow(permissions.collections[relatedCollections[0]?.slug]?.create)\n } else {\n setShow(\n relatedCollections.some(\n (collection) => permissions.collections[collection?.slug]?.create,\n ),\n )\n }\n }\n }, [permissions, relatedCollections])\n\n useEffect(() => {\n if (relatedToMany && selectedCollection) {\n setCollectionConfig(\n relatedCollections.find((collection) => collection?.slug === selectedCollection),\n )\n }\n }, [selectedCollection, relatedToMany, relatedCollections])\n\n useEffect(() => {\n if (relatedToMany && collectionConfig) {\n // the drawer must be rendered on the page before before opening it\n // this is why 'selectedCollection' is different from 'collectionConfig'\n toggleDrawer()\n setSelectedCollection(undefined)\n }\n }, [toggleDrawer, relatedToMany, collectionConfig])\n\n useEffect(() => {\n if (relatedToMany && !isDrawerOpen) {\n setCollectionConfig(undefined)\n }\n }, [isDrawerOpen, relatedToMany])\n\n const label = t('fields:addNewLabel', {\n label: getTranslation(relatedCollections[0]?.labels.singular, i18n),\n })\n\n if (!show) {\n return null\n }\n\n return (\n <div className={baseClass} id={`${path}-add-new`}>\n {relatedCollections.length === 1 && (\n <Fragment>\n <DocumentDrawerToggler\n className={[\n `${baseClass}__add-button`,\n unstyled && `${baseClass}__add-button--unstyled`,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={() => {\n setShowTooltip(false)\n }}\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n >\n {ButtonFromProps ? (\n ButtonFromProps\n ) : (\n <Fragment>\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {label}\n </Tooltip>\n <PlusIcon />\n </Fragment>\n )}\n </DocumentDrawerToggler>\n <DocumentDrawer onSave={onSave} />\n </Fragment>\n )}\n {relatedCollections.length > 1 && (\n <Fragment>\n <Popup\n button={\n ButtonFromProps ? (\n ButtonFromProps\n ) : (\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__add-button`}\n tooltip={popupOpen ? undefined : t('fields:addNew')}\n >\n <PlusIcon />\n </Button>\n )\n }\n buttonType=\"custom\"\n horizontalAlign=\"center\"\n onToggleOpen={onPopupToggle}\n render={({ close: closePopup }) => (\n <PopupList.ButtonGroup>\n {relatedCollections.map((relatedCollection) => {\n if (permissions.collections[relatedCollection?.slug].create) {\n return (\n <PopupList.Button\n className={`${baseClass}__relation-button--${relatedCollection?.slug}`}\n key={relatedCollection?.slug}\n onClick={() => {\n closePopup()\n setSelectedCollection(relatedCollection?.slug)\n }}\n >\n {getTranslation(relatedCollection?.labels?.singular, i18n)}\n </PopupList.Button>\n )\n }\n\n return null\n })}\n </PopupList.ButtonGroup>\n )}\n size=\"medium\"\n />\n {collectionConfig && permissions.collections[collectionConfig?.slug]?.create && (\n <DocumentDrawer onSave={onSave} />\n )}\n </Fragment>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","getTranslation","hasAutosaveEnabled","React","Fragment","useCallback","useEffect","useState","useRelatedCollections","PlusIcon","useAuth","useTranslation","Button","useDocumentDrawer","Popup","PopupList","Tooltip","baseClass","AddNewRelation","t0","$","ButtonFromProps","hasMany","onChange","path","relationTo","unstyled","value","relatedCollections","permissions","show","setShow","selectedCollection","setSelectedCollection","relatedToMany","length","t1","undefined","collectionConfig","setCollectionConfig","popupOpen","setPopupOpen","i18n","t","showTooltip","setShowTooltip","t2","slug","t3","collectionSlug","DocumentDrawer","DocumentDrawerToggler","t4","isDrawerOpen","toggleDrawer","t5","t6","doc","operation","isNewValue","some","v","id","Array","isArray","onSave","Symbol","for","state","onPopupToggle","t7","t8","collections","create","collection","t10","t9","find","collection_0","t11","t12","t13","t14","t15","labels","singular","t16","t17","bb0","label","_jsxs","className","children","_jsx","filter","Boolean","join","onClick","onMouseEnter","onMouseLeave","button","buttonStyle","tooltip","horizontalAlign","onToggleOpen","render","t18","close","closePopup","ButtonGroup","map","relatedCollection"],"sources":["../../../src/elements/AddNewRelation/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { hasAutosaveEnabled } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useState } from 'react'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\nimport type { Props } from './types.js'\n\nimport { useRelatedCollections } from '../../hooks/useRelatedCollections.js'\nimport { PlusIcon } from '../../icons/Plus/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { Popup } from '../Popup/index.js'\nimport * as PopupList from '../Popup/PopupButtonList/index.js'\nimport './index.scss'\nimport { Tooltip } from '../Tooltip/index.js'\n\nconst baseClass = 'relationship-add-new'\n\nexport const AddNewRelation: React.FC<Props> = ({\n Button: ButtonFromProps,\n hasMany,\n onChange,\n path,\n relationTo,\n unstyled,\n value,\n}) => {\n const relatedCollections = useRelatedCollections(relationTo)\n const { permissions } = useAuth()\n const [show, setShow] = useState(false)\n const [selectedCollection, setSelectedCollection] = useState<string>()\n\n const relatedToMany = relatedCollections.length > 1\n\n const [collectionConfig, setCollectionConfig] = useState<ClientCollectionConfig>(() =>\n !relatedToMany ? relatedCollections[0] : undefined,\n )\n\n const [popupOpen, setPopupOpen] = useState(false)\n const { i18n, t } = useTranslation()\n const [showTooltip, setShowTooltip] = useState(false)\n\n const [DocumentDrawer, DocumentDrawerToggler, { isDrawerOpen, toggleDrawer }] = useDocumentDrawer(\n {\n collectionSlug: collectionConfig?.slug,\n },\n )\n\n const onSave: DocumentDrawerContextType['onSave'] = useCallback(\n ({ doc, operation }) => {\n // if autosave is enabled, the operation will be 'update'\n if (\n operation === 'create' ||\n (operation === 'update' && hasAutosaveEnabled(collectionConfig))\n ) {\n // ensure the value is not already in the array\n let isNewValue = false\n if (!value) {\n isNewValue = true\n } else {\n isNewValue = Array.isArray(value)\n ? !value.some((v) => v && v.value === doc.id)\n : value.value !== doc.id\n }\n\n if (isNewValue) {\n if (hasMany === true) {\n onChange([\n ...(Array.isArray(value) ? value : []),\n {\n relationTo: collectionConfig?.slug,\n value: doc.id,\n },\n ])\n } else {\n onChange({\n relationTo: collectionConfig?.slug,\n value: doc.id,\n })\n }\n }\n\n setSelectedCollection(undefined)\n }\n },\n [collectionConfig, hasMany, onChange, value],\n )\n\n const onPopupToggle = useCallback((state) => {\n setPopupOpen(state)\n }, [])\n\n useEffect(() => {\n if (permissions) {\n if (relatedCollections.length === 1) {\n setShow(permissions.collections[relatedCollections[0]?.slug]?.create)\n } else {\n setShow(\n relatedCollections.some(\n (collection) => permissions.collections[collection?.slug]?.create,\n ),\n )\n }\n }\n }, [permissions, relatedCollections])\n\n useEffect(() => {\n if (relatedToMany && selectedCollection) {\n setCollectionConfig(\n relatedCollections.find((collection) => collection?.slug === selectedCollection),\n )\n }\n }, [selectedCollection, relatedToMany, relatedCollections])\n\n useEffect(() => {\n if (relatedToMany && collectionConfig) {\n // the drawer must be rendered on the page before before opening it\n // this is why 'selectedCollection' is different from 'collectionConfig'\n toggleDrawer()\n setSelectedCollection(undefined)\n }\n }, [toggleDrawer, relatedToMany, collectionConfig])\n\n useEffect(() => {\n if (relatedToMany && !isDrawerOpen) {\n setCollectionConfig(undefined)\n }\n }, [isDrawerOpen, relatedToMany])\n\n const label = t('fields:addNewLabel', {\n label: getTranslation(relatedCollections[0]?.labels.singular, i18n),\n })\n\n if (!show) {\n return null\n }\n\n return (\n <div className={baseClass} id={`${path}-add-new`}>\n {relatedCollections.length === 1 && (\n <Fragment>\n <DocumentDrawerToggler\n className={[\n `${baseClass}__add-button`,\n unstyled && `${baseClass}__add-button--unstyled`,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={() => {\n setShowTooltip(false)\n }}\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n >\n {ButtonFromProps ? (\n ButtonFromProps\n ) : (\n <Fragment>\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {label}\n </Tooltip>\n <PlusIcon />\n </Fragment>\n )}\n </DocumentDrawerToggler>\n <DocumentDrawer onSave={onSave} />\n </Fragment>\n )}\n {relatedCollections.length > 1 && (\n <Fragment>\n <Popup\n button={\n ButtonFromProps ? (\n ButtonFromProps\n ) : (\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__add-button`}\n tooltip={popupOpen ? undefined : t('fields:addNew')}\n >\n <PlusIcon />\n </Button>\n )\n }\n buttonType=\"custom\"\n horizontalAlign=\"center\"\n onToggleOpen={onPopupToggle}\n render={({ close: closePopup }) => (\n <PopupList.ButtonGroup>\n {relatedCollections.map((relatedCollection) => {\n if (permissions.collections[relatedCollection?.slug].create) {\n return (\n <PopupList.Button\n className={`${baseClass}__relation-button--${relatedCollection?.slug}`}\n key={relatedCollection?.slug}\n onClick={() => {\n closePopup()\n setSelectedCollection(relatedCollection?.slug)\n }}\n >\n {getTranslation(relatedCollection?.labels?.singular, i18n)}\n </PopupList.Button>\n )\n }\n\n return null\n })}\n </PopupList.ButtonGroup>\n )}\n size=\"medium\"\n />\n {collectionConfig && permissions.collections[collectionConfig?.slug]?.create && (\n <DocumentDrawer onSave={onSave} />\n )}\n </Fragment>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
4
4
|
import { useModal } from '@faceless-ui/modal';
|
|
5
5
|
import { getTranslation } from '@payloadcms/translations';
|
|
6
6
|
import { useRouter } from 'next/navigation.js';
|
|
7
|
-
import { formatAdminURL } from 'payload/shared';
|
|
7
|
+
import { formatAdminURL, hasDraftsEnabled } from 'payload/shared';
|
|
8
8
|
import * as qs from 'qs-esm';
|
|
9
9
|
import React, { useCallback, useMemo } from 'react';
|
|
10
10
|
import { toast } from 'sonner';
|
|
@@ -87,7 +87,7 @@ export const DuplicateDocument = ({
|
|
|
87
87
|
const res = await requests.post(`${serverURL}${apiRoute}/${slug}/${id}/duplicate${qs.stringify(queryParams, {
|
|
88
88
|
addQueryPrefix: true
|
|
89
89
|
})}`, {
|
|
90
|
-
body: JSON.stringify(collectionConfig
|
|
90
|
+
body: JSON.stringify(hasDraftsEnabled(collectionConfig) ? {
|
|
91
91
|
_status: 'draft'
|
|
92
92
|
} : {}),
|
|
93
93
|
headers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useModal","getTranslation","useRouter","formatAdminURL","qs","React","useCallback","useMemo","toast","useForm","useFormModified","useConfig","useLocale","useRouteTransition","useTranslation","requests","traverseForLocalizedFields","ConfirmationModal","PopupList","SelectLocalesDrawer","DuplicateDocument","id","slug","onDuplicate","redirectAfterDuplicate","selectLocales","singularLabel","router","modified","openModal","code","localeCode","setModified","startRouteTransition","config","localization","routes","admin","adminRoute","api","apiRoute","serverURL","getEntityConfig","collectionConfig","collectionSlug","i18n","t","modalSlug","drawerSlug","isDuplicateByLocaleEnabled","fields","handleDuplicate","args","selectedLocales","hasSelectedLocales","length","queryParams","locale","headers","language","credentials","res","post","stringify","addQueryPrefix","body","JSON","versions","drafts","_status","doc","errors","message","json","status","success","label","push","path","error","_error","handleConfirmWithoutSaving","buttonLabel","_jsxs","Fragment","_jsx","Button","onClick","confirmLabel","heading","onConfirm"],"sources":["../../../src/elements/DuplicateDocument/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useMemo } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { traverseForLocalizedFields } from '../../utilities/traverseForLocalizedFields.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { PopupList } from '../Popup/index.js'\nimport { SelectLocalesDrawer } from './SelectLocalesDrawer/index.js'\n\nexport type Props = {\n readonly id: number | string\n readonly onDuplicate?: DocumentDrawerContextType['onDuplicate']\n readonly redirectAfterDuplicate?: boolean\n readonly selectLocales?: boolean\n readonly singularLabel: SanitizedCollectionConfig['labels']['singular']\n readonly slug: string\n}\n\nexport const DuplicateDocument: React.FC<Props> = ({\n id,\n slug,\n onDuplicate,\n redirectAfterDuplicate = true,\n selectLocales,\n singularLabel,\n}) => {\n const router = useRouter()\n const modified = useFormModified()\n const { openModal } = useModal()\n const { code: localeCode } = useLocale()\n const { setModified } = useForm()\n const { startRouteTransition } = useRouteTransition()\n\n const {\n config: {\n localization,\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug: slug })\n\n const { i18n, t } = useTranslation()\n\n const modalSlug = `duplicate-${id}`\n const drawerSlug = `duplicate-locales-${id}`\n\n const isDuplicateByLocaleEnabled = useMemo(() => {\n if (selectLocales && collectionConfig) {\n return traverseForLocalizedFields(collectionConfig.fields)\n }\n return false\n }, [collectionConfig, selectLocales])\n\n const handleDuplicate = useCallback(\n async (args?: { selectedLocales?: string[] }) => {\n const { selectedLocales } = args || {}\n const hasSelectedLocales = selectedLocales && selectedLocales.length > 0\n\n const queryParams: Record<string, string | string[]> = {}\n if (localeCode) {\n queryParams.locale = localeCode\n }\n if (hasSelectedLocales) {\n queryParams.selectedLocales = selectedLocales\n }\n\n const headers = {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n credentials: 'include',\n }\n\n try {\n const res = await requests.post(\n `${serverURL}${apiRoute}/${slug}/${id}/duplicate${qs.stringify(queryParams, {\n addQueryPrefix: true,\n })}`,\n {\n body: JSON.stringify(collectionConfig.versions?.drafts ? { _status: 'draft' } : {}),\n headers,\n },\n )\n\n const { doc, errors, message } = await res.json()\n\n if (res.status < 400) {\n toast.success(\n message ||\n t('general:successfullyDuplicated', { label: getTranslation(singularLabel, i18n) }),\n )\n\n setModified(false)\n\n if (redirectAfterDuplicate) {\n return startRouteTransition(() =>\n router.push(\n formatAdminURL({\n adminRoute,\n path: `/collections/${slug}/${doc.id}${localeCode ? `?locale=${localeCode}` : ''}`,\n }),\n ),\n )\n }\n\n if (typeof onDuplicate === 'function') {\n void onDuplicate({ collectionConfig, doc })\n }\n } else {\n toast.error(\n errors?.[0].message ||\n message ||\n t('error:unspecific', { label: getTranslation(singularLabel, i18n) }),\n )\n }\n } catch (_error) {\n toast.error(t('error:unspecific', { label: getTranslation(singularLabel, i18n) }))\n }\n },\n [\n adminRoute,\n apiRoute,\n collectionConfig,\n i18n,\n id,\n localeCode,\n onDuplicate,\n redirectAfterDuplicate,\n router,\n serverURL,\n setModified,\n singularLabel,\n slug,\n startRouteTransition,\n t,\n ],\n )\n\n const handleConfirmWithoutSaving = useCallback(async () => {\n if (selectLocales) {\n openModal(drawerSlug)\n } else {\n await handleDuplicate()\n }\n }, [handleDuplicate, drawerSlug, selectLocales, openModal])\n\n const buttonLabel = selectLocales\n ? `${t('general:duplicate')} ${t('localization:selectedLocales')}`\n : t('general:duplicate')\n\n if (!selectLocales || isDuplicateByLocaleEnabled) {\n return (\n <React.Fragment>\n <PopupList.Button\n id={`action-duplicate${isDuplicateByLocaleEnabled ? `-locales` : ''}`}\n onClick={() => {\n if (modified) {\n openModal(modalSlug)\n } else if (selectLocales) {\n openModal(drawerSlug)\n } else {\n void handleDuplicate()\n }\n }}\n >\n {buttonLabel}\n </PopupList.Button>\n <ConfirmationModal\n body={t('general:unsavedChangesDuplicate')}\n confirmLabel={t('general:duplicateWithoutSaving')}\n heading={t('general:unsavedChanges')}\n modalSlug={modalSlug}\n onConfirm={handleConfirmWithoutSaving}\n />\n {selectLocales && localization && (\n <SelectLocalesDrawer\n localization={localization}\n onConfirm={handleDuplicate}\n slug={drawerSlug}\n />\n )}\n </React.Fragment>\n )\n }\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useModal","getTranslation","useRouter","formatAdminURL","hasDraftsEnabled","qs","React","useCallback","useMemo","toast","useForm","useFormModified","useConfig","useLocale","useRouteTransition","useTranslation","requests","traverseForLocalizedFields","ConfirmationModal","PopupList","SelectLocalesDrawer","DuplicateDocument","id","slug","onDuplicate","redirectAfterDuplicate","selectLocales","singularLabel","router","modified","openModal","code","localeCode","setModified","startRouteTransition","config","localization","routes","admin","adminRoute","api","apiRoute","serverURL","getEntityConfig","collectionConfig","collectionSlug","i18n","t","modalSlug","drawerSlug","isDuplicateByLocaleEnabled","fields","handleDuplicate","args","selectedLocales","hasSelectedLocales","length","queryParams","locale","headers","language","credentials","res","post","stringify","addQueryPrefix","body","JSON","_status","doc","errors","message","json","status","success","label","push","path","error","_error","handleConfirmWithoutSaving","buttonLabel","_jsxs","Fragment","_jsx","Button","onClick","confirmLabel","heading","onConfirm"],"sources":["../../../src/elements/DuplicateDocument/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL, hasDraftsEnabled } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useMemo } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { traverseForLocalizedFields } from '../../utilities/traverseForLocalizedFields.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { PopupList } from '../Popup/index.js'\nimport { SelectLocalesDrawer } from './SelectLocalesDrawer/index.js'\n\nexport type Props = {\n readonly id: number | string\n readonly onDuplicate?: DocumentDrawerContextType['onDuplicate']\n readonly redirectAfterDuplicate?: boolean\n readonly selectLocales?: boolean\n readonly singularLabel: SanitizedCollectionConfig['labels']['singular']\n readonly slug: string\n}\n\nexport const DuplicateDocument: React.FC<Props> = ({\n id,\n slug,\n onDuplicate,\n redirectAfterDuplicate = true,\n selectLocales,\n singularLabel,\n}) => {\n const router = useRouter()\n const modified = useFormModified()\n const { openModal } = useModal()\n const { code: localeCode } = useLocale()\n const { setModified } = useForm()\n const { startRouteTransition } = useRouteTransition()\n\n const {\n config: {\n localization,\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug: slug })\n\n const { i18n, t } = useTranslation()\n\n const modalSlug = `duplicate-${id}`\n const drawerSlug = `duplicate-locales-${id}`\n\n const isDuplicateByLocaleEnabled = useMemo(() => {\n if (selectLocales && collectionConfig) {\n return traverseForLocalizedFields(collectionConfig.fields)\n }\n return false\n }, [collectionConfig, selectLocales])\n\n const handleDuplicate = useCallback(\n async (args?: { selectedLocales?: string[] }) => {\n const { selectedLocales } = args || {}\n const hasSelectedLocales = selectedLocales && selectedLocales.length > 0\n\n const queryParams: Record<string, string | string[]> = {}\n if (localeCode) {\n queryParams.locale = localeCode\n }\n if (hasSelectedLocales) {\n queryParams.selectedLocales = selectedLocales\n }\n\n const headers = {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n credentials: 'include',\n }\n\n try {\n const res = await requests.post(\n `${serverURL}${apiRoute}/${slug}/${id}/duplicate${qs.stringify(queryParams, {\n addQueryPrefix: true,\n })}`,\n {\n body: JSON.stringify(hasDraftsEnabled(collectionConfig) ? { _status: 'draft' } : {}),\n headers,\n },\n )\n\n const { doc, errors, message } = await res.json()\n\n if (res.status < 400) {\n toast.success(\n message ||\n t('general:successfullyDuplicated', { label: getTranslation(singularLabel, i18n) }),\n )\n\n setModified(false)\n\n if (redirectAfterDuplicate) {\n return startRouteTransition(() =>\n router.push(\n formatAdminURL({\n adminRoute,\n path: `/collections/${slug}/${doc.id}${localeCode ? `?locale=${localeCode}` : ''}`,\n }),\n ),\n )\n }\n\n if (typeof onDuplicate === 'function') {\n void onDuplicate({ collectionConfig, doc })\n }\n } else {\n toast.error(\n errors?.[0].message ||\n message ||\n t('error:unspecific', { label: getTranslation(singularLabel, i18n) }),\n )\n }\n } catch (_error) {\n toast.error(t('error:unspecific', { label: getTranslation(singularLabel, i18n) }))\n }\n },\n [\n adminRoute,\n apiRoute,\n collectionConfig,\n i18n,\n id,\n localeCode,\n onDuplicate,\n redirectAfterDuplicate,\n router,\n serverURL,\n setModified,\n singularLabel,\n slug,\n startRouteTransition,\n t,\n ],\n )\n\n const handleConfirmWithoutSaving = useCallback(async () => {\n if (selectLocales) {\n openModal(drawerSlug)\n } else {\n await handleDuplicate()\n }\n }, [handleDuplicate, drawerSlug, selectLocales, openModal])\n\n const buttonLabel = selectLocales\n ? `${t('general:duplicate')} ${t('localization:selectedLocales')}`\n : t('general:duplicate')\n\n if (!selectLocales || isDuplicateByLocaleEnabled) {\n return (\n <React.Fragment>\n <PopupList.Button\n id={`action-duplicate${isDuplicateByLocaleEnabled ? `-locales` : ''}`}\n onClick={() => {\n if (modified) {\n openModal(modalSlug)\n } else if (selectLocales) {\n openModal(drawerSlug)\n } else {\n void handleDuplicate()\n }\n }}\n >\n {buttonLabel}\n </PopupList.Button>\n <ConfirmationModal\n body={t('general:unsavedChangesDuplicate')}\n confirmLabel={t('general:duplicateWithoutSaving')}\n heading={t('general:unsavedChanges')}\n modalSlug={modalSlug}\n onConfirm={handleConfirmWithoutSaving}\n />\n {selectLocales && localization && (\n <SelectLocalesDrawer\n localization={localization}\n onConfirm={handleDuplicate}\n slug={drawerSlug}\n />\n )}\n </React.Fragment>\n )\n }\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
|