@payloadcms/ui 4.0.0-internal.add4c47 → 4.0.0-internal.af6aad0
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/css/app.css +121 -0
- package/dist/css/forms.css +0 -6
- package/dist/css/spacing.css +10 -3
- package/dist/css/z-index.css +1 -0
- package/dist/elements/AddNewRelation/index.css +0 -5
- package/dist/elements/AddNewRelation/index.js +2 -2
- package/dist/elements/AddNewRelation/index.js.map +1 -1
- package/dist/elements/AppHeader/index.css +5 -3
- package/dist/elements/AppHeader/index.d.ts +1 -8
- package/dist/elements/AppHeader/index.d.ts.map +1 -1
- package/dist/elements/AppHeader/index.js +8 -13
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/ArrayAction/index.d.ts +1 -0
- package/dist/elements/ArrayAction/index.d.ts.map +1 -1
- package/dist/elements/ArrayAction/index.js +45 -32
- package/dist/elements/ArrayAction/index.js.map +1 -1
- package/dist/elements/BulkUpload/AddFilesView/index.css +10 -4
- package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/AddFilesView/index.js +71 -51
- package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
- package/dist/elements/BulkUpload/EditMany/DrawerContent.js +2 -2
- package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/Button/index.css +25 -2
- package/dist/elements/Button/index.d.ts.map +1 -1
- package/dist/elements/Button/index.js +2 -0
- package/dist/elements/Button/index.js.map +1 -1
- package/dist/elements/Button/types.d.ts +1 -1
- package/dist/elements/Button/types.d.ts.map +1 -1
- package/dist/elements/Button/types.js.map +1 -1
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts +10 -0
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +65 -3
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js +345 -1
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js.map +1 -1
- package/dist/elements/CodeEditor/index.css +0 -5
- package/dist/elements/CommandPalette/index.css +0 -7
- package/dist/elements/CopyToClipboard/index.d.ts +1 -0
- package/dist/elements/CopyToClipboard/index.d.ts.map +1 -1
- package/dist/elements/CopyToClipboard/index.js +10 -8
- package/dist/elements/CopyToClipboard/index.js.map +1 -1
- package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
- package/dist/elements/CreateDocumentButton/index.js +4 -1
- package/dist/elements/CreateDocumentButton/index.js.map +1 -1
- package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/elements/DatePicker/DatePicker.js +1 -0
- package/dist/elements/DatePicker/DatePicker.js.map +1 -1
- package/dist/elements/DatePicker/index.css +1 -1
- package/dist/elements/DefaultListViewTabs/index.css +1 -0
- package/dist/elements/DefaultListViewTabs/index.d.ts.map +1 -1
- package/dist/elements/DefaultListViewTabs/index.js +84 -62
- package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
- package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
- package/dist/elements/DeleteDocument/index.js +16 -1
- package/dist/elements/DeleteDocument/index.js.map +1 -1
- package/dist/elements/DocumentDrawer/types.d.ts +1 -1
- package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/types.js.map +1 -1
- package/dist/elements/Drawer/index.css +10 -4
- package/dist/elements/Drawer/types.d.ts +2 -2
- package/dist/elements/Drawer/types.d.ts.map +1 -1
- package/dist/elements/Drawer/types.js.map +1 -1
- package/dist/elements/Dropzone/index.css +10 -4
- package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +3 -2
- package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
- package/dist/elements/EditMany/DrawerContent.js +2 -2
- package/dist/elements/EditMany/DrawerContent.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/FileDetails/StaticFileDetails/index.css +8 -9
- package/dist/elements/FileManager/FileToolbar/index.d.ts.map +1 -1
- package/dist/elements/FileManager/FileToolbar/index.js +3 -0
- package/dist/elements/FileManager/FileToolbar/index.js.map +1 -1
- package/dist/elements/FileManager/index.css +0 -30
- package/dist/elements/FileManager/index.d.ts.map +1 -1
- package/dist/elements/FileManager/index.js +380 -287
- package/dist/elements/FileManager/index.js.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/Column/index.css +22 -4
- package/dist/elements/Hierarchy/ColumnBrowser/Column/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js +68 -49
- package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.css +100 -16
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js +97 -137
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/index.js +51 -23
- package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts +26 -3
- package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/types.js.map +1 -1
- package/dist/elements/Hierarchy/CreateNewButton/index.css +9 -0
- package/dist/elements/Hierarchy/CreateNewButton/index.d.ts +9 -0
- package/dist/elements/Hierarchy/CreateNewButton/index.d.ts.map +1 -0
- package/dist/elements/Hierarchy/CreateNewButton/index.js +111 -0
- package/dist/elements/Hierarchy/CreateNewButton/index.js.map +1 -0
- package/dist/elements/Hierarchy/DocHeaderButton/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/DocHeaderButton/index.js +6 -1
- package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -1
- package/dist/elements/Hierarchy/DocHeaderButton/index.server.js +1 -3
- package/dist/elements/Hierarchy/DocHeaderButton/index.server.js.map +1 -1
- package/dist/elements/Hierarchy/Field/index.client.d.ts +5 -0
- package/dist/elements/Hierarchy/Field/index.client.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Field/index.client.js +120 -95
- package/dist/elements/Hierarchy/Field/index.client.js.map +1 -1
- package/dist/elements/Hierarchy/Field/index.css +3 -34
- package/dist/elements/Hierarchy/Modal/Footer/index.css +45 -0
- package/dist/elements/Hierarchy/Modal/Footer/index.d.ts +28 -0
- package/dist/elements/Hierarchy/Modal/Footer/index.d.ts.map +1 -0
- package/dist/elements/Hierarchy/Modal/Footer/index.js +166 -0
- package/dist/elements/Hierarchy/Modal/Footer/index.js.map +1 -0
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts +18 -4
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js +88 -24
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js.map +1 -1
- package/dist/elements/Hierarchy/Modal/index.css +4 -53
- package/dist/elements/Hierarchy/Modal/index.d.ts +5 -2
- package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Modal/index.js +136 -99
- package/dist/elements/Hierarchy/Modal/index.js.map +1 -1
- package/dist/elements/Hierarchy/Modal/types.d.ts +15 -0
- package/dist/elements/Hierarchy/Modal/types.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Modal/types.js.map +1 -1
- package/dist/elements/Hierarchy/MoveMany/index.d.ts +7 -3
- package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/MoveMany/index.js +43 -170
- package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
- package/dist/elements/Hierarchy/Search/index.css +2 -9
- package/dist/elements/Hierarchy/Search/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Search/index.js +6 -73
- package/dist/elements/Hierarchy/Search/index.js.map +1 -1
- package/dist/elements/Hierarchy/Search/types.d.ts +2 -6
- package/dist/elements/Hierarchy/Search/types.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Search/types.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts +0 -4
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +101 -166
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js +3 -21
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/LoadMore/index.css +3 -3
- package/dist/elements/Hierarchy/Tree/TreeNode/index.css +59 -30
- package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts +1 -1
- package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/TreeNode/index.js +54 -10
- package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/index.css +8 -9
- package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/index.js +29 -47
- package/dist/elements/Hierarchy/Tree/index.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/types.d.ts +9 -1
- package/dist/elements/Hierarchy/Tree/types.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/types.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/useChildren.js +11 -1
- package/dist/elements/Hierarchy/Tree/useChildren.js.map +1 -1
- package/dist/elements/Hierarchy/getFolderHierarchySlug.d.ts +22 -0
- package/dist/elements/Hierarchy/getFolderHierarchySlug.d.ts.map +1 -0
- package/dist/elements/Hierarchy/getFolderHierarchySlug.js +17 -0
- package/dist/elements/Hierarchy/getFolderHierarchySlug.js.map +1 -0
- package/dist/elements/Hierarchy/move/moveDocuments.d.ts +34 -0
- package/dist/elements/Hierarchy/move/moveDocuments.d.ts.map +1 -0
- package/dist/elements/Hierarchy/move/moveDocuments.js +94 -0
- package/dist/elements/Hierarchy/move/moveDocuments.js.map +1 -0
- package/dist/elements/IDLabel/index.css +6 -0
- package/dist/elements/IDLabel/index.d.ts +1 -1
- package/dist/elements/IDLabel/index.d.ts.map +1 -1
- package/dist/elements/IDLabel/index.js +16 -21
- package/dist/elements/IDLabel/index.js.map +1 -1
- package/dist/elements/InputStepper/index.css +0 -1
- package/dist/elements/ListControls/index.d.ts.map +1 -1
- package/dist/elements/ListControls/index.js +3 -2
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/ListControls/types.d.ts +4 -0
- package/dist/elements/ListControls/types.d.ts.map +1 -1
- package/dist/elements/ListControls/types.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts +1 -7
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +26 -32
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
- package/dist/elements/Locked/index.css +0 -8
- package/dist/elements/Locked/index.d.ts.map +1 -1
- package/dist/elements/Locked/index.js +70 -64
- package/dist/elements/Locked/index.js.map +1 -1
- package/dist/elements/Nav/NavSidebarToggle/index.js +1 -1
- package/dist/elements/Nav/NavSidebarToggle/index.js.map +1 -1
- package/dist/elements/Nav/NavWrapper/index.d.ts +1 -0
- package/dist/elements/Nav/NavWrapper/index.d.ts.map +1 -1
- package/dist/elements/Nav/NavWrapper/index.js +12 -18
- package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
- package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
- package/dist/elements/Nav/SidebarTabs/index.client.js +12 -5
- package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
- package/dist/elements/Nav/SidebarTabs/index.css +1 -7
- package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts +1 -0
- package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts.map +1 -1
- package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js +2 -1
- package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js.map +1 -1
- package/dist/elements/Nav/context.d.ts +0 -1
- package/dist/elements/Nav/context.d.ts.map +1 -1
- package/dist/elements/Nav/context.js +92 -67
- package/dist/elements/Nav/context.js.map +1 -1
- package/dist/elements/Nav/index.css +47 -42
- package/dist/elements/Nav/index.d.ts +4 -0
- package/dist/elements/Nav/index.d.ts.map +1 -1
- package/dist/elements/Nav/index.js +16 -1
- package/dist/elements/Nav/index.js.map +1 -1
- package/dist/elements/NavGroup/index.css +29 -16
- package/dist/elements/Popup/PopupButtonList/index.css +33 -17
- package/dist/elements/Popup/index.css +6 -0
- package/dist/elements/Popup/index.d.ts +10 -0
- package/dist/elements/Popup/index.d.ts.map +1 -1
- package/dist/elements/Popup/index.js +13 -6
- package/dist/elements/Popup/index.js.map +1 -1
- package/dist/elements/PreviewButton/index.d.ts +1 -2
- package/dist/elements/PreviewButton/index.d.ts.map +1 -1
- package/dist/elements/PreviewButton/index.js +11 -5
- package/dist/elements/PreviewButton/index.js.map +1 -1
- package/dist/elements/PreviewSizes/index.css +8 -9
- package/dist/elements/PublishButton/ScheduleDrawer/index.js +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
- package/dist/elements/QueryPresets/QueryPresetBar/index.js +1 -3
- package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
- package/dist/elements/ReactSelect/ClearIndicator/index.css +0 -1
- package/dist/elements/ReactSelect/MultiValue/index.css +0 -1
- package/dist/elements/ReactSelect/index.css +0 -3
- package/dist/elements/ReactSelect/types.d.ts +5 -0
- package/dist/elements/ReactSelect/types.d.ts.map +1 -1
- package/dist/elements/ReactSelect/types.js.map +1 -1
- package/dist/elements/RelationshipTable/Pagination.d.ts +0 -1
- package/dist/elements/RelationshipTable/Pagination.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/Pagination.js +27 -77
- package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
- package/dist/elements/RelationshipTable/index.d.ts +1 -0
- package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/index.js +41 -5
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/RenderTitle/index.css +4 -0
- package/dist/elements/RenderTitle/index.d.ts.map +1 -1
- package/dist/elements/RenderTitle/index.js +18 -13
- package/dist/elements/RenderTitle/index.js.map +1 -1
- package/dist/elements/SegmentedControl/index.css +58 -0
- package/dist/elements/SegmentedControl/index.d.ts +19 -0
- package/dist/elements/SegmentedControl/index.d.ts.map +1 -0
- package/dist/elements/SegmentedControl/index.js +104 -0
- package/dist/elements/SegmentedControl/index.js.map +1 -0
- package/dist/elements/SelectAll/index.d.ts.map +1 -1
- package/dist/elements/SelectAll/index.js +1 -2
- package/dist/elements/SelectAll/index.js.map +1 -1
- package/dist/elements/SelectRow/index.d.ts +4 -3
- package/dist/elements/SelectRow/index.d.ts.map +1 -1
- package/dist/elements/SelectRow/index.js +11 -9
- package/dist/elements/SelectRow/index.js.map +1 -1
- package/dist/elements/SidebarRow/index.css +1 -5
- package/dist/elements/SidebarToggle/index.css +3 -18
- package/dist/elements/SortColumn/index.d.ts.map +1 -1
- package/dist/elements/SortColumn/index.js +42 -38
- package/dist/elements/SortColumn/index.js.map +1 -1
- package/dist/elements/SortHeader/index.d.ts.map +1 -1
- package/dist/elements/SortHeader/index.js +29 -26
- package/dist/elements/SortHeader/index.js.map +1 -1
- package/dist/elements/StepNav/DropTarget/index.css +20 -0
- package/dist/elements/StepNav/DropTarget/index.d.ts +16 -0
- package/dist/elements/StepNav/DropTarget/index.d.ts.map +1 -0
- package/dist/elements/StepNav/DropTarget/index.js +71 -0
- package/dist/elements/StepNav/DropTarget/index.js.map +1 -0
- package/dist/elements/StepNav/index.css +64 -14
- package/dist/elements/StepNav/index.d.ts.map +1 -1
- package/dist/elements/StepNav/index.js +147 -69
- package/dist/elements/StepNav/index.js.map +1 -1
- package/dist/elements/StepNav/types.d.ts +6 -0
- package/dist/elements/StepNav/types.d.ts.map +1 -1
- package/dist/elements/StepNav/types.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.css +5 -7
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +14 -3
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js +3 -11
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/Table/OrderableRow.d.ts +3 -1
- package/dist/elements/Table/OrderableRow.d.ts.map +1 -1
- package/dist/elements/Table/OrderableRow.js +17 -1
- package/dist/elements/Table/OrderableRow.js.map +1 -1
- package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
- package/dist/elements/Table/OrderableTable.js +19 -2
- package/dist/elements/Table/OrderableTable.js.map +1 -1
- package/dist/elements/TableSection/index.css +0 -1
- package/dist/elements/Tooltip/index.css +15 -34
- package/dist/elements/Tooltip/index.d.ts +11 -3
- package/dist/elements/Tooltip/index.d.ts.map +1 -1
- package/dist/elements/Tooltip/index.js +151 -85
- package/dist/elements/Tooltip/index.js.map +1 -1
- package/dist/elements/Upload/UploadFromURLModal/index.d.ts +1 -1
- package/dist/elements/Upload/UploadFromURLModal/index.d.ts.map +1 -1
- package/dist/elements/Upload/UploadFromURLModal/index.js.map +1 -1
- package/dist/elements/Upload/index.css +39 -37
- package/dist/elements/Upload/index.d.ts.map +1 -1
- package/dist/elements/Upload/index.js +37 -99
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/elements/Upload/usePasteFromClipboard.d.ts +14 -0
- package/dist/elements/Upload/usePasteFromClipboard.d.ts.map +1 -0
- package/dist/elements/Upload/usePasteFromClipboard.js +93 -0
- package/dist/elements/Upload/usePasteFromClipboard.js.map +1 -0
- package/dist/elements/Upload/useUploadFromUrl.d.ts +20 -0
- package/dist/elements/Upload/useUploadFromUrl.d.ts.map +1 -0
- package/dist/elements/Upload/useUploadFromUrl.js +201 -0
- package/dist/elements/Upload/useUploadFromUrl.js.map +1 -0
- package/dist/elements/UploadDropzoneContent/index.css +31 -0
- package/dist/elements/UploadDropzoneContent/index.d.ts +17 -0
- package/dist/elements/UploadDropzoneContent/index.d.ts.map +1 -0
- package/dist/elements/UploadDropzoneContent/index.js +62 -0
- package/dist/elements/UploadDropzoneContent/index.js.map +1 -0
- package/dist/elements/UserMenu/HoverSubmenuGroup.d.ts +18 -0
- package/dist/elements/UserMenu/HoverSubmenuGroup.d.ts.map +1 -0
- package/dist/elements/UserMenu/HoverSubmenuGroup.js +38 -0
- package/dist/elements/UserMenu/HoverSubmenuGroup.js.map +1 -0
- package/dist/elements/UserMenu/LanguageMenu/index.d.ts.map +1 -1
- package/dist/elements/UserMenu/LanguageMenu/index.js +83 -39
- package/dist/elements/UserMenu/LanguageMenu/index.js.map +1 -1
- package/dist/elements/UserMenu/SettingsMenu/index.d.ts.map +1 -1
- package/dist/elements/UserMenu/SettingsMenu/index.js +57 -21
- package/dist/elements/UserMenu/SettingsMenu/index.js.map +1 -1
- package/dist/elements/UserMenu/ThemeMenu/index.d.ts.map +1 -1
- package/dist/elements/UserMenu/ThemeMenu/index.js +83 -39
- package/dist/elements/UserMenu/ThemeMenu/index.js.map +1 -1
- package/dist/elements/UserMenu/index.css +32 -2
- package/dist/elements/UserMenu/index.d.ts +1 -0
- package/dist/elements/UserMenu/index.d.ts.map +1 -1
- package/dist/elements/UserMenu/index.js +77 -51
- package/dist/elements/UserMenu/index.js.map +1 -1
- package/dist/elements/UserMenu/useHoverSubmenu.d.ts +21 -0
- package/dist/elements/UserMenu/useHoverSubmenu.d.ts.map +1 -0
- package/dist/elements/UserMenu/useHoverSubmenu.js +260 -0
- package/dist/elements/UserMenu/useHoverSubmenu.js.map +1 -0
- package/dist/elements/ViewModeToggle/index.d.ts +8 -0
- package/dist/elements/ViewModeToggle/index.d.ts.map +1 -0
- package/dist/elements/ViewModeToggle/index.js +29 -0
- package/dist/elements/ViewModeToggle/index.js.map +1 -0
- package/dist/elements/WhereBuilder/conditionValue.d.ts +32 -0
- package/dist/elements/WhereBuilder/conditionValue.d.ts.map +1 -0
- package/dist/elements/WhereBuilder/conditionValue.js +32 -0
- package/dist/elements/WhereBuilder/conditionValue.js.map +1 -0
- package/dist/elements/WhereBuilder/conditionValue.spec.js +65 -0
- package/dist/elements/WhereBuilder/conditionValue.spec.js.map +1 -0
- package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/index.js +15 -4
- package/dist/elements/WhereBuilder/index.js.map +1 -1
- package/dist/exports/client/index.d.ts +9 -1
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +1 -1
- package/dist/exports/client/index.js.map +3 -3
- package/dist/fields/Array/ArrayRow.d.ts +1 -0
- package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
- package/dist/fields/Array/ArrayRow.js +2 -0
- package/dist/fields/Array/ArrayRow.js.map +1 -1
- package/dist/fields/Array/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js +38 -10
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Blocks/BlockRow.d.ts +1 -0
- package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
- package/dist/fields/Blocks/BlockRow.js +2 -0
- package/dist/fields/Blocks/BlockRow.js.map +1 -1
- package/dist/fields/Blocks/RowActions.d.ts +1 -0
- package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
- package/dist/fields/Blocks/RowActions.js +22 -19
- package/dist/fields/Blocks/RowActions.js.map +1 -1
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +38 -10
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Checkbox/Input.d.ts +4 -2
- package/dist/fields/Checkbox/Input.d.ts.map +1 -1
- package/dist/fields/Checkbox/Input.js +136 -148
- package/dist/fields/Checkbox/Input.js.map +1 -1
- package/dist/fields/Checkbox/index.css +163 -186
- package/dist/fields/FieldError/index.css +0 -9
- package/dist/fields/FieldError/index.d.ts.map +1 -1
- package/dist/fields/FieldError/index.js +19 -9
- package/dist/fields/FieldError/index.js.map +1 -1
- package/dist/fields/Join/index.css +9 -0
- package/dist/fields/Join/index.d.ts.map +1 -1
- package/dist/fields/Join/index.js +13 -9
- package/dist/fields/Join/index.js.map +1 -1
- package/dist/fields/RadioGroup/index.css +0 -7
- package/dist/fields/Relationship/Input.d.ts.map +1 -1
- package/dist/fields/Relationship/Input.js +53 -17
- package/dist/fields/Relationship/Input.js.map +1 -1
- package/dist/fields/Relationship/optionsReducer.d.ts.map +1 -1
- package/dist/fields/Relationship/optionsReducer.js +2 -0
- package/dist/fields/Relationship/optionsReducer.js.map +1 -1
- package/dist/fields/Relationship/types.d.ts +24 -0
- package/dist/fields/Relationship/types.d.ts.map +1 -1
- package/dist/fields/Relationship/types.js.map +1 -1
- package/dist/fields/Slug/index.css +0 -1
- package/dist/fields/Slug/index.d.ts.map +1 -1
- package/dist/fields/Slug/index.js +80 -125
- package/dist/fields/Slug/index.js.map +1 -1
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +44 -16
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/fields/Upload/Input.spec.js +241 -0
- package/dist/fields/Upload/Input.spec.js.map +1 -0
- package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
- package/dist/forms/Form/fieldReducer.js +3 -1
- package/dist/forms/Form/fieldReducer.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +9 -1
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/types.d.ts +1 -1
- package/dist/forms/Form/types.d.ts.map +1 -1
- package/dist/forms/Form/types.js.map +1 -1
- package/dist/forms/WatchChildErrors/index.d.ts.map +1 -1
- package/dist/forms/WatchChildErrors/index.js +2 -2
- package/dist/forms/WatchChildErrors/index.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +2 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.js +1 -3
- package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
- package/dist/icons/CollapseLayers/index.css +5 -0
- package/dist/icons/CollapseLayers/index.d.ts +7 -0
- package/dist/icons/CollapseLayers/index.d.ts.map +1 -0
- package/dist/icons/CollapseLayers/index.js +23 -0
- package/dist/icons/CollapseLayers/index.js.map +1 -0
- package/dist/icons/Edit/index.d.ts +0 -1
- package/dist/icons/Edit/index.d.ts.map +1 -1
- package/dist/icons/Edit/index.js +4 -4
- package/dist/icons/Edit/index.js.map +1 -1
- package/dist/icons/Table/index.css +5 -0
- package/dist/icons/Table/index.d.ts +7 -0
- package/dist/icons/Table/index.d.ts.map +1 -0
- package/dist/icons/Table/index.js +25 -0
- package/dist/icons/Table/index.js.map +1 -0
- package/dist/layouts/Root/index.d.ts +1 -1
- package/dist/layouts/Root/index.d.ts.map +1 -1
- package/dist/layouts/Root/index.js +8 -2
- package/dist/layouts/Root/index.js.map +1 -1
- package/dist/providers/Actions/index.d.ts +1 -0
- package/dist/providers/Actions/index.d.ts.map +1 -1
- package/dist/providers/Actions/index.js +43 -11
- package/dist/providers/Actions/index.js.map +1 -1
- package/dist/providers/Auth/AuthSessionDebug/index.css +48 -0
- package/dist/providers/Auth/AuthSessionDebug/index.d.ts +13 -0
- package/dist/providers/Auth/AuthSessionDebug/index.d.ts.map +1 -0
- package/dist/providers/Auth/AuthSessionDebug/index.js +93 -0
- package/dist/providers/Auth/AuthSessionDebug/index.js.map +1 -0
- package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts +21 -0
- package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts.map +1 -0
- package/dist/providers/Auth/AuthSessionDebug/utilities.js +53 -0
- package/dist/providers/Auth/AuthSessionDebug/utilities.js.map +1 -0
- package/dist/providers/Auth/authSessionRequests.d.ts +27 -0
- package/dist/providers/Auth/authSessionRequests.d.ts.map +1 -0
- package/dist/providers/Auth/authSessionRequests.js +119 -0
- package/dist/providers/Auth/authSessionRequests.js.map +1 -0
- package/dist/providers/Auth/authSessionRequests.spec.js +121 -0
- package/dist/providers/Auth/authSessionRequests.spec.js.map +1 -0
- package/dist/providers/Auth/index.d.ts +2 -56
- package/dist/providers/Auth/index.d.ts.map +1 -1
- package/dist/providers/Auth/index.js +283 -135
- package/dist/providers/Auth/index.js.map +1 -1
- package/dist/providers/Auth/sessionActivity.d.ts +23 -0
- package/dist/providers/Auth/sessionActivity.d.ts.map +1 -0
- package/dist/providers/Auth/sessionActivity.js +49 -0
- package/dist/providers/Auth/sessionActivity.js.map +1 -0
- package/dist/providers/Auth/sessionActivity.spec.js +44 -0
- package/dist/providers/Auth/sessionActivity.spec.js.map +1 -0
- package/dist/providers/Auth/sessionTiming.d.ts +11 -0
- package/dist/providers/Auth/sessionTiming.d.ts.map +1 -0
- package/dist/providers/Auth/sessionTiming.js +18 -0
- package/dist/providers/Auth/sessionTiming.js.map +1 -0
- package/dist/providers/Auth/tabSessionSync/index.d.ts +17 -0
- package/dist/providers/Auth/tabSessionSync/index.d.ts.map +1 -0
- package/dist/providers/Auth/tabSessionSync/index.js +263 -0
- package/dist/providers/Auth/tabSessionSync/index.js.map +1 -0
- package/dist/providers/Auth/tabSessionSync/index.spec.js +463 -0
- package/dist/providers/Auth/tabSessionSync/index.spec.js.map +1 -0
- package/dist/providers/Auth/tabSessionSync/types.d.ts +107 -0
- package/dist/providers/Auth/tabSessionSync/types.d.ts.map +1 -0
- package/dist/providers/Auth/tabSessionSync/types.js +6 -0
- package/dist/providers/Auth/tabSessionSync/types.js.map +1 -0
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts +11 -0
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts.map +1 -0
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js +90 -0
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +1 -0
- package/dist/providers/Auth/tabSessionSync/utilities.d.ts +26 -0
- package/dist/providers/Auth/tabSessionSync/utilities.d.ts.map +1 -0
- package/dist/providers/Auth/tabSessionSync/utilities.js +159 -0
- package/dist/providers/Auth/tabSessionSync/utilities.js.map +1 -0
- package/dist/providers/Auth/types.d.ts +65 -0
- package/dist/providers/Auth/types.d.ts.map +1 -0
- package/dist/providers/Auth/types.js +2 -0
- package/dist/providers/Auth/types.js.map +1 -0
- package/dist/providers/Auth/useAuthSessionTimers.d.ts +26 -0
- package/dist/providers/Auth/useAuthSessionTimers.d.ts.map +1 -0
- package/dist/providers/Auth/useAuthSessionTimers.js +203 -0
- package/dist/providers/Auth/useAuthSessionTimers.js.map +1 -0
- package/dist/providers/Auth/useAuthSessionTimers.spec.js +311 -0
- package/dist/providers/Auth/useAuthSessionTimers.spec.js.map +1 -0
- package/dist/providers/DocumentTitle/index.d.ts +1 -0
- package/dist/providers/DocumentTitle/index.d.ts.map +1 -1
- package/dist/providers/DocumentTitle/index.js +2 -0
- package/dist/providers/DocumentTitle/index.js.map +1 -1
- package/dist/providers/Embed/index.d.ts +24 -0
- package/dist/providers/Embed/index.d.ts.map +1 -0
- package/dist/providers/Embed/index.js +105 -0
- package/dist/providers/Embed/index.js.map +1 -0
- package/dist/providers/FormErrorHandler/index.d.ts +24 -0
- package/dist/providers/FormErrorHandler/index.d.ts.map +1 -0
- package/dist/providers/FormErrorHandler/index.js +6 -0
- package/dist/providers/FormErrorHandler/index.js.map +1 -0
- package/dist/providers/Hierarchy/index.d.ts.map +1 -1
- package/dist/providers/Hierarchy/index.js +53 -24
- package/dist/providers/Hierarchy/index.js.map +1 -1
- package/dist/providers/Hierarchy/types.d.ts +2 -0
- package/dist/providers/Hierarchy/types.d.ts.map +1 -1
- package/dist/providers/Hierarchy/types.js.map +1 -1
- package/dist/providers/HierarchyDnd/index.css +51 -0
- package/dist/providers/HierarchyDnd/index.d.ts +21 -0
- package/dist/providers/HierarchyDnd/index.d.ts.map +1 -0
- package/dist/providers/HierarchyDnd/index.js +163 -0
- package/dist/providers/HierarchyDnd/index.js.map +1 -0
- package/dist/providers/HierarchyDnd/types.d.ts +56 -0
- package/dist/providers/HierarchyDnd/types.d.ts.map +1 -0
- package/dist/providers/HierarchyDnd/types.js +21 -0
- package/dist/providers/HierarchyDnd/types.js.map +1 -0
- package/dist/providers/Locale/index.d.ts.map +1 -1
- package/dist/providers/Locale/index.js +41 -36
- package/dist/providers/Locale/index.js.map +1 -1
- package/dist/providers/Root/index.d.ts +1 -0
- package/dist/providers/Root/index.d.ts.map +1 -1
- package/dist/providers/Root/index.js +37 -31
- package/dist/providers/Root/index.js.map +1 -1
- package/dist/providers/RouteTransition/ProgressBar/index.js +4 -1
- package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
- package/dist/providers/RouteTransition/ProgressBar/index.spec.js +44 -0
- package/dist/providers/RouteTransition/ProgressBar/index.spec.js.map +1 -0
- package/dist/providers/RouteTransition/index.d.ts +2 -0
- package/dist/providers/RouteTransition/index.d.ts.map +1 -1
- package/dist/providers/RouteTransition/index.js +42 -14
- package/dist/providers/RouteTransition/index.js.map +1 -1
- package/dist/providers/SidebarTabs/index.d.ts +3 -2
- package/dist/providers/SidebarTabs/index.d.ts.map +1 -1
- package/dist/providers/SidebarTabs/index.js.map +1 -1
- package/dist/providers/Theme/index.d.ts +3 -0
- package/dist/providers/Theme/index.d.ts.map +1 -1
- package/dist/providers/Theme/index.js +107 -95
- package/dist/providers/Theme/index.js.map +1 -1
- package/dist/styles.css +12 -10
- package/dist/templates/Default/Wrapper/index.css +2 -1
- package/dist/templates/Default/Wrapper/index.d.ts +2 -0
- package/dist/templates/Default/Wrapper/index.d.ts.map +1 -1
- package/dist/templates/Default/Wrapper/index.js +12 -6
- package/dist/templates/Default/Wrapper/index.js.map +1 -1
- package/dist/templates/Default/index.css +3 -1
- package/dist/templates/Default/index.d.ts +1 -0
- package/dist/templates/Default/index.d.ts.map +1 -1
- package/dist/templates/Default/index.js +19 -15
- package/dist/templates/Default/index.js.map +1 -1
- package/dist/utilities/combineFieldLabel.d.ts.map +1 -1
- package/dist/utilities/combineFieldLabel.js +5 -1
- package/dist/utilities/combineFieldLabel.js.map +1 -1
- package/dist/utilities/formatMetadata.d.ts.map +1 -1
- package/dist/utilities/formatMetadata.js +0 -5
- package/dist/utilities/formatMetadata.js.map +1 -1
- package/dist/utilities/generateFieldID.d.ts +1 -1
- package/dist/utilities/generateFieldID.d.ts.map +1 -1
- package/dist/utilities/generateFieldID.js +2 -2
- package/dist/utilities/generateFieldID.js.map +1 -1
- package/dist/utilities/getFilesFromClipboard.d.ts +10 -0
- package/dist/utilities/getFilesFromClipboard.d.ts.map +1 -0
- package/dist/utilities/getFilesFromClipboard.js +49 -0
- package/dist/utilities/getFilesFromClipboard.js.map +1 -0
- package/dist/utilities/getRequestEmbed.d.ts +14 -0
- package/dist/utilities/getRequestEmbed.d.ts.map +1 -0
- package/dist/utilities/getRequestEmbed.js +10 -0
- package/dist/utilities/getRequestEmbed.js.map +1 -0
- package/dist/utilities/renderTable.d.ts.map +1 -1
- package/dist/utilities/renderTable.js +18 -2
- package/dist/utilities/renderTable.js.map +1 -1
- package/dist/utilities/slugify.d.ts.map +1 -1
- package/dist/utilities/slugify.js +50 -6
- package/dist/utilities/slugify.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +3 -2
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +7 -7
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +104 -66
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.css +29 -144
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +4 -4
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +10 -10
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
- package/dist/views/Edit/SetDocumentTitle/index.d.ts.map +1 -1
- package/dist/views/Edit/SetDocumentTitle/index.js +4 -1
- package/dist/views/Edit/SetDocumentTitle/index.js.map +1 -1
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +3 -2
- package/dist/views/Edit/index.js.map +1 -1
- package/dist/views/HierarchyList/DocumentListSelection/index.d.ts.map +1 -1
- package/dist/views/HierarchyList/DocumentListSelection/index.js +100 -105
- package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.css +216 -0
- package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.d.ts +20 -0
- package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.d.ts.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.js +182 -0
- package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.js.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.css +38 -0
- package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.d.ts +15 -0
- package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.d.ts.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.js +85 -0
- package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.js.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.css +98 -0
- package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.d.ts +27 -0
- package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.d.ts.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.js +84 -0
- package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.js.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/HierarchyCard/index.d.ts +19 -0
- package/dist/views/HierarchyList/HierarchyCards/HierarchyCard/index.d.ts.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/HierarchyCard/index.js +100 -0
- package/dist/views/HierarchyList/HierarchyCards/HierarchyCard/index.js.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/PlaneItem/index.d.ts +53 -0
- package/dist/views/HierarchyList/HierarchyCards/PlaneItem/index.d.ts.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/PlaneItem/index.js +145 -0
- package/dist/views/HierarchyList/HierarchyCards/PlaneItem/index.js.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/getThumbnailSrc.d.ts +8 -0
- package/dist/views/HierarchyList/HierarchyCards/getThumbnailSrc.d.ts.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/getThumbnailSrc.js +21 -0
- package/dist/views/HierarchyList/HierarchyCards/getThumbnailSrc.js.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/index.css +115 -0
- package/dist/views/HierarchyList/HierarchyCards/index.d.ts +80 -0
- package/dist/views/HierarchyList/HierarchyCards/index.d.ts.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/index.js +457 -0
- package/dist/views/HierarchyList/HierarchyCards/index.js.map +1 -0
- package/dist/views/HierarchyList/HierarchyListHeader/index.d.ts +6 -1
- package/dist/views/HierarchyList/HierarchyListHeader/index.d.ts.map +1 -1
- package/dist/views/HierarchyList/HierarchyListHeader/index.js +10 -8
- package/dist/views/HierarchyList/HierarchyListHeader/index.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.d.ts.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js +11 -10
- package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/SlotTable.js +3 -6
- package/dist/views/HierarchyList/HierarchyTable/SlotTable.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/index.css +51 -0
- package/dist/views/HierarchyList/HierarchyTable/index.d.ts +13 -1
- package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/index.js +156 -38
- package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/types.d.ts +6 -0
- package/dist/views/HierarchyList/HierarchyTable/types.d.ts.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/types.js.map +1 -1
- package/dist/views/HierarchyList/index.css +1 -1
- package/dist/views/HierarchyList/index.d.ts.map +1 -1
- package/dist/views/HierarchyList/index.js +103 -20
- package/dist/views/HierarchyList/index.js.map +1 -1
- package/dist/views/List/ListHeader/index.d.ts +1 -10
- package/dist/views/List/ListHeader/index.d.ts.map +1 -1
- package/dist/views/List/ListHeader/index.js +1 -3
- package/dist/views/List/ListHeader/index.js.map +1 -1
- package/dist/views/List/ListSelection/index.d.ts.map +1 -1
- package/dist/views/List/ListSelection/index.js +138 -122
- package/dist/views/List/ListSelection/index.js.map +1 -1
- package/dist/views/List/handleHierarchy.d.ts +6 -1
- package/dist/views/List/handleHierarchy.d.ts.map +1 -1
- package/dist/views/List/handleHierarchy.js +34 -3
- package/dist/views/List/handleHierarchy.js.map +1 -1
- package/dist/views/List/index.client.d.ts.map +1 -1
- package/dist/views/List/index.client.js +128 -18
- package/dist/views/List/index.client.js.map +1 -1
- package/dist/views/List/index.css +6 -1
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +29 -14
- package/dist/views/List/index.js.map +1 -1
- package/dist/views/Logout/index.d.ts.map +1 -1
- package/dist/views/Logout/index.js +11 -0
- package/dist/views/Logout/index.js.map +1 -1
- package/dist/views/Root/getCustomCollectionViewByRoute.d.ts.map +1 -1
- package/dist/views/Root/getCustomCollectionViewByRoute.js.map +1 -1
- package/dist/views/Root/getCustomGlobalViewByRoute.d.ts.map +1 -1
- package/dist/views/Root/getCustomGlobalViewByRoute.js.map +1 -1
- package/dist/views/Root/getCustomViewByKey.d.ts.map +1 -1
- package/dist/views/Root/getCustomViewByKey.js.map +1 -1
- package/dist/views/Root/getRouteData.d.ts.map +1 -1
- package/dist/views/Root/getRouteData.js +8 -2
- package/dist/views/Root/getRouteData.js.map +1 -1
- package/dist/views/Root/index.d.ts +12 -1
- package/dist/views/Root/index.d.ts.map +1 -1
- package/dist/views/Root/index.js +11 -3
- package/dist/views/Root/index.js.map +1 -1
- package/dist/views/Version/generateVersionViewMetadata.js.map +1 -1
- package/dist/views/Versions/generateVersionsViewMetadata.js.map +1 -1
- package/package.json +6 -11
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.css +0 -36
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts +0 -13
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.js +0 -141
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +0 -1
- package/dist/elements/RelationshipTable/Pagination.css +0 -39
- package/dist/scss/app.scss +0 -183
- package/dist/scss/colors.scss +0 -191
- package/dist/scss/custom.css +0 -1
- package/dist/scss/queries.scss +0 -27
- package/dist/scss/styles.scss +0 -9
- package/dist/scss/svg.scss +0 -10
- package/dist/scss/toastify.scss +0 -61
- package/dist/scss/vars.scss +0 -192
- package/dist/scss/z-index.scss +0 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getTranslation","combineWhereConstraints","DEFAULT_HIERARCHY_LIST_LIMIT","formatAdminURL","qs","React","useCallback","useMemo","useState","CreateDocumentButton","NoListResults","SimplePagination","TableSection","useConfig","useDocumentSelection","useRouteCache","useTranslation","ChildNameCell","DateCell","RelatedNameCell","SlotTable","baseClass","NameCell","props","row","_hasChildren","undefined","_jsx","CollectionCell","_collectionLabel","HierarchyTable","baseFilter","childrenData","collections","collectionSlug","hasCreatePermission","HierarchyIcon","hierarchyLabel","parentFieldName","parentId","relatedBaseFilters","relatedGroups","search","useAsTitle","i18n","t","clearRouteCache","config","routes","api","apiRoute","serverURL","getEntityConfig","childDocs","setChildDocs","docs","childPaginationData","setChildPaginationData","hasNextPage","hasPrevPage","limit","page","pagingCounter","totalDocs","totalPages","childLoading","setChildLoading","relatedState","setRelatedState","initial","group","data","isLoading","isLocked","isSelected","toggleAllInCollection","toggleSelection","getRowLockedUser","locked","id","_collectionSlug","_userEditing","handlePageChangeChildren","parentCondition","equals","or","exists","searchCondition","like","where","queryString","stringify","addQueryPrefix","url","path","response","fetch","credentials","ok","Error","result","json","_error","handlePageChangeRelated","relatedSlug","state","find","g","prev","relationshipCondition","fieldName","in","conditions","hasMany","push","relatedConfig","relatedUseAsTitle","admin","relatedBaseFilter","allowedCollectionsFieldName","hierarchy","collectionSpecific","childrenLabel","labels","plural","childTableData","map","doc","_allowedCollections","Boolean","_hierarchyIcon","hasChildren","hasRelated","some","allGroups","groups","slug","isChildren","isHierarchyEnabled","label","onCheckboxChange","metadata","allowedCollections","onPageChange","onSelectAllChange","paginationData","relatedLabel","relatedTableData","columns","accessor","Cell","className","heading","canShowCreateButton","length","Actions","drawerSlug","onSave","description","title","withMargin","_jsxs","Header","onChange","Content","enableCheckbox","enableDragHandle","enableHeader","enableSelectAll","mergeCheckboxHeader","selectedIds","Set","filter"],"sources":["../../../../src/views/HierarchyList/HierarchyTable/index.tsx"],"sourcesContent":["'use client'\n\nimport type { PaginatedDocs, Where } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n combineWhereConstraints,\n DEFAULT_HIERARCHY_LIST_LIMIT,\n formatAdminURL,\n} from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useMemo, useState } from 'react'\n\nimport type { CollectionOption } from '../../../elements/CreateDocumentButton/index.js'\nimport type { HierarchyDocument } from '../../../elements/Hierarchy/Tree/types.js'\nimport type { SlotColumn } from './SlotTable.js'\nimport type { RelatedGroup, TableRow } from './types.js'\n\nimport { CreateDocumentButton } from '../../../elements/CreateDocumentButton/index.js'\nimport { NoListResults } from '../../../elements/NoListResults/index.js'\nimport { SimplePagination } from '../../../elements/Pagination/SimplePagination/index.js'\nimport { TableSection } from '../../../elements/TableSection/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentSelection } from '../../../providers/DocumentSelection/index.js'\nimport { useRouteCache } from '../../../providers/RouteCache/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { ChildNameCell } from './ChildNameCell.js'\nimport { DateCell } from './DateCell.js'\nimport { RelatedNameCell } from './RelatedNameCell.js'\nimport { SlotTable } from './SlotTable.js'\nimport { baseClass } from './types.js'\nimport './index.css'\n\n// Top-level cell components to avoid nested component eslint errors\nconst NameCell: SlotColumn<TableRow>['Cell'] = (props) =>\n props.row._hasChildren !== undefined ? (\n <ChildNameCell {...props} />\n ) : (\n <RelatedNameCell {...props} />\n )\n\nconst CollectionCell: SlotColumn<TableRow>['Cell'] = ({ row }) => (\n <span>{row._collectionLabel}</span>\n)\n\nexport type HierarchyTableProps = {\n /** Base filter applied to hierarchy collection queries (e.g., tenant filter) */\n baseFilter?: Where\n childrenData?: PaginatedDocs<HierarchyDocument>\n /** Collections available for creation (for empty state) */\n collections?: CollectionOption[]\n collectionSlug: string\n hasCreatePermission?: boolean\n /** Resolved hierarchy icon component */\n HierarchyIcon?: React.ReactNode\n hierarchyLabel: string\n parentFieldName?: string\n parentId: null | number | string\n /** Base filters for related collections (keyed by collection slug) */\n relatedBaseFilters?: Record<string, Where>\n relatedGroups: RelatedGroup[]\n search?: string\n useAsTitle: string\n}\n\nexport function HierarchyTable({\n baseFilter,\n childrenData,\n collections,\n collectionSlug,\n hasCreatePermission,\n HierarchyIcon,\n hierarchyLabel,\n parentFieldName,\n parentId,\n relatedBaseFilters,\n relatedGroups,\n search,\n useAsTitle,\n}: HierarchyTableProps) {\n const { i18n, t } = useTranslation()\n const { clearRouteCache } = useRouteCache()\n const {\n config: {\n routes: { api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n // Children pagination state\n const [childDocs, setChildDocs] = useState(childrenData?.docs || [])\n const [childPaginationData, setChildPaginationData] = useState<Partial<PaginatedDocs>>({\n hasNextPage: childrenData?.hasNextPage || false,\n hasPrevPage: childrenData?.hasPrevPage || false,\n limit: childrenData?.limit || DEFAULT_HIERARCHY_LIST_LIMIT,\n page: childrenData?.page || 1,\n pagingCounter: childrenData?.pagingCounter || 1,\n totalDocs: childrenData?.totalDocs || 0,\n totalPages: childrenData?.totalPages || 1,\n })\n const [childLoading, setChildLoading] = useState(false)\n\n // Related groups pagination state (per collection)\n const [relatedState, setRelatedState] = useState<\n Record<\n string,\n {\n isLoading: boolean\n } & Partial<PaginatedDocs>\n >\n >(() => {\n const initial: Record<\n string,\n {\n isLoading: boolean\n } & Partial<PaginatedDocs>\n > = {}\n for (const group of relatedGroups) {\n initial[group.collectionSlug] = {\n docs: group.data.docs,\n hasNextPage: group.data.hasNextPage,\n hasPrevPage: group.data.hasPrevPage || false,\n isLoading: false,\n limit: group.data.limit || DEFAULT_HIERARCHY_LIST_LIMIT,\n page: group.data.page || 1,\n pagingCounter: group.data.pagingCounter || 1,\n totalDocs: group.data.totalDocs,\n totalPages: group.data.totalPages || 1,\n }\n }\n return initial\n })\n\n // Get selection functions from context\n const { isLocked, isSelected, toggleAllInCollection, toggleSelection } = useDocumentSelection()\n\n // Get the user who is locking a row (for SlotTable to show lock icon instead of checkbox)\n const getRowLockedUser = useCallback(\n (row: TableRow) => {\n const locked = isLocked({ id: row.id, collectionSlug: row._collectionSlug })\n return locked ? row._userEditing : undefined\n },\n [isLocked],\n )\n\n // Page change for children\n const handlePageChangeChildren = useCallback(\n async (page: number) => {\n if (childLoading) {\n return\n }\n\n setChildLoading(true)\n\n try {\n const parentCondition = parentId\n ? { [parentFieldName]: { equals: parentId } }\n : {\n or: [\n { [parentFieldName]: { exists: false } },\n { [parentFieldName]: { equals: null } },\n ],\n }\n\n const searchCondition = search ? { [useAsTitle]: { like: search } } : undefined\n const where = combineWhereConstraints([parentCondition, searchCondition, baseFilter])\n\n const queryString = qs.stringify(\n { limit: DEFAULT_HIERARCHY_LIST_LIMIT, page, where },\n { addQueryPrefix: true },\n )\n const url = formatAdminURL({\n apiRoute,\n path: `/${collectionSlug}${queryString}`,\n serverURL,\n })\n\n const response = await fetch(url, { credentials: 'include' })\n\n if (!response.ok) {\n throw new Error('Failed to load page')\n }\n\n const result: PaginatedDocs = await response.json()\n\n setChildDocs(result.docs)\n setChildPaginationData({\n hasNextPage: result.hasNextPage,\n hasPrevPage: result.hasPrevPage,\n limit: result.limit,\n page: result.page,\n pagingCounter: result.pagingCounter,\n totalDocs: result.totalDocs,\n totalPages: result.totalPages,\n })\n } catch (_error) {\n // Silently fail\n } finally {\n setChildLoading(false)\n }\n },\n [\n apiRoute,\n baseFilter,\n childLoading,\n collectionSlug,\n parentFieldName,\n parentId,\n search,\n serverURL,\n useAsTitle,\n ],\n )\n\n // Page change for a related collection\n const handlePageChangeRelated = useCallback(\n async (relatedSlug: string, page: number) => {\n const state = relatedState[relatedSlug]\n if (!state || state.isLoading) {\n return\n }\n\n // Find the group to get field info\n const group = relatedGroups.find((g) => g.collectionSlug === relatedSlug)\n if (!group) {\n return\n }\n\n setRelatedState((prev) => ({\n ...prev,\n [relatedSlug]: { ...prev[relatedSlug], isLoading: true },\n }))\n\n try {\n // Build relationship condition based on whether we're at root or in a parent\n let relationshipCondition: Record<string, unknown>\n if (parentId) {\n // Nested level: find documents assigned to this hierarchy item\n // \"in\" operator works for both hasMany and single relationship fields\n relationshipCondition = { [group.fieldName]: { in: [parentId] } }\n } else {\n // Root level: find documents where hierarchy field doesn't exist, is null, or is empty array\n const conditions: Record<string, unknown>[] = [\n { [group.fieldName]: { exists: false } },\n { [group.fieldName]: { equals: null } },\n ]\n if (group.hasMany) {\n // hasMany fields store cleared values as empty arrays\n conditions.push({ [group.fieldName]: { equals: [] } })\n }\n relationshipCondition = { or: conditions }\n }\n\n const relatedConfig = getEntityConfig({ collectionSlug: relatedSlug })\n const relatedUseAsTitle = relatedConfig?.admin?.useAsTitle || 'id'\n\n const searchCondition = search ? { [relatedUseAsTitle]: { like: search } } : undefined\n const relatedBaseFilter = relatedBaseFilters?.[relatedSlug]\n const where = combineWhereConstraints([\n relationshipCondition,\n searchCondition,\n relatedBaseFilter,\n ])\n\n const queryString = qs.stringify(\n { limit: DEFAULT_HIERARCHY_LIST_LIMIT, page, where },\n { addQueryPrefix: true },\n )\n const url = formatAdminURL({\n apiRoute,\n path: `/${relatedSlug}${queryString}`,\n serverURL,\n })\n\n const response = await fetch(url, { credentials: 'include' })\n\n if (!response.ok) {\n throw new Error('Failed to load page')\n }\n\n const result: PaginatedDocs = await response.json()\n\n setRelatedState((prev) => ({\n ...prev,\n [relatedSlug]: {\n docs: result.docs,\n hasNextPage: result.hasNextPage,\n hasPrevPage: result.hasPrevPage,\n isLoading: false,\n limit: result.limit,\n page: result.page,\n pagingCounter: result.pagingCounter,\n totalDocs: result.totalDocs,\n totalPages: result.totalPages,\n },\n }))\n } catch (_error) {\n setRelatedState((prev) => ({\n ...prev,\n [relatedSlug]: { ...prev[relatedSlug], isLoading: false },\n }))\n }\n },\n [\n apiRoute,\n getEntityConfig,\n parentFieldName,\n parentId,\n relatedBaseFilters,\n relatedGroups,\n relatedState,\n search,\n serverURL,\n ],\n )\n\n // Get allowedCollections field name from hierarchy config\n const allowedCollectionsFieldName = useMemo(() => {\n const config = getEntityConfig({ collectionSlug })\n const hierarchy = config?.hierarchy\n\n if (hierarchy && typeof hierarchy === 'object' && hierarchy.collectionSpecific) {\n return hierarchy.collectionSpecific.fieldName\n }\n\n return undefined\n }, [collectionSlug, getEntityConfig])\n\n // Compute collection label for children (once)\n const childrenLabel = useMemo(\n () =>\n getTranslation(getEntityConfig({ collectionSlug })?.labels?.plural, i18n) || hierarchyLabel,\n [collectionSlug, getEntityConfig, hierarchyLabel, i18n],\n )\n\n // Build children data for table\n const childTableData: TableRow[] = useMemo(\n () =>\n childDocs.map((doc) => ({\n ...doc,\n id: doc.id,\n _allowedCollections: allowedCollectionsFieldName\n ? (doc[allowedCollectionsFieldName] as string[] | undefined)\n : undefined,\n _collectionLabel: childrenLabel,\n _collectionSlug: collectionSlug,\n _hasChildren: Boolean(doc._hasChildren),\n _hierarchyIcon: HierarchyIcon,\n })),\n [HierarchyIcon, allowedCollectionsFieldName, childDocs, childrenLabel, collectionSlug],\n )\n\n const hasChildren = (childPaginationData.totalDocs || 0) > 0\n const hasRelated = relatedGroups.some((g) => relatedState[g.collectionSlug]?.totalDocs > 0)\n\n // Unified groups array\n type GroupState = {\n docs: TableRow[]\n isChildren: boolean\n isHierarchyEnabled: boolean\n isLoading: boolean\n label: string\n onCheckboxChange: (row: TableRow) => void\n onPageChange: (page: number) => void\n onSelectAllChange: () => void\n paginationData: PaginatedDocs\n slug: string\n }\n\n const allGroups: GroupState[] = useMemo(() => {\n const groups: GroupState[] = []\n\n // Children group\n if (hasChildren) {\n groups.push({\n slug: collectionSlug,\n docs: childTableData,\n isChildren: true,\n isHierarchyEnabled: true,\n isLoading: childLoading,\n label: childrenLabel,\n onCheckboxChange: (row: TableRow) =>\n toggleSelection({\n id: row.id,\n collectionSlug,\n metadata: {\n allowedCollections: row._allowedCollections as string[] | undefined,\n },\n }),\n onPageChange: (page: number) => void handlePageChangeChildren(page),\n onSelectAllChange: () => toggleAllInCollection({ collectionSlug }),\n paginationData: {\n docs: childDocs,\n hasNextPage: childPaginationData.hasNextPage || false,\n hasPrevPage: childPaginationData.hasPrevPage || false,\n limit: childPaginationData.limit || DEFAULT_HIERARCHY_LIST_LIMIT,\n page: childPaginationData.page || 1,\n pagingCounter: childPaginationData.pagingCounter || 1,\n totalDocs: childPaginationData.totalDocs || 0,\n totalPages: childPaginationData.totalPages || 1,\n },\n })\n }\n\n // Related groups\n for (const group of relatedGroups) {\n const state = relatedState[group.collectionSlug]\n if (!state || state.totalDocs === 0) {\n continue\n }\n\n const relatedConfig = getEntityConfig({ collectionSlug: group.collectionSlug })\n const relatedLabel = getTranslation(relatedConfig?.labels?.plural, i18n) || group.label\n\n const relatedTableData: TableRow[] = state.docs.map((doc: Record<string, unknown>) => ({\n ...doc,\n id: doc.id as number | string,\n _collectionLabel: relatedLabel,\n _collectionSlug: group.collectionSlug,\n }))\n\n groups.push({\n slug: group.collectionSlug,\n docs: relatedTableData,\n isChildren: false,\n isHierarchyEnabled: false,\n isLoading: state.isLoading,\n label: relatedLabel,\n onCheckboxChange: (row: TableRow) =>\n toggleSelection({\n id: row.id,\n collectionSlug: group.collectionSlug,\n metadata: {}, // Related items don't have allowedCollections - their collection slug is the constraint\n }),\n onPageChange: (page: number) => void handlePageChangeRelated(group.collectionSlug, page),\n onSelectAllChange: () => toggleAllInCollection({ collectionSlug: group.collectionSlug }),\n paginationData: {\n docs: state.docs || [],\n hasNextPage: state.hasNextPage || false,\n hasPrevPage: state.hasPrevPage || false,\n limit: state.limit || DEFAULT_HIERARCHY_LIST_LIMIT,\n page: state.page || 1,\n pagingCounter: state.pagingCounter || 1,\n totalDocs: state.totalDocs || 0,\n totalPages: state.totalPages || 1,\n },\n })\n }\n\n return groups\n }, [\n childDocs,\n childLoading,\n childPaginationData,\n childrenLabel,\n childTableData,\n collectionSlug,\n getEntityConfig,\n handlePageChangeChildren,\n handlePageChangeRelated,\n hasChildren,\n i18n,\n relatedGroups,\n relatedState,\n toggleAllInCollection,\n toggleSelection,\n ])\n\n // Column definitions\n const columns: SlotColumn<TableRow>[] = useMemo(\n () => [\n {\n accessor: 'name',\n Cell: NameCell,\n className: `${baseClass}__col-name`,\n heading: t('general:name'),\n },\n {\n accessor: 'collection',\n Cell: CollectionCell,\n className: `${baseClass}__col-collection`,\n heading: t('general:collection'),\n },\n {\n accessor: 'updatedAt',\n Cell: DateCell,\n className: `${baseClass}__col-date`,\n heading: t('general:updatedAt'),\n },\n ],\n [t],\n )\n\n if (!hasChildren && !hasRelated) {\n const canShowCreateButton = hasCreatePermission && collections && collections.length > 0\n\n return (\n <NoListResults\n Actions={\n canShowCreateButton\n ? [\n <CreateDocumentButton\n collections={collections}\n drawerSlug={`hierarchy-create-empty-${collectionSlug}`}\n key=\"create\"\n onSave={clearRouteCache}\n />,\n ]\n : undefined\n }\n description={t('general:noResultsDescription')}\n title={t('general:noResultsFound')}\n withMargin\n />\n )\n }\n\n return (\n <div className={baseClass}>\n {allGroups.map((group) => (\n <TableSection key={group.slug}>\n <TableSection.Header heading={group.label}>\n <SimplePagination data={group.paginationData} onChange={group.onPageChange} />\n </TableSection.Header>\n <TableSection.Content>\n <SlotTable\n collectionSlug={group.slug}\n columns={columns}\n data={group.docs}\n enableCheckbox={true}\n enableDragHandle={false}\n enableHeader={true}\n enableSelectAll={true}\n getRowLockedUser={getRowLockedUser}\n mergeCheckboxHeader={false}\n onCheckboxChange={group.onCheckboxChange}\n onSelectAllChange={group.onSelectAllChange}\n parentId={parentId}\n selectedIds={\n new Set(\n group.docs\n .filter((row) => isSelected({ id: row.id, collectionSlug: group.slug }))\n .map((row) => row.id),\n )\n }\n />\n </TableSection.Content>\n </TableSection>\n ))}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getTranslation","combineWhereConstraints","DEFAULT_HIERARCHY_LIST_LIMIT","formatAdminURL","qs","React","useCallback","useMemo","useState","CreateDocumentButton","NoListResults","SimplePagination","TableSection","useConfig","useDocumentSelection","useRouteCache","useTranslation","getRowKey","HierarchyCardGrid","ChildNameCell","DateCell","RelatedNameCell","SlotTable","baseClass","NameCell","props","row","_hasChildren","undefined","_jsx","CollectionCell","_collectionLabel","HierarchyTable","ancestorIds","baseFilter","browseCollectionSlug","childrenData","collections","collectionSlug","hasCreatePermission","HierarchyIcon","hierarchyLabel","parentFieldName","parentId","relatedBaseFilters","relatedGroups","search","useAsTitle","viewMode","i18n","t","clearRouteCache","config","routes","admin","adminRoute","api","apiRoute","serverURL","getEntityConfig","childDocs","setChildDocs","docs","childPaginationData","setChildPaginationData","hasNextPage","hasPrevPage","limit","page","pagingCounter","totalDocs","totalPages","childLoading","setChildLoading","relatedState","setRelatedState","initial","group","data","isLoading","clearAll","isLocked","isSelected","toggleAllInCollection","toggleSelection","getRowLockedUser","locked","id","_collectionSlug","_userEditing","handlePageChangeChildren","parentCondition","equals","or","exists","searchCondition","like","where","queryString","stringify","addQueryPrefix","url","path","response","fetch","credentials","ok","Error","result","json","_error","handlePageChangeRelated","relatedSlug","state","find","g","prev","relationshipCondition","fieldName","in","conditions","hasMany","push","relatedConfig","relatedUseAsTitle","relatedBaseFilter","allowedCollectionsFieldName","hierarchy","collectionSpecific","childrenLabel","labels","plural","hierarchySingularLabel","singular","childTableData","browseSlug","parentQueryParam","map","doc","_allowedCollections","_browseHref","Boolean","_hierarchyIcon","hasChildren","hasRelated","some","allGroups","groups","slug","isChildren","isHierarchyEnabled","label","onCheckboxChange","metadata","allowedCollections","onPageChange","onSelectAllChange","paginationData","relatedLabel","relatedTableData","planeBands","folderGroup","documentGroups","filter","documentRows","flatMap","bands","isHierarchyGroup","key","rows","length","documentsLabel","visibleLabel","handlePlaneSelectionChange","handleDropMoveSuccess","selectedKeys","keys","Set","band","add","columns","accessor","Cell","className","heading","canShowCreateButton","Actions","drawerSlug","onSave","description","title","withMargin","_jsxs","fillHeight","hierarchySlug","onMoveSuccess","onSelectionChange","onChange","groupIndex","selectedIds","isLastGroup","Header","Content","enableCheckbox","enableDragHandle","enableHeader","enableSelectAll","mergeCheckboxHeader"],"sources":["../../../../src/views/HierarchyList/HierarchyTable/index.tsx"],"sourcesContent":["'use client'\n\nimport type { PaginatedDocs, Where } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n combineWhereConstraints,\n DEFAULT_HIERARCHY_LIST_LIMIT,\n formatAdminURL,\n} from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useMemo, useState } from 'react'\n\nimport type { CollectionOption } from '../../../elements/CreateDocumentButton/index.js'\nimport type { HierarchyDocument } from '../../../elements/Hierarchy/Tree/types.js'\nimport type { PlaneBand } from '../HierarchyCards/index.js'\nimport type { SlotColumn } from './SlotTable.js'\nimport type { RelatedGroup, TableRow } from './types.js'\n\nimport { CreateDocumentButton } from '../../../elements/CreateDocumentButton/index.js'\nimport { NoListResults } from '../../../elements/NoListResults/index.js'\nimport { SimplePagination } from '../../../elements/Pagination/SimplePagination/index.js'\nimport { TableSection } from '../../../elements/TableSection/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentSelection } from '../../../providers/DocumentSelection/index.js'\nimport { useRouteCache } from '../../../providers/RouteCache/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { getRowKey, HierarchyCardGrid } from '../HierarchyCards/index.js'\nimport { ChildNameCell } from './ChildNameCell.js'\nimport { DateCell } from './DateCell.js'\nimport { RelatedNameCell } from './RelatedNameCell.js'\nimport { SlotTable } from './SlotTable.js'\nimport { baseClass } from './types.js'\nimport './index.css'\n\n// Top-level cell components to avoid nested component eslint errors\nconst NameCell: SlotColumn<TableRow>['Cell'] = (props) =>\n props.row._hasChildren !== undefined ? (\n <ChildNameCell {...props} />\n ) : (\n <RelatedNameCell {...props} />\n )\n\nconst CollectionCell: SlotColumn<TableRow>['Cell'] = ({ row }) => (\n <span>{row._collectionLabel}</span>\n)\n\nexport type HierarchyTableProps = {\n /**\n * Ids of the folders between the root and the folder currently open, so a folder can't be dropped\n * into its own subtree.\n */\n ancestorIds?: (number | string)[]\n /** Base filter applied to hierarchy collection queries (e.g., tenant filter) */\n baseFilter?: Where\n /**\n * Collection whose hierarchy view folder links should stay in. Differs from `collectionSlug` when\n * browsing one related collection by folder. Defaults to `collectionSlug`.\n */\n browseCollectionSlug?: string\n childrenData?: PaginatedDocs<HierarchyDocument>\n /** Collections available for creation (for empty state) */\n collections?: CollectionOption[]\n collectionSlug: string\n hasCreatePermission?: boolean\n /** Resolved hierarchy icon component */\n HierarchyIcon?: React.ReactNode\n hierarchyLabel: string\n parentFieldName?: string\n parentId: null | number | string\n /** Base filters for related collections (keyed by collection slug) */\n relatedBaseFilters?: Record<string, Where>\n relatedGroups: RelatedGroup[]\n search?: string\n useAsTitle: string\n /** Renders each group as a grid of cards instead of a table. Defaults to 'table'. */\n viewMode?: 'grid' | 'table'\n}\n\nexport function HierarchyTable({\n ancestorIds,\n baseFilter,\n browseCollectionSlug,\n childrenData,\n collections,\n collectionSlug,\n hasCreatePermission,\n HierarchyIcon,\n hierarchyLabel,\n parentFieldName,\n parentId,\n relatedBaseFilters,\n relatedGroups,\n search,\n useAsTitle,\n viewMode = 'table',\n}: HierarchyTableProps) {\n const { i18n, t } = useTranslation()\n const { clearRouteCache } = useRouteCache()\n const {\n config: {\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n // Children pagination state\n const [childDocs, setChildDocs] = useState(childrenData?.docs || [])\n const [childPaginationData, setChildPaginationData] = useState<Partial<PaginatedDocs>>({\n hasNextPage: childrenData?.hasNextPage || false,\n hasPrevPage: childrenData?.hasPrevPage || false,\n limit: childrenData?.limit || DEFAULT_HIERARCHY_LIST_LIMIT,\n page: childrenData?.page || 1,\n pagingCounter: childrenData?.pagingCounter || 1,\n totalDocs: childrenData?.totalDocs || 0,\n totalPages: childrenData?.totalPages || 1,\n })\n const [childLoading, setChildLoading] = useState(false)\n\n // Related groups pagination state (per collection)\n const [relatedState, setRelatedState] = useState<\n Record<\n string,\n {\n isLoading: boolean\n } & Partial<PaginatedDocs>\n >\n >(() => {\n const initial: Record<\n string,\n {\n isLoading: boolean\n } & Partial<PaginatedDocs>\n > = {}\n for (const group of relatedGroups) {\n initial[group.collectionSlug] = {\n docs: group.data.docs,\n hasNextPage: group.data.hasNextPage,\n hasPrevPage: group.data.hasPrevPage || false,\n isLoading: false,\n limit: group.data.limit || DEFAULT_HIERARCHY_LIST_LIMIT,\n page: group.data.page || 1,\n pagingCounter: group.data.pagingCounter || 1,\n totalDocs: group.data.totalDocs,\n totalPages: group.data.totalPages || 1,\n }\n }\n return initial\n })\n\n // Get selection functions from context\n const { clearAll, isLocked, isSelected, toggleAllInCollection, toggleSelection } =\n useDocumentSelection()\n\n // Get the user who is locking a row (for SlotTable to show lock icon instead of checkbox)\n const getRowLockedUser = useCallback(\n (row: TableRow) => {\n const locked = isLocked({ id: row.id, collectionSlug: row._collectionSlug })\n return locked ? row._userEditing : undefined\n },\n [isLocked],\n )\n\n // Page change for children\n const handlePageChangeChildren = useCallback(\n async (page: number) => {\n if (childLoading) {\n return\n }\n\n setChildLoading(true)\n\n try {\n const parentCondition = parentId\n ? { [parentFieldName]: { equals: parentId } }\n : {\n or: [\n { [parentFieldName]: { exists: false } },\n { [parentFieldName]: { equals: null } },\n ],\n }\n\n const searchCondition = search ? { [useAsTitle]: { like: search } } : undefined\n const where = combineWhereConstraints([parentCondition, searchCondition, baseFilter])\n\n const queryString = qs.stringify(\n { limit: DEFAULT_HIERARCHY_LIST_LIMIT, page, where },\n { addQueryPrefix: true },\n )\n const url = formatAdminURL({\n apiRoute,\n path: `/${collectionSlug}${queryString}`,\n serverURL,\n })\n\n const response = await fetch(url, { credentials: 'include' })\n\n if (!response.ok) {\n throw new Error('Failed to load page')\n }\n\n const result: PaginatedDocs = await response.json()\n\n setChildDocs(result.docs)\n setChildPaginationData({\n hasNextPage: result.hasNextPage,\n hasPrevPage: result.hasPrevPage,\n limit: result.limit,\n page: result.page,\n pagingCounter: result.pagingCounter,\n totalDocs: result.totalDocs,\n totalPages: result.totalPages,\n })\n } catch (_error) {\n // Silently fail\n } finally {\n setChildLoading(false)\n }\n },\n [\n apiRoute,\n baseFilter,\n childLoading,\n collectionSlug,\n parentFieldName,\n parentId,\n search,\n serverURL,\n useAsTitle,\n ],\n )\n\n // Page change for a related collection\n const handlePageChangeRelated = useCallback(\n async (relatedSlug: string, page: number) => {\n const state = relatedState[relatedSlug]\n if (!state || state.isLoading) {\n return\n }\n\n // Find the group to get field info\n const group = relatedGroups.find((g) => g.collectionSlug === relatedSlug)\n if (!group) {\n return\n }\n\n setRelatedState((prev) => ({\n ...prev,\n [relatedSlug]: { ...prev[relatedSlug], isLoading: true },\n }))\n\n try {\n // Build relationship condition based on whether we're at root or in a parent\n let relationshipCondition: Record<string, unknown>\n if (parentId) {\n // Nested level: find documents assigned to this hierarchy item\n // \"in\" operator works for both hasMany and single relationship fields\n relationshipCondition = { [group.fieldName]: { in: [parentId] } }\n } else {\n // Root level: find documents where hierarchy field doesn't exist, is null, or is empty array\n const conditions: Record<string, unknown>[] = [\n { [group.fieldName]: { exists: false } },\n { [group.fieldName]: { equals: null } },\n ]\n if (group.hasMany) {\n // hasMany fields store cleared values as empty arrays\n conditions.push({ [group.fieldName]: { equals: [] } })\n }\n relationshipCondition = { or: conditions }\n }\n\n const relatedConfig = getEntityConfig({ collectionSlug: relatedSlug })\n const relatedUseAsTitle = relatedConfig?.admin?.useAsTitle || 'id'\n\n const searchCondition = search ? { [relatedUseAsTitle]: { like: search } } : undefined\n const relatedBaseFilter = relatedBaseFilters?.[relatedSlug]\n const where = combineWhereConstraints([\n relationshipCondition,\n searchCondition,\n relatedBaseFilter,\n ])\n\n const queryString = qs.stringify(\n { limit: DEFAULT_HIERARCHY_LIST_LIMIT, page, where },\n { addQueryPrefix: true },\n )\n const url = formatAdminURL({\n apiRoute,\n path: `/${relatedSlug}${queryString}`,\n serverURL,\n })\n\n const response = await fetch(url, { credentials: 'include' })\n\n if (!response.ok) {\n throw new Error('Failed to load page')\n }\n\n const result: PaginatedDocs = await response.json()\n\n setRelatedState((prev) => ({\n ...prev,\n [relatedSlug]: {\n docs: result.docs,\n hasNextPage: result.hasNextPage,\n hasPrevPage: result.hasPrevPage,\n isLoading: false,\n limit: result.limit,\n page: result.page,\n pagingCounter: result.pagingCounter,\n totalDocs: result.totalDocs,\n totalPages: result.totalPages,\n },\n }))\n } catch (_error) {\n setRelatedState((prev) => ({\n ...prev,\n [relatedSlug]: { ...prev[relatedSlug], isLoading: false },\n }))\n }\n },\n [\n apiRoute,\n getEntityConfig,\n parentFieldName,\n parentId,\n relatedBaseFilters,\n relatedGroups,\n relatedState,\n search,\n serverURL,\n ],\n )\n\n // Get allowedCollections field name from hierarchy config\n const allowedCollectionsFieldName = useMemo(() => {\n const config = getEntityConfig({ collectionSlug })\n const hierarchy = config?.hierarchy\n\n if (hierarchy && typeof hierarchy === 'object' && hierarchy.collectionSpecific) {\n return hierarchy.collectionSpecific.fieldName\n }\n\n return undefined\n }, [collectionSlug, getEntityConfig])\n\n // Compute collection label for children (once)\n const childrenLabel = useMemo(\n () =>\n getTranslation(getEntityConfig({ collectionSlug })?.labels?.plural, i18n) || hierarchyLabel,\n [collectionSlug, getEntityConfig, hierarchyLabel, i18n],\n )\n\n // Singular form of the hierarchy's own collection label (e.g. \"Folder\", \"Tag\"), used to call out\n // documents that aren't grouped under one.\n const hierarchySingularLabel = useMemo(\n () =>\n getTranslation(getEntityConfig({ collectionSlug })?.labels?.singular, i18n) || hierarchyLabel,\n [collectionSlug, getEntityConfig, hierarchyLabel, i18n],\n )\n\n // Build children data for table\n const childTableData: TableRow[] = useMemo(() => {\n // Drilling into a folder has to stay in the collection being browsed, and the route is spelled\n // out rather than relying on the saved `listViewType` preference to redirect.\n const browseSlug = browseCollectionSlug ?? collectionSlug\n const parentQueryParam = parentFieldName || 'parent'\n\n return childDocs.map((doc) => ({\n ...doc,\n id: doc.id,\n _allowedCollections: allowedCollectionsFieldName\n ? (doc[allowedCollectionsFieldName] as string[] | undefined)\n : undefined,\n _browseHref: formatAdminURL({\n adminRoute,\n path: `/collections/${browseSlug}/hierarchy?${parentQueryParam}=${doc.id}`,\n }),\n _collectionLabel: childrenLabel,\n _collectionSlug: collectionSlug,\n _hasChildren: Boolean(doc._hasChildren),\n _hierarchyIcon: HierarchyIcon,\n }))\n }, [\n HierarchyIcon,\n adminRoute,\n allowedCollectionsFieldName,\n browseCollectionSlug,\n childDocs,\n childrenLabel,\n collectionSlug,\n parentFieldName,\n ])\n\n const hasChildren = (childPaginationData.totalDocs || 0) > 0\n const hasRelated = relatedGroups.some((g) => relatedState[g.collectionSlug]?.totalDocs > 0)\n\n // Unified groups array\n type GroupState = {\n docs: TableRow[]\n isChildren: boolean\n isHierarchyEnabled: boolean\n isLoading: boolean\n label: string\n onCheckboxChange: (row: TableRow) => void\n onPageChange: (page: number) => void\n onSelectAllChange: () => void\n paginationData: PaginatedDocs\n slug: string\n }\n\n const allGroups: GroupState[] = useMemo(() => {\n const groups: GroupState[] = []\n\n // Children group\n if (hasChildren) {\n groups.push({\n slug: collectionSlug,\n docs: childTableData,\n isChildren: true,\n isHierarchyEnabled: true,\n isLoading: childLoading,\n label: childrenLabel,\n onCheckboxChange: (row: TableRow) =>\n toggleSelection({\n id: row.id,\n collectionSlug,\n metadata: {\n allowedCollections: row._allowedCollections as string[] | undefined,\n },\n }),\n onPageChange: (page: number) => void handlePageChangeChildren(page),\n onSelectAllChange: () => toggleAllInCollection({ collectionSlug }),\n paginationData: {\n docs: childDocs,\n hasNextPage: childPaginationData.hasNextPage || false,\n hasPrevPage: childPaginationData.hasPrevPage || false,\n limit: childPaginationData.limit || DEFAULT_HIERARCHY_LIST_LIMIT,\n page: childPaginationData.page || 1,\n pagingCounter: childPaginationData.pagingCounter || 1,\n totalDocs: childPaginationData.totalDocs || 0,\n totalPages: childPaginationData.totalPages || 1,\n },\n })\n }\n\n // Related groups\n for (const group of relatedGroups) {\n const state = relatedState[group.collectionSlug]\n if (!state || state.totalDocs === 0) {\n continue\n }\n\n const relatedConfig = getEntityConfig({ collectionSlug: group.collectionSlug })\n const relatedLabel = getTranslation(relatedConfig?.labels?.plural, i18n) || group.label\n\n const relatedTableData: TableRow[] = state.docs.map((doc: Record<string, unknown>) => ({\n ...doc,\n id: doc.id as number | string,\n _collectionLabel: relatedLabel,\n _collectionSlug: group.collectionSlug,\n }))\n\n groups.push({\n slug: group.collectionSlug,\n docs: relatedTableData,\n isChildren: false,\n isHierarchyEnabled: false,\n isLoading: state.isLoading,\n label: relatedLabel,\n onCheckboxChange: (row: TableRow) =>\n toggleSelection({\n id: row.id,\n collectionSlug: group.collectionSlug,\n metadata: {}, // Related items don't have allowedCollections - their collection slug is the constraint\n }),\n onPageChange: (page: number) => void handlePageChangeRelated(group.collectionSlug, page),\n onSelectAllChange: () => toggleAllInCollection({ collectionSlug: group.collectionSlug }),\n paginationData: {\n docs: state.docs || [],\n hasNextPage: state.hasNextPage || false,\n hasPrevPage: state.hasPrevPage || false,\n limit: state.limit || DEFAULT_HIERARCHY_LIST_LIMIT,\n page: state.page || 1,\n pagingCounter: state.pagingCounter || 1,\n totalDocs: state.totalDocs || 0,\n totalPages: state.totalPages || 1,\n },\n })\n }\n\n return groups\n }, [\n childDocs,\n childLoading,\n childPaginationData,\n childrenLabel,\n childTableData,\n collectionSlug,\n getEntityConfig,\n handlePageChangeChildren,\n handlePageChangeRelated,\n hasChildren,\n i18n,\n relatedGroups,\n relatedState,\n toggleAllInCollection,\n toggleSelection,\n ])\n\n /**\n * Grid mode puts folders and documents on one plane: a folders band, then a single documents band\n * merging every related collection, so cross-collection selection and drag work as one gesture.\n */\n const planeBands: PlaneBand[] = useMemo(() => {\n const folderGroup = allGroups.find((group) => group.isChildren)\n const documentGroups = allGroups.filter((group) => !group.isChildren)\n const documentRows = documentGroups.flatMap((group) => group.docs)\n\n const bands: PlaneBand[] = []\n\n if (folderGroup) {\n bands.push({\n isHierarchyGroup: true,\n key: 'folders',\n label: folderGroup.label,\n rows: folderGroup.docs,\n })\n }\n\n if (documentRows.length > 0) {\n const documentsLabel =\n documentGroups.length === 1 ? documentGroups[0].label : t('general:documents')\n\n bands.push({\n isHierarchyGroup: false,\n key: 'documents',\n label: documentsLabel,\n rows: documentRows,\n // Only the root of a hierarchy has documents that aren't inside any folder - inside a\n // folder, the ungrouped documents there are just that folder's contents.\n visibleLabel:\n parentId === null ? `${documentsLabel} not in a ${hierarchySingularLabel}` : undefined,\n })\n }\n\n return bands\n }, [allGroups, hierarchySingularLabel, parentId, t])\n\n /**\n * A merged band spans collections, so selection is driven off each row's own collection rather\n * than a per-group closure.\n */\n const handlePlaneSelectionChange = useCallback(\n (row: TableRow) =>\n toggleSelection({\n id: row.id,\n collectionSlug: row._collectionSlug,\n metadata: {\n allowedCollections: row._allowedCollections as string[] | undefined,\n },\n }),\n [toggleSelection],\n )\n\n /**\n * The moved documents no longer belong to this folder, so the selection that referenced them is\n * cleared and the route refetched.\n */\n const handleDropMoveSuccess = useCallback(() => {\n clearAll()\n clearRouteCache()\n }, [clearAll, clearRouteCache])\n\n const selectedKeys = useMemo(() => {\n const keys = new Set<string>()\n\n for (const band of planeBands) {\n for (const row of band.rows) {\n if (isSelected({ id: row.id, collectionSlug: row._collectionSlug })) {\n keys.add(getRowKey(row))\n }\n }\n }\n\n return keys\n }, [isSelected, planeBands])\n\n // Column definitions\n const columns: SlotColumn<TableRow>[] = useMemo(\n () => [\n {\n accessor: 'name',\n Cell: NameCell,\n className: `${baseClass}__col-name`,\n heading: t('general:name'),\n },\n {\n accessor: 'collection',\n Cell: CollectionCell,\n className: `${baseClass}__col-collection`,\n heading: t('general:collection'),\n },\n {\n accessor: 'updatedAt',\n Cell: DateCell,\n className: `${baseClass}__col-date`,\n heading: t('general:updatedAt'),\n },\n ],\n [t],\n )\n\n if (!hasChildren && !hasRelated) {\n const canShowCreateButton = hasCreatePermission && collections && collections.length > 0\n\n return (\n <NoListResults\n Actions={\n canShowCreateButton\n ? [\n <CreateDocumentButton\n collections={collections}\n drawerSlug={`hierarchy-create-empty-${collectionSlug}`}\n key=\"create\"\n onSave={clearRouteCache}\n />,\n ]\n : undefined\n }\n description={t('general:noResultsDescription')}\n title={t('general:noResultsFound')}\n withMargin\n />\n )\n }\n\n if (viewMode === 'grid') {\n return (\n <div className={baseClass}>\n <HierarchyCardGrid\n ancestorIds={ancestorIds}\n bands={planeBands}\n fillHeight\n getRowLockedUser={getRowLockedUser}\n hierarchySlug={collectionSlug}\n onMoveSuccess={handleDropMoveSuccess}\n onSelectionChange={handlePlaneSelectionChange}\n selectedKeys={selectedKeys}\n />\n {/*\n Each collection paginates on its own, so the merged documents band can surface more than\n one control. They only appear once a group actually has more than a page.\n\n Each is named, because the grid above merges every collection into one band: an unlabelled\n \"1-25 of 30\" would read as a count of the whole grid when it only ever describes its own\n collection. The table mode gets this for free from its per-collection section headings.\n */}\n <div className={`${baseClass}__plane-pagination`}>\n {allGroups\n .filter((group) => group.paginationData.hasNextPage || group.paginationData.hasPrevPage)\n .map((group) => (\n <div className={`${baseClass}__plane-pagination-group`} key={group.slug}>\n <span className={`${baseClass}__plane-pagination-label`}>{group.label}</span>\n <SimplePagination data={group.paginationData} onChange={group.onPageChange} />\n </div>\n ))}\n </div>\n </div>\n )\n }\n\n return (\n <div className={baseClass}>\n {allGroups.map((group, groupIndex) => {\n const selectedIds = new Set(\n group.docs\n .filter((row) => isSelected({ id: row.id, collectionSlug: group.slug }))\n .map((row) => row.id),\n )\n\n // Only the final group can claim the leftover height below the sections; growing an\n // earlier one would push the groups after it off-screen.\n const isLastGroup = groupIndex === allGroups.length - 1\n\n return (\n <TableSection key={group.slug}>\n <TableSection.Header heading={group.label}>\n <SimplePagination data={group.paginationData} onChange={group.onPageChange} />\n </TableSection.Header>\n <TableSection.Content>\n <SlotTable\n collectionSlug={group.slug}\n columns={columns}\n data={group.docs}\n enableCheckbox={true}\n enableDragHandle={false}\n enableHeader={true}\n enableSelectAll={true}\n getRowLockedUser={getRowLockedUser}\n mergeCheckboxHeader={false}\n onCheckboxChange={group.onCheckboxChange}\n onSelectAllChange={group.onSelectAllChange}\n parentId={parentId}\n selectedIds={selectedIds}\n />\n </TableSection.Content>\n </TableSection>\n )\n })}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,6 +9,12 @@ export type RelatedGroup = {
|
|
|
9
9
|
};
|
|
10
10
|
export type TableRow = {
|
|
11
11
|
[key: string]: unknown;
|
|
12
|
+
/**
|
|
13
|
+
* Where drilling into this hierarchy item should navigate. Set on folder rows so a click stays in
|
|
14
|
+
* whichever collection is being browsed - a folder opened from "Media by Folder" has to keep
|
|
15
|
+
* showing media, not switch to the folder collection's own view.
|
|
16
|
+
*/
|
|
17
|
+
_browseHref?: string;
|
|
12
18
|
_collectionLabel: string;
|
|
13
19
|
_collectionSlug: string;
|
|
14
20
|
_hasChildren?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/views/HierarchyList/HierarchyTable/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,MAAM,MAAM,YAAY,GAAG;IACzB,cAAc,EAAE,MAAM,CAAA;IACtB,IAAI,EAAE,aAAa,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,YAAY,CAAC,EAAE,IAAI,CAAA;IACnB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,SAAS,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/views/HierarchyList/HierarchyTable/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,MAAM,MAAM,YAAY,GAAG;IACzB,cAAc,EAAE,MAAM,CAAA;IACtB,IAAI,EAAE,aAAa,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IACtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,YAAY,CAAC,EAAE,IAAI,CAAA;IACnB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,SAAS,qBAAqB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["baseClass"],"sources":["../../../../src/views/HierarchyList/HierarchyTable/types.ts"],"sourcesContent":["import type { PaginatedDocs, User } from 'payload'\nimport type React from 'react'\n\nexport type RelatedGroup = {\n collectionSlug: string\n data: PaginatedDocs\n fieldName: string\n hasMany: boolean\n label: string\n}\n\nexport type TableRow = {\n [key: string]: unknown\n _collectionLabel: string\n _collectionSlug: string\n _hasChildren?: boolean\n _hierarchyIcon?: React.ReactNode\n _isLocked?: boolean\n _userEditing?: User\n id: number | string\n}\n\nexport const baseClass = 'hierarchy-tables'\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","names":["baseClass"],"sources":["../../../../src/views/HierarchyList/HierarchyTable/types.ts"],"sourcesContent":["import type { PaginatedDocs, User } from 'payload'\nimport type React from 'react'\n\nexport type RelatedGroup = {\n collectionSlug: string\n data: PaginatedDocs\n fieldName: string\n hasMany: boolean\n label: string\n}\n\nexport type TableRow = {\n [key: string]: unknown\n /**\n * Where drilling into this hierarchy item should navigate. Set on folder rows so a click stays in\n * whichever collection is being browsed - a folder opened from \"Media by Folder\" has to keep\n * showing media, not switch to the folder collection's own view.\n */\n _browseHref?: string\n _collectionLabel: string\n _collectionSlug: string\n _hasChildren?: boolean\n _hierarchyIcon?: React.ReactNode\n _isLocked?: boolean\n _userEditing?: User\n id: number | string\n}\n\nexport const baseClass = 'hierarchy-tables'\n"],"mappings":"AA4BA,OAAO,MAAMA,SAAA,GAAY","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/HierarchyList/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAKlD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/HierarchyList/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAKlD,OAAO,KAA8D,MAAM,OAAO,CAAA;AA0BlF,OAAO,aAAa,CAAA;AAIpB,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,qBAse3D"}
|
|
@@ -4,7 +4,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
4
4
|
import { getTranslation } from '@payloadcms/translations';
|
|
5
5
|
import { formatAdminURL } from 'payload/shared';
|
|
6
6
|
import * as qs from 'qs-esm';
|
|
7
|
-
import React, { Fragment, useCallback, useEffect, useMemo } from 'react';
|
|
7
|
+
import React, { Fragment, useCallback, useEffect, useMemo, useState } from 'react';
|
|
8
8
|
import { CreateDocumentButton } from '../../elements/CreateDocumentButton/index.js';
|
|
9
9
|
import { ListControlsBar } from '../../elements/ListControlsBar/index.js';
|
|
10
10
|
import { useListDrawerContext } from '../../elements/ListDrawer/Provider.js';
|
|
@@ -12,9 +12,11 @@ import { RenderCustomComponent } from '../../elements/RenderCustomComponent/inde
|
|
|
12
12
|
import { ListSearchFilter } from '../../elements/Search/ListSearchFilter/index.js';
|
|
13
13
|
import { useStepNav } from '../../elements/StepNav/index.js';
|
|
14
14
|
import { ViewDescription } from '../../elements/ViewDescription/index.js';
|
|
15
|
+
import { ViewModeToggle } from '../../elements/ViewModeToggle/index.js';
|
|
15
16
|
import { useConfig } from '../../providers/Config/index.js';
|
|
16
17
|
import { DocumentSelectionProvider } from '../../providers/DocumentSelection/index.js';
|
|
17
18
|
import { useHierarchy } from '../../providers/Hierarchy/index.js';
|
|
19
|
+
import { usePreferences } from '../../providers/Preferences/index.js';
|
|
18
20
|
import { useRouteCache } from '../../providers/RouteCache/index.js';
|
|
19
21
|
import { useRouter, useSearchParams } from '../../providers/RouterAdapter/index.js';
|
|
20
22
|
import { useRouteTransition } from '../../providers/RouteTransition/index.js';
|
|
@@ -35,6 +37,7 @@ export function HierarchyListView(props) {
|
|
|
35
37
|
hierarchyData,
|
|
36
38
|
HierarchyIcon,
|
|
37
39
|
HierarchySmallIcon,
|
|
40
|
+
listPreferences,
|
|
38
41
|
viewType
|
|
39
42
|
} = props;
|
|
40
43
|
const router = useRouter();
|
|
@@ -61,7 +64,15 @@ export function HierarchyListView(props) {
|
|
|
61
64
|
const {
|
|
62
65
|
labels
|
|
63
66
|
} = collectionConfig;
|
|
64
|
-
|
|
67
|
+
// In scoped mode the viewed collection (Media) is not the collection that owns the tree
|
|
68
|
+
// (Folders), so every hierarchy-shaped lookup below has to go through the latter.
|
|
69
|
+
const hierarchySlug = hierarchyData?.hierarchySlug ?? collectionSlug;
|
|
70
|
+
const scopedCollectionSlug = hierarchyData?.scopedCollectionSlug;
|
|
71
|
+
const isScoped = Boolean(scopedCollectionSlug);
|
|
72
|
+
const hierarchyCollectionConfig = getEntityConfig({
|
|
73
|
+
collectionSlug: hierarchySlug
|
|
74
|
+
});
|
|
75
|
+
const hierarchyConfig = hierarchyCollectionConfig?.hierarchy && typeof hierarchyCollectionConfig.hierarchy === 'object' ? hierarchyCollectionConfig.hierarchy : undefined;
|
|
65
76
|
const parentFieldName = hierarchyConfig?.parentFieldName;
|
|
66
77
|
const {
|
|
67
78
|
i18n,
|
|
@@ -78,11 +89,27 @@ export function HierarchyListView(props) {
|
|
|
78
89
|
const {
|
|
79
90
|
clearRouteCache
|
|
80
91
|
} = useRouteCache();
|
|
92
|
+
const {
|
|
93
|
+
setPreference
|
|
94
|
+
} = usePreferences();
|
|
95
|
+
const [viewMode, setViewMode] = useState(listPreferences?.documentViewMode ?? 'table');
|
|
96
|
+
const handleViewModeChange = useCallback(nextViewMode => {
|
|
97
|
+
setViewMode(nextViewMode);
|
|
98
|
+
// merge: true, otherwise this write clobbers sibling list preferences
|
|
99
|
+
// stored on the same key (columns, sort, limit, preset, groupBy).
|
|
100
|
+
// A failed write only costs the persisted choice, so it must not surface as an
|
|
101
|
+
// unhandled rejection.
|
|
102
|
+
void setPreference(`collection-${collectionSlug}`, {
|
|
103
|
+
documentViewMode: nextViewMode
|
|
104
|
+
}, true).catch(() => {
|
|
105
|
+
// Intentionally ignored: the view still switched, only persistence failed.
|
|
106
|
+
});
|
|
107
|
+
}, [collectionSlug, setPreference]);
|
|
81
108
|
// Callback for when a new document is created
|
|
82
109
|
const handleSave = useCallback(() => {
|
|
83
110
|
clearRouteCache();
|
|
84
|
-
refreshTree(
|
|
85
|
-
}, [clearRouteCache,
|
|
111
|
+
refreshTree(hierarchySlug);
|
|
112
|
+
}, [clearRouteCache, hierarchySlug, refreshTree]);
|
|
86
113
|
// Get search from URL params
|
|
87
114
|
const searchFromURL = searchParams.get('search') || '';
|
|
88
115
|
// Update URL when search changes (debouncing is handled by ListSearchFilter)
|
|
@@ -110,9 +137,30 @@ export function HierarchyListView(props) {
|
|
|
110
137
|
const currentItemTitle = hierarchyData?.breadcrumbs && hierarchyData.breadcrumbs.length > 0 ? hierarchyData.breadcrumbs[hierarchyData.breadcrumbs.length - 1].title : undefined;
|
|
111
138
|
useEffect(() => {
|
|
112
139
|
if (!isInDrawer) {
|
|
113
|
-
//
|
|
114
|
-
|
|
115
|
-
const
|
|
140
|
+
// The trail runs all the way to the current folder, which also titles the page - it is the
|
|
141
|
+
// page you are on, so it renders as an unlinked crumb.
|
|
142
|
+
const breadcrumbs = hierarchyData?.breadcrumbs || [];
|
|
143
|
+
// Dropping on the trail is the only way to move items *out* of a folder, since the tree has no
|
|
144
|
+
// root row: the base crumb moves them to root, an ancestor crumb moves them up.
|
|
145
|
+
const rootDropTarget = parentFieldName ? {
|
|
146
|
+
type: 'hierarchy-folder',
|
|
147
|
+
ancestorIds: [],
|
|
148
|
+
folderId: null,
|
|
149
|
+
hierarchySlug,
|
|
150
|
+
parentFieldName,
|
|
151
|
+
title: t('hierarchy:noParent')
|
|
152
|
+
} : undefined;
|
|
153
|
+
// A scoped browse is its own destination ("Media by Folder"), distinct from the collection's
|
|
154
|
+
// plain list, so its crumb links to the browse root rather than to /collections/media.
|
|
155
|
+
const baseLabel = isScoped ? {
|
|
156
|
+
dropTarget: rootDropTarget,
|
|
157
|
+
label: `${collectionLabel} ${t('general:by')} ${getTranslation(hierarchyCollectionConfig?.labels?.singular, i18n)}`,
|
|
158
|
+
url: formatAdminURL({
|
|
159
|
+
adminRoute,
|
|
160
|
+
path: `/collections/${collectionSlug}/hierarchy`
|
|
161
|
+
})
|
|
162
|
+
} : {
|
|
163
|
+
dropTarget: rootDropTarget,
|
|
116
164
|
label: collectionLabel,
|
|
117
165
|
url: formatAdminURL({
|
|
118
166
|
adminRoute,
|
|
@@ -120,21 +168,39 @@ export function HierarchyListView(props) {
|
|
|
120
168
|
})
|
|
121
169
|
};
|
|
122
170
|
let navItems = [baseLabel];
|
|
123
|
-
if (
|
|
171
|
+
if (breadcrumbs.length > 0) {
|
|
124
172
|
const queryParam = parentFieldName || 'parent';
|
|
125
|
-
|
|
173
|
+
// Ancestor crumbs have to stay inside whichever view the user is browsing.
|
|
174
|
+
const basePath = isScoped ? `/collections/${collectionSlug}/hierarchy` : `/collections/${collectionSlug}`;
|
|
175
|
+
const lastIndex = breadcrumbs.length - 1;
|
|
176
|
+
const hierarchyBreadcrumbs = breadcrumbs.map((crumb, index) => ({
|
|
177
|
+
// The last crumb is the folder already open, so dropping on it would be a no-op. Ancestor
|
|
178
|
+
// folders carry no collectionSpecific value here, so type acceptance falls to the server.
|
|
179
|
+
dropTarget: index === lastIndex || !parentFieldName ? undefined : {
|
|
180
|
+
type: 'hierarchy-folder',
|
|
181
|
+
ancestorIds: breadcrumbs.slice(0, index).map(ancestor => ancestor.id),
|
|
182
|
+
folderId: crumb.id,
|
|
183
|
+
hierarchySlug,
|
|
184
|
+
parentFieldName,
|
|
185
|
+
title: crumb.title
|
|
186
|
+
},
|
|
126
187
|
label: crumb.title,
|
|
127
|
-
url
|
|
188
|
+
// StepNav renders a url-less item as plain text, which is what makes the current folder
|
|
189
|
+
// read as the trail's end rather than as another link back to itself.
|
|
190
|
+
url: index === lastIndex ? undefined : formatAdminURL({
|
|
128
191
|
adminRoute,
|
|
129
|
-
path:
|
|
192
|
+
path: `${basePath}?${queryParam}=${crumb.id}`
|
|
130
193
|
})
|
|
131
194
|
}));
|
|
132
195
|
navItems = [...navItems, ...hierarchyBreadcrumbs];
|
|
133
196
|
}
|
|
134
197
|
setStepNav(navItems);
|
|
135
198
|
}
|
|
136
|
-
}, [adminRoute, setStepNav, isInDrawer, collectionSlug, hierarchyData, collectionLabel, parentFieldName]);
|
|
199
|
+
}, [adminRoute, setStepNav, isInDrawer, collectionSlug, hierarchyData, hierarchyCollectionConfig, hierarchySlug, collectionLabel, i18n, isScoped, parentFieldName, t]);
|
|
137
200
|
const parentId = hierarchyData?.parentId ?? null;
|
|
201
|
+
// The breadcrumb trail is exactly the chain a folder may not be dropped into: its own ancestors
|
|
202
|
+
// plus the folder currently open.
|
|
203
|
+
const ancestorIds = useMemo(() => (hierarchyData?.breadcrumbs ?? []).map(crumb_0 => crumb_0.id), [hierarchyData?.breadcrumbs]);
|
|
138
204
|
// Build collections array for create button
|
|
139
205
|
// Filter by allowedCollections when set (from parent's collectionSpecific field)
|
|
140
206
|
const {
|
|
@@ -153,12 +219,16 @@ export function HierarchyListView(props) {
|
|
|
153
219
|
}
|
|
154
220
|
}
|
|
155
221
|
collections.push({
|
|
156
|
-
collectionSlug,
|
|
222
|
+
collectionSlug: hierarchySlug,
|
|
157
223
|
initialData: Object.keys(hierarchyInitialData).length > 0 ? hierarchyInitialData : {}
|
|
158
224
|
});
|
|
159
225
|
// Add related collections (for creating documents that reference this hierarchy)
|
|
160
226
|
// Filter by allowedCollections when set
|
|
161
227
|
for (const [slug, relatedConfig] of Object.entries(hierarchyConfig?.relatedCollections || {})) {
|
|
228
|
+
// A scoped browse only ever creates folders or documents of the collection being browsed.
|
|
229
|
+
if (isScoped && slug !== scopedCollectionSlug) {
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
162
232
|
// Skip if not in allowed list (when allowedCollections has restrictions)
|
|
163
233
|
// Empty array means "no restrictions" (folder accepts all types)
|
|
164
234
|
if (allowedCollections && allowedCollections.length > 0 && !allowedCollections.some(c => c.slug === slug)) {
|
|
@@ -236,14 +306,20 @@ export function HierarchyListView(props) {
|
|
|
236
306
|
label: related.label
|
|
237
307
|
}));
|
|
238
308
|
}, [hierarchyData?.relatedDocumentsByCollection, selectedTypes]);
|
|
239
|
-
|
|
240
|
-
|
|
309
|
+
// Memoized on the underlying docs: DocumentSelectionProvider resets every selection whenever
|
|
310
|
+
// this reference changes, so an unmemoized literal would clear the user's selection on any
|
|
311
|
+
// re-render of this component (e.g. toggling the view mode) rather than only on navigation.
|
|
312
|
+
const collectionData = useMemo(() => hierarchyData ? {
|
|
313
|
+
[hierarchySlug]: {
|
|
241
314
|
docs: hierarchyData.childrenData.docs
|
|
242
315
|
},
|
|
243
316
|
...Object.fromEntries(Object.entries(hierarchyData.relatedDocumentsByCollection || {}).map(([slug_3, related_0]) => [slug_3, {
|
|
244
317
|
docs: related_0.result.docs
|
|
245
318
|
}]))
|
|
246
|
-
} : {}
|
|
319
|
+
} : {},
|
|
320
|
+
// hierarchyData is a server prop: stable across client re-renders, new only on
|
|
321
|
+
// navigation/search — which is precisely when clearing the selection is intended.
|
|
322
|
+
[hierarchySlug, hierarchyData]);
|
|
247
323
|
return /*#__PURE__*/_jsx(Fragment, {
|
|
248
324
|
children: /*#__PURE__*/_jsxs("div", {
|
|
249
325
|
className: `${baseClass} ${baseClass}--${collectionSlug}`,
|
|
@@ -270,6 +346,7 @@ export function HierarchyListView(props) {
|
|
|
270
346
|
}) : null]
|
|
271
347
|
}),
|
|
272
348
|
HierarchyIcon: HierarchyIcon,
|
|
349
|
+
hierarchySlug: hierarchySlug,
|
|
273
350
|
i18n: i18n,
|
|
274
351
|
viewType: viewType
|
|
275
352
|
}), /*#__PURE__*/_jsxs(ListControlsBar, {
|
|
@@ -282,12 +359,15 @@ export function HierarchyListView(props) {
|
|
|
282
359
|
}),
|
|
283
360
|
onSearchChange: handleSearchChange,
|
|
284
361
|
searchQueryParam: searchFromURL
|
|
285
|
-
}), /*#__PURE__*/_jsx(TypeFilter, {
|
|
362
|
+
}), !isScoped && /*#__PURE__*/_jsx(TypeFilter, {
|
|
286
363
|
i18n: i18n,
|
|
287
364
|
onChange: handleTypeFilterChange,
|
|
288
365
|
options: typeOptions,
|
|
289
366
|
selectedValues: selectedTypes
|
|
290
367
|
}, `type-filter-${hierarchyData.parent ? hierarchyData.parent.id : 'root'}`)]
|
|
368
|
+
}), /*#__PURE__*/_jsx(ViewModeToggle, {
|
|
369
|
+
onChange: handleViewModeChange,
|
|
370
|
+
viewMode: viewMode
|
|
291
371
|
}), hasCreatePermission && collections.length > 0 && /*#__PURE__*/_jsx(CreateDocumentButton, {
|
|
292
372
|
buttonStyle: "primary",
|
|
293
373
|
collections: collections,
|
|
@@ -295,18 +375,21 @@ export function HierarchyListView(props) {
|
|
|
295
375
|
onSave: handleSave
|
|
296
376
|
})]
|
|
297
377
|
}), /*#__PURE__*/_jsx(HierarchyTable, {
|
|
378
|
+
ancestorIds: ancestorIds,
|
|
298
379
|
baseFilter: baseFilter,
|
|
380
|
+
browseCollectionSlug: collectionSlug,
|
|
299
381
|
childrenData: filteredChildrenData,
|
|
300
382
|
collections: collections,
|
|
301
|
-
collectionSlug:
|
|
383
|
+
collectionSlug: hierarchySlug,
|
|
302
384
|
hasCreatePermission: hasCreatePermission,
|
|
303
385
|
HierarchyIcon: HierarchySmallIcon ?? HierarchyIcon,
|
|
304
|
-
hierarchyLabel:
|
|
386
|
+
hierarchyLabel: getTranslation(hierarchyCollectionConfig?.labels?.plural, i18n),
|
|
305
387
|
parentFieldName: parentFieldName,
|
|
306
388
|
parentId: parentId,
|
|
307
389
|
relatedGroups: filteredRelatedGroups,
|
|
308
390
|
search: searchFromURL,
|
|
309
|
-
useAsTitle:
|
|
391
|
+
useAsTitle: hierarchyCollectionConfig?.admin?.useAsTitle || 'id',
|
|
392
|
+
viewMode: viewMode
|
|
310
393
|
}, `${collectionSlug}-${parentId}-${searchFromURL}-${JSON.stringify(baseFilter)}-${filteredChildrenData?.totalDocs}-${Object.entries(hierarchyData?.relatedDocumentsByCollection || {}).map(([slug_4, r]) => `${slug_4}:${r.result.totalDocs}`).join(',')}`)]
|
|
311
394
|
})
|
|
312
395
|
}), AfterList]
|