@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useRouter","React","useCallback","useAuth","useConfig","useRouteTransition","useTranslation","formatAdminURL","ConfirmationModal","stayLoggedInModalSlug","StayLoggedInModal","$","refreshCookie","router","config","admin","t0","routes","t1","t2","logout","logoutRoute","adminRoute","t","startRouteTransition","t3","push","path","onConfirm","t4","onCancel","t5","_jsx","body","cancelLabel","confirmLabel","heading","modalSlug"],"sources":["../../../src/elements/StayLoggedIn/index.tsx"],"sourcesContent":["'use client'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback } from 'react'\n\nimport type { OnCancel } from '../ConfirmationModal/index.js'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\n\nexport const stayLoggedInModalSlug = 'stay-logged-in'\n\nexport const StayLoggedInModal: React.FC = () => {\n const { refreshCookie } = useAuth()\n\n const router = useRouter()\n const { config } = useConfig()\n\n const {\n admin: {\n routes: { logout: logoutRoute },\n },\n routes: { admin: adminRoute },\n } = config\n\n const { t } = useTranslation()\n const { startRouteTransition } = useRouteTransition()\n\n const onConfirm = useCallback(() => {\n return startRouteTransition(() =>\n router.push(\n formatAdminURL({\n adminRoute,\n path: logoutRoute,\n }),\n ),\n )\n }, [router, startRouteTransition, adminRoute, logoutRoute])\n\n const onCancel: OnCancel = useCallback(() => {\n refreshCookie()\n }, [refreshCookie])\n\n return (\n <ConfirmationModal\n body={t('authentication:youAreInactive')}\n cancelLabel={t('authentication:stayLoggedIn')}\n confirmLabel={t('authentication:logOut')}\n heading={t('authentication:stayLoggedIn')}\n modalSlug={stayLoggedInModalSlug}\n onCancel={onCancel}\n onConfirm={onConfirm}\n />\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,SAASC,SAAS,QAAQ;AAC1B,OAAOC,KAAA,IAASC,WAAW,QAAQ;AAInC,SAASC,OAAO,QAAQ;AACxB,SAASC,SAAS,QAAQ;AAC1B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,QAAQ;AAC/B,SAASC,iBAAiB,QAAQ;AAElC,OAAO,MAAMC,qBAAA,GAAwB;AAErC,OAAO,MAAMC,iBAAA,GAA8BA,CAAA;EAAA,MAAAC,CAAA,GAAAZ,EAAA;EACzC;IAAAa;EAAA,IAA0BT,OAAA;EAE1B,MAAAU,MAAA,GAAeb,SAAA;EACf;IAAAc;EAAA,IAAmBV,SAAA;EAEnB;IAAAW,KAAA,EAAAC,EAAA;IAAAC,MAAA,EAAAC;EAAA,IAKIJ,MAAA;EAJK;IAAAG,MAAA,EAAAE;EAAA,IAAAH,EAEN;EADS;IAAAI,MAAA,EAAAC;EAAA,IAAAF,EAAuB;EAEzB;IAAAJ,KAAA,EAAAO;EAAA,IAAAJ,EAAqB;EAG/B;IAAAK;EAAA,IAAcjB,cAAA;EACd;IAAAkB;EAAA,IAAiCnB,kBAAA;EAAA,IAAAoB,EAAA;EAAA,IAAAd,CAAA,QAAAW,UAAA,IAAAX,CAAA,QAAAU,WAAA,IAAAV,CAAA,QAAAE,MAAA,IAAAF,CAAA,QAAAa,oBAAA;IAEHC,EAAA,GAAAA,CAAA,KACrBD,oBAAA,OACLX,MAAA,CAAAa,IAAA,CACEnB,cAAA;MAAAe,UAAA;MAAAK,IAAA,EAEQN;IAAA,CACR;IAGNV,CAAA,MAAAW,UAAA;IAAAX,CAAA,MAAAU,WAAA;IAAAV,CAAA,MAAAE,MAAA;IAAAF,CAAA,MAAAa,oBAAA;IAAAb,CAAA,MAAAc,EAAA;EAAA;IAAAA,EAAA,GAAAd,CAAA;EAAA;EATA,MAAAiB,SAAA,GAAkBH,EASwC;EAAA,IAAAI,EAAA;EAAA,IAAAlB,CAAA,QAAAC,aAAA;IAEnBiB,EAAA,GAAAA,CAAA;MACrCjB,aAAA;IAAA;IACFD,CAAA,MAAAC,aAAA;IAAAD,CAAA,MAAAkB,EAAA;EAAA;IAAAA,EAAA,GAAAlB,CAAA;EAAA;EAFA,MAAAmB,QAAA,GAA2BD,EAET;EAAA,IAAAE,EAAA;EAAA,IAAApB,CAAA,QAAAmB,QAAA,IAAAnB,CAAA,QAAAiB,SAAA,IAAAjB,CAAA,QAAAY,CAAA;IAGhBQ,EAAA,GAAAC,IAAA,CAAAxB,iBAAA;MAAAyB,IAAA,EACQV,CAAA,CAAE;MAAAW,WAAA,EACKX,CAAA,CAAE;MAAAY,YAAA,EACDZ,CAAA,CAAE;MAAAa,OAAA,EACPb,CAAA,CAAE;MAAAc,SAAA,EAAA5B,qBAAA;MAAAqB,QAAA;MAAAF;IAAA,C;;;;;;;;SAJbG,E;CAUJ","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { I18nClient } from '@payloadcms/translations';
|
|
2
|
+
import type { ClientField, Column, DefaultCellComponentProps, ListPreferences, PaginatedDocs, Payload, SanitizedCollectionConfig } from 'payload';
|
|
3
|
+
import type { SortColumnProps } from '../SortColumn/index.js';
|
|
4
|
+
type Args = {
|
|
5
|
+
beforeRows?: Column[];
|
|
6
|
+
columnPreferences: ListPreferences['columns'];
|
|
7
|
+
columns?: ListPreferences['columns'];
|
|
8
|
+
customCellProps: DefaultCellComponentProps['customCellProps'];
|
|
9
|
+
docs: PaginatedDocs['docs'];
|
|
10
|
+
enableRowSelections: boolean;
|
|
11
|
+
enableRowTypes?: boolean;
|
|
12
|
+
fields: ClientField[];
|
|
13
|
+
i18n: I18nClient;
|
|
14
|
+
payload: Payload;
|
|
15
|
+
sortColumnProps?: Partial<SortColumnProps>;
|
|
16
|
+
useAsTitle: SanitizedCollectionConfig['admin']['useAsTitle'];
|
|
17
|
+
};
|
|
18
|
+
export declare const buildPolymorphicColumnState: (args: Args) => Column[];
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=buildPolymorphicColumnState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildPolymorphicColumnState.d.ts","sourceRoot":"","sources":["../../../src/elements/TableColumns/buildPolymorphicColumnState.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EACV,WAAW,EACX,MAAM,EACN,yBAAyB,EAGzB,eAAe,EACf,aAAa,EACb,OAAO,EACP,yBAAyB,EAE1B,MAAM,SAAS,CAAA;AAWhB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAW7D,KAAK,IAAI,GAAG;IACV,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,iBAAiB,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IAC7C,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IACpC,eAAe,EAAE,yBAAyB,CAAC,iBAAiB,CAAC,CAAA;IAC7D,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC3B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAC1C,UAAU,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;CAC7D,CAAA;AAED,eAAO,MAAM,2BAA2B,SAAU,IAAI,KAAG,MAAM,EA2P9D,CAAA"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
// Dirty copy of buildColumnState.tsx with some changes to not break things
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { MissingEditorProp } from 'payload';
|
|
4
|
+
import { fieldIsHiddenOrDisabled, fieldIsID, fieldIsPresentationalOnly, flattenTopLevelFields } from 'payload/shared';
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import { RenderCustomComponent, RenderDefaultCell, SortColumn } from '../../exports/client/index.js';
|
|
7
|
+
import { RenderServerComponent } from '../RenderServerComponent/index.js';
|
|
8
|
+
import { filterFields } from './filterFields.js';
|
|
9
|
+
export const buildPolymorphicColumnState = args => {
|
|
10
|
+
const {
|
|
11
|
+
beforeRows,
|
|
12
|
+
columnPreferences,
|
|
13
|
+
columns,
|
|
14
|
+
customCellProps,
|
|
15
|
+
docs,
|
|
16
|
+
enableRowSelections,
|
|
17
|
+
fields,
|
|
18
|
+
i18n,
|
|
19
|
+
payload,
|
|
20
|
+
sortColumnProps,
|
|
21
|
+
useAsTitle
|
|
22
|
+
} = args;
|
|
23
|
+
// clientFields contains the fake `id` column
|
|
24
|
+
let sortedFieldMap = flattenTopLevelFields(filterFields(fields), true);
|
|
25
|
+
let _sortedFieldMap = flattenTopLevelFields(filterFields(fields), true) // TODO: think of a way to avoid this additional flatten
|
|
26
|
+
;
|
|
27
|
+
// place the `ID` field first, if it exists
|
|
28
|
+
// do the same for the `useAsTitle` field with precedence over the `ID` field
|
|
29
|
+
// then sort the rest of the fields based on the `defaultColumns` or `columnPreferences`
|
|
30
|
+
const idFieldIndex = sortedFieldMap?.findIndex(field => fieldIsID(field));
|
|
31
|
+
if (idFieldIndex > -1) {
|
|
32
|
+
const idField = sortedFieldMap.splice(idFieldIndex, 1)[0];
|
|
33
|
+
sortedFieldMap.unshift(idField);
|
|
34
|
+
}
|
|
35
|
+
const useAsTitleFieldIndex = useAsTitle ? sortedFieldMap.findIndex(field => 'name' in field && field.name === useAsTitle) : -1;
|
|
36
|
+
if (useAsTitleFieldIndex > -1) {
|
|
37
|
+
const useAsTitleField = sortedFieldMap.splice(useAsTitleFieldIndex, 1)[0];
|
|
38
|
+
sortedFieldMap.unshift(useAsTitleField);
|
|
39
|
+
}
|
|
40
|
+
const sortTo = columnPreferences || columns;
|
|
41
|
+
const sortFieldMap = (fieldMap, sortTo) => fieldMap?.sort((a, b) => {
|
|
42
|
+
const aIndex = sortTo.findIndex(column => 'name' in a && column.accessor === a.name);
|
|
43
|
+
const bIndex = sortTo.findIndex(column => 'name' in b && column.accessor === b.name);
|
|
44
|
+
if (aIndex === -1 && bIndex === -1) {
|
|
45
|
+
return 0;
|
|
46
|
+
}
|
|
47
|
+
if (aIndex === -1) {
|
|
48
|
+
return 1;
|
|
49
|
+
}
|
|
50
|
+
if (bIndex === -1) {
|
|
51
|
+
return -1;
|
|
52
|
+
}
|
|
53
|
+
return aIndex - bIndex;
|
|
54
|
+
});
|
|
55
|
+
if (sortTo) {
|
|
56
|
+
// sort the fields to the order of `defaultColumns` or `columnPreferences`
|
|
57
|
+
sortedFieldMap = sortFieldMap(sortedFieldMap, sortTo);
|
|
58
|
+
_sortedFieldMap = sortFieldMap(_sortedFieldMap, sortTo) // TODO: think of a way to avoid this additional sort
|
|
59
|
+
;
|
|
60
|
+
}
|
|
61
|
+
const activeColumnsIndices = [];
|
|
62
|
+
const sorted = sortedFieldMap?.reduce((acc, field, index) => {
|
|
63
|
+
if (fieldIsHiddenOrDisabled(field) && !fieldIsID(field)) {
|
|
64
|
+
return acc;
|
|
65
|
+
}
|
|
66
|
+
const _field = _sortedFieldMap.find(f => 'name' in field && 'name' in f && f.name === field.name);
|
|
67
|
+
const columnPreference = columnPreferences?.find(preference => field && 'name' in field && preference.accessor === field.name);
|
|
68
|
+
let active = false;
|
|
69
|
+
if (columnPreference) {
|
|
70
|
+
active = columnPreference.active;
|
|
71
|
+
} else if (columns && Array.isArray(columns) && columns.length > 0) {
|
|
72
|
+
active = columns.find(column => field && 'name' in field && column.accessor === field.name)?.active;
|
|
73
|
+
} else if (activeColumnsIndices.length < 4) {
|
|
74
|
+
active = true;
|
|
75
|
+
}
|
|
76
|
+
if (active && !activeColumnsIndices.includes(index)) {
|
|
77
|
+
activeColumnsIndices.push(index);
|
|
78
|
+
}
|
|
79
|
+
// const CustomLabelToRender =
|
|
80
|
+
// _field &&
|
|
81
|
+
// 'admin' in _field &&
|
|
82
|
+
// 'components' in _field.admin &&
|
|
83
|
+
// 'Label' in _field.admin.components &&
|
|
84
|
+
// _field.admin.components.Label !== undefined // let it return `null`
|
|
85
|
+
// ? _field.admin.components.Label
|
|
86
|
+
// : undefined
|
|
87
|
+
// // TODO: customComponent will be optional in v4
|
|
88
|
+
// const clientProps: Omit<ClientComponentProps, 'customComponents'> = {
|
|
89
|
+
// field,
|
|
90
|
+
// }
|
|
91
|
+
// const customLabelServerProps: Pick<
|
|
92
|
+
// ServerComponentProps,
|
|
93
|
+
// 'clientField' | 'collectionSlug' | 'field' | 'i18n' | 'payload'
|
|
94
|
+
// > = {
|
|
95
|
+
// clientField: field,
|
|
96
|
+
// collectionSlug: collectionConfig.slug,
|
|
97
|
+
// field: _field,
|
|
98
|
+
// i18n,
|
|
99
|
+
// payload,
|
|
100
|
+
// }
|
|
101
|
+
const CustomLabel = undefined;
|
|
102
|
+
const fieldAffectsDataSubFields = field && field.type && (field.type === 'array' || field.type === 'group' || field.type === 'blocks');
|
|
103
|
+
const Heading = /*#__PURE__*/_jsx(SortColumn, {
|
|
104
|
+
disable: fieldAffectsDataSubFields || fieldIsPresentationalOnly(field) || undefined,
|
|
105
|
+
Label: CustomLabel,
|
|
106
|
+
label: field && 'label' in field ? field.label : undefined,
|
|
107
|
+
name: 'name' in field ? field.name : undefined,
|
|
108
|
+
...(sortColumnProps || {})
|
|
109
|
+
});
|
|
110
|
+
const column = {
|
|
111
|
+
accessor: 'name' in field ? field.name : undefined,
|
|
112
|
+
active,
|
|
113
|
+
CustomLabel,
|
|
114
|
+
field,
|
|
115
|
+
Heading,
|
|
116
|
+
renderedCells: active ? docs.map((doc, i) => {
|
|
117
|
+
const isLinkedColumn = index === activeColumnsIndices[0];
|
|
118
|
+
const collectionSlug = doc.relationTo;
|
|
119
|
+
doc = doc.value;
|
|
120
|
+
const baseCellClientProps = {
|
|
121
|
+
cellData: undefined,
|
|
122
|
+
collectionSlug,
|
|
123
|
+
customCellProps,
|
|
124
|
+
field,
|
|
125
|
+
rowData: undefined
|
|
126
|
+
};
|
|
127
|
+
const cellClientProps = {
|
|
128
|
+
...baseCellClientProps,
|
|
129
|
+
cellData: 'name' in field ? doc[field.name] : undefined,
|
|
130
|
+
link: isLinkedColumn,
|
|
131
|
+
rowData: doc
|
|
132
|
+
};
|
|
133
|
+
const cellServerProps = {
|
|
134
|
+
cellData: cellClientProps.cellData,
|
|
135
|
+
className: baseCellClientProps.className,
|
|
136
|
+
collectionConfig: payload.collections[collectionSlug].config,
|
|
137
|
+
collectionSlug,
|
|
138
|
+
columnIndex: baseCellClientProps.columnIndex,
|
|
139
|
+
customCellProps: baseCellClientProps.customCellProps,
|
|
140
|
+
field: _field,
|
|
141
|
+
i18n,
|
|
142
|
+
link: cellClientProps.link,
|
|
143
|
+
onClick: baseCellClientProps.onClick,
|
|
144
|
+
payload,
|
|
145
|
+
rowData: doc
|
|
146
|
+
};
|
|
147
|
+
let CustomCell = null;
|
|
148
|
+
if (_field?.type === 'richText') {
|
|
149
|
+
if (!_field?.editor) {
|
|
150
|
+
throw new MissingEditorProp(_field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor
|
|
151
|
+
;
|
|
152
|
+
}
|
|
153
|
+
if (typeof _field?.editor === 'function') {
|
|
154
|
+
throw new Error('Attempted to access unsanitized rich text editor.');
|
|
155
|
+
}
|
|
156
|
+
if (!_field.admin) {
|
|
157
|
+
_field.admin = {};
|
|
158
|
+
}
|
|
159
|
+
if (!_field.admin.components) {
|
|
160
|
+
_field.admin.components = {};
|
|
161
|
+
}
|
|
162
|
+
CustomCell = RenderServerComponent({
|
|
163
|
+
clientProps: cellClientProps,
|
|
164
|
+
Component: _field.editor.CellComponent,
|
|
165
|
+
importMap: payload.importMap,
|
|
166
|
+
serverProps: cellServerProps
|
|
167
|
+
});
|
|
168
|
+
} else {
|
|
169
|
+
const CustomCellComponent = _field?.admin?.components?.Cell;
|
|
170
|
+
if (CustomCellComponent) {
|
|
171
|
+
CustomCell = RenderServerComponent({
|
|
172
|
+
clientProps: cellClientProps,
|
|
173
|
+
Component: CustomCellComponent,
|
|
174
|
+
importMap: payload.importMap,
|
|
175
|
+
serverProps: cellServerProps
|
|
176
|
+
});
|
|
177
|
+
} else {
|
|
178
|
+
CustomCell = undefined;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return /*#__PURE__*/_jsx(RenderCustomComponent, {
|
|
182
|
+
CustomComponent: CustomCell,
|
|
183
|
+
Fallback: /*#__PURE__*/_jsx(RenderDefaultCell, {
|
|
184
|
+
clientProps: cellClientProps,
|
|
185
|
+
columnIndex: index,
|
|
186
|
+
enableRowSelections: enableRowSelections,
|
|
187
|
+
isLinkedColumn: isLinkedColumn
|
|
188
|
+
})
|
|
189
|
+
}, `${i}-${index}`);
|
|
190
|
+
}) : []
|
|
191
|
+
};
|
|
192
|
+
acc.push(column);
|
|
193
|
+
return acc;
|
|
194
|
+
}, []);
|
|
195
|
+
if (beforeRows) {
|
|
196
|
+
sorted.unshift(...beforeRows);
|
|
197
|
+
}
|
|
198
|
+
return sorted;
|
|
199
|
+
};
|
|
200
|
+
//# sourceMappingURL=buildPolymorphicColumnState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildPolymorphicColumnState.js","names":["MissingEditorProp","fieldIsHiddenOrDisabled","fieldIsID","fieldIsPresentationalOnly","flattenTopLevelFields","React","RenderCustomComponent","RenderDefaultCell","SortColumn","RenderServerComponent","filterFields","buildPolymorphicColumnState","args","beforeRows","columnPreferences","columns","customCellProps","docs","enableRowSelections","fields","i18n","payload","sortColumnProps","useAsTitle","sortedFieldMap","_sortedFieldMap","idFieldIndex","findIndex","field","idField","splice","unshift","useAsTitleFieldIndex","name","useAsTitleField","sortTo","sortFieldMap","fieldMap","sort","a","b","aIndex","column","accessor","bIndex","activeColumnsIndices","sorted","reduce","acc","index","_field","find","f","columnPreference","preference","active","Array","isArray","length","includes","push","CustomLabel","undefined","fieldAffectsDataSubFields","type","Heading","_jsx","disable","Label","label","renderedCells","map","doc","i","isLinkedColumn","collectionSlug","relationTo","value","baseCellClientProps","cellData","rowData","cellClientProps","link","cellServerProps","className","collectionConfig","collections","config","columnIndex","onClick","CustomCell","editor","Error","admin","components","clientProps","Component","CellComponent","importMap","serverProps","CustomCellComponent","Cell","CustomComponent","Fallback"],"sources":["../../../src/elements/TableColumns/buildPolymorphicColumnState.tsx"],"sourcesContent":["// Dirty copy of buildColumnState.tsx with some changes to not break things\n\nimport type { I18nClient } from '@payloadcms/translations'\nimport type {\n ClientField,\n Column,\n DefaultCellComponentProps,\n DefaultServerCellComponentProps,\n Field,\n ListPreferences,\n PaginatedDocs,\n Payload,\n SanitizedCollectionConfig,\n StaticLabel,\n} from 'payload'\n\nimport { MissingEditorProp } from 'payload'\nimport {\n fieldIsHiddenOrDisabled,\n fieldIsID,\n fieldIsPresentationalOnly,\n flattenTopLevelFields,\n} from 'payload/shared'\nimport React from 'react'\n\nimport type { SortColumnProps } from '../SortColumn/index.js'\n\nimport {\n RenderCustomComponent,\n RenderDefaultCell,\n SortColumn,\n // eslint-disable-next-line payload/no-imports-from-exports-dir\n} from '../../exports/client/index.js'\nimport { RenderServerComponent } from '../RenderServerComponent/index.js'\nimport { filterFields } from './filterFields.js'\n\ntype Args = {\n beforeRows?: Column[]\n columnPreferences: ListPreferences['columns']\n columns?: ListPreferences['columns']\n customCellProps: DefaultCellComponentProps['customCellProps']\n docs: PaginatedDocs['docs']\n enableRowSelections: boolean\n enableRowTypes?: boolean\n fields: ClientField[]\n i18n: I18nClient\n payload: Payload\n sortColumnProps?: Partial<SortColumnProps>\n useAsTitle: SanitizedCollectionConfig['admin']['useAsTitle']\n}\n\nexport const buildPolymorphicColumnState = (args: Args): Column[] => {\n const {\n beforeRows,\n columnPreferences,\n columns,\n customCellProps,\n docs,\n enableRowSelections,\n fields,\n i18n,\n payload,\n sortColumnProps,\n useAsTitle,\n } = args\n\n // clientFields contains the fake `id` column\n let sortedFieldMap = flattenTopLevelFields(filterFields(fields), true) as ClientField[]\n\n let _sortedFieldMap = flattenTopLevelFields(filterFields(fields), true) as Field[] // TODO: think of a way to avoid this additional flatten\n\n // place the `ID` field first, if it exists\n // do the same for the `useAsTitle` field with precedence over the `ID` field\n // then sort the rest of the fields based on the `defaultColumns` or `columnPreferences`\n const idFieldIndex = sortedFieldMap?.findIndex((field) => fieldIsID(field))\n\n if (idFieldIndex > -1) {\n const idField = sortedFieldMap.splice(idFieldIndex, 1)[0]\n sortedFieldMap.unshift(idField)\n }\n\n const useAsTitleFieldIndex = useAsTitle\n ? sortedFieldMap.findIndex((field) => 'name' in field && field.name === useAsTitle)\n : -1\n\n if (useAsTitleFieldIndex > -1) {\n const useAsTitleField = sortedFieldMap.splice(useAsTitleFieldIndex, 1)[0]\n sortedFieldMap.unshift(useAsTitleField)\n }\n\n const sortTo = columnPreferences || columns\n\n const sortFieldMap = (fieldMap, sortTo) =>\n fieldMap?.sort((a, b) => {\n const aIndex = sortTo.findIndex((column) => 'name' in a && column.accessor === a.name)\n const bIndex = sortTo.findIndex((column) => 'name' in b && column.accessor === b.name)\n\n if (aIndex === -1 && bIndex === -1) {\n return 0\n }\n\n if (aIndex === -1) {\n return 1\n }\n\n if (bIndex === -1) {\n return -1\n }\n\n return aIndex - bIndex\n })\n\n if (sortTo) {\n // sort the fields to the order of `defaultColumns` or `columnPreferences`\n sortedFieldMap = sortFieldMap(sortedFieldMap, sortTo)\n _sortedFieldMap = sortFieldMap(_sortedFieldMap, sortTo) // TODO: think of a way to avoid this additional sort\n }\n\n const activeColumnsIndices = []\n\n const sorted: Column[] = sortedFieldMap?.reduce((acc, field, index) => {\n if (fieldIsHiddenOrDisabled(field) && !fieldIsID(field)) {\n return acc\n }\n\n const _field = _sortedFieldMap.find(\n (f) => 'name' in field && 'name' in f && f.name === field.name,\n )\n\n const columnPreference = columnPreferences?.find(\n (preference) => field && 'name' in field && preference.accessor === field.name,\n )\n\n let active = false\n\n if (columnPreference) {\n active = columnPreference.active\n } else if (columns && Array.isArray(columns) && columns.length > 0) {\n active = columns.find(\n (column) => field && 'name' in field && column.accessor === field.name,\n )?.active\n } else if (activeColumnsIndices.length < 4) {\n active = true\n }\n\n if (active && !activeColumnsIndices.includes(index)) {\n activeColumnsIndices.push(index)\n }\n\n // const CustomLabelToRender =\n // _field &&\n // 'admin' in _field &&\n // 'components' in _field.admin &&\n // 'Label' in _field.admin.components &&\n // _field.admin.components.Label !== undefined // let it return `null`\n // ? _field.admin.components.Label\n // : undefined\n\n // // TODO: customComponent will be optional in v4\n // const clientProps: Omit<ClientComponentProps, 'customComponents'> = {\n // field,\n // }\n\n // const customLabelServerProps: Pick<\n // ServerComponentProps,\n // 'clientField' | 'collectionSlug' | 'field' | 'i18n' | 'payload'\n // > = {\n // clientField: field,\n // collectionSlug: collectionConfig.slug,\n // field: _field,\n // i18n,\n // payload,\n // }\n\n const CustomLabel = undefined\n\n const fieldAffectsDataSubFields =\n field &&\n field.type &&\n (field.type === 'array' || field.type === 'group' || field.type === 'blocks')\n\n const Heading = (\n <SortColumn\n disable={fieldAffectsDataSubFields || fieldIsPresentationalOnly(field) || undefined}\n Label={CustomLabel}\n label={field && 'label' in field ? (field.label as StaticLabel) : undefined}\n name={'name' in field ? field.name : undefined}\n {...(sortColumnProps || {})}\n />\n )\n\n const column: Column = {\n accessor: 'name' in field ? field.name : undefined,\n active,\n CustomLabel,\n field,\n Heading,\n renderedCells: active\n ? docs.map((doc, i) => {\n const isLinkedColumn = index === activeColumnsIndices[0]\n\n const collectionSlug = doc.relationTo\n doc = doc.value\n\n const baseCellClientProps: DefaultCellComponentProps = {\n cellData: undefined,\n collectionSlug,\n customCellProps,\n field,\n rowData: undefined,\n }\n\n const cellClientProps: DefaultCellComponentProps = {\n ...baseCellClientProps,\n cellData: 'name' in field ? doc[field.name] : undefined,\n link: isLinkedColumn,\n rowData: doc,\n }\n\n const cellServerProps: DefaultServerCellComponentProps = {\n cellData: cellClientProps.cellData,\n className: baseCellClientProps.className,\n collectionConfig: payload.collections[collectionSlug].config,\n collectionSlug,\n columnIndex: baseCellClientProps.columnIndex,\n customCellProps: baseCellClientProps.customCellProps,\n field: _field,\n i18n,\n link: cellClientProps.link,\n onClick: baseCellClientProps.onClick,\n payload,\n rowData: doc,\n }\n\n let CustomCell = null\n\n if (_field?.type === 'richText') {\n if (!_field?.editor) {\n throw new MissingEditorProp(_field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n\n if (typeof _field?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n if (!_field.admin) {\n _field.admin = {}\n }\n\n if (!_field.admin.components) {\n _field.admin.components = {}\n }\n\n CustomCell = RenderServerComponent({\n clientProps: cellClientProps,\n Component: _field.editor.CellComponent,\n importMap: payload.importMap,\n serverProps: cellServerProps,\n })\n } else {\n const CustomCellComponent = _field?.admin?.components?.Cell\n\n if (CustomCellComponent) {\n CustomCell = RenderServerComponent({\n clientProps: cellClientProps,\n Component: CustomCellComponent,\n importMap: payload.importMap,\n serverProps: cellServerProps,\n })\n } else {\n CustomCell = undefined\n }\n }\n\n return (\n <RenderCustomComponent\n CustomComponent={CustomCell}\n Fallback={\n <RenderDefaultCell\n clientProps={cellClientProps}\n columnIndex={index}\n enableRowSelections={enableRowSelections}\n isLinkedColumn={isLinkedColumn}\n />\n }\n key={`${i}-${index}`}\n />\n )\n })\n : [],\n }\n\n acc.push(column)\n\n return acc\n }, [])\n\n if (beforeRows) {\n sorted.unshift(...beforeRows)\n }\n\n return sorted\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -16,7 +16,7 @@ export declare const TableColumnContext: React.Context<ITableColumns>;
|
|
|
16
16
|
export declare const useTableColumns: () => ITableColumns;
|
|
17
17
|
type Props = {
|
|
18
18
|
readonly children: React.ReactNode;
|
|
19
|
-
readonly collectionSlug: string;
|
|
19
|
+
readonly collectionSlug: string | string[];
|
|
20
20
|
readonly columnState: Column[];
|
|
21
21
|
readonly docs: any[];
|
|
22
22
|
readonly enableRowSelections?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/TableColumns/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAA6B,MAAM,SAAS,CAAA;AAEjF,OAAO,KAA4D,MAAM,OAAO,CAAA;AAEhF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAO7D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACpC,UAAU,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3E,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACtC,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAChD;AAED,eAAO,MAAM,kBAAkB,8BAAoD,CAAA;AAEnF,eAAO,MAAM,eAAe,QAAO,aAA+C,CAAA;AAElF,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/TableColumns/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAA6B,MAAM,SAAS,CAAA;AAEjF,OAAO,KAA4D,MAAM,OAAO,CAAA;AAEhF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAO7D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACpC,UAAU,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3E,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACtC,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAChD;AAED,eAAO,MAAM,kBAAkB,8BAAoD,CAAA;AAEnF,eAAO,MAAM,eAAe,QAAO,aAA+C,CAAA;AAElF,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAA;IAC9B,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAA;IACpB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7C,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAA;IAC1C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAA;IACnD,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IACnD,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CACnD,CAAA;AAUD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA4PhD,CAAA"}
|
|
@@ -49,7 +49,7 @@ export const TableColumnsProvider = ({
|
|
|
49
49
|
} = getEntityConfig({
|
|
50
50
|
collectionSlug
|
|
51
51
|
});
|
|
52
|
-
const prevCollection = React.useRef(collectionSlug);
|
|
52
|
+
const prevCollection = React.useRef(Array.isArray(collectionSlug) ? collectionSlug[0] : collectionSlug);
|
|
53
53
|
const {
|
|
54
54
|
getPreference
|
|
55
55
|
} = usePreferences();
|
|
@@ -161,10 +161,11 @@ export const TableColumnsProvider = ({
|
|
|
161
161
|
// //////////////////////////////////////////////
|
|
162
162
|
React.useEffect(() => {
|
|
163
163
|
const sync = async () => {
|
|
164
|
-
const
|
|
164
|
+
const defaultCollection = Array.isArray(collectionSlug) ? collectionSlug[0] : collectionSlug;
|
|
165
|
+
const collectionHasChanged = prevCollection.current !== defaultCollection;
|
|
165
166
|
if (collectionHasChanged || !listPreferences) {
|
|
166
167
|
const currentPreferences = await getPreference(preferenceKey);
|
|
167
|
-
prevCollection.current =
|
|
168
|
+
prevCollection.current = defaultCollection;
|
|
168
169
|
if (currentPreferences?.columns) {
|
|
169
170
|
// setTableColumns()
|
|
170
171
|
// buildColumnState({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","createContext","useCallback","useContext","useEffect","useConfig","usePreferences","useServerFunctions","abortAndIgnore","handleAbortRef","TableColumnContext","useTableColumns","sanitizeColumns","columns","map","accessor","active","TableColumnsProvider","children","collectionSlug","columnState","docs","enableRowSelections","LinkedCellOverride","listPreferences","preferenceKey","renderRowTypes","setTable","sortColumnProps","tableAppearance","getEntityConfig","getTableState","admin","defaultColumns","useAsTitle","fields","prevCollection","useRef","getPreference","tableColumns","setTableColumns","useState","abortTableStateRef","abortToggleColumnRef","moveColumn","args","controller","fromIndex","toIndex","withMovedColumn","columnToMove","splice","result","signal","state","Table","current","toggleColumn","column","newColumnState","toggledColumns","reduce","acc","col","push","setActiveColumns","activeColumnAccessors","activeColumns","includes","sort","first","second","indexOfFirst","indexOf","indexOfSecond","resetColumnsState","sync","collectionHasChanged","currentPreferences","abortTableState","_jsx","Provider","value"],"sources":["../../../src/elements/TableColumns/index.tsx"],"sourcesContent":["'use client'\nimport type { Column, ListPreferences, SanitizedCollectionConfig } from 'payload'\n\nimport React, { createContext, useCallback, useContext, useEffect } from 'react'\n\nimport type { SortColumnProps } from '../SortColumn/index.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\n\nexport interface ITableColumns {\n columns: Column[]\n LinkedCellOverride?: React.ReactNode\n moveColumn: (args: { fromIndex: number; toIndex: number }) => Promise<void>\n resetColumnsState: () => Promise<void>\n setActiveColumns: (columns: string[]) => Promise<void>\n toggleColumn: (column: string) => Promise<void>\n}\n\nexport const TableColumnContext = createContext<ITableColumns>({} as ITableColumns)\n\nexport const useTableColumns = (): ITableColumns => useContext(TableColumnContext)\n\ntype Props = {\n readonly children: React.ReactNode\n readonly collectionSlug: string\n readonly columnState: Column[]\n readonly docs: any[]\n readonly enableRowSelections?: boolean\n readonly LinkedCellOverride?: React.ReactNode\n readonly listPreferences?: ListPreferences\n readonly preferenceKey: string\n readonly renderRowTypes?: boolean\n readonly setTable: (Table: React.ReactNode) => void\n readonly sortColumnProps?: Partial<SortColumnProps>\n readonly tableAppearance?: 'condensed' | 'default'\n}\n\n// strip out Heading, Label, and renderedCells properties, they cannot be sent to the server\nconst sanitizeColumns = (columns: Column[]) => {\n return columns.map(({ accessor, active }) => ({\n accessor,\n active,\n }))\n}\n\nexport const TableColumnsProvider: React.FC<Props> = ({\n children,\n collectionSlug,\n columnState,\n docs,\n enableRowSelections,\n LinkedCellOverride,\n listPreferences,\n preferenceKey,\n renderRowTypes,\n setTable,\n sortColumnProps,\n tableAppearance,\n}) => {\n const { getEntityConfig } = useConfig()\n\n const { getTableState } = useServerFunctions()\n\n const { admin: { defaultColumns, useAsTitle } = {}, fields } = getEntityConfig({\n collectionSlug,\n })\n\n const prevCollection = React.useRef<SanitizedCollectionConfig['slug']>(collectionSlug)\n const { getPreference } = usePreferences()\n\n const [tableColumns, setTableColumns] = React.useState(columnState)\n const abortTableStateRef = React.useRef<AbortController>(null)\n const abortToggleColumnRef = React.useRef<AbortController>(null)\n\n const moveColumn = useCallback(\n async (args: { fromIndex: number; toIndex: number }) => {\n const controller = handleAbortRef(abortTableStateRef)\n\n const { fromIndex, toIndex } = args\n const withMovedColumn = [...tableColumns]\n const [columnToMove] = withMovedColumn.splice(fromIndex, 1)\n withMovedColumn.splice(toIndex, 0, columnToMove)\n\n setTableColumns(withMovedColumn)\n\n const result = await getTableState({\n collectionSlug,\n columns: sanitizeColumns(withMovedColumn),\n docs,\n enableRowSelections,\n renderRowTypes,\n signal: controller.signal,\n tableAppearance,\n })\n\n if (result) {\n setTableColumns(result.state)\n setTable(result.Table)\n }\n\n abortTableStateRef.current = null\n },\n [\n tableColumns,\n collectionSlug,\n docs,\n getTableState,\n setTable,\n enableRowSelections,\n renderRowTypes,\n tableAppearance,\n ],\n )\n\n const toggleColumn = useCallback(\n async (column: string) => {\n const controller = handleAbortRef(abortToggleColumnRef)\n\n const { newColumnState, toggledColumns } = tableColumns.reduce<{\n newColumnState: Column[]\n toggledColumns: Pick<Column, 'accessor' | 'active'>[]\n }>(\n (acc, col) => {\n if (col.accessor === column) {\n acc.newColumnState.push({\n ...col,\n accessor: col.accessor,\n active: !col.active,\n })\n acc.toggledColumns.push({\n accessor: col.accessor,\n active: !col.active,\n })\n } else {\n acc.newColumnState.push(col)\n acc.toggledColumns.push({\n accessor: col.accessor,\n active: col.active,\n })\n }\n\n return acc\n },\n { newColumnState: [], toggledColumns: [] },\n )\n\n setTableColumns(newColumnState)\n\n const result = await getTableState({\n collectionSlug,\n columns: toggledColumns,\n docs,\n enableRowSelections,\n renderRowTypes,\n signal: controller.signal,\n tableAppearance,\n })\n\n if (result) {\n setTableColumns(result.state)\n setTable(result.Table)\n }\n\n abortToggleColumnRef.current = null\n },\n [\n tableColumns,\n getTableState,\n setTable,\n collectionSlug,\n docs,\n enableRowSelections,\n renderRowTypes,\n tableAppearance,\n ],\n )\n\n const setActiveColumns = React.useCallback(\n async (activeColumnAccessors: string[]) => {\n const activeColumns: Pick<Column, 'accessor' | 'active'>[] = tableColumns\n .map((col) => {\n return {\n accessor: col.accessor,\n active: activeColumnAccessors.includes(col.accessor),\n }\n })\n .sort((first, second) => {\n const indexOfFirst = activeColumnAccessors.indexOf(first.accessor)\n const indexOfSecond = activeColumnAccessors.indexOf(second.accessor)\n\n if (indexOfFirst === -1 || indexOfSecond === -1) {\n return 0\n }\n\n return indexOfFirst > indexOfSecond ? 1 : -1\n })\n\n const { state: columnState, Table } = await getTableState({\n collectionSlug,\n columns: activeColumns,\n docs,\n enableRowSelections,\n renderRowTypes,\n tableAppearance,\n })\n\n setTableColumns(columnState)\n setTable(Table)\n },\n [\n tableColumns,\n getTableState,\n setTable,\n collectionSlug,\n docs,\n enableRowSelections,\n renderRowTypes,\n tableAppearance,\n ],\n )\n\n const resetColumnsState = React.useCallback(async () => {\n await setActiveColumns(defaultColumns)\n }, [defaultColumns, setActiveColumns])\n\n // //////////////////////////////////////////////\n // Get preferences on collection change (drawers)\n // //////////////////////////////////////////////\n\n React.useEffect(() => {\n const sync = async () => {\n const collectionHasChanged = prevCollection.current !== collectionSlug\n\n if (collectionHasChanged || !listPreferences) {\n const currentPreferences = await getPreference<{\n columns: ListPreferences['columns']\n }>(preferenceKey)\n\n prevCollection.current = collectionSlug\n\n if (currentPreferences?.columns) {\n // setTableColumns()\n // buildColumnState({\n // beforeRows,\n // columnPreferences: currentPreferences?.columns,\n // columns: initialColumns,\n // enableRowSelections,\n // fields,\n // sortColumnProps,\n // useAsTitle,\n // }),\n }\n }\n }\n\n void sync()\n }, [\n preferenceKey,\n getPreference,\n collectionSlug,\n fields,\n defaultColumns,\n useAsTitle,\n listPreferences,\n enableRowSelections,\n sortColumnProps,\n ])\n\n useEffect(() => {\n setTableColumns(columnState)\n }, [columnState])\n\n useEffect(() => {\n const abortTableState = abortTableStateRef.current\n\n return () => {\n abortAndIgnore(abortTableState)\n }\n }, [])\n\n return (\n <TableColumnContext.Provider\n value={{\n columns: tableColumns,\n LinkedCellOverride,\n moveColumn,\n resetColumnsState,\n setActiveColumns,\n toggleColumn,\n }}\n >\n {children}\n </TableColumnContext.Provider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","createContext","useCallback","useContext","useEffect","useConfig","usePreferences","useServerFunctions","abortAndIgnore","handleAbortRef","TableColumnContext","useTableColumns","sanitizeColumns","columns","map","accessor","active","TableColumnsProvider","children","collectionSlug","columnState","docs","enableRowSelections","LinkedCellOverride","listPreferences","preferenceKey","renderRowTypes","setTable","sortColumnProps","tableAppearance","getEntityConfig","getTableState","admin","defaultColumns","useAsTitle","fields","prevCollection","useRef","Array","isArray","getPreference","tableColumns","setTableColumns","useState","abortTableStateRef","abortToggleColumnRef","moveColumn","args","controller","fromIndex","toIndex","withMovedColumn","columnToMove","splice","result","signal","state","Table","current","toggleColumn","column","newColumnState","toggledColumns","reduce","acc","col","push","setActiveColumns","activeColumnAccessors","activeColumns","includes","sort","first","second","indexOfFirst","indexOf","indexOfSecond","resetColumnsState","sync","defaultCollection","collectionHasChanged","currentPreferences","abortTableState","_jsx","Provider","value"],"sources":["../../../src/elements/TableColumns/index.tsx"],"sourcesContent":["'use client'\nimport type { Column, ListPreferences, SanitizedCollectionConfig } from 'payload'\n\nimport React, { createContext, useCallback, useContext, useEffect } from 'react'\n\nimport type { SortColumnProps } from '../SortColumn/index.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\n\nexport interface ITableColumns {\n columns: Column[]\n LinkedCellOverride?: React.ReactNode\n moveColumn: (args: { fromIndex: number; toIndex: number }) => Promise<void>\n resetColumnsState: () => Promise<void>\n setActiveColumns: (columns: string[]) => Promise<void>\n toggleColumn: (column: string) => Promise<void>\n}\n\nexport const TableColumnContext = createContext<ITableColumns>({} as ITableColumns)\n\nexport const useTableColumns = (): ITableColumns => useContext(TableColumnContext)\n\ntype Props = {\n readonly children: React.ReactNode\n readonly collectionSlug: string | string[]\n readonly columnState: Column[]\n readonly docs: any[]\n readonly enableRowSelections?: boolean\n readonly LinkedCellOverride?: React.ReactNode\n readonly listPreferences?: ListPreferences\n readonly preferenceKey: string\n readonly renderRowTypes?: boolean\n readonly setTable: (Table: React.ReactNode) => void\n readonly sortColumnProps?: Partial<SortColumnProps>\n readonly tableAppearance?: 'condensed' | 'default'\n}\n\n// strip out Heading, Label, and renderedCells properties, they cannot be sent to the server\nconst sanitizeColumns = (columns: Column[]) => {\n return columns.map(({ accessor, active }) => ({\n accessor,\n active,\n }))\n}\n\nexport const TableColumnsProvider: React.FC<Props> = ({\n children,\n collectionSlug,\n columnState,\n docs,\n enableRowSelections,\n LinkedCellOverride,\n listPreferences,\n preferenceKey,\n renderRowTypes,\n setTable,\n sortColumnProps,\n tableAppearance,\n}) => {\n const { getEntityConfig } = useConfig()\n\n const { getTableState } = useServerFunctions()\n\n const { admin: { defaultColumns, useAsTitle } = {}, fields } = getEntityConfig({\n collectionSlug,\n })\n\n const prevCollection = React.useRef<SanitizedCollectionConfig['slug']>(\n Array.isArray(collectionSlug) ? collectionSlug[0] : collectionSlug,\n )\n const { getPreference } = usePreferences()\n\n const [tableColumns, setTableColumns] = React.useState(columnState)\n const abortTableStateRef = React.useRef<AbortController>(null)\n const abortToggleColumnRef = React.useRef<AbortController>(null)\n\n const moveColumn = useCallback(\n async (args: { fromIndex: number; toIndex: number }) => {\n const controller = handleAbortRef(abortTableStateRef)\n\n const { fromIndex, toIndex } = args\n const withMovedColumn = [...tableColumns]\n const [columnToMove] = withMovedColumn.splice(fromIndex, 1)\n withMovedColumn.splice(toIndex, 0, columnToMove)\n\n setTableColumns(withMovedColumn)\n\n const result = await getTableState({\n collectionSlug,\n columns: sanitizeColumns(withMovedColumn),\n docs,\n enableRowSelections,\n renderRowTypes,\n signal: controller.signal,\n tableAppearance,\n })\n\n if (result) {\n setTableColumns(result.state)\n setTable(result.Table)\n }\n\n abortTableStateRef.current = null\n },\n [\n tableColumns,\n collectionSlug,\n docs,\n getTableState,\n setTable,\n enableRowSelections,\n renderRowTypes,\n tableAppearance,\n ],\n )\n\n const toggleColumn = useCallback(\n async (column: string) => {\n const controller = handleAbortRef(abortToggleColumnRef)\n\n const { newColumnState, toggledColumns } = tableColumns.reduce<{\n newColumnState: Column[]\n toggledColumns: Pick<Column, 'accessor' | 'active'>[]\n }>(\n (acc, col) => {\n if (col.accessor === column) {\n acc.newColumnState.push({\n ...col,\n accessor: col.accessor,\n active: !col.active,\n })\n acc.toggledColumns.push({\n accessor: col.accessor,\n active: !col.active,\n })\n } else {\n acc.newColumnState.push(col)\n acc.toggledColumns.push({\n accessor: col.accessor,\n active: col.active,\n })\n }\n\n return acc\n },\n { newColumnState: [], toggledColumns: [] },\n )\n\n setTableColumns(newColumnState)\n\n const result = await getTableState({\n collectionSlug,\n columns: toggledColumns,\n docs,\n enableRowSelections,\n renderRowTypes,\n signal: controller.signal,\n tableAppearance,\n })\n\n if (result) {\n setTableColumns(result.state)\n setTable(result.Table)\n }\n\n abortToggleColumnRef.current = null\n },\n [\n tableColumns,\n getTableState,\n setTable,\n collectionSlug,\n docs,\n enableRowSelections,\n renderRowTypes,\n tableAppearance,\n ],\n )\n\n const setActiveColumns = React.useCallback(\n async (activeColumnAccessors: string[]) => {\n const activeColumns: Pick<Column, 'accessor' | 'active'>[] = tableColumns\n .map((col) => {\n return {\n accessor: col.accessor,\n active: activeColumnAccessors.includes(col.accessor),\n }\n })\n .sort((first, second) => {\n const indexOfFirst = activeColumnAccessors.indexOf(first.accessor)\n const indexOfSecond = activeColumnAccessors.indexOf(second.accessor)\n\n if (indexOfFirst === -1 || indexOfSecond === -1) {\n return 0\n }\n\n return indexOfFirst > indexOfSecond ? 1 : -1\n })\n\n const { state: columnState, Table } = await getTableState({\n collectionSlug,\n columns: activeColumns,\n docs,\n enableRowSelections,\n renderRowTypes,\n tableAppearance,\n })\n\n setTableColumns(columnState)\n setTable(Table)\n },\n [\n tableColumns,\n getTableState,\n setTable,\n collectionSlug,\n docs,\n enableRowSelections,\n renderRowTypes,\n tableAppearance,\n ],\n )\n\n const resetColumnsState = React.useCallback(async () => {\n await setActiveColumns(defaultColumns)\n }, [defaultColumns, setActiveColumns])\n\n // //////////////////////////////////////////////\n // Get preferences on collection change (drawers)\n // //////////////////////////////////////////////\n\n React.useEffect(() => {\n const sync = async () => {\n const defaultCollection = Array.isArray(collectionSlug) ? collectionSlug[0] : collectionSlug\n const collectionHasChanged = prevCollection.current !== defaultCollection\n\n if (collectionHasChanged || !listPreferences) {\n const currentPreferences = await getPreference<{\n columns: ListPreferences['columns']\n }>(preferenceKey)\n\n prevCollection.current = defaultCollection\n\n if (currentPreferences?.columns) {\n // setTableColumns()\n // buildColumnState({\n // beforeRows,\n // columnPreferences: currentPreferences?.columns,\n // columns: initialColumns,\n // enableRowSelections,\n // fields,\n // sortColumnProps,\n // useAsTitle,\n // }),\n }\n }\n }\n\n void sync()\n }, [\n preferenceKey,\n getPreference,\n collectionSlug,\n fields,\n defaultColumns,\n useAsTitle,\n listPreferences,\n enableRowSelections,\n sortColumnProps,\n ])\n\n useEffect(() => {\n setTableColumns(columnState)\n }, [columnState])\n\n useEffect(() => {\n const abortTableState = abortTableStateRef.current\n\n return () => {\n abortAndIgnore(abortTableState)\n }\n }, [])\n\n return (\n <TableColumnContext.Provider\n value={{\n columns: tableColumns,\n LinkedCellOverride,\n moveColumn,\n resetColumnsState,\n setActiveColumns,\n toggleColumn,\n }}\n >\n {children}\n </TableColumnContext.Provider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/UnpublishMany/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/UnpublishMany/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAMrD,OAAO,KAAsB,MAAM,OAAO,CAAA;AAa1C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,sBAAsB,CAAA;CACnC,CAAA;AAID,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA2HtD,CAAA"}
|
|
@@ -1,23 +1,22 @@
|
|
|
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
|
+
import { toast } from 'sonner';
|
|
9
10
|
import { useAuth } from '../../providers/Auth/index.js';
|
|
10
11
|
import { useConfig } from '../../providers/Config/index.js';
|
|
11
12
|
import { useRouteCache } from '../../providers/RouteCache/index.js';
|
|
12
13
|
import { SelectAllStatus, useSelection } from '../../providers/Selection/index.js';
|
|
13
14
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
14
15
|
import { requests } from '../../utilities/api.js';
|
|
15
|
-
import {
|
|
16
|
+
import { parseSearchParams } from '../../utilities/parseSearchParams.js';
|
|
17
|
+
import { ConfirmationModal } from '../ConfirmationModal/index.js';
|
|
16
18
|
import { Pill } from '../Pill/index.js';
|
|
17
|
-
import './index.scss';
|
|
18
19
|
const baseClass = 'unpublish-many';
|
|
19
|
-
import { toast } from 'sonner';
|
|
20
|
-
import { parseSearchParams } from '../../utilities/parseSearchParams.js';
|
|
21
20
|
export const UnpublishMany = props => {
|
|
22
21
|
const {
|
|
23
22
|
collection: {
|
|
@@ -52,7 +51,6 @@ export const UnpublishMany = props => {
|
|
|
52
51
|
getQueryParams,
|
|
53
52
|
selectAll
|
|
54
53
|
} = useSelection();
|
|
55
|
-
const [submitted, setSubmitted] = useState(false);
|
|
56
54
|
const router = useRouter();
|
|
57
55
|
const {
|
|
58
56
|
clearRouteCache
|
|
@@ -64,7 +62,6 @@ export const UnpublishMany = props => {
|
|
|
64
62
|
toast.error(t('error:unknown'));
|
|
65
63
|
}, [t]);
|
|
66
64
|
const handleUnpublish = useCallback(async () => {
|
|
67
|
-
setSubmitted(true);
|
|
68
65
|
await requests.patch(`${serverURL}${api}/${slug}${getQueryParams({
|
|
69
66
|
_status: {
|
|
70
67
|
not_equals: 'draft'
|
|
@@ -80,7 +77,6 @@ export const UnpublishMany = props => {
|
|
|
80
77
|
}).then(async res => {
|
|
81
78
|
try {
|
|
82
79
|
const json = await res.json();
|
|
83
|
-
toggleModal(modalSlug);
|
|
84
80
|
const deletedDocs = json?.docs.length || 0;
|
|
85
81
|
const successLabel = deletedDocs > 1 ? plural : singular;
|
|
86
82
|
if (res.status < 400 || deletedDocs > 0) {
|
|
@@ -113,7 +109,7 @@ export const UnpublishMany = props => {
|
|
|
113
109
|
return addDefaultError();
|
|
114
110
|
}
|
|
115
111
|
});
|
|
116
|
-
}, [serverURL, api, slug, getQueryParams, i18n,
|
|
112
|
+
}, [serverURL, api, slug, getQueryParams, i18n, plural, singular, t, router, searchParams, selectAll, clearRouteCache, addDefaultError]);
|
|
117
113
|
if (!versions?.drafts || selectAll === SelectAllStatus.None || !hasPermission) {
|
|
118
114
|
return null;
|
|
119
115
|
}
|
|
@@ -121,41 +117,17 @@ export const UnpublishMany = props => {
|
|
|
121
117
|
children: [/*#__PURE__*/_jsx(Pill, {
|
|
122
118
|
className: `${baseClass}__toggle`,
|
|
123
119
|
onClick: () => {
|
|
124
|
-
setSubmitted(false);
|
|
125
120
|
toggleModal(modalSlug);
|
|
126
121
|
},
|
|
127
122
|
children: t('version:unpublish')
|
|
128
|
-
}), /*#__PURE__*/_jsx(
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
children: t('version:confirmUnpublish')
|
|
137
|
-
}), /*#__PURE__*/_jsx("p", {
|
|
138
|
-
children: t('version:aboutToUnpublishSelection', {
|
|
139
|
-
label: getTranslation(plural, i18n)
|
|
140
|
-
})
|
|
141
|
-
})]
|
|
142
|
-
}), /*#__PURE__*/_jsxs("div", {
|
|
143
|
-
className: `${baseClass}__controls`,
|
|
144
|
-
children: [/*#__PURE__*/_jsx(Button, {
|
|
145
|
-
buttonStyle: "secondary",
|
|
146
|
-
id: "confirm-cancel",
|
|
147
|
-
onClick: submitted ? undefined : () => toggleModal(modalSlug),
|
|
148
|
-
size: "large",
|
|
149
|
-
type: "button",
|
|
150
|
-
children: t('general:cancel')
|
|
151
|
-
}), /*#__PURE__*/_jsx(Button, {
|
|
152
|
-
id: "confirm-unpublish",
|
|
153
|
-
onClick: submitted ? undefined : handleUnpublish,
|
|
154
|
-
size: "large",
|
|
155
|
-
children: submitted ? t('version:unpublishing') : t('general:confirm')
|
|
156
|
-
})]
|
|
157
|
-
})]
|
|
158
|
-
})
|
|
123
|
+
}), /*#__PURE__*/_jsx(ConfirmationModal, {
|
|
124
|
+
body: t('version:aboutToUnpublishSelection', {
|
|
125
|
+
label: getTranslation(plural, i18n)
|
|
126
|
+
}),
|
|
127
|
+
confirmingLabel: t('version:unpublishing'),
|
|
128
|
+
heading: t('version:confirmUnpublish'),
|
|
129
|
+
modalSlug: modalSlug,
|
|
130
|
+
onConfirm: handleUnpublish
|
|
159
131
|
})]
|
|
160
132
|
});
|
|
161
133
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Modal","useModal","getTranslation","useRouter","useSearchParams","qs","React","useCallback","useState","useAuth","useConfig","useRouteCache","SelectAllStatus","useSelection","useTranslation","requests","Button","Pill","baseClass","toast","parseSearchParams","UnpublishMany","props","collection","slug","labels","plural","singular","versions","config","routes","api","serverURL","permissions","toggleModal","i18n","t","searchParams","getQueryParams","selectAll","submitted","setSubmitted","router","clearRouteCache","collectionPermissions","collections","hasPermission","update","modalSlug","addDefaultError","error","handleUnpublish","patch","_status","not_equals","body","JSON","stringify","headers","language","then","res","json","deletedDocs","docs","length","successLabel","status","success","count","label","errors","message","description","map","join","replace","page","undefined","addQueryPrefix","forEach","_err","drafts","None","_jsxs","Fragment","_jsx","className","onClick","buttonStyle","id","size","type"],"sources":["../../../src/elements/UnpublishMany/index.tsx"],"sourcesContent":["'use client'\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'\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 { Button } from '../Button/index.js'\nimport { Pill } from '../Pill/index.js'\nimport './index.scss'\n\nconst baseClass = 'unpublish-many'\n\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { toast } from 'sonner'\n\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\n\nexport type UnpublishManyProps = {\n collection: ClientCollectionConfig\n}\n\nexport const UnpublishMany: React.FC<UnpublishManyProps> = (props) => {\n const { collection: { slug, labels: { plural, singular }, versions } = {} } = props\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { permissions } = useAuth()\n const { toggleModal } = useModal()\n const { i18n, t } = useTranslation()\n const searchParams = useSearchParams()\n const { getQueryParams, selectAll } = useSelection()\n const [submitted, setSubmitted] = useState(false)\n const router = useRouter()\n const { clearRouteCache } = useRouteCache()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasPermission = collectionPermissions?.update\n\n const modalSlug = `unpublish-${slug}`\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:unknown'))\n }, [t])\n\n const handleUnpublish = useCallback(async () => {\n setSubmitted(true)\n await requests\n .patch(`${serverURL}${api}/${slug}${getQueryParams({ _status: { not_equals: 'draft' } })}`, {\n body: JSON.stringify({\n _status: 'draft',\n }),\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:updatedCountSuccessfully', {\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 router.replace(\n qs.stringify(\n {\n ...parseSearchParams(searchParams),\n page: selectAll ? '1' : undefined,\n },\n { addQueryPrefix: true },\n ),\n )\n\n clearRouteCache() // Use clearRouteCache instead of router.refresh, as we only need to clear the cache if the user has route caching enabled - clearRouteCache checks for this\n return null\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n return false\n } catch (_err) {\n return addDefaultError()\n }\n })\n }, [\n serverURL,\n api,\n slug,\n getQueryParams,\n i18n,\n toggleModal,\n modalSlug,\n plural,\n singular,\n t,\n router,\n searchParams,\n selectAll,\n clearRouteCache,\n addDefaultError,\n ])\n\n if (!versions?.drafts || selectAll === SelectAllStatus.None || !hasPermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <Pill\n className={`${baseClass}__toggle`}\n onClick={() => {\n setSubmitted(false)\n toggleModal(modalSlug)\n }}\n >\n {t('version:unpublish')}\n </Pill>\n <Modal className={baseClass} slug={modalSlug}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n <h1>{t('version:confirmUnpublish')}</h1>\n <p>{t('version:aboutToUnpublishSelection', { label: getTranslation(plural, i18n) })}</p>\n </div>\n <div className={`${baseClass}__controls`}>\n <Button\n buttonStyle=\"secondary\"\n id=\"confirm-cancel\"\n onClick={submitted ? undefined : () => toggleModal(modalSlug)}\n size=\"large\"\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button\n id=\"confirm-unpublish\"\n onClick={submitted ? undefined : handleUnpublish}\n size=\"large\"\n >\n {submitted ? t('version:unpublishing') : t('general:confirm')}\n </Button>\n </div>\n </div>\n </Modal>\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useModal","getTranslation","useRouter","useSearchParams","qs","React","useCallback","toast","useAuth","useConfig","useRouteCache","SelectAllStatus","useSelection","useTranslation","requests","parseSearchParams","ConfirmationModal","Pill","baseClass","UnpublishMany","props","collection","slug","labels","plural","singular","versions","config","routes","api","serverURL","permissions","toggleModal","i18n","t","searchParams","getQueryParams","selectAll","router","clearRouteCache","collectionPermissions","collections","hasPermission","update","modalSlug","addDefaultError","error","handleUnpublish","patch","_status","not_equals","body","JSON","stringify","headers","language","then","res","json","deletedDocs","docs","length","successLabel","status","success","count","label","errors","message","description","map","join","replace","page","undefined","addQueryPrefix","forEach","_err","drafts","None","_jsxs","Fragment","_jsx","className","onClick","confirmingLabel","heading","onConfirm"],"sources":["../../../src/elements/UnpublishMany/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 { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { Pill } from '../Pill/index.js'\n\nexport type UnpublishManyProps = {\n collection: ClientCollectionConfig\n}\n\nconst baseClass = 'unpublish-many'\n\nexport const UnpublishMany: React.FC<UnpublishManyProps> = (props) => {\n const { collection: { slug, labels: { plural, singular }, versions } = {} } = props\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { permissions } = useAuth()\n const { toggleModal } = useModal()\n const { i18n, t } = useTranslation()\n const searchParams = useSearchParams()\n const { getQueryParams, selectAll } = useSelection()\n const router = useRouter()\n const { clearRouteCache } = useRouteCache()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasPermission = collectionPermissions?.update\n\n const modalSlug = `unpublish-${slug}`\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:unknown'))\n }, [t])\n\n const handleUnpublish = useCallback(async () => {\n await requests\n .patch(`${serverURL}${api}/${slug}${getQueryParams({ _status: { not_equals: 'draft' } })}`, {\n body: JSON.stringify({\n _status: 'draft',\n }),\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:updatedCountSuccessfully', {\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 router.replace(\n qs.stringify(\n {\n ...parseSearchParams(searchParams),\n page: selectAll ? '1' : undefined,\n },\n { addQueryPrefix: true },\n ),\n )\n\n clearRouteCache() // Use clearRouteCache instead of router.refresh, as we only need to clear the cache if the user has route caching enabled - clearRouteCache checks for this\n\n return null\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n return false\n } catch (_err) {\n return addDefaultError()\n }\n })\n }, [\n serverURL,\n api,\n slug,\n getQueryParams,\n i18n,\n plural,\n singular,\n t,\n router,\n searchParams,\n selectAll,\n clearRouteCache,\n addDefaultError,\n ])\n\n if (!versions?.drafts || selectAll === SelectAllStatus.None || !hasPermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <Pill\n className={`${baseClass}__toggle`}\n onClick={() => {\n toggleModal(modalSlug)\n }}\n >\n {t('version:unpublish')}\n </Pill>\n <ConfirmationModal\n body={t('version:aboutToUnpublishSelection', { label: getTranslation(plural, i18n) })}\n confirmingLabel={t('version:unpublishing')}\n heading={t('version:confirmUnpublish')}\n modalSlug={modalSlug}\n onConfirm={handleUnpublish}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,5 +10,5 @@ function require(m) {
|
|
|
10
10
|
}
|
|
11
11
|
// Workaround end
|
|
12
12
|
|
|
13
|
-
import{n as a}from"./chunk-
|
|
14
|
-
//# sourceMappingURL=DatePicker-
|
|
13
|
+
import{n as a}from"./chunk-IMEQ6NKQ.js";import"./chunk-5LKBKI4T.js";export{a as default};
|
|
14
|
+
//# sourceMappingURL=DatePicker-HHQ6TPOW.js.map
|