@payloadcms/ui 3.86.0-internal.ac46214 → 3.87.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/BulkUpload/EditMany/index.js.map +1 -1
- package/dist/elements/DocumentDrawer/ControlledDocumentDrawer.d.ts +13 -0
- package/dist/elements/DocumentDrawer/ControlledDocumentDrawer.d.ts.map +1 -0
- package/dist/elements/DocumentDrawer/ControlledDocumentDrawer.js +114 -0
- package/dist/elements/DocumentDrawer/ControlledDocumentDrawer.js.map +1 -0
- package/dist/elements/DocumentDrawer/index.d.ts +6 -0
- package/dist/elements/DocumentDrawer/index.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/index.js +1 -1
- package/dist/elements/DocumentDrawer/index.js.map +1 -1
- package/dist/elements/DraggableSortable/index.js.map +1 -1
- package/dist/elements/EditMany/index.js.map +1 -1
- package/dist/elements/FieldSelect/reduceFieldOptions.d.ts.map +1 -1
- package/dist/elements/FieldSelect/reduceFieldOptions.js +3 -1
- package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
- package/dist/elements/FieldSelect/reduceFieldOptions.spec.js +143 -0
- package/dist/elements/FieldSelect/reduceFieldOptions.spec.js.map +1 -0
- package/dist/elements/FolderView/Drawers/MoveToFolder/index.d.ts.map +1 -1
- package/dist/elements/FolderView/Drawers/MoveToFolder/index.js +43 -35
- package/dist/elements/FolderView/Drawers/MoveToFolder/index.js.map +1 -1
- package/dist/elements/FolderView/FolderFileTable/index.js.map +1 -1
- package/dist/elements/FolderView/MoveDocToFolder/index.js.map +1 -1
- package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.js +1 -1
- package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/ListDrawer/Provider.d.ts +1 -1
- package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
- package/dist/elements/ListDrawer/Provider.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.d.ts +2 -7
- package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.d.ts.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js +28 -116
- package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js.map +1 -1
- package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
- package/dist/elements/Table/RelationshipProvider/index.js +1 -0
- package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
- package/dist/exports/client/{CodeEditor-TL3K3PHG.js → CodeEditor-5OM6KTW4.js} +2 -2
- package/dist/exports/client/{chunk-MRRDX6D7.js → chunk-2GZJJKQF.js} +1 -1
- package/dist/exports/client/{chunk-MRRDX6D7.js.map → chunk-2GZJJKQF.js.map} +1 -1
- package/dist/exports/client/index.js +24 -24
- package/dist/exports/client/index.js.map +4 -4
- package/dist/fields/Checkbox/Input.js.map +1 -1
- package/dist/fields/Row/index.d.ts +1 -1
- package/dist/fields/Slug/index.d.ts.map +1 -1
- package/dist/fields/Slug/index.js +29 -20
- package/dist/fields/Slug/index.js.map +1 -1
- package/dist/fields/Slug/index.scss +17 -1
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +11 -10
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/forms/RenderFields/RenderField.js +2 -1
- package/dist/forms/RenderFields/RenderField.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +48 -30
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
- package/dist/forms/useField/index.js.map +1 -1
- package/dist/providers/Config/index.js.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.js +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.spec.js +40 -0
- package/dist/providers/TableColumns/buildColumnState/index.spec.js.map +1 -0
- package/dist/scss/app.scss +1 -1
- package/dist/scss/styles.scss +6 -6
- package/dist/scss/toastify.scss +2 -2
- package/dist/styles.css +1 -1
- package/dist/utilities/handleLivePreview.d.ts +1 -0
- package/dist/utilities/handleLivePreview.d.ts.map +1 -1
- package/dist/utilities/isURLAllowed.d.ts.map +1 -1
- package/dist/utilities/isURLAllowed.js +9 -3
- package/dist/utilities/isURLAllowed.js.map +1 -1
- package/dist/views/BrowseByFolder/index.d.ts.map +1 -1
- package/dist/views/BrowseByFolder/index.js +92 -37
- package/dist/views/BrowseByFolder/index.js.map +1 -1
- package/dist/views/CollectionFolder/ListSelection/index.js.map +1 -1
- package/dist/views/CollectionFolder/index.d.ts.map +1 -1
- package/dist/views/CollectionFolder/index.js +73 -21
- package/dist/views/CollectionFolder/index.js.map +1 -1
- package/package.json +4 -4
- /package/dist/exports/client/{CodeEditor-TL3K3PHG.js.map → CodeEditor-5OM6KTW4.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","React","useAuth","EditDepthProvider","useTranslation","Drawer","DrawerToggler","useFormsManager","EditManyBulkUploadsDrawerContent","baseClass","EditManyBulkUploads","props","$","collection","t0","slug","undefined","permissions","t","forms","collectionPermissions","collections","hasUpdatePermission","update","drawerSlug","t1","_jsxs","className","children","_jsx","Header"],"sources":["../../../../src/elements/BulkUpload/EditMany/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig } from 'payload'\n\nimport React from 'react'\n\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { EditDepthProvider } from '../../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Drawer, DrawerToggler } from '../../Drawer/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport { EditManyBulkUploadsDrawerContent } from './DrawerContent.js'\nimport './index.scss'\n\nexport const baseClass = 'edit-many-bulk-uploads'\n\nexport type EditManyBulkUploadsProps = {\n readonly collection: ClientCollectionConfig\n}\n\nexport const EditManyBulkUploads: React.FC<EditManyBulkUploadsProps> = (props) => {\n const { collection: { slug } = {}, collection } = props\n\n const { permissions } = useAuth()\n\n const { t } = useTranslation()\n const { forms } = useFormsManager() // Access forms managed in bulk uploads\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasUpdatePermission = collectionPermissions?.update\n\n const drawerSlug = `edit-${slug}-bulk-uploads`\n\n if (!hasUpdatePermission) {\n return null\n }\n\n return (\n <div className={baseClass}>\n <DrawerToggler\n aria-label={t('general:editAll')}\n className={`${baseClass}__toggle`}\n slug={drawerSlug}\n >\n {t('general:editAll')}\n </DrawerToggler>\n <EditDepthProvider>\n <Drawer Header={null} slug={drawerSlug}>\n <EditManyBulkUploadsDrawerContent\n collection={collection}\n drawerSlug={drawerSlug}\n forms={forms}\n />\n </Drawer>\n </EditDepthProvider>\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAIA,OAAOC,KAAA,MAAW;AAElB,SAASC,OAAO,QAAQ;AACxB,SAASC,iBAAiB,QAAQ;AAClC,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,EAAEC,aAAa,QAAQ;AACtC,SAASC,eAAe,QAAQ;AAChC,SAASC,gCAAgC,QAAQ;AACjD,OAAO;AAEP,OAAO,MAAMC,SAAA,GAAY;AAMzB,OAAO,MAAMC,mBAAA,GAA0DC,KAAA;EAAA,MAAAC,CAAA,GAAAZ,EAAA;EACrE;IAAAa,UAAA,EAAAC,EAAA;IAAAD;EAAA,IAAkDF,KAAA;EAA9B;IAAAI;EAAA,IAAAD,EAAa,KAAAE,SAAA,QAAbF,EAAa;EAEjC;IAAAG;EAAA,IAAwBf,OAAA;EAExB;IAAAgB;EAAA,IAAcd,cAAA;EACd;IAAAe;EAAA,IAAkBZ,eAAA;EAElB,MAAAa,qBAAA,GAA8BH,WAAA,EAAAI,WAAA,GAA2BN,IAAA;EACzD,MAAAO,mBAAA,GAA4BF,qBAAA,EAAAG,MAAA;EAE5B,MAAAC,UAAA,GAAmB,QAAQT,IAAA,eAAmB;EAAA,KAEzCO,mBAAA;IAAA;EAAA;EAAA,IAAAG,EAAA;EAAA,IAAAb,CAAA,QAAAC,UAAA,IAAAD,CAAA,QAAAY,UAAA,IAAAZ,CAAA,QAAAO,KAAA,IAAAP,CAAA,QAAAM,CAAA;IAKHO,EAAA,GAAAC,KAAA,CAAC;MAAAC,SAAA,EAAAlB,SAAA;MAAAmB,QAAA,GACCC,IAAA,CAAAvB,aAAA;QAAA,cACcY,CAAA,CAAE;QAAAS,SAAA,EACH,GAAAlB,SAAA,UAAsB;QAAAM,IAAA,EAC3BS,UAAA;QAAAI,QAAA,EAELV,CAAA,CAAE;MAAA,C,GAELW,IAAA,CAAA1B,iBAAA;QAAAyB,QAAA,EACEC,IAAA,CAAAxB,MAAA;UAAAyB,MAAA;UAAAf,IAAA,EAA4BS,UAAA;
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","React","useAuth","EditDepthProvider","useTranslation","Drawer","DrawerToggler","useFormsManager","EditManyBulkUploadsDrawerContent","baseClass","EditManyBulkUploads","props","$","collection","t0","slug","undefined","permissions","t","forms","collectionPermissions","collections","hasUpdatePermission","update","drawerSlug","t1","_jsxs","className","children","_jsx","Header"],"sources":["../../../../src/elements/BulkUpload/EditMany/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig } from 'payload'\n\nimport React from 'react'\n\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { EditDepthProvider } from '../../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Drawer, DrawerToggler } from '../../Drawer/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport { EditManyBulkUploadsDrawerContent } from './DrawerContent.js'\nimport './index.scss'\n\nexport const baseClass = 'edit-many-bulk-uploads'\n\nexport type EditManyBulkUploadsProps = {\n readonly collection: ClientCollectionConfig\n}\n\nexport const EditManyBulkUploads: React.FC<EditManyBulkUploadsProps> = (props) => {\n const { collection: { slug } = {}, collection } = props\n\n const { permissions } = useAuth()\n\n const { t } = useTranslation()\n const { forms } = useFormsManager() // Access forms managed in bulk uploads\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasUpdatePermission = collectionPermissions?.update\n\n const drawerSlug = `edit-${slug}-bulk-uploads`\n\n if (!hasUpdatePermission) {\n return null\n }\n\n return (\n <div className={baseClass}>\n <DrawerToggler\n aria-label={t('general:editAll')}\n className={`${baseClass}__toggle`}\n slug={drawerSlug}\n >\n {t('general:editAll')}\n </DrawerToggler>\n <EditDepthProvider>\n <Drawer Header={null} slug={drawerSlug}>\n <EditManyBulkUploadsDrawerContent\n collection={collection}\n drawerSlug={drawerSlug}\n forms={forms}\n />\n </Drawer>\n </EditDepthProvider>\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAIA,OAAOC,KAAA,MAAW;AAElB,SAASC,OAAO,QAAQ;AACxB,SAASC,iBAAiB,QAAQ;AAClC,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,EAAEC,aAAa,QAAQ;AACtC,SAASC,eAAe,QAAQ;AAChC,SAASC,gCAAgC,QAAQ;AACjD,OAAO;AAEP,OAAO,MAAMC,SAAA,GAAY;AAMzB,OAAO,MAAMC,mBAAA,GAA0DC,KAAA;EAAA,MAAAC,CAAA,GAAAZ,EAAA;EACrE;IAAAa,UAAA,EAAAC,EAAA;IAAAD;EAAA,IAAkDF,KAAA;EAA9B;IAAAI;EAAA,IAAAD,EAAa,KAAAE,SAAA,QAAbF,EAAa;EAEjC;IAAAG;EAAA,IAAwBf,OAAA;EAExB;IAAAgB;EAAA,IAAcd,cAAA;EACd;IAAAe;EAAA,IAAkBZ,eAAA;EAElB,MAAAa,qBAAA,GAA8BH,WAAA,EAAAI,WAAA,GAA2BN,IAAA;EACzD,MAAAO,mBAAA,GAA4BF,qBAAA,EAAAG,MAAA;EAE5B,MAAAC,UAAA,GAAmB,QAAQT,IAAA,eAAmB;EAAA,KAEzCO,mBAAA;IAAA;EAAA;EAAA,IAAAG,EAAA;EAAA,IAAAb,CAAA,QAAAC,UAAA,IAAAD,CAAA,QAAAY,UAAA,IAAAZ,CAAA,QAAAO,KAAA,IAAAP,CAAA,QAAAM,CAAA;IAKHO,EAAA,GAAAC,KAAA,CAAC;MAAAC,SAAA,EAAAlB,SAAA;MAAAmB,QAAA,GACCC,IAAA,CAAAvB,aAAA;QAAA,cACcY,CAAA,CAAE;QAAAS,SAAA,EACH,GAAAlB,SAAA,UAAsB;QAAAM,IAAA,EAC3BS,UAAA;QAAAI,QAAA,EAELV,CAAA,CAAE;MAAA,C,GAELW,IAAA,CAAA1B,iBAAA;QAAAyB,QAAA,EACEC,IAAA,CAAAxB,MAAA;UAAAyB,MAAA;UAAAf,IAAA,EAA4BS,UAAA;UAAAA,QAAA,EAC1BK,IAAA,CAAArB,gCAAA;YAAAK,UAAA;YAAAW,UAAA;YAAAL;UAAA,C;;;;;;;;;;;;SAVNM,E;CAmBJ","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { DocumentDrawerProps } from './types.js';
|
|
3
|
+
type ControlledDocumentDrawerProps = {
|
|
4
|
+
readonly isOpen: boolean;
|
|
5
|
+
readonly onOpenChange?: (isOpen: boolean) => void;
|
|
6
|
+
} & Omit<DocumentDrawerProps, 'drawerSlug'>;
|
|
7
|
+
/**
|
|
8
|
+
* A controlled wrapper around `DocumentDrawer` for views that want to drive
|
|
9
|
+
* drawer visibility from state instead of the imperative `useDocumentDrawer` hook.
|
|
10
|
+
*/
|
|
11
|
+
export declare const ControlledDocumentDrawer: React.FC<ControlledDocumentDrawerProps>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=ControlledDocumentDrawer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ControlledDocumentDrawer.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/ControlledDocumentDrawer.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAKrD,KAAK,6BAA6B,GAAG;IACnC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;CAClD,GAAG,IAAI,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAA;AAE3C;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CAiD5E,CAAA"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { c as _c } from "react/compiler-runtime";
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
+
import { useModal } from '@faceless-ui/modal';
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import { useEditDepth } from '../../providers/EditDepth/index.js';
|
|
8
|
+
import { DocumentDrawer, formatDocumentDrawerSlug } from './index.js';
|
|
9
|
+
/**
|
|
10
|
+
* A controlled wrapper around `DocumentDrawer` for views that want to drive
|
|
11
|
+
* drawer visibility from state instead of the imperative `useDocumentDrawer` hook.
|
|
12
|
+
*/
|
|
13
|
+
export const ControlledDocumentDrawer = t0 => {
|
|
14
|
+
const $ = _c(20);
|
|
15
|
+
const {
|
|
16
|
+
id,
|
|
17
|
+
collectionSlug,
|
|
18
|
+
isOpen,
|
|
19
|
+
onOpenChange,
|
|
20
|
+
...rest
|
|
21
|
+
} = t0;
|
|
22
|
+
const drawerDepth = useEditDepth();
|
|
23
|
+
const uuid = React.useId();
|
|
24
|
+
const {
|
|
25
|
+
closeModal,
|
|
26
|
+
modalState,
|
|
27
|
+
openModal
|
|
28
|
+
} = useModal();
|
|
29
|
+
let t1;
|
|
30
|
+
if ($[0] !== collectionSlug || $[1] !== drawerDepth || $[2] !== id || $[3] !== uuid) {
|
|
31
|
+
t1 = formatDocumentDrawerSlug({
|
|
32
|
+
id,
|
|
33
|
+
collectionSlug,
|
|
34
|
+
depth: drawerDepth,
|
|
35
|
+
uuid
|
|
36
|
+
});
|
|
37
|
+
$[0] = collectionSlug;
|
|
38
|
+
$[1] = drawerDepth;
|
|
39
|
+
$[2] = id;
|
|
40
|
+
$[3] = uuid;
|
|
41
|
+
$[4] = t1;
|
|
42
|
+
} else {
|
|
43
|
+
t1 = $[4];
|
|
44
|
+
}
|
|
45
|
+
const drawerSlug = t1;
|
|
46
|
+
const isDrawerOpen = Boolean(modalState[drawerSlug]?.isOpen);
|
|
47
|
+
const previousIsDrawerOpen = React.useRef(isDrawerOpen);
|
|
48
|
+
let t2;
|
|
49
|
+
let t3;
|
|
50
|
+
if ($[5] !== closeModal || $[6] !== drawerSlug || $[7] !== isDrawerOpen || $[8] !== isOpen || $[9] !== openModal) {
|
|
51
|
+
t2 = () => {
|
|
52
|
+
if (isOpen && !isDrawerOpen) {
|
|
53
|
+
openModal(drawerSlug);
|
|
54
|
+
}
|
|
55
|
+
if (!isOpen && isDrawerOpen) {
|
|
56
|
+
closeModal(drawerSlug);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
t3 = [closeModal, drawerSlug, isDrawerOpen, isOpen, openModal];
|
|
60
|
+
$[5] = closeModal;
|
|
61
|
+
$[6] = drawerSlug;
|
|
62
|
+
$[7] = isDrawerOpen;
|
|
63
|
+
$[8] = isOpen;
|
|
64
|
+
$[9] = openModal;
|
|
65
|
+
$[10] = t2;
|
|
66
|
+
$[11] = t3;
|
|
67
|
+
} else {
|
|
68
|
+
t2 = $[10];
|
|
69
|
+
t3 = $[11];
|
|
70
|
+
}
|
|
71
|
+
React.useEffect(t2, t3);
|
|
72
|
+
let t4;
|
|
73
|
+
let t5;
|
|
74
|
+
if ($[12] !== isDrawerOpen || $[13] !== onOpenChange) {
|
|
75
|
+
t4 = () => {
|
|
76
|
+
if (previousIsDrawerOpen.current !== isDrawerOpen) {
|
|
77
|
+
previousIsDrawerOpen.current = isDrawerOpen;
|
|
78
|
+
onOpenChange?.(isDrawerOpen);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
t5 = [isDrawerOpen, onOpenChange];
|
|
82
|
+
$[12] = isDrawerOpen;
|
|
83
|
+
$[13] = onOpenChange;
|
|
84
|
+
$[14] = t4;
|
|
85
|
+
$[15] = t5;
|
|
86
|
+
} else {
|
|
87
|
+
t4 = $[14];
|
|
88
|
+
t5 = $[15];
|
|
89
|
+
}
|
|
90
|
+
React.useEffect(t4, t5);
|
|
91
|
+
let t6;
|
|
92
|
+
let t7;
|
|
93
|
+
if ($[16] !== closeModal || $[17] !== drawerSlug) {
|
|
94
|
+
t6 = () => () => {
|
|
95
|
+
closeModal(drawerSlug);
|
|
96
|
+
};
|
|
97
|
+
t7 = [closeModal, drawerSlug];
|
|
98
|
+
$[16] = closeModal;
|
|
99
|
+
$[17] = drawerSlug;
|
|
100
|
+
$[18] = t6;
|
|
101
|
+
$[19] = t7;
|
|
102
|
+
} else {
|
|
103
|
+
t6 = $[18];
|
|
104
|
+
t7 = $[19];
|
|
105
|
+
}
|
|
106
|
+
React.useEffect(t6, t7);
|
|
107
|
+
return _jsx(DocumentDrawer, {
|
|
108
|
+
...rest,
|
|
109
|
+
collectionSlug,
|
|
110
|
+
drawerSlug,
|
|
111
|
+
id
|
|
112
|
+
});
|
|
113
|
+
};
|
|
114
|
+
//# sourceMappingURL=ControlledDocumentDrawer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ControlledDocumentDrawer.js","names":["c","_c","useModal","React","useEditDepth","DocumentDrawer","formatDocumentDrawerSlug","ControlledDocumentDrawer","t0","$","id","collectionSlug","isOpen","onOpenChange","rest","drawerDepth","uuid","useId","closeModal","modalState","openModal","t1","depth","drawerSlug","isDrawerOpen","Boolean","previousIsDrawerOpen","useRef","t2","t3","useEffect","t4","t5","current","t6","t7","_jsx"],"sources":["../../../src/elements/DocumentDrawer/ControlledDocumentDrawer.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React from 'react'\n\nimport type { DocumentDrawerProps } from './types.js'\n\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { DocumentDrawer, formatDocumentDrawerSlug } from './index.js'\n\ntype ControlledDocumentDrawerProps = {\n readonly isOpen: boolean\n readonly onOpenChange?: (isOpen: boolean) => void\n} & Omit<DocumentDrawerProps, 'drawerSlug'>\n\n/**\n * A controlled wrapper around `DocumentDrawer` for views that want to drive\n * drawer visibility from state instead of the imperative `useDocumentDrawer` hook.\n */\nexport const ControlledDocumentDrawer: React.FC<ControlledDocumentDrawerProps> = ({\n id,\n collectionSlug,\n isOpen,\n onOpenChange,\n ...rest\n}) => {\n const drawerDepth = useEditDepth()\n const uuid = React.useId()\n const { closeModal, modalState, openModal } = useModal()\n const drawerSlug = React.useMemo(\n () =>\n formatDocumentDrawerSlug({\n id,\n collectionSlug,\n depth: drawerDepth,\n uuid,\n }),\n [collectionSlug, drawerDepth, id, uuid],\n )\n const isDrawerOpen = Boolean(modalState[drawerSlug]?.isOpen)\n const previousIsDrawerOpen = React.useRef(isDrawerOpen)\n\n React.useEffect(() => {\n if (isOpen && !isDrawerOpen) {\n openModal(drawerSlug)\n }\n\n if (!isOpen && isDrawerOpen) {\n closeModal(drawerSlug)\n }\n }, [closeModal, drawerSlug, isDrawerOpen, isOpen, openModal])\n\n React.useEffect(() => {\n if (previousIsDrawerOpen.current !== isDrawerOpen) {\n previousIsDrawerOpen.current = isDrawerOpen\n onOpenChange?.(isDrawerOpen)\n }\n }, [isDrawerOpen, onOpenChange])\n\n React.useEffect(() => {\n return () => {\n closeModal(drawerSlug)\n }\n }, [closeModal, drawerSlug])\n\n return (\n <DocumentDrawer {...rest} collectionSlug={collectionSlug} drawerSlug={drawerSlug} id={id} />\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,6 +2,12 @@ import React from 'react';
|
|
|
2
2
|
import type { DocumentDrawerProps, DocumentTogglerProps, UseDocumentDrawer } from './types.js';
|
|
3
3
|
import './index.scss';
|
|
4
4
|
export declare const documentDrawerBaseClass = "doc-drawer";
|
|
5
|
+
export declare const formatDocumentDrawerSlug: ({ id, collectionSlug, depth, uuid, }: {
|
|
6
|
+
collectionSlug: string;
|
|
7
|
+
depth: number;
|
|
8
|
+
id?: number | string;
|
|
9
|
+
uuid: string;
|
|
10
|
+
}) => string;
|
|
5
11
|
export declare const DocumentDrawerToggler: React.FC<DocumentTogglerProps>;
|
|
6
12
|
export declare const DocumentDrawer: React.FC<DocumentDrawerProps>;
|
|
7
13
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA2D,MAAM,OAAO,CAAA;AAE/E,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EAElB,MAAM,YAAY,CAAA;AAOnB,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,uBAAuB,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA2D,MAAM,OAAO,CAAA;AAE/E,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EAElB,MAAM,YAAY,CAAA;AAOnB,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,uBAAuB,eAAe,CAAA;AAEnD,eAAO,MAAM,wBAAwB,yCAKlC;IACD,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;CACb,WAAyE,CAAA;AAE1E,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA2BhE,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAQxD,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,iBAAiB,EAAE,iBAsE/B,CAAA"}
|
|
@@ -12,7 +12,7 @@ import { Drawer, DrawerToggler } from '../Drawer/index.js';
|
|
|
12
12
|
import { DocumentDrawerContent } from './DrawerContent.js';
|
|
13
13
|
import './index.scss';
|
|
14
14
|
export const documentDrawerBaseClass = 'doc-drawer';
|
|
15
|
-
const formatDocumentDrawerSlug = ({
|
|
15
|
+
export const formatDocumentDrawerSlug = ({
|
|
16
16
|
id,
|
|
17
17
|
collectionSlug,
|
|
18
18
|
depth,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useModal","React","useCallback","useEffect","useId","useMemo","useState","useRelatedCollections","useEditDepth","useTranslation","Drawer","DrawerToggler","DocumentDrawerContent","documentDrawerBaseClass","formatDocumentDrawerSlug","id","collectionSlug","depth","uuid","DocumentDrawerToggler","t0","$","children","className","disabled","drawerSlug","onClick","operation","rest","t","collectionConfig","t1","label","labels","singular","t2","filter","Boolean","_jsx","join","slug","DocumentDrawer","props","gutter","Header","useDocumentDrawer","overrideEntityVisibility","editDepth","closeModal","modalState","openModal","toggleModal","isOpen","setIsOpen","t3","t4","toggleDrawer","t5","closeDrawer","t6","openDrawer","t7","_createElement","key","MemoizedDrawer","t8","props_0","MemoizedDrawerToggler","t9","drawerDepth","isDrawerOpen","MemoizedDrawerState","t10"],"sources":["../../../src/elements/DocumentDrawer/index.tsx"],"sourcesContent":["'use client'\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback, useEffect, useId, useMemo, useState } from 'react'\n\nimport type {\n DocumentDrawerProps,\n DocumentTogglerProps,\n UseDocumentDrawer,\n UseDocumentDrawerContext,\n} from './types.js'\n\nimport { useRelatedCollections } from '../../hooks/useRelatedCollections.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { DocumentDrawerContent } from './DrawerContent.js'\nimport './index.scss'\n\nexport const documentDrawerBaseClass = 'doc-drawer'\n\nconst formatDocumentDrawerSlug = ({\n id,\n collectionSlug,\n depth,\n uuid,\n}: {\n collectionSlug: string\n depth: number\n id?: number | string\n uuid: string\n}) => `doc-drawer_${collectionSlug}_${depth}${id ? `_${id}` : ''}_${uuid}`\n\nexport const DocumentDrawerToggler: React.FC<DocumentTogglerProps> = ({\n children,\n className,\n collectionSlug,\n disabled,\n drawerSlug,\n onClick,\n operation,\n ...rest\n}) => {\n const { t } = useTranslation()\n const [collectionConfig] = useRelatedCollections(collectionSlug)\n\n return (\n <DrawerToggler\n aria-label={t(operation === 'create' ? 'fields:addNewLabel' : 'general:editLabel', {\n label: collectionConfig?.labels.singular,\n })}\n className={[className, `${documentDrawerBaseClass}__toggler`].filter(Boolean).join(' ')}\n disabled={disabled}\n onClick={onClick}\n slug={drawerSlug}\n {...rest}\n >\n {children}\n </DrawerToggler>\n )\n}\n\nexport const DocumentDrawer: React.FC<DocumentDrawerProps> = (props) => {\n const { drawerSlug } = props\n\n return (\n <Drawer className={documentDrawerBaseClass} gutter={false} Header={null} slug={drawerSlug}>\n <DocumentDrawerContent {...props} />\n </Drawer>\n )\n}\n\n/**\n * A hook to manage documents from a drawer modal.\n * It provides the components and methods needed to open, close, and interact with the drawer.\n * @example\n * const [DocumentDrawer, DocumentDrawerToggler, { openDrawer, closeDrawer }] = useDocumentDrawer({\n * collectionSlug: 'posts',\n * id: postId, // optional, if not provided, it will render the \"create new\" view\n * })\n *\n * // ...\n *\n * return (\n * <div>\n * <DocumentDrawerToggler collectionSlug=\"posts\" id={postId}>\n * Edit Post\n * </DocumentDrawerToggler>\n * <DocumentDrawer collectionSlug=\"posts\" id={postId} />\n * </div>\n */\nexport const useDocumentDrawer: UseDocumentDrawer = ({\n id,\n collectionSlug,\n overrideEntityVisibility,\n}) => {\n const editDepth = useEditDepth()\n const uuid = useId()\n const { closeModal, modalState, openModal, toggleModal } = useModal()\n const [isOpen, setIsOpen] = useState(false)\n\n const drawerSlug = formatDocumentDrawerSlug({\n id,\n collectionSlug,\n depth: editDepth,\n uuid,\n })\n\n useEffect(() => {\n setIsOpen(Boolean(modalState[drawerSlug]?.isOpen))\n }, [modalState, drawerSlug])\n\n const toggleDrawer = useCallback(() => {\n toggleModal(drawerSlug)\n }, [toggleModal, drawerSlug])\n\n const closeDrawer = useCallback(() => {\n closeModal(drawerSlug)\n }, [closeModal, drawerSlug])\n\n const openDrawer = useCallback(() => {\n openModal(drawerSlug)\n }, [openModal, drawerSlug])\n\n const MemoizedDrawer = useMemo<React.FC<DocumentDrawerProps>>(() => {\n return (props) => (\n <DocumentDrawer\n {...props}\n collectionSlug={collectionSlug}\n drawerSlug={drawerSlug}\n id={id}\n key={drawerSlug}\n overrideEntityVisibility={overrideEntityVisibility}\n />\n )\n }, [id, drawerSlug, collectionSlug, overrideEntityVisibility])\n\n const MemoizedDrawerToggler = useMemo<React.FC<DocumentTogglerProps>>(() => {\n return (props) => (\n <DocumentDrawerToggler\n {...props}\n collectionSlug={collectionSlug}\n drawerSlug={drawerSlug}\n operation={!id ? 'create' : 'update'}\n />\n )\n }, [id, drawerSlug, collectionSlug])\n\n const MemoizedDrawerState = useMemo<UseDocumentDrawerContext>(\n () => ({\n closeDrawer,\n drawerDepth: editDepth,\n drawerSlug,\n isDrawerOpen: isOpen,\n openDrawer,\n toggleDrawer,\n }),\n [editDepth, drawerSlug, isOpen, toggleDrawer, closeDrawer, openDrawer],\n )\n\n return [MemoizedDrawer, MemoizedDrawerToggler, MemoizedDrawerState]\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useModal","React","useCallback","useEffect","useId","useMemo","useState","useRelatedCollections","useEditDepth","useTranslation","Drawer","DrawerToggler","DocumentDrawerContent","documentDrawerBaseClass","formatDocumentDrawerSlug","id","collectionSlug","depth","uuid","DocumentDrawerToggler","t0","$","children","className","disabled","drawerSlug","onClick","operation","rest","t","collectionConfig","t1","label","labels","singular","t2","filter","Boolean","_jsx","join","slug","DocumentDrawer","props","gutter","Header","useDocumentDrawer","overrideEntityVisibility","editDepth","closeModal","modalState","openModal","toggleModal","isOpen","setIsOpen","t3","t4","toggleDrawer","t5","closeDrawer","t6","openDrawer","t7","_createElement","key","MemoizedDrawer","t8","props_0","MemoizedDrawerToggler","t9","drawerDepth","isDrawerOpen","MemoizedDrawerState","t10"],"sources":["../../../src/elements/DocumentDrawer/index.tsx"],"sourcesContent":["'use client'\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback, useEffect, useId, useMemo, useState } from 'react'\n\nimport type {\n DocumentDrawerProps,\n DocumentTogglerProps,\n UseDocumentDrawer,\n UseDocumentDrawerContext,\n} from './types.js'\n\nimport { useRelatedCollections } from '../../hooks/useRelatedCollections.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { DocumentDrawerContent } from './DrawerContent.js'\nimport './index.scss'\n\nexport const documentDrawerBaseClass = 'doc-drawer'\n\nexport const formatDocumentDrawerSlug = ({\n id,\n collectionSlug,\n depth,\n uuid,\n}: {\n collectionSlug: string\n depth: number\n id?: number | string\n uuid: string\n}) => `doc-drawer_${collectionSlug}_${depth}${id ? `_${id}` : ''}_${uuid}`\n\nexport const DocumentDrawerToggler: React.FC<DocumentTogglerProps> = ({\n children,\n className,\n collectionSlug,\n disabled,\n drawerSlug,\n onClick,\n operation,\n ...rest\n}) => {\n const { t } = useTranslation()\n const [collectionConfig] = useRelatedCollections(collectionSlug)\n\n return (\n <DrawerToggler\n aria-label={t(operation === 'create' ? 'fields:addNewLabel' : 'general:editLabel', {\n label: collectionConfig?.labels.singular,\n })}\n className={[className, `${documentDrawerBaseClass}__toggler`].filter(Boolean).join(' ')}\n disabled={disabled}\n onClick={onClick}\n slug={drawerSlug}\n {...rest}\n >\n {children}\n </DrawerToggler>\n )\n}\n\nexport const DocumentDrawer: React.FC<DocumentDrawerProps> = (props) => {\n const { drawerSlug } = props\n\n return (\n <Drawer className={documentDrawerBaseClass} gutter={false} Header={null} slug={drawerSlug}>\n <DocumentDrawerContent {...props} />\n </Drawer>\n )\n}\n\n/**\n * A hook to manage documents from a drawer modal.\n * It provides the components and methods needed to open, close, and interact with the drawer.\n * @example\n * const [DocumentDrawer, DocumentDrawerToggler, { openDrawer, closeDrawer }] = useDocumentDrawer({\n * collectionSlug: 'posts',\n * id: postId, // optional, if not provided, it will render the \"create new\" view\n * })\n *\n * // ...\n *\n * return (\n * <div>\n * <DocumentDrawerToggler collectionSlug=\"posts\" id={postId}>\n * Edit Post\n * </DocumentDrawerToggler>\n * <DocumentDrawer collectionSlug=\"posts\" id={postId} />\n * </div>\n */\nexport const useDocumentDrawer: UseDocumentDrawer = ({\n id,\n collectionSlug,\n overrideEntityVisibility,\n}) => {\n const editDepth = useEditDepth()\n const uuid = useId()\n const { closeModal, modalState, openModal, toggleModal } = useModal()\n const [isOpen, setIsOpen] = useState(false)\n\n const drawerSlug = formatDocumentDrawerSlug({\n id,\n collectionSlug,\n depth: editDepth,\n uuid,\n })\n\n useEffect(() => {\n setIsOpen(Boolean(modalState[drawerSlug]?.isOpen))\n }, [modalState, drawerSlug])\n\n const toggleDrawer = useCallback(() => {\n toggleModal(drawerSlug)\n }, [toggleModal, drawerSlug])\n\n const closeDrawer = useCallback(() => {\n closeModal(drawerSlug)\n }, [closeModal, drawerSlug])\n\n const openDrawer = useCallback(() => {\n openModal(drawerSlug)\n }, [openModal, drawerSlug])\n\n const MemoizedDrawer = useMemo<React.FC<DocumentDrawerProps>>(() => {\n return (props) => (\n <DocumentDrawer\n {...props}\n collectionSlug={collectionSlug}\n drawerSlug={drawerSlug}\n id={id}\n key={drawerSlug}\n overrideEntityVisibility={overrideEntityVisibility}\n />\n )\n }, [id, drawerSlug, collectionSlug, overrideEntityVisibility])\n\n const MemoizedDrawerToggler = useMemo<React.FC<DocumentTogglerProps>>(() => {\n return (props) => (\n <DocumentDrawerToggler\n {...props}\n collectionSlug={collectionSlug}\n drawerSlug={drawerSlug}\n operation={!id ? 'create' : 'update'}\n />\n )\n }, [id, drawerSlug, collectionSlug])\n\n const MemoizedDrawerState = useMemo<UseDocumentDrawerContext>(\n () => ({\n closeDrawer,\n drawerDepth: editDepth,\n drawerSlug,\n isDrawerOpen: isOpen,\n openDrawer,\n toggleDrawer,\n }),\n [editDepth, drawerSlug, isOpen, toggleDrawer, closeDrawer, openDrawer],\n )\n\n return [MemoizedDrawer, MemoizedDrawerToggler, MemoizedDrawerState]\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;;AACA,SAASC,QAAQ,QAAQ;AACzB,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,KAAK,EAAEC,OAAO,EAAEC,QAAQ,QAAQ;AASxE,SAASC,qBAAqB,QAAQ;AACtC,SAASC,YAAY,QAAQ;AAC7B,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,EAAEC,aAAa,QAAQ;AACtC,SAASC,qBAAqB,QAAQ;AACtC,OAAO;AAEP,OAAO,MAAMC,uBAAA,GAA0B;AAEvC,OAAO,MAAMC,wBAAA,GAA2BA,CAAC;EACvCC,EAAE;EACFC,cAAc;EACdC,KAAK;EACLC;AAAI,CAML,KAAK,cAAcF,cAAA,IAAkBC,KAAA,GAAQF,EAAA,GAAK,IAAIA,EAAA,EAAI,GAAG,MAAMG,IAAA,EAAM;AAE1E,OAAO,MAAMC,qBAAA,GAAwDC,EAAA;EAAA,MAAAC,CAAA,GAAAtB,EAAA;EAAC;IAAAuB,QAAA;IAAAC,SAAA;IAAAP,cAAA;IAAAQ,QAAA;IAAAC,UAAA;IAAAC,OAAA;IAAAC,SAAA;IAAA,GAAAC;EAAA,IAAAR,EASrE;EACC;IAAAS;EAAA,IAAcpB,cAAA;EACd,OAAAqB,gBAAA,IAA2BvB,qBAAA,CAAsBS,cAAA;EAIjC,MAAAe,EAAA,GAAAF,CAAA,CAAEF,SAAA,KAAc,WAAW,uBAAuB;IAAAK,KAAA,EACrDF,gBAAA,EAAAG,MAAA,CAAAC;EAAA,CACT;EAAA,IAAAC,EAAA;EAAA,IAAAd,CAAA,QAAAE,SAAA;IACWY,EAAA,IAACZ,SAAA,EAAW,GAAAV,uBAAA,WAAqC,EAAAuB,MAAA,CAAAC,OAAS;IAAAhB,CAAA,MAAAE,SAAA;IAAAF,CAAA,MAAAc,EAAA;EAAA;IAAAA,EAAA,GAAAd,CAAA;EAAA;EAAA,OAJvEiB,IAAA,CAAA3B,aAAA;IAAA,cACcoB,EAEZ;IAAAR,SAAA,EACWY,EAA0D,CAAAI,IAAA,CAAc;IAAAf,QAAA;IAAAE,OAAA;IAAAc,IAAA,EAG7Ef,UAAA;IAAA,GACFG,IAAI;IAAAN;EAAA,C;CAKd;AAEA,OAAO,MAAMmB,cAAA,GAAiDC,KAAA;EAC5D,MAAM;IAAEjB;EAAU,CAAE,GAAGiB,KAAA;EAEvB,oBACEJ,IAAA,CAAC5B,MAAA;IAAOa,SAAA,EAAWV,uBAAA;IAAyB8B,MAAA,EAAQ;IAAOC,MAAA,EAAQ;IAAMJ,IAAA,EAAMf,UAAA;cAC7E,aAAAa,IAAA,CAAC1B,qBAAA;MAAuB,GAAG8B;;;AAGjC;AAEA;;;;;;;;;;;;;;;;;;;AAmBA,OAAO,MAAMG,iBAAA,GAAuCzB,EAAA;EAAA,MAAAC,CAAA,GAAAtB,EAAA;EAAC;IAAAgB,EAAA;IAAAC,cAAA;IAAA8B;EAAA,IAAA1B,EAIpD;EACC,MAAA2B,SAAA,GAAkBvC,YAAA;EAClB,MAAAU,IAAA,GAAad,KAAA;EACb;IAAA4C,UAAA;IAAAC,UAAA;IAAAC,SAAA;IAAAC;EAAA,IAA2DnD,QAAA;EAC3D,OAAAoD,MAAA,EAAAC,SAAA,IAA4B/C,QAAA,MAAS;EAAA,IAAAyB,EAAA;EAAA,IAAAV,CAAA,QAAAL,cAAA,IAAAK,CAAA,QAAA0B,SAAA,IAAA1B,CAAA,QAAAN,EAAA,IAAAM,CAAA,QAAAH,IAAA;IAElBa,EAAA,GAAAjB,wBAAA;MAAAC,EAAA;MAAAC,cAAA;MAAAC,KAAA,EAGV8B,SAAA;MAAA7B;IAAA,CAET;IAAAG,CAAA,MAAAL,cAAA;IAAAK,CAAA,MAAA0B,SAAA;IAAA1B,CAAA,MAAAN,EAAA;IAAAM,CAAA,MAAAH,IAAA;IAAAG,CAAA,MAAAU,EAAA;EAAA;IAAAA,EAAA,GAAAV,CAAA;EAAA;EALA,MAAAI,UAAA,GAAmBM,EAKnB;EAAA,IAAAI,EAAA;EAAA,IAAAmB,EAAA;EAAA,IAAAjC,CAAA,QAAAI,UAAA,IAAAJ,CAAA,QAAA4B,UAAA;IAEUd,EAAA,GAAAA,CAAA;MACRkB,SAAA,CAAUhB,OAAA,CAAQY,UAAU,CAACxB,UAAA,GAAA2B,MAAa;IAAA;IACzCE,EAAA,IAACL,UAAA,EAAYxB,UAAA;IAAWJ,CAAA,MAAAI,UAAA;IAAAJ,CAAA,MAAA4B,UAAA;IAAA5B,CAAA,MAAAc,EAAA;IAAAd,CAAA,MAAAiC,EAAA;EAAA;IAAAnB,EAAA,GAAAd,CAAA;IAAAiC,EAAA,GAAAjC,CAAA;EAAA;EAF3BlB,SAAA,CAAUgC,EAEV,EAAGmB,EAAwB;EAAA,IAAAC,EAAA;EAAA,IAAAlC,CAAA,QAAAI,UAAA,IAAAJ,CAAA,SAAA8B,WAAA;IAEMI,EAAA,GAAAA,CAAA;MAC/BJ,WAAA,CAAY1B,UAAA;IAAA;IACdJ,CAAA,MAAAI,UAAA;IAAAJ,CAAA,OAAA8B,WAAA;IAAA9B,CAAA,OAAAkC,EAAA;EAAA;IAAAA,EAAA,GAAAlC,CAAA;EAAA;EAFA,MAAAmC,YAAA,GAAqBD,EAEO;EAAA,IAAAE,EAAA;EAAA,IAAApC,CAAA,SAAA2B,UAAA,IAAA3B,CAAA,SAAAI,UAAA;IAEIgC,EAAA,GAAAA,CAAA;MAC9BT,UAAA,CAAWvB,UAAA;IAAA;IACbJ,CAAA,OAAA2B,UAAA;IAAA3B,CAAA,OAAAI,UAAA;IAAAJ,CAAA,OAAAoC,EAAA;EAAA;IAAAA,EAAA,GAAApC,CAAA;EAAA;EAFA,MAAAqC,WAAA,GAAoBD,EAEO;EAAA,IAAAE,EAAA;EAAA,IAAAtC,CAAA,SAAAI,UAAA,IAAAJ,CAAA,SAAA6B,SAAA;IAEIS,EAAA,GAAAA,CAAA;MAC7BT,SAAA,CAAUzB,UAAA;IAAA;IACZJ,CAAA,OAAAI,UAAA;IAAAJ,CAAA,OAAA6B,SAAA;IAAA7B,CAAA,OAAAsC,EAAA;EAAA;IAAAA,EAAA,GAAAtC,CAAA;EAAA;EAFA,MAAAuC,UAAA,GAAmBD,EAEO;EAAA,IAAAE,EAAA;EAAA,IAAAxC,CAAA,SAAAL,cAAA,IAAAK,CAAA,SAAAI,UAAA,IAAAJ,CAAA,SAAAN,EAAA,IAAAM,CAAA,SAAAyB,wBAAA;IAGjBe,EAAA,GAAAnB,KAAA,IACLoB,cAAA,CAAArB,cAAA;MAAA,GACMC,KAAK;MAAA1B,cAAA;MAAAS,UAAA;MAAAV,EAAA;MAAAgD,GAAA,EAIJtC,UAAA;MAAAqB;IAAA,C;;;;;;;;;EAPX,MAAAkB,cAAA,GACSH,E;EAUoD,IAAAI,EAAA;EAAA,IAAA5C,CAAA,SAAAL,cAAA,IAAAK,CAAA,SAAAI,UAAA,IAAAJ,CAAA,SAAAN,EAAA;IAGpDkD,EAAA,GAAAC,OAAA,IACL5B,IAAA,CAAAnB,qBAAA;MAAA,GACMuB,OAAK;MAAA1B,cAAA;MAAAS,UAAA;MAAAE,SAAA,EAGE,CAACZ,EAAA,GAAK,WAAW;IAAA,C;;;;;;;;EANlC,MAAAoD,qBAAA,GACSF,E;EAQ0B,IAAAG,EAAA;EAAA,IAAA/C,CAAA,SAAAqC,WAAA,IAAArC,CAAA,SAAAI,UAAA,IAAAJ,CAAA,SAAA0B,SAAA,IAAA1B,CAAA,SAAA+B,MAAA,IAAA/B,CAAA,SAAAuC,UAAA,IAAAvC,CAAA,SAAAmC,YAAA;IAG1BY,EAAA;MAAAV,WAAA;MAAAW,WAAA,EAEQtB,SAAA;MAAAtB,UAAA;MAAA6C,YAAA,EAEClB,MAAA;MAAAQ,UAAA;MAAAJ;IAAA;IAGhBnC,CAAA,OAAAqC,WAAA;IAAArC,CAAA,OAAAI,UAAA;IAAAJ,CAAA,OAAA0B,SAAA;IAAA1B,CAAA,OAAA+B,MAAA;IAAA/B,CAAA,OAAAuC,UAAA;IAAAvC,CAAA,OAAAmC,YAAA;IAAAnC,CAAA,OAAA+C,EAAA;EAAA;IAAAA,EAAA,GAAA/C,CAAA;EAAA;EARF,MAAAkD,mBAAA,GACSH,EAOP;EACsE,IAAAI,GAAA;EAAA,IAAAnD,CAAA,SAAA2C,cAAA,IAAA3C,CAAA,SAAAkD,mBAAA,IAAAlD,CAAA,SAAA8C,qBAAA;IAGjEK,GAAA,IAACR,cAAA,EAAgBG,qBAAA,EAAuBI,mBAAA;IAAoBlD,CAAA,OAAA2C,cAAA;IAAA3C,CAAA,OAAAkD,mBAAA;IAAAlD,CAAA,OAAA8C,qBAAA;IAAA9C,CAAA,OAAAmD,GAAA;EAAA;IAAAA,GAAA,GAAAnD,CAAA;EAAA;EAAA,OAA5DmD,GAA4D;AAAA,CACrE","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","closestCenter","DndContext","KeyboardSensor","MouseSensor","TouchSensor","useDroppable","useSensor","useSensors","SortableContext","sortableKeyboardCoordinates","React","useCallback","useId","DraggableSortable","props","$","children","className","ids","onDragEnd","onDragStart","dndContextID","sortableContextID","t0","id","setNodeRef","t1","Symbol","for","activationConstraint","distance","t2","delay","tolerance","t3","coordinateGetter","sensors","t4","event","active","over","activatorEvent","stopPropagation","moveFromIndex","findIndex","_id","moveToIndex","_id_0","handleDragEnd","t5","event_0","active_0","handleDragStart","t6","_jsx","collisionDetection","items","ref"],"sources":["../../../src/elements/DraggableSortable/index.tsx"],"sourcesContent":["'use client'\nimport type { DragEndEvent, DragStartEvent } from '@dnd-kit/core'\n\nimport {\n closestCenter,\n DndContext,\n KeyboardSensor,\n MouseSensor,\n TouchSensor,\n useDroppable,\n useSensor,\n useSensors,\n} from '@dnd-kit/core'\nimport { SortableContext, sortableKeyboardCoordinates } from '@dnd-kit/sortable'\nimport React, { useCallback, useId } from 'react'\n\nimport type { Props } from './types.js'\n\nexport { Props }\n\nexport const DraggableSortable: React.FC<Props> = (props) => {\n const { children, className, ids, onDragEnd, onDragStart } = props\n\n const dndContextID = useId()\n const sortableContextID = useId()\n\n const { setNodeRef } = useDroppable({\n id: dndContextID,\n })\n\n const sensors = useSensors(\n useSensor(MouseSensor, {\n activationConstraint: {\n distance: 5,\n },\n }),\n useSensor(TouchSensor, {\n activationConstraint: {\n delay: 200,\n tolerance: 5,\n },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n )\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event\n\n event.activatorEvent.stopPropagation()\n\n if (!active || !over) {\n return\n }\n\n if (typeof onDragEnd === 'function') {\n onDragEnd({\n event,\n moveFromIndex: ids.findIndex((_id) => _id === active.id),\n moveToIndex: ids.findIndex((_id) => _id === over.id),\n })\n }\n },\n [onDragEnd, ids],\n )\n\n const handleDragStart = useCallback(\n (event: DragStartEvent) => {\n const { active } = event\n\n if (!active) {\n return\n }\n\n if (typeof onDragStart === 'function') {\n onDragStart({ id: active.id, event })\n }\n },\n [onDragStart],\n )\n\n return (\n <DndContext\n collisionDetection={closestCenter}\n // Provide stable ID to fix hydration issues: https://github.com/clauderic/dnd-kit/issues/926\n id={dndContextID}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n sensors={sensors}\n >\n <SortableContext\n // Provide stable ID to fix hydration issues: https://github.com/clauderic/dnd-kit/issues/926\n id={sortableContextID}\n items={ids}\n >\n <div className={className} ref={setNodeRef}>\n {children}\n </div>\n </SortableContext>\n </DndContext>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SACEC,aAAa,EACbC,UAAU,EACVC,cAAc,EACdC,WAAW,EACXC,WAAW,EACXC,YAAY,EACZC,SAAS,EACTC,UAAU,QACL;AACP,SAASC,eAAe,EAAEC,2BAA2B,QAAQ;AAC7D,OAAOC,KAAA,IAASC,WAAW,EAAEC,KAAK,QAAQ;AAM1C,OAAO,MAAMC,iBAAA,GAAqCC,KAAA;EAAA,MAAAC,CAAA,GAAAhB,EAAA;EAChD;IAAAiB,QAAA;IAAAC,SAAA;IAAAC,GAAA;IAAAC,SAAA;IAAAC;EAAA,IAA6DN,KAAA;EAE7D,MAAAO,YAAA,GAAqBT,KAAA;EACrB,MAAAU,iBAAA,GAA0BV,KAAA;EAAA,IAAAW,EAAA;EAAA,IAAAR,CAAA,QAAAM,YAAA;IAEUE,EAAA;MAAAC,EAAA,EAC9BH;IAAA;IACNN,CAAA,MAAAM,YAAA;IAAAN,CAAA,MAAAQ,EAAA;EAAA;IAAAA,EAAA,GAAAR,CAAA;EAAA;EAFA;IAAAU;EAAA,IAAuBpB,YAAA,CAAakB,EAEpC;EAAA,IAAAG,EAAA;EAAA,IAAAX,CAAA,QAAAY,MAAA,CAAAC,GAAA;IAGyBF,EAAA;MAAAG,oBAAA;QAAAC,QAAA;MAAA;IAAA;IAIvBf,CAAA,MAAAW,EAAA;EAAA;IAAAA,EAAA,GAAAX,CAAA;EAAA;EAAA,IAAAgB,EAAA;EAAA,IAAAhB,CAAA,QAAAY,MAAA,CAAAC,GAAA;IACuBG,EAAA;MAAAF,oBAAA;QAAAG,KAAA;QAAAC,SAAA;MAAA;IAAA;IAKvBlB,CAAA,MAAAgB,EAAA;EAAA;IAAAA,EAAA,GAAAhB,CAAA;EAAA;EAAA,IAAAmB,EAAA;EAAA,IAAAnB,CAAA,QAAAY,MAAA,CAAAC,GAAA;IAC0BM,EAAA;MAAAC,gBAAA,EAAA1B;IAAA;IAE1BM,CAAA,MAAAmB,EAAA;EAAA;IAAAA,EAAA,GAAAnB,CAAA;EAAA;EAdF,MAAAqB,OAAA,GAAgB7B,UAAA,CACdD,SAAA,CAAAH,WAAA,EAAuBuB,EAIvB,GACApB,SAAA,CAAAF,WAAA,EAAuB2B,EAKvB,GACAzB,SAAA,CAAAJ,cAAA,EAA0BgC,EAE1B;EAAA,IAAAG,EAAA;EAAA,IAAAtB,CAAA,QAAAG,GAAA,IAAAH,CAAA,QAAAI,SAAA;IAIAkB,EAAA,GAAAC,KAAA;MACE;QAAAC,MAAA;QAAAC;MAAA,IAAyBF,KAAA;MAEzBA,KAAA,CAAAG,cAAA,CAAAC,eAAA,CAAoC;MAAA,IAEhC,CAACH,MAAA,KAAWC,IAAA;QAAA;MAAA;MAAA,IAIZ,OAAOrB,SAAA,KAAc;QACvBA,SAAA;UAAAmB,KAAA;UAAAK,aAAA,EAEiBzB,GAAA,CAAA0B,SAAA,CAAAC,GAAA,IAAuBA,GAAA,KAAQN,MAAA,CAAAf,EAAS;UAAAsB,WAAA,EAC1C5B,GAAA,CAAA0B,SAAA,CAAAG,KAAA,IAAuBF,KAAA,KAAQL,IAAA,CAAAhB,EAAO;QAAA,CACrD;MAAA;IAAA;IAEJT,CAAA,MAAAG,GAAA;IAAAH,CAAA,MAAAI,SAAA;IAAAJ,CAAA,MAAAsB,EAAA;EAAA;IAAAA,EAAA,GAAAtB,CAAA;EAAA;EAjBF,MAAAiC,aAAA,GAAsBX,EAkBJ;EAAA,IAAAY,EAAA;EAAA,IAAAlC,CAAA,QAAAK,WAAA;IAIhB6B,EAAA,GAAAC,OAAA;MACE;QAAAX,MAAA,EAAAY;MAAA,IAAmBb,OAAA;MAAA,KAEdC,QAAA;QAAA;MAAA;MAAA,IAID,OAAOnB,WAAA,KAAgB;QACzBA,WAAA;UAAAI,EAAA,EAAkBe,QAAA,
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","closestCenter","DndContext","KeyboardSensor","MouseSensor","TouchSensor","useDroppable","useSensor","useSensors","SortableContext","sortableKeyboardCoordinates","React","useCallback","useId","DraggableSortable","props","$","children","className","ids","onDragEnd","onDragStart","dndContextID","sortableContextID","t0","id","setNodeRef","t1","Symbol","for","activationConstraint","distance","t2","delay","tolerance","t3","coordinateGetter","sensors","t4","event","active","over","activatorEvent","stopPropagation","moveFromIndex","findIndex","_id","moveToIndex","_id_0","handleDragEnd","t5","event_0","active_0","handleDragStart","t6","_jsx","collisionDetection","items","ref"],"sources":["../../../src/elements/DraggableSortable/index.tsx"],"sourcesContent":["'use client'\nimport type { DragEndEvent, DragStartEvent } from '@dnd-kit/core'\n\nimport {\n closestCenter,\n DndContext,\n KeyboardSensor,\n MouseSensor,\n TouchSensor,\n useDroppable,\n useSensor,\n useSensors,\n} from '@dnd-kit/core'\nimport { SortableContext, sortableKeyboardCoordinates } from '@dnd-kit/sortable'\nimport React, { useCallback, useId } from 'react'\n\nimport type { Props } from './types.js'\n\nexport { Props }\n\nexport const DraggableSortable: React.FC<Props> = (props) => {\n const { children, className, ids, onDragEnd, onDragStart } = props\n\n const dndContextID = useId()\n const sortableContextID = useId()\n\n const { setNodeRef } = useDroppable({\n id: dndContextID,\n })\n\n const sensors = useSensors(\n useSensor(MouseSensor, {\n activationConstraint: {\n distance: 5,\n },\n }),\n useSensor(TouchSensor, {\n activationConstraint: {\n delay: 200,\n tolerance: 5,\n },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n )\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event\n\n event.activatorEvent.stopPropagation()\n\n if (!active || !over) {\n return\n }\n\n if (typeof onDragEnd === 'function') {\n onDragEnd({\n event,\n moveFromIndex: ids.findIndex((_id) => _id === active.id),\n moveToIndex: ids.findIndex((_id) => _id === over.id),\n })\n }\n },\n [onDragEnd, ids],\n )\n\n const handleDragStart = useCallback(\n (event: DragStartEvent) => {\n const { active } = event\n\n if (!active) {\n return\n }\n\n if (typeof onDragStart === 'function') {\n onDragStart({ id: active.id, event })\n }\n },\n [onDragStart],\n )\n\n return (\n <DndContext\n collisionDetection={closestCenter}\n // Provide stable ID to fix hydration issues: https://github.com/clauderic/dnd-kit/issues/926\n id={dndContextID}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n sensors={sensors}\n >\n <SortableContext\n // Provide stable ID to fix hydration issues: https://github.com/clauderic/dnd-kit/issues/926\n id={sortableContextID}\n items={ids}\n >\n <div className={className} ref={setNodeRef}>\n {children}\n </div>\n </SortableContext>\n </DndContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useModal","React","useState","useAuth","EditDepthProvider","SelectAllStatus","useSelection","useTranslation","Drawer","ListSelectionButton","EditManyDrawerContent","baseClass","EditMany","props","$","count","selectAll","selectedIDs","toggleAll","t0","t1","AllAvailable","t2","_jsx","EditMany_v4","ids","onSuccess","collection","modalPrefix","where","permissions","openModal","t","Symbol","for","selectedFields","setSelectedFields","collectionPermissions","collections","slug","drawerSlug","update","filter","Boolean","t3","t4","_jsxs","className","join","children","onClick","Header"],"sources":["../../../src/elements/EditMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, Where } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useState } from 'react'\n\nimport type { FieldOption } from '../FieldSelect/reduceFieldOptions.js'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { ListSelectionButton } from '../ListSelection/index.js'\nimport { EditManyDrawerContent } from './DrawerContent.js'\nimport './index.scss'\n\nexport const baseClass = 'edit-many'\n\nexport type EditManyProps = {\n readonly collection: ClientCollectionConfig\n}\n\nexport const EditMany: React.FC<EditManyProps> = (props) => {\n const { count, selectAll, selectedIDs, toggleAll } = useSelection()\n\n return (\n <EditMany_v4\n {...props}\n count={count}\n ids={selectedIDs}\n onSuccess={() => toggleAll()}\n selectAll={selectAll === SelectAllStatus.AllAvailable}\n />\n )\n}\n\nexport const EditMany_v4: React.FC<\n {\n count: number\n ids: (number | string)[]\n /**\n * When multiple EditMany components are rendered on the page, this will differentiate them.\n */\n modalPrefix?: string\n onSuccess?: () => void\n selectAll: boolean\n where?: Where\n } & Omit<EditManyProps, 'ids'>\n> = ({ collection, count, ids, modalPrefix, onSuccess, selectAll, where }) => {\n const { permissions } = useAuth()\n const { openModal } = useModal()\n\n const { t } = useTranslation()\n\n const [selectedFields, setSelectedFields] = useState<FieldOption[]>([])\n\n const collectionPermissions = permissions?.collections?.[collection.slug]\n\n const drawerSlug = `${modalPrefix ? `${modalPrefix}-` : ''}edit-${collection.slug}`\n\n if (count === 0 || !collectionPermissions?.update) {\n return null\n }\n\n return (\n <div className={[baseClass, `${baseClass}__toggle`].filter(Boolean).join(' ')}>\n <ListSelectionButton\n aria-label={t('general:edit')}\n onClick={() => {\n openModal(drawerSlug)\n setSelectedFields([])\n }}\n >\n {t('general:edit')}\n </ListSelectionButton>\n <EditDepthProvider>\n <Drawer Header={null} slug={drawerSlug}>\n <EditManyDrawerContent\n collection={collection}\n count={count}\n drawerSlug={drawerSlug}\n ids={ids}\n onSuccess={onSuccess}\n selectAll={selectAll}\n selectedFields={selectedFields}\n setSelectedFields={setSelectedFields}\n where={where}\n />\n </Drawer>\n </EditDepthProvider>\n </div>\n )\n}\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useModal","React","useState","useAuth","EditDepthProvider","SelectAllStatus","useSelection","useTranslation","Drawer","ListSelectionButton","EditManyDrawerContent","baseClass","EditMany","props","$","count","selectAll","selectedIDs","toggleAll","t0","t1","AllAvailable","t2","_jsx","EditMany_v4","ids","onSuccess","collection","modalPrefix","where","permissions","openModal","t","Symbol","for","selectedFields","setSelectedFields","collectionPermissions","collections","slug","drawerSlug","update","filter","Boolean","t3","t4","_jsxs","className","join","children","onClick","Header"],"sources":["../../../src/elements/EditMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, Where } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useState } from 'react'\n\nimport type { FieldOption } from '../FieldSelect/reduceFieldOptions.js'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { ListSelectionButton } from '../ListSelection/index.js'\nimport { EditManyDrawerContent } from './DrawerContent.js'\nimport './index.scss'\n\nexport const baseClass = 'edit-many'\n\nexport type EditManyProps = {\n readonly collection: ClientCollectionConfig\n}\n\nexport const EditMany: React.FC<EditManyProps> = (props) => {\n const { count, selectAll, selectedIDs, toggleAll } = useSelection()\n\n return (\n <EditMany_v4\n {...props}\n count={count}\n ids={selectedIDs}\n onSuccess={() => toggleAll()}\n selectAll={selectAll === SelectAllStatus.AllAvailable}\n />\n )\n}\n\nexport const EditMany_v4: React.FC<\n {\n count: number\n ids: (number | string)[]\n /**\n * When multiple EditMany components are rendered on the page, this will differentiate them.\n */\n modalPrefix?: string\n onSuccess?: () => void\n selectAll: boolean\n where?: Where\n } & Omit<EditManyProps, 'ids'>\n> = ({ collection, count, ids, modalPrefix, onSuccess, selectAll, where }) => {\n const { permissions } = useAuth()\n const { openModal } = useModal()\n\n const { t } = useTranslation()\n\n const [selectedFields, setSelectedFields] = useState<FieldOption[]>([])\n\n const collectionPermissions = permissions?.collections?.[collection.slug]\n\n const drawerSlug = `${modalPrefix ? `${modalPrefix}-` : ''}edit-${collection.slug}`\n\n if (count === 0 || !collectionPermissions?.update) {\n return null\n }\n\n return (\n <div className={[baseClass, `${baseClass}__toggle`].filter(Boolean).join(' ')}>\n <ListSelectionButton\n aria-label={t('general:edit')}\n onClick={() => {\n openModal(drawerSlug)\n setSelectedFields([])\n }}\n >\n {t('general:edit')}\n </ListSelectionButton>\n <EditDepthProvider>\n <Drawer Header={null} slug={drawerSlug}>\n <EditManyDrawerContent\n collection={collection}\n count={count}\n drawerSlug={drawerSlug}\n ids={ids}\n onSuccess={onSuccess}\n selectAll={selectAll}\n selectedFields={selectedFields}\n setSelectedFields={setSelectedFields}\n where={where}\n />\n </Drawer>\n </EditDepthProvider>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reduceFieldOptions.d.ts","sourceRoot":"","sources":["../../../src/elements/FieldSelect/reduceFieldOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAYhF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,WAAW,CAAA;IAClB,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,KAAK,EAAE,aAAa,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,kBAAkB,UAAW,WAAW,KAAG,OAOrD,CAAA;AAEH,eAAO,MAAM,kBAAkB,uEAO5B;IACD,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAA;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,EAChB;QACE,CAAC,SAAS,EAAE,MAAM,GAAG,yBAAyB,CAAA;KAC/C,GACD,yBAAyB,CAAA;CAC9B,KAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"reduceFieldOptions.d.ts","sourceRoot":"","sources":["../../../src/elements/FieldSelect/reduceFieldOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAYhF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,WAAW,CAAA;IAClB,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,KAAK,EAAE,aAAa,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,kBAAkB,UAAW,WAAW,KAAG,OAOrD,CAAA;AAEH,eAAO,MAAM,kBAAkB,uEAO5B;IACD,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAA;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,EAChB;QACE,CAAC,SAAS,EAAE,MAAM,GAAG,yBAAyB,CAAA;KAC/C,GACD,yBAAyB,CAAA;CAC9B,KAAG,WAAW,EA8Fd,CAAA"}
|
|
@@ -47,12 +47,14 @@ export const reduceFieldOptions = ({
|
|
|
47
47
|
return [...fieldsToUse, ...field.tabs.reduce((tabFields, tab) => {
|
|
48
48
|
if ('fields' in tab) {
|
|
49
49
|
const isNamedTab = 'name' in tab && tab.name;
|
|
50
|
+
const namedTabPermissions = isNamedTab && fieldPermissions && fieldPermissions !== true ? fieldPermissions[tab.name] : undefined;
|
|
51
|
+
const tabPermissions = isNamedTab ? namedTabPermissions === true ? true : namedTabPermissions?.fields ?? fieldPermissions : fieldPermissions;
|
|
50
52
|
return [...tabFields, ...reduceFieldOptions({
|
|
51
53
|
fields: tab.fields,
|
|
52
54
|
labelPrefix,
|
|
53
55
|
parentPath: path,
|
|
54
56
|
path: isNamedTab ? createNestedClientFieldPath(path, tab) : path,
|
|
55
|
-
permissions:
|
|
57
|
+
permissions: tabPermissions
|
|
56
58
|
})];
|
|
57
59
|
}
|
|
58
60
|
}, [])];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reduceFieldOptions.js","names":["fieldAffectsData","fieldHasSubFields","fieldIsHiddenOrDisabled","getFieldPermissions","createNestedClientFieldPath","combineFieldLabel","ignoreFromBulkEdit","field","Boolean","type","admin","disableBulkEdit","unique","readOnly","reduceFieldOptions","fields","formState","labelPrefix","parentPath","path","permissions","CustomLabel","customComponents","Label","reduce","fieldsToUse","operation","hasOperationPermission","fieldPermissions","read","hasReadPermission","parentName","includes","split","length","fieldHasLabel","label","prefix","tabs","tabFields","tab","isNamedTab","name","formattedField","value"],"sources":["../../../src/elements/FieldSelect/reduceFieldOptions.ts"],"sourcesContent":["import type { ClientField, FormState, SanitizedFieldPermissions } from 'payload'\n\nimport {\n fieldAffectsData,\n fieldHasSubFields,\n fieldIsHiddenOrDisabled,\n getFieldPermissions,\n} from 'payload/shared'\n\nimport { createNestedClientFieldPath } from '../../forms/Form/createNestedClientFieldPath.js'\nimport { combineFieldLabel } from '../../utilities/combineFieldLabel.js'\n\nexport type SelectedField = {\n field: ClientField\n fieldPermissions: SanitizedFieldPermissions\n path: string\n}\n\nexport type FieldOption = {\n label: React.ReactNode\n value: SelectedField\n}\n\nexport const ignoreFromBulkEdit = (field: ClientField): boolean =>\n Boolean(\n (fieldAffectsData(field) || field.type === 'ui') &&\n (field.admin.disableBulkEdit ||\n field.unique ||\n fieldIsHiddenOrDisabled(field) ||\n ('readOnly' in field && field.readOnly)),\n )\n\nexport const reduceFieldOptions = ({\n fields,\n formState,\n labelPrefix = null,\n parentPath = '',\n path = '',\n permissions,\n}: {\n readonly fields: ClientField[]\n readonly formState?: FormState\n readonly labelPrefix?: React.ReactNode\n readonly parentPath?: string\n readonly path?: string\n readonly permissions:\n | {\n [fieldName: string]: SanitizedFieldPermissions\n }\n | SanitizedFieldPermissions\n}): FieldOption[] => {\n if (!fields) {\n return []\n }\n\n const CustomLabel = formState?.[path]?.customComponents?.Label\n\n return fields?.reduce((fieldsToUse, field) => {\n const {\n operation: hasOperationPermission,\n permissions: fieldPermissions,\n read: hasReadPermission,\n } = getFieldPermissions({\n field,\n operation: 'update',\n parentName: parentPath?.includes('.')\n ? parentPath.split('.')[parentPath.split('.').length - 1]\n : parentPath,\n permissions,\n })\n\n // escape for a variety of reasons, include ui fields as they have `name`.\n if (\n (fieldAffectsData(field) || field.type === 'ui') &&\n (field.admin?.disableBulkEdit ||\n field.unique ||\n fieldIsHiddenOrDisabled(field) ||\n ('readOnly' in field && field.readOnly) ||\n !hasOperationPermission ||\n !hasReadPermission)\n ) {\n return fieldsToUse\n }\n\n if (!(field.type === 'array' || field.type === 'blocks') && fieldHasSubFields(field)) {\n const fieldHasLabel = 'label' in field && field.label\n return [\n ...fieldsToUse,\n ...reduceFieldOptions({\n fields: field.fields,\n labelPrefix: fieldHasLabel\n ? combineFieldLabel({ CustomLabel, field, prefix: labelPrefix })\n : labelPrefix,\n parentPath: path,\n path: createNestedClientFieldPath(path, field),\n permissions: fieldPermissions,\n }),\n ]\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n return [\n ...fieldsToUse,\n ...field.tabs.reduce((tabFields, tab) => {\n if ('fields' in tab) {\n const isNamedTab = 'name' in tab && tab.name\n return [\n ...tabFields,\n ...reduceFieldOptions({\n fields: tab.fields,\n labelPrefix,\n parentPath: path,\n path: isNamedTab ? createNestedClientFieldPath(path, tab as ClientField) : path,\n permissions:
|
|
1
|
+
{"version":3,"file":"reduceFieldOptions.js","names":["fieldAffectsData","fieldHasSubFields","fieldIsHiddenOrDisabled","getFieldPermissions","createNestedClientFieldPath","combineFieldLabel","ignoreFromBulkEdit","field","Boolean","type","admin","disableBulkEdit","unique","readOnly","reduceFieldOptions","fields","formState","labelPrefix","parentPath","path","permissions","CustomLabel","customComponents","Label","reduce","fieldsToUse","operation","hasOperationPermission","fieldPermissions","read","hasReadPermission","parentName","includes","split","length","fieldHasLabel","label","prefix","tabs","tabFields","tab","isNamedTab","name","namedTabPermissions","undefined","tabPermissions","formattedField","value"],"sources":["../../../src/elements/FieldSelect/reduceFieldOptions.ts"],"sourcesContent":["import type { ClientField, FormState, SanitizedFieldPermissions } from 'payload'\n\nimport {\n fieldAffectsData,\n fieldHasSubFields,\n fieldIsHiddenOrDisabled,\n getFieldPermissions,\n} from 'payload/shared'\n\nimport { createNestedClientFieldPath } from '../../forms/Form/createNestedClientFieldPath.js'\nimport { combineFieldLabel } from '../../utilities/combineFieldLabel.js'\n\nexport type SelectedField = {\n field: ClientField\n fieldPermissions: SanitizedFieldPermissions\n path: string\n}\n\nexport type FieldOption = {\n label: React.ReactNode\n value: SelectedField\n}\n\nexport const ignoreFromBulkEdit = (field: ClientField): boolean =>\n Boolean(\n (fieldAffectsData(field) || field.type === 'ui') &&\n (field.admin.disableBulkEdit ||\n field.unique ||\n fieldIsHiddenOrDisabled(field) ||\n ('readOnly' in field && field.readOnly)),\n )\n\nexport const reduceFieldOptions = ({\n fields,\n formState,\n labelPrefix = null,\n parentPath = '',\n path = '',\n permissions,\n}: {\n readonly fields: ClientField[]\n readonly formState?: FormState\n readonly labelPrefix?: React.ReactNode\n readonly parentPath?: string\n readonly path?: string\n readonly permissions:\n | {\n [fieldName: string]: SanitizedFieldPermissions\n }\n | SanitizedFieldPermissions\n}): FieldOption[] => {\n if (!fields) {\n return []\n }\n\n const CustomLabel = formState?.[path]?.customComponents?.Label\n\n return fields?.reduce((fieldsToUse, field) => {\n const {\n operation: hasOperationPermission,\n permissions: fieldPermissions,\n read: hasReadPermission,\n } = getFieldPermissions({\n field,\n operation: 'update',\n parentName: parentPath?.includes('.')\n ? parentPath.split('.')[parentPath.split('.').length - 1]\n : parentPath,\n permissions,\n })\n\n // escape for a variety of reasons, include ui fields as they have `name`.\n if (\n (fieldAffectsData(field) || field.type === 'ui') &&\n (field.admin?.disableBulkEdit ||\n field.unique ||\n fieldIsHiddenOrDisabled(field) ||\n ('readOnly' in field && field.readOnly) ||\n !hasOperationPermission ||\n !hasReadPermission)\n ) {\n return fieldsToUse\n }\n\n if (!(field.type === 'array' || field.type === 'blocks') && fieldHasSubFields(field)) {\n const fieldHasLabel = 'label' in field && field.label\n return [\n ...fieldsToUse,\n ...reduceFieldOptions({\n fields: field.fields,\n labelPrefix: fieldHasLabel\n ? combineFieldLabel({ CustomLabel, field, prefix: labelPrefix })\n : labelPrefix,\n parentPath: path,\n path: createNestedClientFieldPath(path, field),\n permissions: fieldPermissions,\n }),\n ]\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n return [\n ...fieldsToUse,\n ...field.tabs.reduce((tabFields, tab) => {\n if ('fields' in tab) {\n const isNamedTab = 'name' in tab && tab.name\n\n const namedTabPermissions =\n isNamedTab && fieldPermissions && fieldPermissions !== true\n ? fieldPermissions[tab.name]\n : undefined\n\n const tabPermissions = isNamedTab\n ? namedTabPermissions === true\n ? true\n : (namedTabPermissions?.fields ?? fieldPermissions)\n : fieldPermissions\n\n return [\n ...tabFields,\n ...reduceFieldOptions({\n fields: tab.fields,\n labelPrefix,\n parentPath: path,\n path: isNamedTab ? createNestedClientFieldPath(path, tab as ClientField) : path,\n permissions: tabPermissions,\n }),\n ]\n }\n }, []),\n ]\n }\n\n const formattedField: FieldOption = {\n label: combineFieldLabel({ CustomLabel, field, prefix: labelPrefix }),\n value: {\n field,\n fieldPermissions: fieldPermissions as SanitizedFieldPermissions,\n path: createNestedClientFieldPath(path, field),\n },\n }\n\n return [...fieldsToUse, formattedField]\n }, [])\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
+
// Mock the JSX label builder: irrelevant to permission logic and avoids needing a React runtime here.
|
|
3
|
+
vi.mock('../../utilities/combineFieldLabel.js', () => ({
|
|
4
|
+
combineFieldLabel: () => null
|
|
5
|
+
}));
|
|
6
|
+
import { reduceFieldOptions } from './reduceFieldOptions.js';
|
|
7
|
+
const text = name => ({
|
|
8
|
+
name,
|
|
9
|
+
type: 'text'
|
|
10
|
+
});
|
|
11
|
+
const namesOf = options => options.map(option => 'name' in option.value.field ? option.value.field.name : undefined);
|
|
12
|
+
const optionsFor = (fields, permissions) => reduceFieldOptions({
|
|
13
|
+
fields,
|
|
14
|
+
permissions: permissions
|
|
15
|
+
});
|
|
16
|
+
// Granted sets the operation to `true`; denied omits the key, mirroring `populateFieldPermissions`.
|
|
17
|
+
const granted = {
|
|
18
|
+
create: true,
|
|
19
|
+
read: true,
|
|
20
|
+
update: true
|
|
21
|
+
};
|
|
22
|
+
const readOnly = {
|
|
23
|
+
create: true,
|
|
24
|
+
read: true
|
|
25
|
+
};
|
|
26
|
+
describe('reduceFieldOptions', () => {
|
|
27
|
+
it('excludes a restricted field inside a named tab while keeping its clean siblings', () => {
|
|
28
|
+
const fields = [{
|
|
29
|
+
type: 'tabs',
|
|
30
|
+
tabs: [{
|
|
31
|
+
name: 'namedTab',
|
|
32
|
+
fields: [text('okInTab'), text('restrictedInTab')]
|
|
33
|
+
}]
|
|
34
|
+
}];
|
|
35
|
+
const permissions = {
|
|
36
|
+
namedTab: {
|
|
37
|
+
...granted,
|
|
38
|
+
fields: {
|
|
39
|
+
okInTab: granted,
|
|
40
|
+
restrictedInTab: readOnly
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const options = optionsFor(fields, permissions);
|
|
45
|
+
const names = namesOf(options);
|
|
46
|
+
expect(names).toContain('okInTab');
|
|
47
|
+
expect(names).not.toContain('restrictedInTab');
|
|
48
|
+
});
|
|
49
|
+
it('excludes a restricted field inside a nested named tab', () => {
|
|
50
|
+
const fields = [{
|
|
51
|
+
type: 'tabs',
|
|
52
|
+
tabs: [{
|
|
53
|
+
name: 'outerTab',
|
|
54
|
+
fields: [{
|
|
55
|
+
type: 'tabs',
|
|
56
|
+
tabs: [{
|
|
57
|
+
name: 'innerTab',
|
|
58
|
+
fields: [text('deepOk'), text('deepRestricted')]
|
|
59
|
+
}]
|
|
60
|
+
}]
|
|
61
|
+
}]
|
|
62
|
+
}];
|
|
63
|
+
const permissions = {
|
|
64
|
+
outerTab: {
|
|
65
|
+
...granted,
|
|
66
|
+
fields: {
|
|
67
|
+
innerTab: {
|
|
68
|
+
...granted,
|
|
69
|
+
fields: {
|
|
70
|
+
deepOk: granted,
|
|
71
|
+
deepRestricted: readOnly
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
const options = optionsFor(fields, permissions);
|
|
78
|
+
const names = namesOf(options);
|
|
79
|
+
expect(names).toContain('deepOk');
|
|
80
|
+
expect(names).not.toContain('deepRestricted');
|
|
81
|
+
});
|
|
82
|
+
it('only affects the named tab that contains the restricted field', () => {
|
|
83
|
+
const fields = [{
|
|
84
|
+
type: 'tabs',
|
|
85
|
+
tabs: [{
|
|
86
|
+
name: 'cleanTab',
|
|
87
|
+
fields: [text('cleanField')]
|
|
88
|
+
}, {
|
|
89
|
+
name: 'restrictedHostTab',
|
|
90
|
+
fields: [text('restrictedField')]
|
|
91
|
+
}]
|
|
92
|
+
}];
|
|
93
|
+
const permissions = {
|
|
94
|
+
cleanTab: {
|
|
95
|
+
...granted,
|
|
96
|
+
fields: {
|
|
97
|
+
cleanField: granted
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
restrictedHostTab: {
|
|
101
|
+
...granted,
|
|
102
|
+
fields: {
|
|
103
|
+
restrictedField: readOnly
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
const options = optionsFor(fields, permissions);
|
|
108
|
+
const names = namesOf(options);
|
|
109
|
+
expect(names).toContain('cleanField');
|
|
110
|
+
expect(names).not.toContain('restrictedField');
|
|
111
|
+
});
|
|
112
|
+
it('includes every named-tab field when permissions are fully granted', () => {
|
|
113
|
+
const fields = [{
|
|
114
|
+
type: 'tabs',
|
|
115
|
+
tabs: [{
|
|
116
|
+
name: 'namedTab',
|
|
117
|
+
fields: [text('a'), text('b')]
|
|
118
|
+
}]
|
|
119
|
+
}];
|
|
120
|
+
const options = optionsFor(fields, true);
|
|
121
|
+
const names = namesOf(options);
|
|
122
|
+
expect(names).toEqual(expect.arrayContaining(['a', 'b']));
|
|
123
|
+
});
|
|
124
|
+
it('applies parent permissions to an unnamed tab and excludes its restricted fields', () => {
|
|
125
|
+
const fields = [{
|
|
126
|
+
type: 'tabs',
|
|
127
|
+
tabs: [{
|
|
128
|
+
label: 'Unnamed',
|
|
129
|
+
fields: [text('okAtRoot'), text('restrictedAtRoot')]
|
|
130
|
+
}]
|
|
131
|
+
}];
|
|
132
|
+
// Unnamed tabs share the parent's permission map, so subfields resolve at the parent level.
|
|
133
|
+
const permissions = {
|
|
134
|
+
okAtRoot: granted,
|
|
135
|
+
restrictedAtRoot: readOnly
|
|
136
|
+
};
|
|
137
|
+
const options = optionsFor(fields, permissions);
|
|
138
|
+
const names = namesOf(options);
|
|
139
|
+
expect(names).toContain('okAtRoot');
|
|
140
|
+
expect(names).not.toContain('restrictedAtRoot');
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
//# sourceMappingURL=reduceFieldOptions.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reduceFieldOptions.spec.js","names":["describe","expect","it","vi","mock","combineFieldLabel","reduceFieldOptions","text","name","type","namesOf","options","map","option","value","field","undefined","optionsFor","fields","permissions","granted","create","read","update","readOnly","tabs","namedTab","okInTab","restrictedInTab","names","toContain","not","outerTab","innerTab","deepOk","deepRestricted","cleanTab","cleanField","restrictedHostTab","restrictedField","toEqual","arrayContaining","label","okAtRoot","restrictedAtRoot"],"sources":["../../../src/elements/FieldSelect/reduceFieldOptions.spec.ts"],"sourcesContent":["import type { ClientField } from 'payload'\n\nimport { describe, expect, it, vi } from 'vitest'\n\nimport type { FieldOption } from './reduceFieldOptions.js'\n\n// Mock the JSX label builder: irrelevant to permission logic and avoids needing a React runtime here.\nvi.mock('../../utilities/combineFieldLabel.js', () => ({\n combineFieldLabel: () => null,\n}))\n\nimport { reduceFieldOptions } from './reduceFieldOptions.js'\n\nconst text = (name: string): ClientField => ({ name, type: 'text' }) as ClientField\n\nconst namesOf = (options: FieldOption[]): (string | undefined)[] =>\n options.map((option) => ('name' in option.value.field ? option.value.field.name : undefined))\n\n// A denied field omits the operation key at runtime, which `SanitizedFieldPermissions` can't express — cast at the boundary.\ntype Permissions = Parameters<typeof reduceFieldOptions>[0]['permissions']\nconst optionsFor = (fields: ClientField[], permissions: unknown): FieldOption[] =>\n reduceFieldOptions({ fields, permissions: permissions as Permissions })\n\n// Granted sets the operation to `true`; denied omits the key, mirroring `populateFieldPermissions`.\nconst granted = { create: true, read: true, update: true }\nconst readOnly = { create: true, read: true }\n\ndescribe('reduceFieldOptions', () => {\n it('excludes a restricted field inside a named tab while keeping its clean siblings', () => {\n const fields: ClientField[] = [\n {\n type: 'tabs',\n tabs: [{ name: 'namedTab', fields: [text('okInTab'), text('restrictedInTab')] }],\n } as ClientField,\n ]\n\n const permissions = {\n namedTab: {\n ...granted,\n fields: {\n okInTab: granted,\n restrictedInTab: readOnly,\n },\n },\n }\n\n const options = optionsFor(fields, permissions)\n const names = namesOf(options)\n\n expect(names).toContain('okInTab')\n expect(names).not.toContain('restrictedInTab')\n })\n\n it('excludes a restricted field inside a nested named tab', () => {\n const fields: ClientField[] = [\n {\n type: 'tabs',\n tabs: [\n {\n name: 'outerTab',\n fields: [\n {\n type: 'tabs',\n tabs: [{ name: 'innerTab', fields: [text('deepOk'), text('deepRestricted')] }],\n },\n ],\n },\n ],\n } as ClientField,\n ]\n\n const permissions = {\n outerTab: {\n ...granted,\n fields: {\n innerTab: {\n ...granted,\n fields: {\n deepOk: granted,\n deepRestricted: readOnly,\n },\n },\n },\n },\n }\n\n const options = optionsFor(fields, permissions)\n const names = namesOf(options)\n\n expect(names).toContain('deepOk')\n expect(names).not.toContain('deepRestricted')\n })\n\n it('only affects the named tab that contains the restricted field', () => {\n const fields: ClientField[] = [\n {\n type: 'tabs',\n tabs: [\n { name: 'cleanTab', fields: [text('cleanField')] },\n { name: 'restrictedHostTab', fields: [text('restrictedField')] },\n ],\n } as ClientField,\n ]\n\n const permissions = {\n cleanTab: { ...granted, fields: { cleanField: granted } },\n restrictedHostTab: { ...granted, fields: { restrictedField: readOnly } },\n }\n\n const options = optionsFor(fields, permissions)\n const names = namesOf(options)\n\n expect(names).toContain('cleanField')\n expect(names).not.toContain('restrictedField')\n })\n\n it('includes every named-tab field when permissions are fully granted', () => {\n const fields: ClientField[] = [\n {\n type: 'tabs',\n tabs: [{ name: 'namedTab', fields: [text('a'), text('b')] }],\n } as ClientField,\n ]\n\n const options = optionsFor(fields, true)\n const names = namesOf(options)\n\n expect(names).toEqual(expect.arrayContaining(['a', 'b']))\n })\n\n it('applies parent permissions to an unnamed tab and excludes its restricted fields', () => {\n const fields: ClientField[] = [\n {\n type: 'tabs',\n tabs: [{ label: 'Unnamed', fields: [text('okAtRoot'), text('restrictedAtRoot')] }],\n } as ClientField,\n ]\n\n // Unnamed tabs share the parent's permission map, so subfields resolve at the parent level.\n const permissions = {\n okAtRoot: granted,\n restrictedAtRoot: readOnly,\n }\n\n const options = optionsFor(fields, permissions)\n const names = namesOf(options)\n\n expect(names).toContain('okAtRoot')\n expect(names).not.toContain('restrictedAtRoot')\n })\n})\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/FolderView/Drawers/MoveToFolder/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAY,MAAM,SAAS,CAAA;AACvD,OAAO,KAAK,EAAoB,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAKxE,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/FolderView/Drawers/MoveToFolder/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAY,MAAM,SAAS,CAAA;AACvD,OAAO,KAAK,EAAoB,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAKxE,OAAO,KAAK,MAAM,OAAO,CAAA;AAkBzB,OAAO,cAAc,CAAA;AAMrB,KAAK,WAAW,GACZ;IACE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAA;CACrC,GACD;IACE,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,CAAA;AACL,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,yBAAyB,EAAE,cAAc,EAAE,CAAA;IACpD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,EAAE,CAAA;IACxC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE;QACzB,EAAE,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;QAC1B,IAAI,EAAE,IAAI,GAAG,MAAM,CAAA;KACpB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAChG;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CACpC,GAAG,WAAW,CAAA;AAEf,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,uBAAuB,qBAMrE"}
|