@payloadcms/ui 3.24.0-canary.d22403c → 3.24.0
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/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +143 -108
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/Button/index.d.ts.map +1 -1
- package/dist/elements/Button/index.js +1 -0
- package/dist/elements/Button/index.js.map +1 -1
- package/dist/elements/Button/index.scss +21 -5
- package/dist/elements/ConfirmationModal/index.d.ts +16 -0
- package/dist/elements/ConfirmationModal/index.d.ts.map +1 -0
- package/dist/elements/ConfirmationModal/index.js +158 -0
- package/dist/elements/ConfirmationModal/index.js.map +1 -0
- package/dist/elements/{GenerateConfirmation → ConfirmationModal}/index.scss +1 -1
- package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/elements/DatePicker/DatePicker.js +2 -0
- package/dist/elements/DatePicker/DatePicker.js.map +1 -1
- package/dist/elements/DatePicker/types.d.ts +1 -0
- package/dist/elements/DatePicker/types.d.ts.map +1 -1
- package/dist/elements/DatePicker/types.js.map +1 -1
- package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
- package/dist/elements/DeleteDocument/index.js +31 -79
- package/dist/elements/DeleteDocument/index.js.map +1 -1
- package/dist/elements/DeleteDocument/index.scss +0 -29
- package/dist/elements/DeleteMany/index.d.ts.map +1 -1
- package/dist/elements/DeleteMany/index.js +16 -43
- package/dist/elements/DeleteMany/index.js.map +1 -1
- package/dist/elements/DeleteMany/index.scss +0 -29
- package/dist/elements/DuplicateDocument/index.d.ts +0 -1
- package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
- package/dist/elements/DuplicateDocument/index.js +25 -54
- package/dist/elements/DuplicateDocument/index.js.map +1 -1
- package/dist/elements/GenerateConfirmation/index.d.ts +1 -2
- package/dist/elements/GenerateConfirmation/index.d.ts.map +1 -1
- package/dist/elements/GenerateConfirmation/index.js +23 -47
- package/dist/elements/GenerateConfirmation/index.js.map +1 -1
- package/dist/elements/LeaveWithoutSaving/index.d.ts +0 -1
- package/dist/elements/LeaveWithoutSaving/index.d.ts.map +1 -1
- package/dist/elements/LeaveWithoutSaving/index.js +56 -113
- package/dist/elements/LeaveWithoutSaving/index.js.map +1 -1
- package/dist/elements/ListControls/index.d.ts +1 -0
- package/dist/elements/ListControls/index.d.ts.map +1 -1
- package/dist/elements/ListControls/index.js +14 -0
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/ListControls/index.scss +5 -0
- package/dist/elements/Localizer/LocalizerLabel/index.d.ts.map +1 -1
- package/dist/elements/Localizer/LocalizerLabel/index.js +11 -8
- package/dist/elements/Localizer/LocalizerLabel/index.js.map +1 -1
- package/dist/elements/Localizer/index.d.ts.map +1 -1
- package/dist/elements/Localizer/index.js +2 -0
- package/dist/elements/Localizer/index.js.map +1 -1
- package/dist/elements/Popup/index.d.ts +1 -0
- package/dist/elements/Popup/index.d.ts.map +1 -1
- package/dist/elements/Popup/index.js +2 -0
- package/dist/elements/Popup/index.js.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts +2 -0
- package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.js +6 -2
- package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
- package/dist/elements/PublishButton/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/index.js +18 -15
- package/dist/elements/PublishButton/index.js.map +1 -1
- package/dist/elements/PublishMany/index.d.ts +0 -1
- package/dist/elements/PublishMany/index.d.ts.map +1 -1
- package/dist/elements/PublishMany/index.js +19 -45
- package/dist/elements/PublishMany/index.js.map +1 -1
- package/dist/elements/RelationshipTable/index.d.ts +7 -2
- package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/index.js +69 -23
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/RelationshipTable/index.scss +6 -0
- package/dist/elements/Status/index.d.ts.map +1 -1
- package/dist/elements/Status/index.js +173 -154
- package/dist/elements/Status/index.js.map +1 -1
- package/dist/elements/Status/index.scss +0 -41
- package/dist/elements/StayLoggedIn/index.d.ts +0 -1
- package/dist/elements/StayLoggedIn/index.d.ts.map +1 -1
- package/dist/elements/StayLoggedIn/index.js +45 -77
- package/dist/elements/StayLoggedIn/index.js.map +1 -1
- package/dist/elements/TableColumns/buildPolymorphicColumnState.d.ts +20 -0
- package/dist/elements/TableColumns/buildPolymorphicColumnState.d.ts.map +1 -0
- package/dist/elements/TableColumns/buildPolymorphicColumnState.js +200 -0
- package/dist/elements/TableColumns/buildPolymorphicColumnState.js.map +1 -0
- package/dist/elements/TableColumns/index.d.ts +1 -1
- package/dist/elements/TableColumns/index.d.ts.map +1 -1
- package/dist/elements/TableColumns/index.js +4 -3
- package/dist/elements/TableColumns/index.js.map +1 -1
- package/dist/elements/UnpublishMany/index.d.ts +1 -2
- package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
- package/dist/elements/UnpublishMany/index.js +14 -42
- package/dist/elements/UnpublishMany/index.js.map +1 -1
- package/dist/exports/client/CodeEditor-L6GW2VQ6.js.map +0 -1
- package/dist/exports/client/{DatePicker-THCU4KZJ.js → DatePicker-HHQ6TPOW.js} +2 -2
- package/dist/exports/client/{DatePicker-THCU4KZJ.js.map → DatePicker-HHQ6TPOW.js.map} +0 -1
- package/dist/exports/client/chunk-5LKBKI4T.js.map +0 -1
- package/dist/exports/client/{chunk-EG3ZOHFS.js → chunk-IMEQ6NKQ.js} +2 -2
- package/dist/exports/client/{chunk-EG3ZOHFS.js.map → chunk-IMEQ6NKQ.js.map} +3 -4
- package/dist/exports/client/chunk-ZZDNSFEW.js.map +0 -1
- package/dist/exports/client/index.d.ts +2 -0
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +23 -23
- package/dist/exports/client/index.js.map +4 -5
- package/dist/fields/DateTime/index.d.ts.map +1 -1
- package/dist/fields/DateTime/index.js +24 -6
- package/dist/fields/DateTime/index.js.map +1 -1
- package/dist/fields/Join/index.d.ts.map +1 -1
- package/dist/fields/Join/index.js +8 -3
- package/dist/fields/Join/index.js.map +1 -1
- package/dist/fields/Select/Input.d.ts.map +1 -1
- package/dist/fields/Select/Input.js +2 -0
- package/dist/fields/Select/Input.js.map +1 -1
- package/dist/fields/Tabs/Tab/index.scss +2 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +19 -8
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/initContextState.d.ts.map +1 -1
- package/dist/forms/Form/initContextState.js +2 -0
- package/dist/forms/Form/initContextState.js.map +1 -1
- package/dist/forms/Form/types.d.ts +6 -0
- package/dist/forms/Form/types.d.ts.map +1 -1
- package/dist/forms/Form/types.js.map +1 -1
- package/dist/icons/Dots/index.d.ts +7 -0
- package/dist/icons/Dots/index.d.ts.map +1 -0
- package/dist/icons/Dots/index.js +12 -0
- package/dist/icons/Dots/index.js.map +1 -0
- package/dist/icons/Dots/index.scss +27 -0
- package/dist/providers/Selection/index.d.ts.map +1 -1
- package/dist/providers/Selection/index.js +5 -6
- package/dist/providers/Selection/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utilities/buildTableState.d.ts.map +1 -1
- package/dist/utilities/buildTableState.js +72 -20
- package/dist/utilities/buildTableState.js.map +1 -1
- package/dist/utilities/handleFormStateLocking.d.ts.map +1 -1
- package/dist/utilities/handleFormStateLocking.js +3 -6
- package/dist/utilities/handleFormStateLocking.js.map +1 -1
- package/dist/utilities/renderTable.d.ts +6 -4
- package/dist/utilities/renderTable.d.ts.map +1 -1
- package/dist/utilities/renderTable.js +49 -17
- package/dist/utilities/renderTable.js.map +1 -1
- package/dist/views/Edit/Auth/index.d.ts.map +1 -1
- package/dist/views/Edit/Auth/index.js +56 -55
- package/dist/views/Edit/Auth/index.js.map +1 -1
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +2 -0
- package/dist/views/List/index.js.map +1 -1
- package/package.json +5 -5
- package/dist/elements/DuplicateDocument/index.scss +0 -42
- package/dist/elements/LeaveWithoutSaving/index.scss +0 -39
- package/dist/elements/PublishMany/index.scss +0 -39
- package/dist/elements/StayLoggedIn/index.scss +0 -40
- package/dist/elements/UnpublishMany/index.scss +0 -39
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
-
import {
|
|
4
|
+
import { useModal } from '@faceless-ui/modal';
|
|
5
5
|
import { getTranslation } from '@payloadcms/translations';
|
|
6
6
|
import { useRouter, useSearchParams } from 'next/navigation.js';
|
|
7
7
|
import * as qs from 'qs-esm';
|
|
8
|
-
import React, { useCallback
|
|
8
|
+
import React, { useCallback } from 'react';
|
|
9
9
|
import { toast } from 'sonner';
|
|
10
10
|
import { useAuth } from '../../providers/Auth/index.js';
|
|
11
11
|
import { useConfig } from '../../providers/Config/index.js';
|
|
@@ -14,7 +14,7 @@ import { SelectAllStatus, useSelection } from '../../providers/Selection/index.j
|
|
|
14
14
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
15
15
|
import { requests } from '../../utilities/api.js';
|
|
16
16
|
import { mergeListSearchAndWhere } from '../../utilities/mergeListSearchAndWhere.js';
|
|
17
|
-
import {
|
|
17
|
+
import { ConfirmationModal } from '../ConfirmationModal/index.js';
|
|
18
18
|
import { Pill } from '../Pill/index.js';
|
|
19
19
|
import './index.scss';
|
|
20
20
|
const baseClass = 'delete-documents';
|
|
@@ -41,7 +41,7 @@ export const DeleteMany = props => {
|
|
|
41
41
|
}
|
|
42
42
|
} = useConfig();
|
|
43
43
|
const {
|
|
44
|
-
|
|
44
|
+
openModal
|
|
45
45
|
} = useModal();
|
|
46
46
|
const {
|
|
47
47
|
count,
|
|
@@ -53,7 +53,6 @@ export const DeleteMany = props => {
|
|
|
53
53
|
i18n,
|
|
54
54
|
t
|
|
55
55
|
} = useTranslation();
|
|
56
|
-
const [deleting, setDeleting] = useState(false);
|
|
57
56
|
const router = useRouter();
|
|
58
57
|
const searchParams = useSearchParams();
|
|
59
58
|
const {
|
|
@@ -66,7 +65,6 @@ export const DeleteMany = props => {
|
|
|
66
65
|
toast.error(t('error:unknown'));
|
|
67
66
|
}, [t]);
|
|
68
67
|
const handleDelete = useCallback(async () => {
|
|
69
|
-
setDeleting(true);
|
|
70
68
|
const queryWithSearch = mergeListSearchAndWhere({
|
|
71
69
|
collectionConfig: collection,
|
|
72
70
|
search: searchParams.get('search')
|
|
@@ -80,7 +78,6 @@ export const DeleteMany = props => {
|
|
|
80
78
|
}).then(async res => {
|
|
81
79
|
try {
|
|
82
80
|
const json = await res.json();
|
|
83
|
-
toggleModal(modalSlug);
|
|
84
81
|
const deletedDocs = json?.docs.length || 0;
|
|
85
82
|
const successLabel = deletedDocs > 1 ? plural : singular;
|
|
86
83
|
if (res.status < 400 || deletedDocs > 0) {
|
|
@@ -107,14 +104,14 @@ export const DeleteMany = props => {
|
|
|
107
104
|
description: json.errors.map(error_0 => error_0.message).join('\n')
|
|
108
105
|
});
|
|
109
106
|
} else {
|
|
110
|
-
addDefaultError();
|
|
107
|
+
return addDefaultError();
|
|
111
108
|
}
|
|
112
109
|
return false;
|
|
113
110
|
} catch (_err) {
|
|
114
111
|
return addDefaultError();
|
|
115
112
|
}
|
|
116
113
|
});
|
|
117
|
-
}, [searchParams, addDefaultError, api, getQueryParams, i18n,
|
|
114
|
+
}, [searchParams, addDefaultError, api, getQueryParams, i18n, plural, router, selectAll, serverURL, singular, slug, t, toggleAll, clearRouteCache, collection]);
|
|
118
115
|
if (selectAll === SelectAllStatus.None || !hasDeletePermission) {
|
|
119
116
|
return null;
|
|
120
117
|
}
|
|
@@ -122,42 +119,18 @@ export const DeleteMany = props => {
|
|
|
122
119
|
children: [/*#__PURE__*/_jsx(Pill, {
|
|
123
120
|
className: `${baseClass}__toggle`,
|
|
124
121
|
onClick: () => {
|
|
125
|
-
|
|
126
|
-
toggleModal(modalSlug);
|
|
122
|
+
openModal(modalSlug);
|
|
127
123
|
},
|
|
128
124
|
children: t('general:delete')
|
|
129
|
-
}), /*#__PURE__*/_jsx(
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}), /*#__PURE__*/_jsx("p", {
|
|
139
|
-
children: t('general:aboutToDeleteCount', {
|
|
140
|
-
count,
|
|
141
|
-
label: getTranslation(count > 1 ? plural : singular, i18n)
|
|
142
|
-
})
|
|
143
|
-
})]
|
|
144
|
-
}), /*#__PURE__*/_jsxs("div", {
|
|
145
|
-
className: `${baseClass}__controls`,
|
|
146
|
-
children: [/*#__PURE__*/_jsx(Button, {
|
|
147
|
-
buttonStyle: "secondary",
|
|
148
|
-
id: "confirm-cancel",
|
|
149
|
-
onClick: deleting ? undefined : () => toggleModal(modalSlug),
|
|
150
|
-
size: "large",
|
|
151
|
-
type: "button",
|
|
152
|
-
children: t('general:cancel')
|
|
153
|
-
}), /*#__PURE__*/_jsx(Button, {
|
|
154
|
-
id: "confirm-delete",
|
|
155
|
-
onClick: deleting ? undefined : handleDelete,
|
|
156
|
-
size: "large",
|
|
157
|
-
children: deleting ? t('general:deleting') : t('general:confirm')
|
|
158
|
-
})]
|
|
159
|
-
})]
|
|
160
|
-
})
|
|
125
|
+
}), /*#__PURE__*/_jsx(ConfirmationModal, {
|
|
126
|
+
body: t('general:aboutToDeleteCount', {
|
|
127
|
+
count,
|
|
128
|
+
label: getTranslation(count > 1 ? plural : singular, i18n)
|
|
129
|
+
}),
|
|
130
|
+
confirmingLabel: t('general:deleting'),
|
|
131
|
+
heading: t('general:confirmDeletion'),
|
|
132
|
+
modalSlug: modalSlug,
|
|
133
|
+
onConfirm: handleDelete
|
|
161
134
|
})]
|
|
162
135
|
});
|
|
163
136
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Modal","useModal","getTranslation","useRouter","useSearchParams","qs","React","useCallback","useState","toast","useAuth","useConfig","useRouteCache","SelectAllStatus","useSelection","useTranslation","requests","mergeListSearchAndWhere","Button","Pill","baseClass","DeleteMany","props","collection","slug","labels","plural","singular","permissions","config","routes","api","serverURL","toggleModal","count","getQueryParams","selectAll","toggleAll","i18n","t","deleting","setDeleting","router","searchParams","clearRouteCache","collectionPermissions","collections","hasDeletePermission","delete","modalSlug","addDefaultError","error","handleDelete","queryWithSearch","collectionConfig","search","get","queryString","headers","language","then","res","json","deletedDocs","docs","length","successLabel","status","success","label","errors","message","description","map","join","replace","stringify","page","undefined","addQueryPrefix","_err","None","_jsxs","Fragment","_jsx","className","onClick","buttonStyle","id","size","type"],"sources":["../../../src/elements/DeleteMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { Modal, useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { mergeListSearchAndWhere } from '../../utilities/mergeListSearchAndWhere.js'\nimport { Button } from '../Button/index.js'\nimport { Pill } from '../Pill/index.js'\nimport './index.scss'\n\nconst baseClass = 'delete-documents'\n\nexport type Props = {\n collection: ClientCollectionConfig\n title?: string\n}\n\nexport const DeleteMany: React.FC<Props> = (props) => {\n const { collection, collection: { slug, labels: { plural, singular } } = {} } = props\n\n const { permissions } = useAuth()\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n const { toggleModal } = useModal()\n const { count, getQueryParams, selectAll, toggleAll } = useSelection()\n const { i18n, t } = useTranslation()\n const [deleting, setDeleting] = useState(false)\n const router = useRouter()\n const searchParams = useSearchParams()\n const { clearRouteCache } = useRouteCache()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasDeletePermission = collectionPermissions?.delete\n\n const modalSlug = `delete-${slug}`\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:unknown'))\n }, [t])\n\n const handleDelete = useCallback(async () => {\n setDeleting(true)\n\n const queryWithSearch = mergeListSearchAndWhere({\n collectionConfig: collection,\n search: searchParams.get('search'),\n })\n\n const queryString = getQueryParams(queryWithSearch)\n\n await requests\n .delete(`${serverURL}${api}/${slug}${queryString}`, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n .then(async (res) => {\n try {\n const json = await res.json()\n toggleModal(modalSlug)\n\n const deletedDocs = json?.docs.length || 0\n const successLabel = deletedDocs > 1 ? plural : singular\n\n if (res.status < 400 || deletedDocs > 0) {\n toast.success(\n t('general:deletedCountSuccessfully', {\n count: deletedDocs,\n label: getTranslation(successLabel, i18n),\n }),\n )\n\n if (json?.errors.length > 0) {\n toast.error(json.message, {\n description: json.errors.map((error) => error.message).join('\\n'),\n })\n }\n\n toggleAll()\n\n router.replace(\n qs.stringify(\n {\n page: selectAll ? '1' : undefined,\n },\n { addQueryPrefix: true },\n ),\n )\n\n clearRouteCache()\n\n return null\n }\n\n if (json.errors) {\n toast.error(json.message, {\n description: json.errors.map((error) => error.message).join('\\n'),\n })\n } else {\n addDefaultError()\n }\n return false\n } catch (_err) {\n return addDefaultError()\n }\n })\n }, [\n searchParams,\n addDefaultError,\n api,\n getQueryParams,\n i18n,\n modalSlug,\n plural,\n router,\n selectAll,\n serverURL,\n singular,\n slug,\n t,\n toggleAll,\n toggleModal,\n clearRouteCache,\n collection,\n ])\n\n if (selectAll === SelectAllStatus.None || !hasDeletePermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <Pill\n className={`${baseClass}__toggle`}\n onClick={() => {\n setDeleting(false)\n toggleModal(modalSlug)\n }}\n >\n {t('general:delete')}\n </Pill>\n <Modal className={baseClass} slug={modalSlug}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n <h1>{t('general:confirmDeletion')}</h1>\n <p>\n {t('general:aboutToDeleteCount', {\n count,\n label: getTranslation(count > 1 ? plural : singular, i18n),\n })}\n </p>\n </div>\n <div className={`${baseClass}__controls`}>\n <Button\n buttonStyle=\"secondary\"\n id=\"confirm-cancel\"\n onClick={deleting ? undefined : () => toggleModal(modalSlug)}\n size=\"large\"\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button id=\"confirm-delete\" onClick={deleting ? undefined : handleDelete} size=\"large\">\n {deleting ? t('general:deleting') : t('general:confirm')}\n </Button>\n </div>\n </div>\n </Modal>\n </React.Fragment>\n )\n}\n"],"mappings":"AAAA;;;AAGA,SAASA,KAAK,EAAEC,QAAQ,QAAQ;AAChC,SAASC,cAAc,QAAQ;AAC/B,SAASC,SAAS,EAAEC,eAAe,QAAQ;AAC3C,YAAYC,EAAA,MAAQ;AACpB,OAAOC,KAAA,IAASC,WAAW,EAAEC,QAAQ,QAAQ;AAC7C,SAASC,KAAK,QAAQ;AAEtB,SAASC,OAAO,QAAQ;AACxB,SAASC,SAAS,QAAQ;AAC1B,SAASC,aAAa,QAAQ;AAC9B,SAASC,eAAe,EAAEC,YAAY,QAAQ;AAC9C,SAASC,cAAc,QAAQ;AAC/B,SAASC,QAAQ,QAAQ;AACzB,SAASC,uBAAuB,QAAQ;AACxC,SAASC,MAAM,QAAQ;AACvB,SAASC,IAAI,QAAQ;AACrB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAOlB,OAAO,MAAMC,UAAA,GAA+BC,KAAA;EAC1C,MAAM;IAAEC,UAAU;IAAEA,UAAA,EAAY;MAAEC,IAAI;MAAEC,MAAA,EAAQ;QAAEC,MAAM;QAAEC;MAAQ;IAAE,CAAE,GAAG,CAAC;EAAC,CAAE,GAAGL,KAAA;EAEhF,MAAM;IAAEM;EAAW,CAAE,GAAGlB,OAAA;EACxB,MAAM;IACJmB,MAAA,EAAQ;MACNC,MAAA,EAAQ;QAAEC;MAAG,CAAE;MACfC;IAAS;EACV,CACF,GAAGrB,SAAA;EACJ,MAAM;IAAEsB;EAAW,CAAE,GAAGhC,QAAA;EACxB,MAAM;IAAEiC,KAAK;IAAEC,cAAc;IAAEC,SAAS;IAAEC;EAAS,CAAE,GAAGvB,YAAA;EACxD,MAAM;IAAEwB,IAAI;IAAEC;EAAC,CAAE,GAAGxB,cAAA;EACpB,MAAM,CAACyB,QAAA,EAAUC,WAAA,CAAY,GAAGjC,QAAA,CAAS;EACzC,MAAMkC,MAAA,GAASvC,SAAA;EACf,MAAMwC,YAAA,GAAevC,eAAA;EACrB,MAAM;IAAEwC;EAAe,CAAE,GAAGhC,aAAA;EAE5B,MAAMiC,qBAAA,GAAwBjB,WAAA,EAAakB,WAAA,GAActB,IAAA,CAAK;EAC9D,MAAMuB,mBAAA,GAAsBF,qBAAA,EAAuBG,MAAA;EAEnD,MAAMC,SAAA,GAAY,UAAUzB,IAAA,EAAM;EAElC,MAAM0B,eAAA,GAAkB3C,WAAA,CAAY;IAClCE,KAAA,CAAM0C,KAAK,CAACZ,CAAA,CAAE;EAChB,GAAG,CAACA,CAAA,CAAE;EAEN,MAAMa,YAAA,GAAe7C,WAAA,CAAY;IAC/BkC,WAAA,CAAY;IAEZ,MAAMY,eAAA,GAAkBpC,uBAAA,CAAwB;MAC9CqC,gBAAA,EAAkB/B,UAAA;MAClBgC,MAAA,EAAQZ,YAAA,CAAaa,GAAG,CAAC;IAC3B;IAEA,MAAMC,WAAA,GAActB,cAAA,CAAekB,eAAA;IAEnC,MAAMrC,QAAA,CACHgC,MAAM,CAAC,GAAGhB,SAAA,GAAYD,GAAA,IAAOP,IAAA,GAAOiC,WAAA,EAAa,EAAE;MAClDC,OAAA,EAAS;QACP,mBAAmBpB,IAAA,CAAKqB,QAAQ;QAChC,gBAAgB;MAClB;IACF,GACCC,IAAI,CAAC,MAAOC,GAAA;MACX,IAAI;QACF,MAAMC,IAAA,GAAO,MAAMD,GAAA,CAAIC,IAAI;QAC3B7B,WAAA,CAAYgB,SAAA;QAEZ,MAAMc,WAAA,GAAcD,IAAA,EAAME,IAAA,CAAKC,MAAA,IAAU;QACzC,MAAMC,YAAA,GAAeH,WAAA,GAAc,IAAIrC,MAAA,GAASC,QAAA;QAEhD,IAAIkC,GAAA,CAAIM,MAAM,GAAG,OAAOJ,WAAA,GAAc,GAAG;UACvCtD,KAAA,CAAM2D,OAAO,CACX7B,CAAA,CAAE,oCAAoC;YACpCL,KAAA,EAAO6B,WAAA;YACPM,KAAA,EAAOnE,cAAA,CAAegE,YAAA,EAAc5B,IAAA;UACtC;UAGF,IAAIwB,IAAA,EAAMQ,MAAA,CAAOL,MAAA,GAAS,GAAG;YAC3BxD,KAAA,CAAM0C,KAAK,CAACW,IAAA,CAAKS,OAAO,EAAE;cACxBC,WAAA,EAAaV,IAAA,CAAKQ,MAAM,CAACG,GAAG,CAAEtB,KAAA,IAAUA,KAAA,CAAMoB,OAAO,EAAEG,IAAI,CAAC;YAC9D;UACF;UAEArC,SAAA;UAEAK,MAAA,CAAOiC,OAAO,CACZtE,EAAA,CAAGuE,SAAS,CACV;YACEC,IAAA,EAAMzC,SAAA,GAAY,MAAM0C;UAC1B,GACA;YAAEC,cAAA,EAAgB;UAAK;UAI3BnC,eAAA;UAEA,OAAO;QACT;QAEA,IAAIkB,IAAA,CAAKQ,MAAM,EAAE;UACf7D,KAAA,CAAM0C,KAAK,CAACW,IAAA,CAAKS,OAAO,EAAE;YACxBC,WAAA,EAAaV,IAAA,CAAKQ,MAAM,CAACG,GAAG,CAAEtB,OAAA,IAAUA,OAAA,CAAMoB,OAAO,EAAEG,IAAI,CAAC;UAC9D;QACF,OAAO;UACLxB,eAAA;QACF;QACA,OAAO;MACT,EAAE,OAAO8B,IAAA,EAAM;QACb,OAAO9B,eAAA;MACT;IACF;EACJ,GAAG,CACDP,YAAA,EACAO,eAAA,EACAnB,GAAA,EACAI,cAAA,EACAG,IAAA,EACAW,SAAA,EACAvB,MAAA,EACAgB,MAAA,EACAN,SAAA,EACAJ,SAAA,EACAL,QAAA,EACAH,IAAA,EACAe,CAAA,EACAF,SAAA,EACAJ,WAAA,EACAW,eAAA,EACArB,UAAA,CACD;EAED,IAAIa,SAAA,KAAcvB,eAAA,CAAgBoE,IAAI,IAAI,CAAClC,mBAAA,EAAqB;IAC9D,OAAO;EACT;EAEA,oBACEmC,KAAA,CAAC5E,KAAA,CAAM6E,QAAQ;4BACbC,IAAA,CAACjE,IAAA;MACCkE,SAAA,EAAW,GAAGjE,SAAA,UAAmB;MACjCkE,OAAA,EAASA,CAAA;QACP7C,WAAA,CAAY;QACZR,WAAA,CAAYgB,SAAA;MACd;gBAECV,CAAA,CAAE;qBAEL6C,IAAA,CAACpF,KAAA;MAAMqF,SAAA,EAAWjE,SAAA;MAAWI,IAAA,EAAMyB,SAAA;gBACjC,aAAAiC,KAAA,CAAC;QAAIG,SAAA,EAAW,GAAGjE,SAAA,WAAoB;gCACrC8D,KAAA,CAAC;UAAIG,SAAA,EAAW,GAAGjE,SAAA,WAAoB;kCACrCgE,IAAA,CAAC;sBAAI7C,CAAA,CAAE;2BACP6C,IAAA,CAAC;sBACE7C,CAAA,CAAE,8BAA8B;cAC/BL,KAAA;cACAmC,KAAA,EAAOnE,cAAA,CAAegC,KAAA,GAAQ,IAAIR,MAAA,GAASC,QAAA,EAAUW,IAAA;YACvD;;yBAGJ4C,KAAA,CAAC;UAAIG,SAAA,EAAW,GAAGjE,SAAA,YAAqB;kCACtCgE,IAAA,CAAClE,MAAA;YACCqE,WAAA,EAAY;YACZC,EAAA,EAAG;YACHF,OAAA,EAAS9C,QAAA,GAAWsC,SAAA,GAAY,MAAM7C,WAAA,CAAYgB,SAAA;YAClDwC,IAAA,EAAK;YACLC,IAAA,EAAK;sBAEJnD,CAAA,CAAE;2BAEL6C,IAAA,CAAClE,MAAA;YAAOsE,EAAA,EAAG;YAAiBF,OAAA,EAAS9C,QAAA,GAAWsC,SAAA,GAAY1B,YAAA;YAAcqC,IAAA,EAAK;sBAC5EjD,QAAA,GAAWD,CAAA,CAAE,sBAAsBA,CAAA,CAAE;;;;;;AAOpD","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useModal","getTranslation","useRouter","useSearchParams","qs","React","useCallback","toast","useAuth","useConfig","useRouteCache","SelectAllStatus","useSelection","useTranslation","requests","mergeListSearchAndWhere","ConfirmationModal","Pill","baseClass","DeleteMany","props","collection","slug","labels","plural","singular","permissions","config","routes","api","serverURL","openModal","count","getQueryParams","selectAll","toggleAll","i18n","t","router","searchParams","clearRouteCache","collectionPermissions","collections","hasDeletePermission","delete","modalSlug","addDefaultError","error","handleDelete","queryWithSearch","collectionConfig","search","get","queryString","headers","language","then","res","json","deletedDocs","docs","length","successLabel","status","success","label","errors","message","description","map","join","replace","stringify","page","undefined","addQueryPrefix","_err","None","_jsxs","Fragment","_jsx","className","onClick","body","confirmingLabel","heading","onConfirm"],"sources":["../../../src/elements/DeleteMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport * as qs from 'qs-esm'\nimport React, { useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { mergeListSearchAndWhere } from '../../utilities/mergeListSearchAndWhere.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { Pill } from '../Pill/index.js'\nimport './index.scss'\n\nconst baseClass = 'delete-documents'\n\nexport type Props = {\n collection: ClientCollectionConfig\n title?: string\n}\n\nexport const DeleteMany: React.FC<Props> = (props) => {\n const { collection, collection: { slug, labels: { plural, singular } } = {} } = props\n\n const { permissions } = useAuth()\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n const { openModal } = useModal()\n const { count, getQueryParams, selectAll, toggleAll } = useSelection()\n const { i18n, t } = useTranslation()\n const router = useRouter()\n const searchParams = useSearchParams()\n const { clearRouteCache } = useRouteCache()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasDeletePermission = collectionPermissions?.delete\n\n const modalSlug = `delete-${slug}`\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:unknown'))\n }, [t])\n\n const handleDelete = useCallback(async () => {\n const queryWithSearch = mergeListSearchAndWhere({\n collectionConfig: collection,\n search: searchParams.get('search'),\n })\n\n const queryString = getQueryParams(queryWithSearch)\n\n await requests\n .delete(`${serverURL}${api}/${slug}${queryString}`, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n .then(async (res) => {\n try {\n const json = await res.json()\n\n const deletedDocs = json?.docs.length || 0\n const successLabel = deletedDocs > 1 ? plural : singular\n\n if (res.status < 400 || deletedDocs > 0) {\n toast.success(\n t('general:deletedCountSuccessfully', {\n count: deletedDocs,\n label: getTranslation(successLabel, i18n),\n }),\n )\n\n if (json?.errors.length > 0) {\n toast.error(json.message, {\n description: json.errors.map((error) => error.message).join('\\n'),\n })\n }\n\n toggleAll()\n\n router.replace(\n qs.stringify(\n {\n page: selectAll ? '1' : undefined,\n },\n { addQueryPrefix: true },\n ),\n )\n\n clearRouteCache()\n\n return null\n }\n\n if (json.errors) {\n toast.error(json.message, {\n description: json.errors.map((error) => error.message).join('\\n'),\n })\n } else {\n return addDefaultError()\n }\n return false\n } catch (_err) {\n return addDefaultError()\n }\n })\n }, [\n searchParams,\n addDefaultError,\n api,\n getQueryParams,\n i18n,\n plural,\n router,\n selectAll,\n serverURL,\n singular,\n slug,\n t,\n toggleAll,\n clearRouteCache,\n collection,\n ])\n\n if (selectAll === SelectAllStatus.None || !hasDeletePermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <Pill\n className={`${baseClass}__toggle`}\n onClick={() => {\n openModal(modalSlug)\n }}\n >\n {t('general:delete')}\n </Pill>\n <ConfirmationModal\n body={t('general:aboutToDeleteCount', {\n count,\n label: getTranslation(count > 1 ? plural : singular, i18n),\n })}\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={modalSlug}\n onConfirm={handleDelete}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,34 +7,5 @@
|
|
|
7
7
|
align-items: center;
|
|
8
8
|
justify-content: center;
|
|
9
9
|
height: 100%;
|
|
10
|
-
|
|
11
|
-
&__wrapper {
|
|
12
|
-
z-index: 1;
|
|
13
|
-
position: relative;
|
|
14
|
-
display: flex;
|
|
15
|
-
flex-direction: column;
|
|
16
|
-
gap: base(0.8);
|
|
17
|
-
padding: base(2);
|
|
18
|
-
max-width: base(36);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
&__content {
|
|
22
|
-
display: flex;
|
|
23
|
-
flex-direction: column;
|
|
24
|
-
gap: base(0.4);
|
|
25
|
-
|
|
26
|
-
> * {
|
|
27
|
-
margin: 0;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
&__controls {
|
|
32
|
-
display: flex;
|
|
33
|
-
gap: base(0.4);
|
|
34
|
-
|
|
35
|
-
.btn {
|
|
36
|
-
margin: 0;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
10
|
}
|
|
40
11
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { SanitizedCollectionConfig } from 'payload';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js';
|
|
4
|
-
import './index.scss';
|
|
5
4
|
export type Props = {
|
|
6
5
|
readonly id: string;
|
|
7
6
|
readonly onDuplicate?: DocumentDrawerContextType['onDuplicate'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DuplicateDocument/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAKxD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DuplicateDocument/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAKxD,OAAO,KAAsB,MAAM,OAAO,CAAA;AAG1C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAY9E,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,WAAW,CAAC,EAAE,yBAAyB,CAAC,aAAa,CAAC,CAAA;IAC/D,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;IACzC,QAAQ,CAAC,aAAa,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAA;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA+H7C,CAAA"}
|
|
@@ -1,24 +1,20 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
-
import {
|
|
4
|
+
import { useModal } from '@faceless-ui/modal';
|
|
5
5
|
import { getTranslation } from '@payloadcms/translations';
|
|
6
6
|
import { useRouter } from 'next/navigation.js';
|
|
7
|
-
import React, { useCallback
|
|
7
|
+
import React, { useCallback } from 'react';
|
|
8
8
|
import { toast } from 'sonner';
|
|
9
9
|
import { useForm, useFormModified } from '../../forms/Form/context.js';
|
|
10
10
|
import { useConfig } from '../../providers/Config/index.js';
|
|
11
|
-
import { useEditDepth } from '../../providers/EditDepth/index.js';
|
|
12
11
|
import { useLocale } from '../../providers/Locale/index.js';
|
|
13
12
|
import { useRouteTransition } from '../../providers/RouteTransition/index.js';
|
|
14
13
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
15
14
|
import { requests } from '../../utilities/api.js';
|
|
16
15
|
import { formatAdminURL } from '../../utilities/formatAdminURL.js';
|
|
17
|
-
import {
|
|
18
|
-
import { drawerZBase } from '../Drawer/index.js';
|
|
19
|
-
import './index.scss';
|
|
16
|
+
import { ConfirmationModal } from '../ConfirmationModal/index.js';
|
|
20
17
|
import { PopupList } from '../Popup/index.js';
|
|
21
|
-
const baseClass = 'duplicate';
|
|
22
18
|
export const DuplicateDocument = ({
|
|
23
19
|
id,
|
|
24
20
|
slug,
|
|
@@ -29,7 +25,7 @@ export const DuplicateDocument = ({
|
|
|
29
25
|
const router = useRouter();
|
|
30
26
|
const modified = useFormModified();
|
|
31
27
|
const {
|
|
32
|
-
|
|
28
|
+
openModal
|
|
33
29
|
} = useModal();
|
|
34
30
|
const locale = useLocale();
|
|
35
31
|
const {
|
|
@@ -51,19 +47,14 @@ export const DuplicateDocument = ({
|
|
|
51
47
|
const collectionConfig = getEntityConfig({
|
|
52
48
|
collectionSlug: slug
|
|
53
49
|
});
|
|
54
|
-
const [
|
|
50
|
+
const [renderModal, setRenderModal] = React.useState(false);
|
|
55
51
|
const {
|
|
56
52
|
i18n,
|
|
57
53
|
t
|
|
58
54
|
} = useTranslation();
|
|
59
55
|
const modalSlug = `duplicate-${id}`;
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
setHasClicked(true);
|
|
63
|
-
if (modified && !override) {
|
|
64
|
-
toggleModal(modalSlug);
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
56
|
+
const duplicate = useCallback(async () => {
|
|
57
|
+
setRenderModal(true);
|
|
67
58
|
await requests.post(`${serverURL}${apiRoute}/${slug}/${id}/duplicate${locale?.code ? `?locale=${locale.code}` : ''}`, {
|
|
68
59
|
body: JSON.stringify({}),
|
|
69
60
|
headers: {
|
|
@@ -100,48 +91,28 @@ export const DuplicateDocument = ({
|
|
|
100
91
|
}));
|
|
101
92
|
}
|
|
102
93
|
});
|
|
103
|
-
}, [locale,
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
await
|
|
107
|
-
}, [
|
|
94
|
+
}, [locale, serverURL, apiRoute, slug, id, i18n, t, singularLabel, onDuplicate, redirectAfterDuplicate, setModified, router, adminRoute, collectionConfig, startRouteTransition]);
|
|
95
|
+
const onConfirm = useCallback(async () => {
|
|
96
|
+
setRenderModal(false);
|
|
97
|
+
await duplicate();
|
|
98
|
+
}, [duplicate]);
|
|
108
99
|
return /*#__PURE__*/_jsxs(React.Fragment, {
|
|
109
100
|
children: [/*#__PURE__*/_jsx(PopupList.Button, {
|
|
110
101
|
id: "action-duplicate",
|
|
111
|
-
onClick: () =>
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
zIndex: drawerZBase + editDepth
|
|
102
|
+
onClick: () => {
|
|
103
|
+
if (modified) {
|
|
104
|
+
setRenderModal(true);
|
|
105
|
+
return openModal(modalSlug);
|
|
106
|
+
}
|
|
107
|
+
return duplicate();
|
|
118
108
|
},
|
|
119
|
-
children:
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
children: t('general:unsavedChangesDuplicate')
|
|
127
|
-
})]
|
|
128
|
-
}), /*#__PURE__*/_jsxs("div", {
|
|
129
|
-
className: `${baseClass}__controls`,
|
|
130
|
-
children: [/*#__PURE__*/_jsx(Button, {
|
|
131
|
-
buttonStyle: "secondary",
|
|
132
|
-
id: "confirm-cancel",
|
|
133
|
-
onClick: () => toggleModal(modalSlug),
|
|
134
|
-
size: "large",
|
|
135
|
-
type: "button",
|
|
136
|
-
children: t('general:cancel')
|
|
137
|
-
}), /*#__PURE__*/_jsx(Button, {
|
|
138
|
-
id: "confirm-duplicate",
|
|
139
|
-
onClick: () => void confirm(),
|
|
140
|
-
size: "large",
|
|
141
|
-
children: t('general:duplicateWithoutSaving')
|
|
142
|
-
})]
|
|
143
|
-
})]
|
|
144
|
-
})
|
|
109
|
+
children: t('general:duplicate')
|
|
110
|
+
}), renderModal && /*#__PURE__*/_jsx(ConfirmationModal, {
|
|
111
|
+
body: t('general:unsavedChangesDuplicate'),
|
|
112
|
+
confirmLabel: t('general:duplicateWithoutSaving'),
|
|
113
|
+
heading: t('general:unsavedChanges'),
|
|
114
|
+
modalSlug: modalSlug,
|
|
115
|
+
onConfirm: onConfirm
|
|
145
116
|
})]
|
|
146
117
|
});
|
|
147
118
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Modal","useModal","getTranslation","useRouter","React","useCallback","useState","toast","useForm","useFormModified","useConfig","useEditDepth","useLocale","useRouteTransition","useTranslation","requests","formatAdminURL","Button","drawerZBase","PopupList","baseClass","DuplicateDocument","id","slug","onDuplicate","redirectAfterDuplicate","singularLabel","router","modified","toggleModal","locale","setModified","startRouteTransition","config","routes","admin","adminRoute","api","apiRoute","serverURL","getEntityConfig","collectionConfig","collectionSlug","hasClicked","setHasClicked","i18n","t","modalSlug","editDepth","handleClick","override","post","code","body","JSON","stringify","headers","language","credentials","then","res","doc","errors","message","json","status","success","label","push","path","error","confirm","_jsxs","Fragment","_jsx","onClick","className","style","zIndex","buttonStyle","size","type"],"sources":["../../../src/elements/DuplicateDocument/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { Modal, useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } 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 { useEditDepth } from '../../providers/EditDepth/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 { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { Button } from '../Button/index.js'\nimport { drawerZBase } from '../Drawer/index.js'\nimport './index.scss'\nimport { PopupList } from '../Popup/index.js'\n\nconst baseClass = 'duplicate'\n\nexport type Props = {\n readonly id: string\n readonly onDuplicate?: DocumentDrawerContextType['onDuplicate']\n readonly redirectAfterDuplicate?: 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 singularLabel,\n}) => {\n const router = useRouter()\n const modified = useFormModified()\n const { toggleModal } = useModal()\n const locale = useLocale()\n const { setModified } = useForm()\n const { startRouteTransition } = useRouteTransition()\n\n const {\n config: {\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug: slug })\n\n const [hasClicked, setHasClicked] = useState<boolean>(false)\n const { i18n, t } = useTranslation()\n\n const modalSlug = `duplicate-${id}`\n\n const editDepth = useEditDepth()\n\n const handleClick = useCallback(\n async (override = false) => {\n setHasClicked(true)\n\n if (modified && !override) {\n toggleModal(modalSlug)\n return\n }\n await requests\n .post(\n `${serverURL}${apiRoute}/${slug}/${id}/duplicate${locale?.code ? `?locale=${locale.code}` : ''}`,\n {\n body: JSON.stringify({}),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n credentials: 'include',\n },\n },\n )\n .then(async (res) => {\n const { doc, errors, message } = await res.json()\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}${locale?.code ? `?locale=${locale.code}` : ''}`,\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 })\n },\n [\n locale,\n modified,\n serverURL,\n apiRoute,\n slug,\n id,\n i18n,\n toggleModal,\n modalSlug,\n t,\n singularLabel,\n onDuplicate,\n redirectAfterDuplicate,\n setModified,\n router,\n adminRoute,\n collectionConfig,\n startRouteTransition,\n ],\n )\n\n const confirm = useCallback(async () => {\n setHasClicked(false)\n await handleClick(true)\n }, [handleClick])\n\n return (\n <React.Fragment>\n <PopupList.Button id=\"action-duplicate\" onClick={() => void handleClick(false)}>\n {t('general:duplicate')}\n </PopupList.Button>\n {modified && hasClicked && (\n <Modal\n className={`${baseClass}__modal`}\n slug={modalSlug}\n style={{\n zIndex: drawerZBase + editDepth,\n }}\n >\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n <h1>{t('general:confirmDuplication')}</h1>\n <p>{t('general:unsavedChangesDuplicate')}</p>\n </div>\n <div className={`${baseClass}__controls`}>\n <Button\n buttonStyle=\"secondary\"\n id=\"confirm-cancel\"\n onClick={() => toggleModal(modalSlug)}\n size=\"large\"\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button id=\"confirm-duplicate\" onClick={() => void confirm()} size=\"large\">\n {t('general:duplicateWithoutSaving')}\n </Button>\n </div>\n </div>\n </Modal>\n )}\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useModal","getTranslation","useRouter","React","useCallback","toast","useForm","useFormModified","useConfig","useLocale","useRouteTransition","useTranslation","requests","formatAdminURL","ConfirmationModal","PopupList","DuplicateDocument","id","slug","onDuplicate","redirectAfterDuplicate","singularLabel","router","modified","openModal","locale","setModified","startRouteTransition","config","routes","admin","adminRoute","api","apiRoute","serverURL","getEntityConfig","collectionConfig","collectionSlug","renderModal","setRenderModal","useState","i18n","t","modalSlug","duplicate","post","code","body","JSON","stringify","headers","language","credentials","then","res","doc","errors","message","json","status","success","label","push","path","error","onConfirm","_jsxs","Fragment","_jsx","Button","onClick","confirmLabel","heading"],"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 React, { useCallback } 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 { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { PopupList } from '../Popup/index.js'\n\nexport type Props = {\n readonly id: string\n readonly onDuplicate?: DocumentDrawerContextType['onDuplicate']\n readonly redirectAfterDuplicate?: 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 singularLabel,\n}) => {\n const router = useRouter()\n const modified = useFormModified()\n const { openModal } = useModal()\n const locale = useLocale()\n const { setModified } = useForm()\n const { startRouteTransition } = useRouteTransition()\n\n const {\n config: {\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug: slug })\n\n const [renderModal, setRenderModal] = React.useState(false)\n const { i18n, t } = useTranslation()\n\n const modalSlug = `duplicate-${id}`\n\n const duplicate = useCallback(async () => {\n setRenderModal(true)\n\n await requests\n .post(\n `${serverURL}${apiRoute}/${slug}/${id}/duplicate${locale?.code ? `?locale=${locale.code}` : ''}`,\n {\n body: JSON.stringify({}),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n credentials: 'include',\n },\n },\n )\n .then(async (res) => {\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}${locale?.code ? `?locale=${locale.code}` : ''}`,\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 })\n }, [\n locale,\n serverURL,\n apiRoute,\n slug,\n id,\n i18n,\n t,\n singularLabel,\n onDuplicate,\n redirectAfterDuplicate,\n setModified,\n router,\n adminRoute,\n collectionConfig,\n startRouteTransition,\n ])\n\n const onConfirm = useCallback(async () => {\n setRenderModal(false)\n\n await duplicate()\n }, [duplicate])\n\n return (\n <React.Fragment>\n <PopupList.Button\n id=\"action-duplicate\"\n onClick={() => {\n if (modified) {\n setRenderModal(true)\n return openModal(modalSlug)\n }\n\n return duplicate()\n }}\n >\n {t('general:duplicate')}\n </PopupList.Button>\n {renderModal && (\n <ConfirmationModal\n body={t('general:unsavedChangesDuplicate')}\n confirmLabel={t('general:duplicateWithoutSaving')}\n heading={t('general:unsavedChanges')}\n modalSlug={modalSlug}\n onConfirm={onConfirm}\n />\n )}\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import './index.scss';
|
|
3
2
|
export type GenerateConfirmationProps = {
|
|
4
3
|
highlightField: (Boolean: any) => void;
|
|
5
4
|
setKey: () => void;
|
|
6
5
|
};
|
|
7
|
-
export declare
|
|
6
|
+
export declare function GenerateConfirmation(props: GenerateConfirmationProps): React.JSX.Element;
|
|
8
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/GenerateConfirmation/index.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/GenerateConfirmation/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAS1C,MAAM,MAAM,yBAAyB,GAAG;IACtC,cAAc,EAAE,CAAC,OAAO,KAAA,KAAK,IAAI,CAAA;IACjC,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB,CAAA;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,qBA2CpE"}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
-
import {
|
|
5
|
-
import React from 'react';
|
|
4
|
+
import { useModal } from '@faceless-ui/modal';
|
|
5
|
+
import React, { useCallback } from 'react';
|
|
6
6
|
import { toast } from 'sonner';
|
|
7
7
|
import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
|
|
8
8
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
9
9
|
import { Button } from '../Button/index.js';
|
|
10
|
+
import { ConfirmationModal } from '../ConfirmationModal/index.js';
|
|
10
11
|
import { Translation } from '../Translation/index.js';
|
|
11
|
-
|
|
12
|
-
const baseClass = 'generate-confirmation';
|
|
13
|
-
export const GenerateConfirmation = props => {
|
|
12
|
+
export function GenerateConfirmation(props) {
|
|
14
13
|
const {
|
|
15
14
|
highlightField,
|
|
16
15
|
setKey
|
|
@@ -25,12 +24,11 @@ export const GenerateConfirmation = props => {
|
|
|
25
24
|
t
|
|
26
25
|
} = useTranslation();
|
|
27
26
|
const modalSlug = `generate-confirmation-${id}`;
|
|
28
|
-
const handleGenerate = () => {
|
|
27
|
+
const handleGenerate = useCallback(() => {
|
|
29
28
|
setKey();
|
|
30
|
-
toggleModal(modalSlug);
|
|
31
29
|
toast.success(t('authentication:newAPIKeyGenerated'));
|
|
32
30
|
highlightField(true);
|
|
33
|
-
};
|
|
31
|
+
}, [highlightField, setKey, t]);
|
|
34
32
|
return /*#__PURE__*/_jsxs(React.Fragment, {
|
|
35
33
|
children: [/*#__PURE__*/_jsx(Button, {
|
|
36
34
|
buttonStyle: "secondary",
|
|
@@ -39,45 +37,23 @@ export const GenerateConfirmation = props => {
|
|
|
39
37
|
},
|
|
40
38
|
size: "small",
|
|
41
39
|
children: t('authentication:generateNewAPIKey')
|
|
42
|
-
}), /*#__PURE__*/_jsx(
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
})
|
|
59
|
-
},
|
|
60
|
-
i18nKey: "authentication:generatingNewAPIKeyWillInvalidate",
|
|
61
|
-
t: t
|
|
62
|
-
})
|
|
63
|
-
})]
|
|
64
|
-
}), /*#__PURE__*/_jsxs("div", {
|
|
65
|
-
className: `${baseClass}__controls`,
|
|
66
|
-
children: [/*#__PURE__*/_jsx(Button, {
|
|
67
|
-
buttonStyle: "secondary",
|
|
68
|
-
onClick: () => {
|
|
69
|
-
toggleModal(modalSlug);
|
|
70
|
-
},
|
|
71
|
-
size: "large",
|
|
72
|
-
type: "button",
|
|
73
|
-
children: t('general:cancel')
|
|
74
|
-
}), /*#__PURE__*/_jsx(Button, {
|
|
75
|
-
onClick: handleGenerate,
|
|
76
|
-
children: t('authentication:generate')
|
|
77
|
-
})]
|
|
78
|
-
})]
|
|
79
|
-
})
|
|
40
|
+
}), /*#__PURE__*/_jsx(ConfirmationModal, {
|
|
41
|
+
body: /*#__PURE__*/_jsx(Translation, {
|
|
42
|
+
elements: {
|
|
43
|
+
1: ({
|
|
44
|
+
children
|
|
45
|
+
}) => /*#__PURE__*/_jsx("strong", {
|
|
46
|
+
children: children
|
|
47
|
+
})
|
|
48
|
+
},
|
|
49
|
+
i18nKey: "authentication:generatingNewAPIKeyWillInvalidate",
|
|
50
|
+
t: t
|
|
51
|
+
}),
|
|
52
|
+
confirmLabel: t('authentication:generate'),
|
|
53
|
+
heading: t('authentication:confirmGeneration'),
|
|
54
|
+
modalSlug: modalSlug,
|
|
55
|
+
onConfirm: handleGenerate
|
|
80
56
|
})]
|
|
81
57
|
});
|
|
82
|
-
}
|
|
58
|
+
}
|
|
83
59
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["
|
|
1
|
+
{"version":3,"file":"index.js","names":["useModal","React","useCallback","toast","useDocumentInfo","useTranslation","Button","ConfirmationModal","Translation","GenerateConfirmation","props","highlightField","setKey","id","toggleModal","t","modalSlug","handleGenerate","success","_jsxs","Fragment","_jsx","buttonStyle","onClick","size","body","elements","children","i18nKey","confirmLabel","heading","onConfirm"],"sources":["../../../src/elements/GenerateConfirmation/index.tsx"],"sourcesContent":["'use client'\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { Translation } from '../Translation/index.js'\n\nexport type GenerateConfirmationProps = {\n highlightField: (Boolean) => void\n setKey: () => void\n}\n\nexport function GenerateConfirmation(props: GenerateConfirmationProps) {\n const { highlightField, setKey } = props\n\n const { id } = useDocumentInfo()\n const { toggleModal } = useModal()\n const { t } = useTranslation()\n\n const modalSlug = `generate-confirmation-${id}`\n\n const handleGenerate = useCallback(() => {\n setKey()\n toast.success(t('authentication:newAPIKeyGenerated'))\n highlightField(true)\n }, [highlightField, setKey, t])\n\n return (\n <React.Fragment>\n <Button\n buttonStyle=\"secondary\"\n onClick={() => {\n toggleModal(modalSlug)\n }}\n size=\"small\"\n >\n {t('authentication:generateNewAPIKey')}\n </Button>\n <ConfirmationModal\n body={\n <Translation\n elements={{\n 1: ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"authentication:generatingNewAPIKeyWillInvalidate\"\n t={t}\n />\n }\n confirmLabel={t('authentication:generate')}\n heading={t('authentication:confirmGeneration')}\n modalSlug={modalSlug}\n onConfirm={handleGenerate}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"AAAA;;;AACA,SAASA,QAAQ,QAAQ;AACzB,OAAOC,KAAA,IAASC,WAAW,QAAQ;AACnC,SAASC,KAAK,QAAQ;AAEtB,SAASC,eAAe,QAAQ;AAChC,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,iBAAiB,QAAQ;AAClC,SAASC,WAAW,QAAQ;AAO5B,OAAO,SAASC,qBAAqBC,KAAgC;EACnE,MAAM;IAAEC,cAAc;IAAEC;EAAM,CAAE,GAAGF,KAAA;EAEnC,MAAM;IAAEG;EAAE,CAAE,GAAGT,eAAA;EACf,MAAM;IAAEU;EAAW,CAAE,GAAGd,QAAA;EACxB,MAAM;IAAEe;EAAC,CAAE,GAAGV,cAAA;EAEd,MAAMW,SAAA,GAAY,yBAAyBH,EAAA,EAAI;EAE/C,MAAMI,cAAA,GAAiBf,WAAA,CAAY;IACjCU,MAAA;IACAT,KAAA,CAAMe,OAAO,CAACH,CAAA,CAAE;IAChBJ,cAAA,CAAe;EACjB,GAAG,CAACA,cAAA,EAAgBC,MAAA,EAAQG,CAAA,CAAE;EAE9B,oBACEI,KAAA,CAAClB,KAAA,CAAMmB,QAAQ;4BACbC,IAAA,CAACf,MAAA;MACCgB,WAAA,EAAY;MACZC,OAAA,EAASA,CAAA;QACPT,WAAA,CAAYE,SAAA;MACd;MACAQ,IAAA,EAAK;gBAEJT,CAAA,CAAE;qBAELM,IAAA,CAACd,iBAAA;MACCkB,IAAA,eACEJ,IAAA,CAACb,WAAA;QACCkB,QAAA,EAAU;UACR,GAAG,CAAC;YAAEC;UAAQ,CAAE,kBAAKN,IAAA,CAAC;sBAAQM;;QAChC;QACAC,OAAA,EAAQ;QACRb,CAAA,EAAGA;;MAGPc,YAAA,EAAcd,CAAA,CAAE;MAChBe,OAAA,EAASf,CAAA,CAAE;MACXC,SAAA,EAAWA,SAAA;MACXe,SAAA,EAAWd;;;AAInB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/LeaveWithoutSaving/index.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/LeaveWithoutSaving/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAa1C,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAuCtC,CAAA"}
|