@payloadcms/ui 4.0.0-internal.a7ca468 → 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/elements/AddNewRelation/index.css +0 -4
- package/dist/elements/AddNewRelation/index.js +2 -2
- package/dist/elements/AddNewRelation/index.js.map +1 -1
- package/dist/elements/AppHeader/index.css +5 -0
- 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 +4 -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/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/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/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/FileManager/index.css +0 -30
- package/dist/elements/FileManager/index.d.ts.map +1 -1
- package/dist/elements/FileManager/index.js +379 -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 -15
- 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 -186
- 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 +1 -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 -29
- 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/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/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.css +1 -2
- 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 -15
- 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/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/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/index.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/index.js +5 -2
- package/dist/elements/RelationshipTable/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.map +1 -1
- package/dist/elements/SelectRow/index.js +1 -2
- package/dist/elements/SelectRow/index.js.map +1 -1
- package/dist/elements/SidebarRow/index.css +1 -5
- package/dist/elements/SidebarToggle/index.css +3 -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/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 -32
- 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 +6 -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 +35 -7
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Checkbox/Input.d.ts +2 -2
- package/dist/fields/Checkbox/Input.d.ts.map +1 -1
- package/dist/fields/Checkbox/Input.js +134 -152
- package/dist/fields/Checkbox/Input.js.map +1 -1
- package/dist/fields/Checkbox/index.css +168 -155
- package/dist/fields/Relationship/Input.d.ts.map +1 -1
- package/dist/fields/Relationship/Input.js +24 -6
- 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/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/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +4 -1
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -0
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.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/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/FormErrorHandler/index.d.ts +5 -1
- package/dist/providers/FormErrorHandler/index.d.ts.map +1 -1
- package/dist/providers/FormErrorHandler/index.js.map +1 -1
- 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.js +4 -4
- 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/styles.css +1 -1
- 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/formatMetadata.d.ts.map +1 -1
- package/dist/utilities/formatMetadata.js +0 -5
- package/dist/utilities/formatMetadata.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/slugify.d.ts.map +1 -1
- package/dist/utilities/slugify.js +1 -0
- 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 +33 -140
- 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.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 +5 -0
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +27 -16
- package/dist/views/List/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.map +1 -1
- package/dist/views/Root/index.js +1 -0
- 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 +4 -4
- 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
|
@@ -15,10 +15,10 @@ import { Column } from './Column/index.js';
|
|
|
15
15
|
import './index.css';
|
|
16
16
|
const baseClass = 'hierarchy-column-browser';
|
|
17
17
|
export const HierarchyColumnBrowser = function HierarchyColumnBrowser({
|
|
18
|
-
ancestorsWithSelections,
|
|
19
18
|
baseFilter,
|
|
20
19
|
disabledIds,
|
|
21
20
|
filterByCollection,
|
|
21
|
+
hasMany,
|
|
22
22
|
hierarchyCollectionSlug,
|
|
23
23
|
initialExpandedPath,
|
|
24
24
|
isLoadingPath,
|
|
@@ -26,6 +26,7 @@ export const HierarchyColumnBrowser = function HierarchyColumnBrowser({
|
|
|
26
26
|
onSelect,
|
|
27
27
|
parentFieldName,
|
|
28
28
|
ref,
|
|
29
|
+
selectedDescendantCounts,
|
|
29
30
|
selectedIds,
|
|
30
31
|
useAsTitle = 'id'
|
|
31
32
|
}) {
|
|
@@ -50,9 +51,11 @@ export const HierarchyColumnBrowser = function HierarchyColumnBrowser({
|
|
|
50
51
|
const hierarchyConfig = collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object' ? collectionConfig.hierarchy : undefined;
|
|
51
52
|
const treeLimit = hierarchyConfig?.admin?.treeLimit ?? DEFAULT_HIERARCHY_TREE_LIMIT;
|
|
52
53
|
const collectionLabel = collectionConfig ? getTranslation(collectionConfig.labels?.singular || hierarchyCollectionSlug, i18n) : hierarchyCollectionSlug;
|
|
54
|
+
const collectionLabelPlural = collectionConfig ? getTranslation(collectionConfig.labels?.plural || hierarchyCollectionSlug, i18n) : hierarchyCollectionSlug;
|
|
53
55
|
const canCreate = Boolean(permissions?.collections?.[hierarchyCollectionSlug]?.create);
|
|
54
56
|
const [columns, setColumns] = useState([]);
|
|
55
57
|
const [expandedPath, setExpandedPath] = useState([]);
|
|
58
|
+
const [revealed, setRevealed] = useState(null);
|
|
56
59
|
const containerRef = useRef(null);
|
|
57
60
|
const lastColumnRef = useRef(null);
|
|
58
61
|
const hasLoadedRef = useRef(false);
|
|
@@ -199,10 +202,7 @@ export const HierarchyColumnBrowser = function HierarchyColumnBrowser({
|
|
|
199
202
|
});
|
|
200
203
|
}
|
|
201
204
|
}, [columns, fetchItems]);
|
|
202
|
-
|
|
203
|
-
refreshColumn
|
|
204
|
-
}), [refreshColumn]);
|
|
205
|
-
const loadColumns = useEffectEvent(async path => {
|
|
205
|
+
const loadColumnsForPath = useCallback(async path => {
|
|
206
206
|
// Build list of parentIds to fetch: [null, ...path]
|
|
207
207
|
const parentIds = [null];
|
|
208
208
|
if (path?.length) {
|
|
@@ -217,10 +217,9 @@ export const HierarchyColumnBrowser = function HierarchyColumnBrowser({
|
|
|
217
217
|
parentId: parentId_1,
|
|
218
218
|
totalDocs: 0
|
|
219
219
|
})));
|
|
220
|
-
// Set expanded path to match (excluding null/root)
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
}
|
|
220
|
+
// Set expanded path to match (excluding null/root). Always reset - a `revealPath` back to the
|
|
221
|
+
// root would otherwise leave the previous path's items marked as expanded.
|
|
222
|
+
setExpandedPath(path ?? []);
|
|
224
223
|
// Fetch all columns in parallel
|
|
225
224
|
const results = await Promise.all(parentIds.map(async (parentId_2, index) => {
|
|
226
225
|
try {
|
|
@@ -270,7 +269,25 @@ export const HierarchyColumnBrowser = function HierarchyColumnBrowser({
|
|
|
270
269
|
};
|
|
271
270
|
});
|
|
272
271
|
setColumns(columnsWithTitles);
|
|
272
|
+
}, [fetchItems]);
|
|
273
|
+
const loadColumns = useEffectEvent(async path_0 => {
|
|
274
|
+
await loadColumnsForPath(path_0);
|
|
273
275
|
});
|
|
276
|
+
const revealPath = useCallback(async path_1 => {
|
|
277
|
+
const target = path_1[path_1.length - 1];
|
|
278
|
+
if (!target) {
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
await loadColumnsForPath(path_1.slice(0, -1).map(segment => segment.id));
|
|
282
|
+
setRevealed(prev_2 => ({
|
|
283
|
+
id: target.id,
|
|
284
|
+
token: (prev_2?.token ?? 0) + 1
|
|
285
|
+
}));
|
|
286
|
+
}, [loadColumnsForPath]);
|
|
287
|
+
useImperativeHandle(ref, () => ({
|
|
288
|
+
refreshColumn,
|
|
289
|
+
revealPath
|
|
290
|
+
}), [refreshColumn, revealPath]);
|
|
274
291
|
// Load columns on mount - wait for path loading to complete
|
|
275
292
|
useEffect(() => {
|
|
276
293
|
if (isLoadingPath || hasLoadedRef.current) {
|
|
@@ -303,6 +320,13 @@ export const HierarchyColumnBrowser = function HierarchyColumnBrowser({
|
|
|
303
320
|
// Update expanded path - keep path up to this column, add new item
|
|
304
321
|
const newExpandedPath = [...expandedPath.slice(0, columnIndex_0), itemId];
|
|
305
322
|
setExpandedPath(newExpandedPath);
|
|
323
|
+
// Re-opening a folder that is already expanded here (e.g. clicking the grandparent while
|
|
324
|
+
// sitting in grandparent/parent/child) makes it the deepest open one again. Its child column
|
|
325
|
+
// is already loaded, so drop everything past it rather than refetching.
|
|
326
|
+
if (columns[columnIndex_0 + 1]?.parentId === itemId) {
|
|
327
|
+
setColumns(columns.slice(0, columnIndex_0 + 2));
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
306
330
|
// Remove columns to the right and add new loading column
|
|
307
331
|
const newColumns = columns.slice(0, columnIndex_0 + 1);
|
|
308
332
|
newColumns.push({
|
|
@@ -325,8 +349,8 @@ export const HierarchyColumnBrowser = function HierarchyColumnBrowser({
|
|
|
325
349
|
page: 1,
|
|
326
350
|
parentId: itemId
|
|
327
351
|
});
|
|
328
|
-
setColumns(
|
|
329
|
-
const updated_3 = [...
|
|
352
|
+
setColumns(prev_4 => {
|
|
353
|
+
const updated_3 = [...prev_4];
|
|
330
354
|
const targetIndex_0 = columnIndex_0 + 1;
|
|
331
355
|
if (updated_3[targetIndex_0]?.parentId === itemId) {
|
|
332
356
|
updated_3[targetIndex_0] = {
|
|
@@ -342,8 +366,8 @@ export const HierarchyColumnBrowser = function HierarchyColumnBrowser({
|
|
|
342
366
|
return updated_3;
|
|
343
367
|
});
|
|
344
368
|
} catch {
|
|
345
|
-
setColumns(
|
|
346
|
-
const updated_2 = [...
|
|
369
|
+
setColumns(prev_3 => {
|
|
370
|
+
const updated_2 = [...prev_3];
|
|
347
371
|
const targetIndex = columnIndex_0 + 1;
|
|
348
372
|
if (updated_2[targetIndex]?.parentId === itemId) {
|
|
349
373
|
updated_2[targetIndex] = {
|
|
@@ -369,8 +393,8 @@ export const HierarchyColumnBrowser = function HierarchyColumnBrowser({
|
|
|
369
393
|
}
|
|
370
394
|
const nextPage = column_0.page + 1;
|
|
371
395
|
// Set loading state
|
|
372
|
-
setColumns(
|
|
373
|
-
const updated_4 = [...
|
|
396
|
+
setColumns(prev_5 => {
|
|
397
|
+
const updated_4 = [...prev_5];
|
|
374
398
|
updated_4[columnIndex_1] = {
|
|
375
399
|
...updated_4[columnIndex_1],
|
|
376
400
|
isLoading: true
|
|
@@ -385,8 +409,8 @@ export const HierarchyColumnBrowser = function HierarchyColumnBrowser({
|
|
|
385
409
|
page: nextPage,
|
|
386
410
|
parentId: column_0.parentId
|
|
387
411
|
});
|
|
388
|
-
setColumns(
|
|
389
|
-
const updated_6 = [...
|
|
412
|
+
setColumns(prev_7 => {
|
|
413
|
+
const updated_6 = [...prev_7];
|
|
390
414
|
if (updated_6[columnIndex_1]) {
|
|
391
415
|
updated_6[columnIndex_1] = {
|
|
392
416
|
...updated_6[columnIndex_1],
|
|
@@ -399,8 +423,8 @@ export const HierarchyColumnBrowser = function HierarchyColumnBrowser({
|
|
|
399
423
|
return updated_6;
|
|
400
424
|
});
|
|
401
425
|
} catch {
|
|
402
|
-
setColumns(
|
|
403
|
-
const updated_5 = [...
|
|
426
|
+
setColumns(prev_6 => {
|
|
427
|
+
const updated_5 = [...prev_6];
|
|
404
428
|
if (updated_5[columnIndex_1]) {
|
|
405
429
|
updated_5[columnIndex_1] = {
|
|
406
430
|
...updated_5[columnIndex_1],
|
|
@@ -413,17 +437,17 @@ export const HierarchyColumnBrowser = function HierarchyColumnBrowser({
|
|
|
413
437
|
}, [columns, fetchItems]);
|
|
414
438
|
// Build path for each column based on parent info
|
|
415
439
|
const getPathToColumn = columnIndex_2 => {
|
|
416
|
-
const
|
|
440
|
+
const path_2 = [];
|
|
417
441
|
for (let i_0 = 1; i_0 <= columnIndex_2; i_0++) {
|
|
418
442
|
const col_1 = columns[i_0];
|
|
419
443
|
if (col_1?.parentId !== null && col_1?.parentId !== undefined) {
|
|
420
|
-
|
|
444
|
+
path_2.push({
|
|
421
445
|
id: col_1.parentId,
|
|
422
446
|
title: col_1.parentTitle || String(col_1.parentId)
|
|
423
447
|
});
|
|
424
448
|
}
|
|
425
449
|
}
|
|
426
|
-
return
|
|
450
|
+
return path_2;
|
|
427
451
|
};
|
|
428
452
|
return /*#__PURE__*/_jsxs("div", {
|
|
429
453
|
className: baseClass,
|
|
@@ -436,13 +460,14 @@ export const HierarchyColumnBrowser = function HierarchyColumnBrowser({
|
|
|
436
460
|
className: `${baseClass}__column-wrapper`,
|
|
437
461
|
ref: isLastColumn ? lastColumnRef : undefined,
|
|
438
462
|
children: /*#__PURE__*/_jsx(Column, {
|
|
439
|
-
ancestorsWithSelections: ancestorsWithSelections,
|
|
440
463
|
canCreate: canCreate && Boolean(onCreateNew),
|
|
441
464
|
collectionLabel: collectionLabel,
|
|
465
|
+
collectionLabelPlural: collectionLabelPlural,
|
|
442
466
|
disabled: isLoadingPath,
|
|
443
467
|
disabledIds: disabledIds,
|
|
444
468
|
expandedId: expandedId,
|
|
445
469
|
filterByCollection: filterByCollection,
|
|
470
|
+
hasMany: hasMany,
|
|
446
471
|
hasNextPage: column_1.hasNextPage,
|
|
447
472
|
isLoading: column_1.isLoading,
|
|
448
473
|
items: column_1.items,
|
|
@@ -460,6 +485,9 @@ export const HierarchyColumnBrowser = function HierarchyColumnBrowser({
|
|
|
460
485
|
parentId: column_1.parentId,
|
|
461
486
|
parentTitle: column_1.parentTitle,
|
|
462
487
|
pathToColumn: pathToColumn,
|
|
488
|
+
revealedId: revealed?.id,
|
|
489
|
+
revealToken: revealed?.token,
|
|
490
|
+
selectedDescendantCounts: selectedDescendantCounts,
|
|
463
491
|
selectedIds: selectedIds,
|
|
464
492
|
totalDocs: column_1.totalDocs
|
|
465
493
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getTranslation","combineWhereConstraints","DEFAULT_HIERARCHY_TREE_LIMIT","formatAdminURL","qs","React","useCallback","useEffect","useImperativeHandle","useRef","useState","useEffectEvent","useAuth","useConfig","useTranslation","isSuperset","Spinner","Column","baseClass","HierarchyColumnBrowser","ancestorsWithSelections","baseFilter","disabledIds","filterByCollection","hierarchyCollectionSlug","initialExpandedPath","isLoadingPath","onCreateNew","onSelect","parentFieldName","ref","selectedIds","useAsTitle","i18n","permissions","config","routes","api","serverURL","getEntityConfig","collectionConfig","collectionSlug","hierarchyConfig","hierarchy","undefined","treeLimit","admin","collectionLabel","labels","singular","canCreate","Boolean","collections","create","columns","setColumns","expandedPath","setExpandedPath","containerRef","lastColumnRef","hasLoadedRef","fetchItems","page","parentId","parentWhere","exists","equals","where","collectionSpecific","typeFieldName","fieldName","length","allPossibleTypes","Object","keys","relatedCollections","and","or","in","not_in","whereWithBaseFilter","queryString","stringify","limit","sort","addQueryPrefix","url","apiRoute","path","response","fetch","credentials","ok","Error","data","json","allItems","docs","map","doc","id","allowedCollections","hasChildren","title","String","items","filter","item","hasNextPage","totalDocs","refreshColumn","columnIndex","findIndex","col","prev","updated","isLoading","loadColumns","parentIds","push","results","Promise","all","index","parentTitle","columnsWithTitles","prevColumn","parentItem","find","current","scrollIntoView","behavior","inline","handleExpand","itemId","column","i","newExpandedPath","slice","newColumns","targetIndex","handleLoadMore","nextPage","newItems","getPathToColumn","_jsxs","className","isLastColumn","expandedId","pathToColumn","_jsx","disabled","onExpand","onLoadMore"],"sources":["../../../../src/elements/Hierarchy/ColumnBrowser/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n combineWhereConstraints,\n DEFAULT_HIERARCHY_TREE_LIMIT,\n formatAdminURL,\n} from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react'\n\nimport type {\n ColumnItemData,\n ColumnState,\n HierarchyColumnBrowserProps,\n HierarchyColumnBrowserRef,\n} from './types.js'\n\nimport { useEffectEvent } from '../../../hooks/useEffectEvent.js'\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { isSuperset } from '../../../utilities/isSuperset.js'\nimport { Spinner } from '../../Spinner/index.js'\nimport { Column } from './Column/index.js'\nimport './index.css'\n\nconst baseClass = 'hierarchy-column-browser'\n\nexport const HierarchyColumnBrowser = function HierarchyColumnBrowser({\n ancestorsWithSelections,\n baseFilter,\n disabledIds,\n filterByCollection,\n hierarchyCollectionSlug,\n initialExpandedPath,\n isLoadingPath,\n onCreateNew,\n onSelect,\n parentFieldName,\n ref,\n selectedIds,\n useAsTitle = 'id',\n}: { ref?: React.RefObject<HierarchyColumnBrowserRef | null> } & HierarchyColumnBrowserProps) {\n const { i18n } = useTranslation()\n const { permissions } = useAuth()\n const {\n config: {\n routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug: hierarchyCollectionSlug })\n const hierarchyConfig =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy\n : undefined\n const treeLimit = hierarchyConfig?.admin?.treeLimit ?? DEFAULT_HIERARCHY_TREE_LIMIT\n\n const collectionLabel = collectionConfig\n ? getTranslation(collectionConfig.labels?.singular || hierarchyCollectionSlug, i18n)\n : hierarchyCollectionSlug\n const canCreate = Boolean(permissions?.collections?.[hierarchyCollectionSlug]?.create)\n\n const [columns, setColumns] = useState<ColumnState[]>([])\n const [expandedPath, setExpandedPath] = useState<(number | string)[]>([])\n const containerRef = useRef<HTMLDivElement>(null)\n const lastColumnRef = useRef<HTMLDivElement>(null)\n const hasLoadedRef = useRef(false)\n\n const fetchItems = useCallback(\n async ({\n page,\n parentId,\n }: {\n page: number\n parentId: null | number | string\n }): Promise<{\n hasNextPage: boolean\n items: ColumnItemData[]\n totalDocs: number\n }> => {\n const parentWhere =\n parentId === null\n ? { [parentFieldName]: { exists: false } }\n : { [parentFieldName]: { equals: parentId } }\n\n // Build the final where clause, adding collectionSpecific filtering if configured\n let where: Record<string, unknown> = parentWhere\n\n // Filter by collection type if collectionSpecific is configured and filterByCollection is defined\n // - undefined: no filtering, show all folders\n // - [] empty: show all folders (no constraints)\n // - ['posts', ...]: show folders that allow ANY of these OR unrestricted\n // Note: Ideally we'd enforce ALL (superset) but hasMany enum fields in PG\n // do not support \"contains all\" queries easily\n if (hierarchyConfig?.collectionSpecific && filterByCollection !== undefined) {\n const typeFieldName = hierarchyConfig.collectionSpecific.fieldName\n\n if (filterByCollection.length > 0) {\n // Get all possible type field values from relatedCollections\n // This is used to detect \"unrestricted\" folders (empty allowedTypes array)\n const allPossibleTypes = Object.keys(hierarchyConfig.relatedCollections || {})\n\n where = {\n and: [\n parentWhere,\n {\n or: [\n // items that allow ANY of the selected collections\n { [typeFieldName]: { in: filterByCollection } },\n // OR items that are unrestricted (no type field exists)\n { [typeFieldName]: { exists: false } },\n // OR items with empty allowedTypes array (unrestricted)\n // Using not_in with all possible values matches empty arrays in both MongoDB and Postgres\n ...(allPossibleTypes.length > 0\n ? [{ [typeFieldName]: { not_in: allPossibleTypes } }]\n : []),\n ],\n },\n ],\n }\n } else {\n // Empty array: show all items of this parent\n where = parentWhere\n }\n }\n\n // Combine with baseFilter if provided\n const whereWithBaseFilter = combineWhereConstraints([where, baseFilter])\n\n const queryString = qs.stringify(\n { limit: treeLimit, page, sort: useAsTitle, where: whereWithBaseFilter },\n { addQueryPrefix: true },\n )\n\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${hierarchyCollectionSlug}${queryString}`,\n serverURL,\n })\n\n const response = await fetch(url, {\n credentials: 'include',\n })\n\n if (!response.ok) {\n throw new Error('Failed to fetch items')\n }\n\n const data = await response.json()\n\n const typeFieldName = hierarchyConfig?.collectionSpecific\n ? hierarchyConfig.collectionSpecific.fieldName\n : undefined\n\n const allItems: ColumnItemData[] = (data.docs || []).map(\n (doc: { id: number | string } & Record<string, unknown>) => ({\n id: doc.id,\n allowedCollections: typeFieldName\n ? (doc[typeFieldName] as string[] | undefined)\n : undefined,\n hasChildren: true, // Always allow expansion - empty children handled gracefully\n title: String(doc[useAsTitle] || doc.id),\n }),\n )\n\n // Client-side filter: only show items that are a superset of required collections\n // Server query uses ANY (due to PG limitations), but we want ALL (superset)\n const items =\n filterByCollection && filterByCollection.length > 0\n ? allItems.filter((item) => isSuperset(item.allowedCollections, filterByCollection))\n : allItems\n\n return {\n hasNextPage: data.hasNextPage || false,\n items,\n totalDocs: data.totalDocs || 0,\n }\n },\n [\n api,\n baseFilter,\n filterByCollection,\n hierarchyConfig,\n parentFieldName,\n serverURL,\n hierarchyCollectionSlug,\n treeLimit,\n useAsTitle,\n ],\n )\n\n const refreshColumn = useCallback(\n async (parentId: null | number | string) => {\n const columnIndex = columns.findIndex((col) => col.parentId === parentId)\n if (columnIndex === -1) {\n return\n }\n\n setColumns((prev) => {\n const updated = [...prev]\n updated[columnIndex] = { ...updated[columnIndex], isLoading: true }\n return updated\n })\n\n try {\n const { hasNextPage, items, totalDocs } = await fetchItems({ page: 1, parentId })\n\n setColumns((prev) => {\n const updated = [...prev]\n if (updated[columnIndex]) {\n updated[columnIndex] = {\n ...updated[columnIndex],\n hasNextPage,\n isLoading: false,\n items,\n page: 1,\n totalDocs,\n }\n }\n return updated\n })\n } catch {\n setColumns((prev) => {\n const updated = [...prev]\n if (updated[columnIndex]) {\n updated[columnIndex] = { ...updated[columnIndex], isLoading: false }\n }\n return updated\n })\n }\n },\n [columns, fetchItems],\n )\n\n useImperativeHandle(ref, () => ({ refreshColumn }), [refreshColumn])\n\n const loadColumns = useEffectEvent(async (path?: (number | string)[]) => {\n // Build list of parentIds to fetch: [null, ...path]\n const parentIds: (null | number | string)[] = [null]\n if (path?.length) {\n parentIds.push(...path)\n }\n\n // Set initial loading state for all columns\n setColumns(\n parentIds.map((parentId) => ({\n hasNextPage: false,\n isLoading: true,\n items: [],\n page: 1,\n parentId,\n totalDocs: 0,\n })),\n )\n\n // Set expanded path to match (excluding null/root)\n if (path?.length) {\n setExpandedPath(path)\n }\n\n // Fetch all columns in parallel\n const results = await Promise.all(\n parentIds.map(async (parentId, index) => {\n try {\n const { hasNextPage, items, totalDocs } = await fetchItems({ page: 1, parentId })\n let parentTitle: string | undefined\n if (index > 0 && parentId !== null) {\n // Will be filled in after all fetches complete\n }\n return {\n hasNextPage,\n isLoading: false,\n items,\n page: 1,\n parentId,\n parentTitle,\n totalDocs,\n }\n } catch {\n return {\n hasNextPage: false,\n isLoading: false,\n items: [],\n page: 1,\n parentId,\n parentTitle: undefined,\n totalDocs: 0,\n }\n }\n }),\n )\n\n // Fill in parent titles from previous columns\n const columnsWithTitles = results.map((col, index) => {\n if (index === 0 || col.parentId === null) {\n return col\n }\n const prevColumn = results[index - 1]\n const parentItem = prevColumn?.items.find((item) => item.id === col.parentId)\n return {\n ...col,\n parentTitle: parentItem?.title || String(col.parentId),\n }\n })\n\n setColumns(columnsWithTitles)\n })\n\n // Load columns on mount - wait for path loading to complete\n useEffect(() => {\n if (isLoadingPath || hasLoadedRef.current) {\n return\n }\n hasLoadedRef.current = true\n void loadColumns(initialExpandedPath)\n }, [initialExpandedPath, isLoadingPath])\n\n // Auto-scroll to the last column when columns change\n useEffect(() => {\n if (lastColumnRef.current && columns.length > 1) {\n lastColumnRef.current.scrollIntoView({ behavior: 'instant', inline: 'start' })\n }\n }, [columns.length])\n\n const handleExpand = useCallback(\n async ({ columnIndex, itemId }: { columnIndex: number; itemId: number | string }) => {\n const column = columns[columnIndex]\n if (!column) {\n return\n }\n\n const item = column.items.find((i) => i.id === itemId)\n if (!item) {\n return\n }\n\n // Update expanded path - keep path up to this column, add new item\n const newExpandedPath = [...expandedPath.slice(0, columnIndex), itemId]\n setExpandedPath(newExpandedPath)\n\n // Remove columns to the right and add new loading column\n const newColumns = columns.slice(0, columnIndex + 1)\n newColumns.push({\n hasNextPage: false,\n isLoading: true,\n items: [],\n page: 1,\n parentId: itemId,\n parentTitle: item.title,\n totalDocs: 0,\n })\n\n setColumns(newColumns)\n\n // Fetch children\n try {\n const { hasNextPage, items, totalDocs } = await fetchItems({ page: 1, parentId: itemId })\n\n setColumns((prev) => {\n const updated = [...prev]\n const targetIndex = columnIndex + 1\n\n if (updated[targetIndex]?.parentId === itemId) {\n updated[targetIndex] = {\n hasNextPage,\n isLoading: false,\n items,\n page: 1,\n parentId: itemId,\n parentTitle: item.title,\n totalDocs,\n }\n }\n\n return updated\n })\n } catch {\n setColumns((prev) => {\n const updated = [...prev]\n const targetIndex = columnIndex + 1\n\n if (updated[targetIndex]?.parentId === itemId) {\n updated[targetIndex] = {\n hasNextPage: false,\n isLoading: false,\n items: [],\n page: 1,\n parentId: itemId,\n parentTitle: item.title,\n totalDocs: 0,\n }\n }\n\n return updated\n })\n }\n },\n [columns, expandedPath, fetchItems],\n )\n\n const handleLoadMore = useCallback(\n async ({ columnIndex }: { columnIndex: number }) => {\n const column = columns[columnIndex]\n if (!column || column.isLoading || !column.hasNextPage) {\n return\n }\n\n const nextPage = column.page + 1\n\n // Set loading state\n setColumns((prev) => {\n const updated = [...prev]\n updated[columnIndex] = { ...updated[columnIndex], isLoading: true }\n return updated\n })\n\n try {\n const { hasNextPage, items: newItems } = await fetchItems({\n page: nextPage,\n parentId: column.parentId,\n })\n\n setColumns((prev) => {\n const updated = [...prev]\n\n if (updated[columnIndex]) {\n updated[columnIndex] = {\n ...updated[columnIndex],\n hasNextPage,\n isLoading: false,\n items: [...updated[columnIndex].items, ...newItems],\n page: nextPage,\n }\n }\n\n return updated\n })\n } catch {\n setColumns((prev) => {\n const updated = [...prev]\n\n if (updated[columnIndex]) {\n updated[columnIndex] = { ...updated[columnIndex], isLoading: false }\n }\n\n return updated\n })\n }\n },\n [columns, fetchItems],\n )\n\n // Build path for each column based on parent info\n const getPathToColumn = (columnIndex: number) => {\n const path: Array<{ id: number | string; title: string }> = []\n\n for (let i = 1; i <= columnIndex; i++) {\n const col = columns[i]\n if (col?.parentId !== null && col?.parentId !== undefined) {\n path.push({\n id: col.parentId,\n title: col.parentTitle || String(col.parentId),\n })\n }\n }\n\n return path\n }\n\n return (\n <div className={baseClass} ref={containerRef}>\n {columns.map((column, index) => {\n const isLastColumn = index === columns.length - 1 && !isLoadingPath\n const expandedId = expandedPath[index] ?? null\n const pathToColumn = getPathToColumn(index)\n\n return (\n <div\n className={`${baseClass}__column-wrapper`}\n key={`${column.parentId ?? 'root'}-${index}`}\n ref={isLastColumn ? lastColumnRef : undefined}\n >\n <Column\n ancestorsWithSelections={ancestorsWithSelections}\n canCreate={canCreate && Boolean(onCreateNew)}\n collectionLabel={collectionLabel}\n disabled={isLoadingPath}\n disabledIds={disabledIds}\n expandedId={expandedId}\n filterByCollection={filterByCollection}\n hasNextPage={column.hasNextPage}\n isLoading={column.isLoading}\n items={column.items}\n onCreateNew={onCreateNew || (() => {})}\n onExpand={({ id }) => handleExpand({ columnIndex: index, itemId: id })}\n onLoadMore={() => handleLoadMore({ columnIndex: index })}\n onSelect={onSelect}\n parentId={column.parentId}\n parentTitle={column.parentTitle}\n pathToColumn={pathToColumn}\n selectedIds={selectedIds}\n totalDocs={column.totalDocs}\n />\n </div>\n )\n })}\n {isLoadingPath && (\n <div className={`${baseClass}__column-wrapper ${baseClass}__column-wrapper--loading`}>\n <Spinner />\n </div>\n )}\n </div>\n )\n}\n\nexport type {\n ColumnItemData,\n HierarchyColumnBrowserProps,\n HierarchyColumnBrowserRef,\n PathSegment,\n} from './types.js'\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getTranslation","combineWhereConstraints","DEFAULT_HIERARCHY_TREE_LIMIT","formatAdminURL","qs","React","useCallback","useEffect","useImperativeHandle","useRef","useState","useEffectEvent","useAuth","useConfig","useTranslation","isSuperset","Spinner","Column","baseClass","HierarchyColumnBrowser","baseFilter","disabledIds","filterByCollection","hasMany","hierarchyCollectionSlug","initialExpandedPath","isLoadingPath","onCreateNew","onSelect","parentFieldName","ref","selectedDescendantCounts","selectedIds","useAsTitle","i18n","permissions","config","routes","api","serverURL","getEntityConfig","collectionConfig","collectionSlug","hierarchyConfig","hierarchy","undefined","treeLimit","admin","collectionLabel","labels","singular","collectionLabelPlural","plural","canCreate","Boolean","collections","create","columns","setColumns","expandedPath","setExpandedPath","revealed","setRevealed","containerRef","lastColumnRef","hasLoadedRef","fetchItems","page","parentId","parentWhere","exists","equals","where","collectionSpecific","typeFieldName","fieldName","length","allPossibleTypes","Object","keys","relatedCollections","and","or","in","not_in","whereWithBaseFilter","queryString","stringify","limit","sort","addQueryPrefix","url","apiRoute","path","response","fetch","credentials","ok","Error","data","json","allItems","docs","map","doc","id","allowedCollections","hasChildren","title","String","items","filter","item","hasNextPage","totalDocs","refreshColumn","columnIndex","findIndex","col","prev","updated","isLoading","loadColumnsForPath","parentIds","push","results","Promise","all","index","parentTitle","columnsWithTitles","prevColumn","parentItem","find","loadColumns","revealPath","target","slice","segment","token","current","scrollIntoView","behavior","inline","handleExpand","itemId","column","i","newExpandedPath","newColumns","targetIndex","handleLoadMore","nextPage","newItems","getPathToColumn","_jsxs","className","isLastColumn","expandedId","pathToColumn","_jsx","disabled","onExpand","onLoadMore","revealedId","revealToken"],"sources":["../../../../src/elements/Hierarchy/ColumnBrowser/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n combineWhereConstraints,\n DEFAULT_HIERARCHY_TREE_LIMIT,\n formatAdminURL,\n} from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react'\n\nimport type {\n ColumnItemData,\n ColumnState,\n HierarchyColumnBrowserProps,\n HierarchyColumnBrowserRef,\n PathSegment,\n} from './types.js'\n\nimport { useEffectEvent } from '../../../hooks/useEffectEvent.js'\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { isSuperset } from '../../../utilities/isSuperset.js'\nimport { Spinner } from '../../Spinner/index.js'\nimport { Column } from './Column/index.js'\nimport './index.css'\n\nconst baseClass = 'hierarchy-column-browser'\n\nexport const HierarchyColumnBrowser = function HierarchyColumnBrowser({\n baseFilter,\n disabledIds,\n filterByCollection,\n hasMany,\n hierarchyCollectionSlug,\n initialExpandedPath,\n isLoadingPath,\n onCreateNew,\n onSelect,\n parentFieldName,\n ref,\n selectedDescendantCounts,\n selectedIds,\n useAsTitle = 'id',\n}: { ref?: React.RefObject<HierarchyColumnBrowserRef | null> } & HierarchyColumnBrowserProps) {\n const { i18n } = useTranslation()\n const { permissions } = useAuth()\n const {\n config: {\n routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug: hierarchyCollectionSlug })\n const hierarchyConfig =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy\n : undefined\n const treeLimit = hierarchyConfig?.admin?.treeLimit ?? DEFAULT_HIERARCHY_TREE_LIMIT\n\n const collectionLabel = collectionConfig\n ? getTranslation(collectionConfig.labels?.singular || hierarchyCollectionSlug, i18n)\n : hierarchyCollectionSlug\n const collectionLabelPlural = collectionConfig\n ? getTranslation(collectionConfig.labels?.plural || hierarchyCollectionSlug, i18n)\n : hierarchyCollectionSlug\n const canCreate = Boolean(permissions?.collections?.[hierarchyCollectionSlug]?.create)\n\n const [columns, setColumns] = useState<ColumnState[]>([])\n const [expandedPath, setExpandedPath] = useState<(number | string)[]>([])\n const [revealed, setRevealed] = useState<{ id: number | string; token: number } | null>(null)\n const containerRef = useRef<HTMLDivElement>(null)\n const lastColumnRef = useRef<HTMLDivElement>(null)\n const hasLoadedRef = useRef(false)\n\n const fetchItems = useCallback(\n async ({\n page,\n parentId,\n }: {\n page: number\n parentId: null | number | string\n }): Promise<{\n hasNextPage: boolean\n items: ColumnItemData[]\n totalDocs: number\n }> => {\n const parentWhere =\n parentId === null\n ? { [parentFieldName]: { exists: false } }\n : { [parentFieldName]: { equals: parentId } }\n\n // Build the final where clause, adding collectionSpecific filtering if configured\n let where: Record<string, unknown> = parentWhere\n\n // Filter by collection type if collectionSpecific is configured and filterByCollection is defined\n // - undefined: no filtering, show all folders\n // - [] empty: show all folders (no constraints)\n // - ['posts', ...]: show folders that allow ANY of these OR unrestricted\n // Note: Ideally we'd enforce ALL (superset) but hasMany enum fields in PG\n // do not support \"contains all\" queries easily\n if (hierarchyConfig?.collectionSpecific && filterByCollection !== undefined) {\n const typeFieldName = hierarchyConfig.collectionSpecific.fieldName\n\n if (filterByCollection.length > 0) {\n // Get all possible type field values from relatedCollections\n // This is used to detect \"unrestricted\" folders (empty allowedTypes array)\n const allPossibleTypes = Object.keys(hierarchyConfig.relatedCollections || {})\n\n where = {\n and: [\n parentWhere,\n {\n or: [\n // items that allow ANY of the selected collections\n { [typeFieldName]: { in: filterByCollection } },\n // OR items that are unrestricted (no type field exists)\n { [typeFieldName]: { exists: false } },\n // OR items with empty allowedTypes array (unrestricted)\n // Using not_in with all possible values matches empty arrays in both MongoDB and Postgres\n ...(allPossibleTypes.length > 0\n ? [{ [typeFieldName]: { not_in: allPossibleTypes } }]\n : []),\n ],\n },\n ],\n }\n } else {\n // Empty array: show all items of this parent\n where = parentWhere\n }\n }\n\n // Combine with baseFilter if provided\n const whereWithBaseFilter = combineWhereConstraints([where, baseFilter])\n\n const queryString = qs.stringify(\n { limit: treeLimit, page, sort: useAsTitle, where: whereWithBaseFilter },\n { addQueryPrefix: true },\n )\n\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${hierarchyCollectionSlug}${queryString}`,\n serverURL,\n })\n\n const response = await fetch(url, {\n credentials: 'include',\n })\n\n if (!response.ok) {\n throw new Error('Failed to fetch items')\n }\n\n const data = await response.json()\n\n const typeFieldName = hierarchyConfig?.collectionSpecific\n ? hierarchyConfig.collectionSpecific.fieldName\n : undefined\n\n const allItems: ColumnItemData[] = (data.docs || []).map(\n (doc: { id: number | string } & Record<string, unknown>) => ({\n id: doc.id,\n allowedCollections: typeFieldName\n ? (doc[typeFieldName] as string[] | undefined)\n : undefined,\n hasChildren: true, // Always allow expansion - empty children handled gracefully\n title: String(doc[useAsTitle] || doc.id),\n }),\n )\n\n // Client-side filter: only show items that are a superset of required collections\n // Server query uses ANY (due to PG limitations), but we want ALL (superset)\n const items =\n filterByCollection && filterByCollection.length > 0\n ? allItems.filter((item) => isSuperset(item.allowedCollections, filterByCollection))\n : allItems\n\n return {\n hasNextPage: data.hasNextPage || false,\n items,\n totalDocs: data.totalDocs || 0,\n }\n },\n [\n api,\n baseFilter,\n filterByCollection,\n hierarchyConfig,\n parentFieldName,\n serverURL,\n hierarchyCollectionSlug,\n treeLimit,\n useAsTitle,\n ],\n )\n\n const refreshColumn = useCallback(\n async (parentId: null | number | string) => {\n const columnIndex = columns.findIndex((col) => col.parentId === parentId)\n if (columnIndex === -1) {\n return\n }\n\n setColumns((prev) => {\n const updated = [...prev]\n updated[columnIndex] = { ...updated[columnIndex], isLoading: true }\n return updated\n })\n\n try {\n const { hasNextPage, items, totalDocs } = await fetchItems({ page: 1, parentId })\n\n setColumns((prev) => {\n const updated = [...prev]\n if (updated[columnIndex]) {\n updated[columnIndex] = {\n ...updated[columnIndex],\n hasNextPage,\n isLoading: false,\n items,\n page: 1,\n totalDocs,\n }\n }\n return updated\n })\n } catch {\n setColumns((prev) => {\n const updated = [...prev]\n if (updated[columnIndex]) {\n updated[columnIndex] = { ...updated[columnIndex], isLoading: false }\n }\n return updated\n })\n }\n },\n [columns, fetchItems],\n )\n\n const loadColumnsForPath = useCallback(\n async (path?: (number | string)[]) => {\n // Build list of parentIds to fetch: [null, ...path]\n const parentIds: (null | number | string)[] = [null]\n if (path?.length) {\n parentIds.push(...path)\n }\n\n // Set initial loading state for all columns\n setColumns(\n parentIds.map((parentId) => ({\n hasNextPage: false,\n isLoading: true,\n items: [],\n page: 1,\n parentId,\n totalDocs: 0,\n })),\n )\n\n // Set expanded path to match (excluding null/root). Always reset - a `revealPath` back to the\n // root would otherwise leave the previous path's items marked as expanded.\n setExpandedPath(path ?? [])\n\n // Fetch all columns in parallel\n const results = await Promise.all(\n parentIds.map(async (parentId, index) => {\n try {\n const { hasNextPage, items, totalDocs } = await fetchItems({ page: 1, parentId })\n let parentTitle: string | undefined\n if (index > 0 && parentId !== null) {\n // Will be filled in after all fetches complete\n }\n return {\n hasNextPage,\n isLoading: false,\n items,\n page: 1,\n parentId,\n parentTitle,\n totalDocs,\n }\n } catch {\n return {\n hasNextPage: false,\n isLoading: false,\n items: [],\n page: 1,\n parentId,\n parentTitle: undefined,\n totalDocs: 0,\n }\n }\n }),\n )\n\n // Fill in parent titles from previous columns\n const columnsWithTitles = results.map((col, index) => {\n if (index === 0 || col.parentId === null) {\n return col\n }\n const prevColumn = results[index - 1]\n const parentItem = prevColumn?.items.find((item) => item.id === col.parentId)\n return {\n ...col,\n parentTitle: parentItem?.title || String(col.parentId),\n }\n })\n\n setColumns(columnsWithTitles)\n },\n [fetchItems],\n )\n\n const loadColumns = useEffectEvent(async (path?: (number | string)[]) => {\n await loadColumnsForPath(path)\n })\n\n const revealPath = useCallback(\n async (path: PathSegment[]) => {\n const target = path[path.length - 1]\n\n if (!target) {\n return\n }\n\n await loadColumnsForPath(path.slice(0, -1).map((segment) => segment.id))\n setRevealed((prev) => ({ id: target.id, token: (prev?.token ?? 0) + 1 }))\n },\n [loadColumnsForPath],\n )\n\n useImperativeHandle(ref, () => ({ refreshColumn, revealPath }), [refreshColumn, revealPath])\n\n // Load columns on mount - wait for path loading to complete\n useEffect(() => {\n if (isLoadingPath || hasLoadedRef.current) {\n return\n }\n hasLoadedRef.current = true\n void loadColumns(initialExpandedPath)\n }, [initialExpandedPath, isLoadingPath])\n\n // Auto-scroll to the last column when columns change\n useEffect(() => {\n if (lastColumnRef.current && columns.length > 1) {\n lastColumnRef.current.scrollIntoView({ behavior: 'instant', inline: 'start' })\n }\n }, [columns.length])\n\n const handleExpand = useCallback(\n async ({ columnIndex, itemId }: { columnIndex: number; itemId: number | string }) => {\n const column = columns[columnIndex]\n if (!column) {\n return\n }\n\n const item = column.items.find((i) => i.id === itemId)\n if (!item) {\n return\n }\n\n // Update expanded path - keep path up to this column, add new item\n const newExpandedPath = [...expandedPath.slice(0, columnIndex), itemId]\n setExpandedPath(newExpandedPath)\n\n // Re-opening a folder that is already expanded here (e.g. clicking the grandparent while\n // sitting in grandparent/parent/child) makes it the deepest open one again. Its child column\n // is already loaded, so drop everything past it rather than refetching.\n if (columns[columnIndex + 1]?.parentId === itemId) {\n setColumns(columns.slice(0, columnIndex + 2))\n return\n }\n\n // Remove columns to the right and add new loading column\n const newColumns = columns.slice(0, columnIndex + 1)\n newColumns.push({\n hasNextPage: false,\n isLoading: true,\n items: [],\n page: 1,\n parentId: itemId,\n parentTitle: item.title,\n totalDocs: 0,\n })\n\n setColumns(newColumns)\n\n // Fetch children\n try {\n const { hasNextPage, items, totalDocs } = await fetchItems({ page: 1, parentId: itemId })\n\n setColumns((prev) => {\n const updated = [...prev]\n const targetIndex = columnIndex + 1\n\n if (updated[targetIndex]?.parentId === itemId) {\n updated[targetIndex] = {\n hasNextPage,\n isLoading: false,\n items,\n page: 1,\n parentId: itemId,\n parentTitle: item.title,\n totalDocs,\n }\n }\n\n return updated\n })\n } catch {\n setColumns((prev) => {\n const updated = [...prev]\n const targetIndex = columnIndex + 1\n\n if (updated[targetIndex]?.parentId === itemId) {\n updated[targetIndex] = {\n hasNextPage: false,\n isLoading: false,\n items: [],\n page: 1,\n parentId: itemId,\n parentTitle: item.title,\n totalDocs: 0,\n }\n }\n\n return updated\n })\n }\n },\n [columns, expandedPath, fetchItems],\n )\n\n const handleLoadMore = useCallback(\n async ({ columnIndex }: { columnIndex: number }) => {\n const column = columns[columnIndex]\n if (!column || column.isLoading || !column.hasNextPage) {\n return\n }\n\n const nextPage = column.page + 1\n\n // Set loading state\n setColumns((prev) => {\n const updated = [...prev]\n updated[columnIndex] = { ...updated[columnIndex], isLoading: true }\n return updated\n })\n\n try {\n const { hasNextPage, items: newItems } = await fetchItems({\n page: nextPage,\n parentId: column.parentId,\n })\n\n setColumns((prev) => {\n const updated = [...prev]\n\n if (updated[columnIndex]) {\n updated[columnIndex] = {\n ...updated[columnIndex],\n hasNextPage,\n isLoading: false,\n items: [...updated[columnIndex].items, ...newItems],\n page: nextPage,\n }\n }\n\n return updated\n })\n } catch {\n setColumns((prev) => {\n const updated = [...prev]\n\n if (updated[columnIndex]) {\n updated[columnIndex] = { ...updated[columnIndex], isLoading: false }\n }\n\n return updated\n })\n }\n },\n [columns, fetchItems],\n )\n\n // Build path for each column based on parent info\n const getPathToColumn = (columnIndex: number) => {\n const path: Array<{ id: number | string; title: string }> = []\n\n for (let i = 1; i <= columnIndex; i++) {\n const col = columns[i]\n if (col?.parentId !== null && col?.parentId !== undefined) {\n path.push({\n id: col.parentId,\n title: col.parentTitle || String(col.parentId),\n })\n }\n }\n\n return path\n }\n\n return (\n <div className={baseClass} ref={containerRef}>\n {columns.map((column, index) => {\n const isLastColumn = index === columns.length - 1 && !isLoadingPath\n const expandedId = expandedPath[index] ?? null\n const pathToColumn = getPathToColumn(index)\n\n return (\n <div\n className={`${baseClass}__column-wrapper`}\n key={`${column.parentId ?? 'root'}-${index}`}\n ref={isLastColumn ? lastColumnRef : undefined}\n >\n <Column\n canCreate={canCreate && Boolean(onCreateNew)}\n collectionLabel={collectionLabel}\n collectionLabelPlural={collectionLabelPlural}\n disabled={isLoadingPath}\n disabledIds={disabledIds}\n expandedId={expandedId}\n filterByCollection={filterByCollection}\n hasMany={hasMany}\n hasNextPage={column.hasNextPage}\n isLoading={column.isLoading}\n items={column.items}\n onCreateNew={onCreateNew || (() => {})}\n onExpand={({ id }) => handleExpand({ columnIndex: index, itemId: id })}\n onLoadMore={() => handleLoadMore({ columnIndex: index })}\n onSelect={onSelect}\n parentId={column.parentId}\n parentTitle={column.parentTitle}\n pathToColumn={pathToColumn}\n revealedId={revealed?.id}\n revealToken={revealed?.token}\n selectedDescendantCounts={selectedDescendantCounts}\n selectedIds={selectedIds}\n totalDocs={column.totalDocs}\n />\n </div>\n )\n })}\n {isLoadingPath && (\n <div className={`${baseClass}__column-wrapper ${baseClass}__column-wrapper--loading`}>\n <Spinner />\n </div>\n )}\n </div>\n )\n}\n\nexport type {\n ColumnItemData,\n HierarchyColumnBrowserProps,\n HierarchyColumnBrowserRef,\n PathSegment,\n} from './types.js'\n"],"mappings":"AAAA;;;AACA,SAASA,cAAc,QAAQ;AAC/B,SACEC,uBAAuB,EACvBC,4BAA4B,EAC5BC,cAAc,QACT;AACP,YAAYC,EAAA,MAAQ;AACpB,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAUrF,SAASC,cAAc,QAAQ;AAC/B,SAASC,OAAO,QAAQ;AACxB,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,SAASC,UAAU,QAAQ;AAC3B,SAASC,OAAO,QAAQ;AACxB,SAASC,MAAM,QAAQ;AACvB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,sBAAA,GAAyB,SAASA,uBAAuB;EACpEC,UAAU;EACVC,WAAW;EACXC,kBAAkB;EAClBC,OAAO;EACPC,uBAAuB;EACvBC,mBAAmB;EACnBC,aAAa;EACbC,WAAW;EACXC,QAAQ;EACRC,eAAe;EACfC,GAAG;EACHC,wBAAwB;EACxBC,WAAW;EACXC,UAAA,GAAa;AAAI,CACyE;EAC1F,MAAM;IAAEC;EAAI,CAAE,GAAGpB,cAAA;EACjB,MAAM;IAAEqB;EAAW,CAAE,GAAGvB,OAAA;EACxB,MAAM;IACJwB,MAAA,EAAQ;MACNC,MAAA,EAAQ;QAAEC;MAAG,CAAE;MACfC;IAAS,CACV;IACDC;EAAe,CAChB,GAAG3B,SAAA;EAEJ,MAAM4B,gBAAA,GAAmBD,eAAA,CAAgB;IAAEE,cAAA,EAAgBlB;EAAwB;EACnF,MAAMmB,eAAA,GACJF,gBAAA,EAAkBG,SAAA,IAAa,OAAOH,gBAAA,CAAiBG,SAAS,KAAK,WACjEH,gBAAA,CAAiBG,SAAS,GAC1BC,SAAA;EACN,MAAMC,SAAA,GAAYH,eAAA,EAAiBI,KAAA,EAAOD,SAAA,IAAa5C,4BAAA;EAEvD,MAAM8C,eAAA,GAAkBP,gBAAA,GACpBzC,cAAA,CAAeyC,gBAAA,CAAiBQ,MAAM,EAAEC,QAAA,IAAY1B,uBAAA,EAAyBU,IAAA,IAC7EV,uBAAA;EACJ,MAAM2B,qBAAA,GAAwBV,gBAAA,GAC1BzC,cAAA,CAAeyC,gBAAA,CAAiBQ,MAAM,EAAEG,MAAA,IAAU5B,uBAAA,EAAyBU,IAAA,IAC3EV,uBAAA;EACJ,MAAM6B,SAAA,GAAYC,OAAA,CAAQnB,WAAA,EAAaoB,WAAA,GAAc/B,uBAAA,CAAwB,EAAEgC,MAAA;EAE/E,MAAM,CAACC,OAAA,EAASC,UAAA,CAAW,GAAGhD,QAAA,CAAwB,EAAE;EACxD,MAAM,CAACiD,YAAA,EAAcC,eAAA,CAAgB,GAAGlD,QAAA,CAA8B,EAAE;EACxE,MAAM,CAACmD,QAAA,EAAUC,WAAA,CAAY,GAAGpD,QAAA,CAAwD;EACxF,MAAMqD,YAAA,GAAetD,MAAA,CAAuB;EAC5C,MAAMuD,aAAA,GAAgBvD,MAAA,CAAuB;EAC7C,MAAMwD,YAAA,GAAexD,MAAA,CAAO;EAE5B,MAAMyD,UAAA,GAAa5D,WAAA,CACjB,OAAO;IACL6D,IAAI;IACJC;EAAQ,CAIT;IAKC,MAAMC,WAAA,GACJD,QAAA,KAAa,OACT;MAAE,CAACvC,eAAA,GAAkB;QAAEyC,MAAA,EAAQ;MAAM;IAAE,IACvC;MAAE,CAACzC,eAAA,GAAkB;QAAE0C,MAAA,EAAQH;MAAS;IAAE;IAEhD;IACA,IAAII,KAAA,GAAiCH,WAAA;IAErC;IACA;IACA;IACA;IACA;IACA;IACA,IAAI1B,eAAA,EAAiB8B,kBAAA,IAAsBnD,kBAAA,KAAuBuB,SAAA,EAAW;MAC3E,MAAM6B,aAAA,GAAgB/B,eAAA,CAAgB8B,kBAAkB,CAACE,SAAS;MAElE,IAAIrD,kBAAA,CAAmBsD,MAAM,GAAG,GAAG;QACjC;QACA;QACA,MAAMC,gBAAA,GAAmBC,MAAA,CAAOC,IAAI,CAACpC,eAAA,CAAgBqC,kBAAkB,IAAI,CAAC;QAE5ER,KAAA,GAAQ;UACNS,GAAA,EAAK,CACHZ,WAAA,EACA;YACEa,EAAA,EAAI;YACF;YACA;cAAE,CAACR,aAAA,GAAgB;gBAAES,EAAA,EAAI7D;cAAmB;YAAE;YAC9C;YACA;cAAE,CAACoD,aAAA,GAAgB;gBAAEJ,MAAA,EAAQ;cAAM;YAAE;YACrC;YACA;gBACIO,gBAAA,CAAiBD,MAAM,GAAG,IAC1B,CAAC;cAAE,CAACF,aAAA,GAAgB;gBAAEU,MAAA,EAAQP;cAAiB;YAAE,EAAE,GACnD,EAAE;UAEV;QAEJ;MACF,OAAO;QACL;QACAL,KAAA,GAAQH,WAAA;MACV;IACF;IAEA;IACA,MAAMgB,mBAAA,GAAsBpF,uBAAA,CAAwB,CAACuE,KAAA,EAAOpD,UAAA,CAAW;IAEvE,MAAMkE,WAAA,GAAclF,EAAA,CAAGmF,SAAS,CAC9B;MAAEC,KAAA,EAAO1C,SAAA;MAAWqB,IAAA;MAAMsB,IAAA,EAAMxD,UAAA;MAAYuC,KAAA,EAAOa;IAAoB,GACvE;MAAEK,cAAA,EAAgB;IAAK;IAGzB,MAAMC,GAAA,GAAMxF,cAAA,CAAe;MACzByF,QAAA,EAAUtD,GAAA;MACVuD,IAAA,EAAM,IAAIrE,uBAAA,GAA0B8D,WAAA,EAAa;MACjD/C;IACF;IAEA,MAAMuD,QAAA,GAAW,MAAMC,KAAA,CAAMJ,GAAA,EAAK;MAChCK,WAAA,EAAa;IACf;IAEA,IAAI,CAACF,QAAA,CAASG,EAAE,EAAE;MAChB,MAAM,IAAIC,KAAA,CAAM;IAClB;IAEA,MAAMC,IAAA,GAAO,MAAML,QAAA,CAASM,IAAI;IAEhC,MAAM1B,eAAA,GAAgB/B,eAAA,EAAiB8B,kBAAA,GACnC9B,eAAA,CAAgB8B,kBAAkB,CAACE,SAAS,GAC5C9B,SAAA;IAEJ,MAAMwD,QAAA,GAA6B,CAACF,IAAA,CAAKG,IAAI,IAAI,EAAE,EAAEC,GAAG,CACrDC,GAAA,KAA4D;MAC3DC,EAAA,EAAID,GAAA,CAAIC,EAAE;MACVC,kBAAA,EAAoBhC,eAAA,GACf8B,GAAG,CAAC9B,eAAA,CAAc,GACnB7B,SAAA;MACJ8D,WAAA,EAAa;MACbC,KAAA,EAAOC,MAAA,CAAOL,GAAG,CAACvE,UAAA,CAAW,IAAIuE,GAAA,CAAIC,EAAE;IACzC;IAGF;IACA;IACA,MAAMK,KAAA,GACJxF,kBAAA,IAAsBA,kBAAA,CAAmBsD,MAAM,GAAG,IAC9CyB,QAAA,CAASU,MAAM,CAAEC,IAAA,IAASjG,UAAA,CAAWiG,IAAA,CAAKN,kBAAkB,EAAEpF,kBAAA,KAC9D+E,QAAA;IAEN,OAAO;MACLY,WAAA,EAAad,IAAA,CAAKc,WAAW,IAAI;MACjCH,KAAA;MACAI,SAAA,EAAWf,IAAA,CAAKe,SAAS,IAAI;IAC/B;EACF,GACA,CACE5E,GAAA,EACAlB,UAAA,EACAE,kBAAA,EACAqB,eAAA,EACAd,eAAA,EACAU,SAAA,EACAf,uBAAA,EACAsB,SAAA,EACAb,UAAA,CACD;EAGH,MAAMkF,aAAA,GAAgB7G,WAAA,CACpB,MAAO8D,UAAA;IACL,MAAMgD,WAAA,GAAc3D,OAAA,CAAQ4D,SAAS,CAAEC,GAAA,IAAQA,GAAA,CAAIlD,QAAQ,KAAKA,UAAA;IAChE,IAAIgD,WAAA,KAAgB,CAAC,GAAG;MACtB;IACF;IAEA1D,UAAA,CAAY6D,IAAA;MACV,MAAMC,OAAA,GAAU,C,GAAID,IAAA,CAAK;MACzBC,OAAO,CAACJ,WAAA,CAAY,GAAG;QAAE,GAAGI,OAAO,CAACJ,WAAA,CAAY;QAAEK,SAAA,EAAW;MAAK;MAClE,OAAOD,OAAA;IACT;IAEA,IAAI;MACF,MAAM;QAAEP,WAAW;QAAEH,KAAK,EAALA,OAAK;QAAEI;MAAS,CAAE,GAAG,MAAMhD,UAAA,CAAW;QAAEC,IAAA,EAAM;QAAGC,QAAA,EAAAA;MAAS;MAE/EV,UAAA,CAAY6D,MAAA;QACV,MAAMC,SAAA,GAAU,C,GAAID,MAAA,CAAK;QACzB,IAAIC,SAAO,CAACJ,WAAA,CAAY,EAAE;UACxBI,SAAO,CAACJ,WAAA,CAAY,GAAG;YACrB,GAAGI,SAAO,CAACJ,WAAA,CAAY;YACvBH,WAAA;YACAQ,SAAA,EAAW;YACXX,KAAA,EAAAA,OAAA;YACA3C,IAAA,EAAM;YACN+C;UACF;QACF;QACA,OAAOM,SAAA;MACT;IACF,EAAE,MAAM;MACN9D,UAAA,CAAY6D,MAAA;QACV,MAAMC,SAAA,GAAU,C,GAAID,MAAA,CAAK;QACzB,IAAIC,SAAO,CAACJ,WAAA,CAAY,EAAE;UACxBI,SAAO,CAACJ,WAAA,CAAY,GAAG;YAAE,GAAGI,SAAO,CAACJ,WAAA,CAAY;YAAEK,SAAA,EAAW;UAAM;QACrE;QACA,OAAOD,SAAA;MACT;IACF;EACF,GACA,CAAC/D,OAAA,EAASS,UAAA,CAAW;EAGvB,MAAMwD,kBAAA,GAAqBpH,WAAA,CACzB,MAAOuF,IAAA;IACL;IACA,MAAM8B,SAAA,GAAwC,CAAC,KAAK;IACpD,IAAI9B,IAAA,EAAMjB,MAAA,EAAQ;MAChB+C,SAAA,CAAUC,IAAI,IAAI/B,IAAA;IACpB;IAEA;IACAnC,UAAA,CACEiE,SAAA,CAAUpB,GAAG,CAAEnC,UAAA,KAAc;MAC3B6C,WAAA,EAAa;MACbQ,SAAA,EAAW;MACXX,KAAA,EAAO,EAAE;MACT3C,IAAA,EAAM;MACNC,QAAA,EAAAA,UAAA;MACA8C,SAAA,EAAW;IACb;IAGF;IACA;IACAtD,eAAA,CAAgBiC,IAAA,IAAQ,EAAE;IAE1B;IACA,MAAMgC,OAAA,GAAU,MAAMC,OAAA,CAAQC,GAAG,CAC/BJ,SAAA,CAAUpB,GAAG,CAAC,OAAOnC,UAAA,EAAU4D,KAAA;MAC7B,IAAI;QACF,MAAM;UAAEf,WAAW,EAAXA,aAAW;UAAEH,KAAK,EAALA,OAAK;UAAEI,SAAS,EAATA;QAAS,CAAE,GAAG,MAAMhD,UAAA,CAAW;UAAEC,IAAA,EAAM;UAAGC,QAAA,EAAAA;QAAS;QAC/E,IAAI6D,WAAA;QACJ,IAAID,KAAA,GAAQ,KAAK5D,UAAA,KAAa,MAAM;UAClC;QAAA;QAEF,OAAO;UACL6C,WAAA,EAAAA,aAAA;UACAQ,SAAA,EAAW;UACXX,KAAA,EAAAA,OAAA;UACA3C,IAAA,EAAM;UACNC,QAAA,EAAAA,UAAA;UACA6D,WAAA;UACAf,SAAA,EAAAA;QACF;MACF,EAAE,MAAM;QACN,OAAO;UACLD,WAAA,EAAa;UACbQ,SAAA,EAAW;UACXX,KAAA,EAAO,EAAE;UACT3C,IAAA,EAAM;UACNC,QAAA,EAAAA,UAAA;UACA6D,WAAA,EAAapF,SAAA;UACbqE,SAAA,EAAW;QACb;MACF;IACF;IAGF;IACA,MAAMgB,iBAAA,GAAoBL,OAAA,CAAQtB,GAAG,CAAC,CAACe,KAAA,EAAKU,OAAA;MAC1C,IAAIA,OAAA,KAAU,KAAKV,KAAA,CAAIlD,QAAQ,KAAK,MAAM;QACxC,OAAOkD,KAAA;MACT;MACA,MAAMa,UAAA,GAAaN,OAAO,CAACG,OAAA,GAAQ,EAAE;MACrC,MAAMI,UAAA,GAAaD,UAAA,EAAYrB,KAAA,CAAMuB,IAAA,CAAMrB,MAAA,IAASA,MAAA,CAAKP,EAAE,KAAKa,KAAA,CAAIlD,QAAQ;MAC5E,OAAO;QACL,GAAGkD,KAAG;QACNW,WAAA,EAAaG,UAAA,EAAYxB,KAAA,IAASC,MAAA,CAAOS,KAAA,CAAIlD,QAAQ;MACvD;IACF;IAEAV,UAAA,CAAWwE,iBAAA;EACb,GACA,CAAChE,UAAA,CAAW;EAGd,MAAMoE,WAAA,GAAc3H,cAAA,CAAe,MAAOkF,MAAA;IACxC,MAAM6B,kBAAA,CAAmB7B,MAAA;EAC3B;EAEA,MAAM0C,UAAA,GAAajI,WAAA,CACjB,MAAOuF,MAAA;IACL,MAAM2C,MAAA,GAAS3C,MAAI,CAACA,MAAA,CAAKjB,MAAM,GAAG,EAAE;IAEpC,IAAI,CAAC4D,MAAA,EAAQ;MACX;IACF;IAEA,MAAMd,kBAAA,CAAmB7B,MAAA,CAAK4C,KAAK,CAAC,GAAG,CAAC,GAAGlC,GAAG,CAAEmC,OAAA,IAAYA,OAAA,CAAQjC,EAAE;IACtE3C,WAAA,CAAayD,MAAA,KAAU;MAAEd,EAAA,EAAI+B,MAAA,CAAO/B,EAAE;MAAEkC,KAAA,EAAO,CAACpB,MAAA,EAAMoB,KAAA,IAAS,KAAK;IAAE;EACxE,GACA,CAACjB,kBAAA,CAAmB;EAGtBlH,mBAAA,CAAoBsB,GAAA,EAAK,OAAO;IAAEqF,aAAA;IAAeoB;EAAW,IAAI,CAACpB,aAAA,EAAeoB,UAAA,CAAW;EAE3F;EACAhI,SAAA,CAAU;IACR,IAAImB,aAAA,IAAiBuC,YAAA,CAAa2E,OAAO,EAAE;MACzC;IACF;IACA3E,YAAA,CAAa2E,OAAO,GAAG;IACvB,KAAKN,WAAA,CAAY7G,mBAAA;EACnB,GAAG,CAACA,mBAAA,EAAqBC,aAAA,CAAc;EAEvC;EACAnB,SAAA,CAAU;IACR,IAAIyD,aAAA,CAAc4E,OAAO,IAAInF,OAAA,CAAQmB,MAAM,GAAG,GAAG;MAC/CZ,aAAA,CAAc4E,OAAO,CAACC,cAAc,CAAC;QAAEC,QAAA,EAAU;QAAWC,MAAA,EAAQ;MAAQ;IAC9E;EACF,GAAG,CAACtF,OAAA,CAAQmB,MAAM,CAAC;EAEnB,MAAMoE,YAAA,GAAe1I,WAAA,CACnB,OAAO;IAAE8G,WAAW,EAAXA,aAAW;IAAE6B;EAAM,CAAoD;IAC9E,MAAMC,MAAA,GAASzF,OAAO,CAAC2D,aAAA,CAAY;IACnC,IAAI,CAAC8B,MAAA,EAAQ;MACX;IACF;IAEA,MAAMlC,MAAA,GAAOkC,MAAA,CAAOpC,KAAK,CAACuB,IAAI,CAAEc,CAAA,IAAMA,CAAA,CAAE1C,EAAE,KAAKwC,MAAA;IAC/C,IAAI,CAACjC,MAAA,EAAM;MACT;IACF;IAEA;IACA,MAAMoC,eAAA,GAAkB,C,GAAIzF,YAAA,CAAa8E,KAAK,CAAC,GAAGrB,aAAA,GAAc6B,MAAA,CAAO;IACvErF,eAAA,CAAgBwF,eAAA;IAEhB;IACA;IACA;IACA,IAAI3F,OAAO,CAAC2D,aAAA,GAAc,EAAE,EAAEhD,QAAA,KAAa6E,MAAA,EAAQ;MACjDvF,UAAA,CAAWD,OAAA,CAAQgF,KAAK,CAAC,GAAGrB,aAAA,GAAc;MAC1C;IACF;IAEA;IACA,MAAMiC,UAAA,GAAa5F,OAAA,CAAQgF,KAAK,CAAC,GAAGrB,aAAA,GAAc;IAClDiC,UAAA,CAAWzB,IAAI,CAAC;MACdX,WAAA,EAAa;MACbQ,SAAA,EAAW;MACXX,KAAA,EAAO,EAAE;MACT3C,IAAA,EAAM;MACNC,QAAA,EAAU6E,MAAA;MACVhB,WAAA,EAAajB,MAAA,CAAKJ,KAAK;MACvBM,SAAA,EAAW;IACb;IAEAxD,UAAA,CAAW2F,UAAA;IAEX;IACA,IAAI;MACF,MAAM;QAAEpC,WAAW,EAAXA,aAAW;QAAEH,KAAK,EAALA,OAAK;QAAEI,SAAS,EAATA;MAAS,CAAE,GAAG,MAAMhD,UAAA,CAAW;QAAEC,IAAA,EAAM;QAAGC,QAAA,EAAU6E;MAAO;MAEvFvF,UAAA,CAAY6D,MAAA;QACV,MAAMC,SAAA,GAAU,C,GAAID,MAAA,CAAK;QACzB,MAAM+B,aAAA,GAAclC,aAAA,GAAc;QAElC,IAAII,SAAO,CAAC8B,aAAA,CAAY,EAAElF,QAAA,KAAa6E,MAAA,EAAQ;UAC7CzB,SAAO,CAAC8B,aAAA,CAAY,GAAG;YACrBrC,WAAA,EAAAA,aAAA;YACAQ,SAAA,EAAW;YACXX,KAAA,EAAAA,OAAA;YACA3C,IAAA,EAAM;YACNC,QAAA,EAAU6E,MAAA;YACVhB,WAAA,EAAajB,MAAA,CAAKJ,KAAK;YACvBM,SAAA,EAAAA;UACF;QACF;QAEA,OAAOM,SAAA;MACT;IACF,EAAE,MAAM;MACN9D,UAAA,CAAY6D,MAAA;QACV,MAAMC,SAAA,GAAU,C,GAAID,MAAA,CAAK;QACzB,MAAM+B,WAAA,GAAclC,aAAA,GAAc;QAElC,IAAII,SAAO,CAAC8B,WAAA,CAAY,EAAElF,QAAA,KAAa6E,MAAA,EAAQ;UAC7CzB,SAAO,CAAC8B,WAAA,CAAY,GAAG;YACrBrC,WAAA,EAAa;YACbQ,SAAA,EAAW;YACXX,KAAA,EAAO,EAAE;YACT3C,IAAA,EAAM;YACNC,QAAA,EAAU6E,MAAA;YACVhB,WAAA,EAAajB,MAAA,CAAKJ,KAAK;YACvBM,SAAA,EAAW;UACb;QACF;QAEA,OAAOM,SAAA;MACT;IACF;EACF,GACA,CAAC/D,OAAA,EAASE,YAAA,EAAcO,UAAA,CAAW;EAGrC,MAAMqF,cAAA,GAAiBjJ,WAAA,CACrB,OAAO;IAAE8G,WAAW,EAAXA;EAAW,CAA2B;IAC7C,MAAM8B,QAAA,GAASzF,OAAO,CAAC2D,aAAA,CAAY;IACnC,IAAI,CAAC8B,QAAA,IAAUA,QAAA,CAAOzB,SAAS,IAAI,CAACyB,QAAA,CAAOjC,WAAW,EAAE;MACtD;IACF;IAEA,MAAMuC,QAAA,GAAWN,QAAA,CAAO/E,IAAI,GAAG;IAE/B;IACAT,UAAA,CAAY6D,MAAA;MACV,MAAMC,SAAA,GAAU,C,GAAID,MAAA,CAAK;MACzBC,SAAO,CAACJ,aAAA,CAAY,GAAG;QAAE,GAAGI,SAAO,CAACJ,aAAA,CAAY;QAAEK,SAAA,EAAW;MAAK;MAClE,OAAOD,SAAA;IACT;IAEA,IAAI;MACF,MAAM;QAAEP,WAAW,EAAXA,aAAW;QAAEH,KAAA,EAAO2C;MAAQ,CAAE,GAAG,MAAMvF,UAAA,CAAW;QACxDC,IAAA,EAAMqF,QAAA;QACNpF,QAAA,EAAU8E,QAAA,CAAO9E;MACnB;MAEAV,UAAA,CAAY6D,MAAA;QACV,MAAMC,SAAA,GAAU,C,GAAID,MAAA,CAAK;QAEzB,IAAIC,SAAO,CAACJ,aAAA,CAAY,EAAE;UACxBI,SAAO,CAACJ,aAAA,CAAY,GAAG;YACrB,GAAGI,SAAO,CAACJ,aAAA,CAAY;YACvBH,WAAA,EAAAA,aAAA;YACAQ,SAAA,EAAW;YACXX,KAAA,EAAO,C,GAAIU,SAAO,CAACJ,aAAA,CAAY,CAACN,KAAK,E,GAAK2C,QAAA,CAAS;YACnDtF,IAAA,EAAMqF;UACR;QACF;QAEA,OAAOhC,SAAA;MACT;IACF,EAAE,MAAM;MACN9D,UAAA,CAAY6D,MAAA;QACV,MAAMC,SAAA,GAAU,C,GAAID,MAAA,CAAK;QAEzB,IAAIC,SAAO,CAACJ,aAAA,CAAY,EAAE;UACxBI,SAAO,CAACJ,aAAA,CAAY,GAAG;YAAE,GAAGI,SAAO,CAACJ,aAAA,CAAY;YAAEK,SAAA,EAAW;UAAM;QACrE;QAEA,OAAOD,SAAA;MACT;IACF;EACF,GACA,CAAC/D,OAAA,EAASS,UAAA,CAAW;EAGvB;EACA,MAAMwF,eAAA,GAAmBtC,aAAA;IACvB,MAAMvB,MAAA,GAAsD,EAAE;IAE9D,KAAK,IAAIsD,GAAA,GAAI,GAAGA,GAAA,IAAK/B,aAAA,EAAa+B,GAAA,IAAK;MACrC,MAAM7B,KAAA,GAAM7D,OAAO,CAAC0F,GAAA,CAAE;MACtB,IAAI7B,KAAA,EAAKlD,QAAA,KAAa,QAAQkD,KAAA,EAAKlD,QAAA,KAAavB,SAAA,EAAW;QACzDgD,MAAA,CAAK+B,IAAI,CAAC;UACRnB,EAAA,EAAIa,KAAA,CAAIlD,QAAQ;UAChBwC,KAAA,EAAOU,KAAA,CAAIW,WAAW,IAAIpB,MAAA,CAAOS,KAAA,CAAIlD,QAAQ;QAC/C;MACF;IACF;IAEA,OAAOyB,MAAA;EACT;EAEA,oBACE8D,KAAA,CAAC;IAAIC,SAAA,EAAW1I,SAAA;IAAWY,GAAA,EAAKiC,YAAA;eAC7BN,OAAA,CAAQ8C,GAAG,CAAC,CAAC2C,QAAA,EAAQlB,OAAA;MACpB,MAAM6B,YAAA,GAAe7B,OAAA,KAAUvE,OAAA,CAAQmB,MAAM,GAAG,KAAK,CAAClD,aAAA;MACtD,MAAMoI,UAAA,GAAanG,YAAY,CAACqE,OAAA,CAAM,IAAI;MAC1C,MAAM+B,YAAA,GAAeL,eAAA,CAAgB1B,OAAA;MAErC,oBACEgC,IAAA,CAAC;QACCJ,SAAA,EAAW,GAAG1I,SAAA,kBAA2B;QAEzCY,GAAA,EAAK+H,YAAA,GAAe7F,aAAA,GAAgBnB,SAAA;kBAEpC,aAAAmH,IAAA,CAAC/I,MAAA;UACCoC,SAAA,EAAWA,SAAA,IAAaC,OAAA,CAAQ3B,WAAA;UAChCqB,eAAA,EAAiBA,eAAA;UACjBG,qBAAA,EAAuBA,qBAAA;UACvB8G,QAAA,EAAUvI,aAAA;UACVL,WAAA,EAAaA,WAAA;UACbyI,UAAA,EAAYA,UAAA;UACZxI,kBAAA,EAAoBA,kBAAA;UACpBC,OAAA,EAASA,OAAA;UACT0F,WAAA,EAAaiC,QAAA,CAAOjC,WAAW;UAC/BQ,SAAA,EAAWyB,QAAA,CAAOzB,SAAS;UAC3BX,KAAA,EAAOoC,QAAA,CAAOpC,KAAK;UACnBnF,WAAA,EAAaA,WAAA,KAAgB,OAAO;UACpCuI,QAAA,EAAUA,CAAC;YAAEzD;UAAE,CAAE,KAAKuC,YAAA,CAAa;YAAE5B,WAAA,EAAaY,OAAA;YAAOiB,MAAA,EAAQxC;UAAG;UACpE0D,UAAA,EAAYA,CAAA,KAAMZ,cAAA,CAAe;YAAEnC,WAAA,EAAaY;UAAM;UACtDpG,QAAA,EAAUA,QAAA;UACVwC,QAAA,EAAU8E,QAAA,CAAO9E,QAAQ;UACzB6D,WAAA,EAAaiB,QAAA,CAAOjB,WAAW;UAC/B8B,YAAA,EAAcA,YAAA;UACdK,UAAA,EAAYvG,QAAA,EAAU4C,EAAA;UACtB4D,WAAA,EAAaxG,QAAA,EAAU8E,KAAA;UACvB5G,wBAAA,EAA0BA,wBAAA;UAC1BC,WAAA,EAAaA,WAAA;UACbkF,SAAA,EAAWgC,QAAA,CAAOhC;;SA1Bf,GAAGgC,QAAA,CAAO9E,QAAQ,IAAI,UAAU4D,OAAA,EAAO;IA8BlD,IACCtG,aAAA,iBACCsI,IAAA,CAAC;MAAIJ,SAAA,EAAW,GAAG1I,SAAA,oBAA6BA,SAAA,2BAAoC;gBAClF,aAAA8I,IAAA,CAAChJ,OAAA;;;AAKX","ignoreList":[]}
|
|
@@ -14,7 +14,8 @@ export type ColumnItemProps = {
|
|
|
14
14
|
disabled?: boolean;
|
|
15
15
|
/** Required collections that the folder must allow (for superset check) */
|
|
16
16
|
filterByCollection?: string[];
|
|
17
|
-
|
|
17
|
+
/** Multi-select shows a checkbox; single-select marks the selected row with a ring instead */
|
|
18
|
+
hasMany?: boolean;
|
|
18
19
|
isExpanded: boolean;
|
|
19
20
|
isSelected: boolean;
|
|
20
21
|
item: ColumnItemData;
|
|
@@ -24,19 +25,28 @@ export type ColumnItemProps = {
|
|
|
24
25
|
onSelect: (params: {
|
|
25
26
|
id: number | string;
|
|
26
27
|
}) => void;
|
|
28
|
+
/**
|
|
29
|
+
* Set when this item is the target of a `revealPath` call - it scrolls itself into view and
|
|
30
|
+
* takes focus. The value changes on every reveal so repeat reveals of the same item re-fire.
|
|
31
|
+
*/
|
|
32
|
+
revealToken?: number;
|
|
33
|
+
/** How many selected items live below this one, shown as a badge beside the chevron */
|
|
34
|
+
selectedDescendantCount: number;
|
|
27
35
|
};
|
|
28
36
|
export type ColumnProps = {
|
|
29
|
-
ancestorsWithSelections: Set<number | string>;
|
|
30
37
|
/** Whether user can create new documents */
|
|
31
38
|
canCreate: boolean;
|
|
32
39
|
/** Label for the collection (e.g., "Folder") */
|
|
33
40
|
collectionLabel: string;
|
|
41
|
+
/** Plural label for the collection (e.g., "Folders") */
|
|
42
|
+
collectionLabelPlural: string;
|
|
34
43
|
disabled?: boolean;
|
|
35
44
|
/** IDs that should be disabled (e.g., items being moved can't be selected as destination) */
|
|
36
45
|
disabledIds?: Set<number | string>;
|
|
37
46
|
expandedId: null | number | string;
|
|
38
47
|
/** Required collections for superset check (passed to ColumnItem) */
|
|
39
48
|
filterByCollection?: string[];
|
|
49
|
+
hasMany?: boolean;
|
|
40
50
|
hasNextPage: boolean;
|
|
41
51
|
isLoading: boolean;
|
|
42
52
|
items: ColumnItemData[];
|
|
@@ -55,6 +65,11 @@ export type ColumnProps = {
|
|
|
55
65
|
parentId: null | number | string;
|
|
56
66
|
parentTitle?: string;
|
|
57
67
|
pathToColumn: PathSegment[];
|
|
68
|
+
/** Item to scroll into view and focus, if it lives in this column */
|
|
69
|
+
revealedId?: null | number | string;
|
|
70
|
+
revealToken?: number;
|
|
71
|
+
/** Number of selected items nested under each ancestor, keyed by ancestor ID */
|
|
72
|
+
selectedDescendantCounts: Map<number | string, number>;
|
|
58
73
|
selectedIds: Set<number | string>;
|
|
59
74
|
totalDocs: number;
|
|
60
75
|
};
|
|
@@ -70,9 +85,13 @@ export type ColumnState = {
|
|
|
70
85
|
export type HierarchyColumnBrowserRef = {
|
|
71
86
|
/** Refetch a specific column by parentId */
|
|
72
87
|
refreshColumn: (parentId: null | number | string) => Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Expand the columns down to the last segment of `path`, then scroll it into view and focus it.
|
|
90
|
+
* Does not change the current selection.
|
|
91
|
+
*/
|
|
92
|
+
revealPath: (path: PathSegment[]) => Promise<void>;
|
|
73
93
|
};
|
|
74
94
|
export type HierarchyColumnBrowserProps = {
|
|
75
|
-
ancestorsWithSelections: Set<number | string>;
|
|
76
95
|
/** Base filter constraint (e.g., tenant filter) to apply to all queries */
|
|
77
96
|
baseFilter?: null | Where;
|
|
78
97
|
/** IDs that should be disabled (e.g., items being moved can't be selected as destination) */
|
|
@@ -87,6 +106,8 @@ export type HierarchyColumnBrowserProps = {
|
|
|
87
106
|
* Client-side enforcement can disable selection of folders that don't allow ALL required collections.
|
|
88
107
|
*/
|
|
89
108
|
filterByCollection?: string[];
|
|
109
|
+
/** Multi-select shows a checkbox per row; single-select rings the selected row instead */
|
|
110
|
+
hasMany?: boolean;
|
|
90
111
|
hierarchyCollectionSlug: string;
|
|
91
112
|
initialExpandedPath?: (number | string)[];
|
|
92
113
|
/** Whether the initial expanded path is still being loaded */
|
|
@@ -100,6 +121,8 @@ export type HierarchyColumnBrowserProps = {
|
|
|
100
121
|
path: PathSegment[];
|
|
101
122
|
}) => void;
|
|
102
123
|
parentFieldName: string;
|
|
124
|
+
/** Number of selected items nested under each ancestor, keyed by ancestor ID */
|
|
125
|
+
selectedDescendantCounts: Map<number | string, number>;
|
|
103
126
|
selectedIds: Set<number | string>;
|
|
104
127
|
useAsTitle?: string;
|
|
105
128
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/ColumnBrowser/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAGpC,MAAM,MAAM,cAAc,GAAG;IAC3B,+EAA+E;IAC/E,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,WAAW,EAAE,OAAO,CAAA;IACpB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2EAA2E;IAC3E,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/ColumnBrowser/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/elements/Hierarchy/ColumnBrowser/types.ts"],"sourcesContent":["import type { Where } from 'payload'\nimport type React from 'react'\n\nexport type ColumnItemData = {\n /** For folders with collectionSpecific config, the allowed collection slugs */\n allowedCollections?: string[]\n hasChildren: boolean\n id: number | string\n title: string\n}\n\nexport type PathSegment = {\n id: number | string\n title: string\n}\n\nexport type ColumnItemProps = {\n disabled?: boolean\n /** Required collections that the folder must allow (for superset check) */\n filterByCollection?: string[]\n
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/elements/Hierarchy/ColumnBrowser/types.ts"],"sourcesContent":["import type { Where } from 'payload'\nimport type React from 'react'\n\nexport type ColumnItemData = {\n /** For folders with collectionSpecific config, the allowed collection slugs */\n allowedCollections?: string[]\n hasChildren: boolean\n id: number | string\n title: string\n}\n\nexport type PathSegment = {\n id: number | string\n title: string\n}\n\nexport type ColumnItemProps = {\n disabled?: boolean\n /** Required collections that the folder must allow (for superset check) */\n filterByCollection?: string[]\n /** Multi-select shows a checkbox; single-select marks the selected row with a ring instead */\n hasMany?: boolean\n isExpanded: boolean\n isSelected: boolean\n item: ColumnItemData\n onExpand: (params: { id: number | string }) => void\n onSelect: (params: { id: number | string }) => void\n /**\n * Set when this item is the target of a `revealPath` call - it scrolls itself into view and\n * takes focus. The value changes on every reveal so repeat reveals of the same item re-fire.\n */\n revealToken?: number\n /** How many selected items live below this one, shown as a badge beside the chevron */\n selectedDescendantCount: number\n}\n\nexport type ColumnProps = {\n /** Whether user can create new documents */\n canCreate: boolean\n /** Label for the collection (e.g., \"Folder\") */\n collectionLabel: string\n /** Plural label for the collection (e.g., \"Folders\") */\n collectionLabelPlural: string\n disabled?: boolean\n /** IDs that should be disabled (e.g., items being moved can't be selected as destination) */\n disabledIds?: Set<number | string>\n expandedId: null | number | string\n /** Required collections for superset check (passed to ColumnItem) */\n filterByCollection?: string[]\n hasMany?: boolean\n hasNextPage: boolean\n isLoading: boolean\n items: ColumnItemData[]\n /** Called when user clicks \"New\" button - parent should open modal with parentId */\n onCreateNew: (params: { parentId: null | number | string }) => void\n onExpand: (params: { id: number | string }) => void\n onLoadMore: () => void\n onSelect: (params: { id: number | string; path: PathSegment[] }) => void\n parentId: null | number | string\n parentTitle?: string\n pathToColumn: PathSegment[]\n /** Item to scroll into view and focus, if it lives in this column */\n revealedId?: null | number | string\n revealToken?: number\n /** Number of selected items nested under each ancestor, keyed by ancestor ID */\n selectedDescendantCounts: Map<number | string, number>\n selectedIds: Set<number | string>\n totalDocs: number\n}\n\nexport type ColumnState = {\n hasNextPage: boolean\n isLoading: boolean\n items: ColumnItemData[]\n page: number\n parentId: null | number | string\n parentTitle?: string\n totalDocs: number\n}\n\nexport type HierarchyColumnBrowserRef = {\n /** Refetch a specific column by parentId */\n refreshColumn: (parentId: null | number | string) => Promise<void>\n /**\n * Expand the columns down to the last segment of `path`, then scroll it into view and focus it.\n * Does not change the current selection.\n */\n revealPath: (path: PathSegment[]) => Promise<void>\n}\n\nexport type HierarchyColumnBrowserProps = {\n /** Base filter constraint (e.g., tenant filter) to apply to all queries */\n baseFilter?: null | Where\n /** IDs that should be disabled (e.g., items being moved can't be selected as destination) */\n disabledIds?: Set<number | string>\n /**\n * Filters hierarchy items based on collection type restrictions:\n * - `undefined`: No filtering, show all folders\n * - `[]` (empty array): No filtering, show all folders (no constraints)\n * - `['posts', ...]`: Show folders accepting ANY of these collections OR unrestricted folders\n *\n * Note: Query uses ANY semantics due to PG hasMany enum limitations.\n * Client-side enforcement can disable selection of folders that don't allow ALL required collections.\n */\n filterByCollection?: string[]\n /** Multi-select shows a checkbox per row; single-select rings the selected row instead */\n hasMany?: boolean\n hierarchyCollectionSlug: string\n initialExpandedPath?: (number | string)[]\n /** Whether the initial expanded path is still being loaded */\n isLoadingPath?: boolean\n /** Called when user clicks \"New\" button to create a new item */\n onCreateNew?: (params: { parentId: null | number | string }) => void\n onSelect: (params: { id: number | string; path: PathSegment[] }) => void\n parentFieldName: string\n /** Number of selected items nested under each ancestor, keyed by ancestor ID */\n selectedDescendantCounts: Map<number | string, number>\n selectedIds: Set<number | string>\n useAsTitle?: string\n}\n"],"mappings":"AA0FA","ignoreList":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './index.css';
|
|
3
|
+
export type HierarchyCreateNewButtonProps = {
|
|
4
|
+
collectionSlug: string;
|
|
5
|
+
/** Document the new item is created under. `null` creates at the root level. */
|
|
6
|
+
parentId: null | number | string;
|
|
7
|
+
};
|
|
8
|
+
export declare const HierarchyCreateNewButton: React.FC<HierarchyCreateNewButtonProps>;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/CreateNewButton/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAgC,MAAM,OAAO,CAAA;AASpD,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,6BAA6B,GAAG;IAC1C,cAAc,EAAE,MAAM,CAAA;IACtB,gFAAgF;IAChF,QAAQ,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CAiD5E,CAAA"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { c as _c } from "react/compiler-runtime";
|
|
4
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
|
+
import React, { Fragment, useCallback } from 'react';
|
|
6
|
+
import { PlusIcon } from '../../../icons/Plus/index.js';
|
|
7
|
+
import { useAuth } from '../../../providers/Auth/index.js';
|
|
8
|
+
import { useConfig } from '../../../providers/Config/index.js';
|
|
9
|
+
import { useHierarchy } from '../../../providers/Hierarchy/index.js';
|
|
10
|
+
import { useTranslation } from '../../../providers/Translation/index.js';
|
|
11
|
+
import { Button } from '../../Button/index.js';
|
|
12
|
+
import { useDocumentDrawer } from '../../DocumentDrawer/index.js';
|
|
13
|
+
import './index.css';
|
|
14
|
+
const baseClass = 'hierarchy-create-new';
|
|
15
|
+
export const HierarchyCreateNewButton = t0 => {
|
|
16
|
+
const $ = _c(17);
|
|
17
|
+
const {
|
|
18
|
+
collectionSlug,
|
|
19
|
+
parentId
|
|
20
|
+
} = t0;
|
|
21
|
+
const {
|
|
22
|
+
t
|
|
23
|
+
} = useTranslation();
|
|
24
|
+
const {
|
|
25
|
+
permissions
|
|
26
|
+
} = useAuth();
|
|
27
|
+
const {
|
|
28
|
+
getEntityConfig
|
|
29
|
+
} = useConfig();
|
|
30
|
+
const {
|
|
31
|
+
refreshTree
|
|
32
|
+
} = useHierarchy();
|
|
33
|
+
let t1;
|
|
34
|
+
if ($[0] !== collectionSlug || $[1] !== getEntityConfig) {
|
|
35
|
+
t1 = getEntityConfig({
|
|
36
|
+
collectionSlug
|
|
37
|
+
});
|
|
38
|
+
$[0] = collectionSlug;
|
|
39
|
+
$[1] = getEntityConfig;
|
|
40
|
+
$[2] = t1;
|
|
41
|
+
} else {
|
|
42
|
+
t1 = $[2];
|
|
43
|
+
}
|
|
44
|
+
const collectionConfig = t1;
|
|
45
|
+
const parentFieldName = collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === "object" ? collectionConfig.hierarchy.parentFieldName : undefined;
|
|
46
|
+
const t2 = `${baseClass}-${collectionSlug}`;
|
|
47
|
+
let t3;
|
|
48
|
+
if ($[3] !== collectionSlug || $[4] !== t2) {
|
|
49
|
+
t3 = {
|
|
50
|
+
collectionSlug,
|
|
51
|
+
drawerSlug: t2
|
|
52
|
+
};
|
|
53
|
+
$[3] = collectionSlug;
|
|
54
|
+
$[4] = t2;
|
|
55
|
+
$[5] = t3;
|
|
56
|
+
} else {
|
|
57
|
+
t3 = $[5];
|
|
58
|
+
}
|
|
59
|
+
const [DocumentDrawer,, t4] = useDocumentDrawer(t3);
|
|
60
|
+
const {
|
|
61
|
+
closeDrawer,
|
|
62
|
+
openDrawer
|
|
63
|
+
} = t4;
|
|
64
|
+
let t5;
|
|
65
|
+
if ($[6] !== closeDrawer || $[7] !== collectionSlug || $[8] !== refreshTree) {
|
|
66
|
+
t5 = () => {
|
|
67
|
+
refreshTree(collectionSlug);
|
|
68
|
+
closeDrawer();
|
|
69
|
+
};
|
|
70
|
+
$[6] = closeDrawer;
|
|
71
|
+
$[7] = collectionSlug;
|
|
72
|
+
$[8] = refreshTree;
|
|
73
|
+
$[9] = t5;
|
|
74
|
+
} else {
|
|
75
|
+
t5 = $[9];
|
|
76
|
+
}
|
|
77
|
+
const handleSave = t5;
|
|
78
|
+
const canCreate = Boolean(permissions?.collections?.[collectionSlug]?.create);
|
|
79
|
+
if (!canCreate || !parentFieldName) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
let t6;
|
|
83
|
+
if ($[10] !== DocumentDrawer || $[11] !== handleSave || $[12] !== openDrawer || $[13] !== parentFieldName || $[14] !== parentId || $[15] !== t) {
|
|
84
|
+
t6 = _jsxs(Fragment, {
|
|
85
|
+
children: [_jsx(Button, {
|
|
86
|
+
"aria-label": t("general:createNew"),
|
|
87
|
+
buttonStyle: "ghost",
|
|
88
|
+
className: baseClass,
|
|
89
|
+
icon: _jsx(PlusIcon, {}),
|
|
90
|
+
onClick: openDrawer,
|
|
91
|
+
round: true
|
|
92
|
+
}), _jsx(DocumentDrawer, {
|
|
93
|
+
initialData: parentId !== null ? {
|
|
94
|
+
[parentFieldName]: parentId
|
|
95
|
+
} : undefined,
|
|
96
|
+
onSave: handleSave
|
|
97
|
+
}, String(parentId))]
|
|
98
|
+
});
|
|
99
|
+
$[10] = DocumentDrawer;
|
|
100
|
+
$[11] = handleSave;
|
|
101
|
+
$[12] = openDrawer;
|
|
102
|
+
$[13] = parentFieldName;
|
|
103
|
+
$[14] = parentId;
|
|
104
|
+
$[15] = t;
|
|
105
|
+
$[16] = t6;
|
|
106
|
+
} else {
|
|
107
|
+
t6 = $[16];
|
|
108
|
+
}
|
|
109
|
+
return t6;
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","React","Fragment","useCallback","PlusIcon","useAuth","useConfig","useHierarchy","useTranslation","Button","useDocumentDrawer","baseClass","HierarchyCreateNewButton","t0","$","collectionSlug","parentId","t","permissions","getEntityConfig","refreshTree","t1","collectionConfig","parentFieldName","hierarchy","undefined","t2","t3","drawerSlug","DocumentDrawer","t4","closeDrawer","openDrawer","t5","handleSave","canCreate","Boolean","collections","create","t6","_jsxs","children","_jsx","buttonStyle","className","icon","onClick","round","initialData","onSave","String"],"sources":["../../../../src/elements/Hierarchy/CreateNewButton/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { Fragment, useCallback } from 'react'\n\nimport { PlusIcon } from '../../../icons/Plus/index.js'\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useHierarchy } from '../../../providers/Hierarchy/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { useDocumentDrawer } from '../../DocumentDrawer/index.js'\nimport './index.css'\n\nconst baseClass = 'hierarchy-create-new'\n\nexport type HierarchyCreateNewButtonProps = {\n collectionSlug: string\n /** Document the new item is created under. `null` creates at the root level. */\n parentId: null | number | string\n}\n\nexport const HierarchyCreateNewButton: React.FC<HierarchyCreateNewButtonProps> = ({\n collectionSlug,\n parentId,\n}) => {\n const { t } = useTranslation()\n const { permissions } = useAuth()\n const { getEntityConfig } = useConfig()\n const { refreshTree } = useHierarchy()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const parentFieldName =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy.parentFieldName\n : undefined\n\n const [DocumentDrawer, , { closeDrawer, openDrawer }] = useDocumentDrawer({\n collectionSlug,\n drawerSlug: `${baseClass}-${collectionSlug}`,\n })\n\n const handleSave = useCallback(() => {\n refreshTree(collectionSlug)\n closeDrawer()\n }, [closeDrawer, collectionSlug, refreshTree])\n\n const canCreate = Boolean(permissions?.collections?.[collectionSlug]?.create)\n\n if (!canCreate || !parentFieldName) {\n return null\n }\n\n return (\n <Fragment>\n <Button\n aria-label={t('general:createNew')}\n buttonStyle=\"ghost\"\n className={baseClass}\n icon={<PlusIcon />}\n onClick={openDrawer}\n round\n />\n <DocumentDrawer\n // Remount the form when the target parent changes so initialData is picked back up\n initialData={parentId !== null ? { [parentFieldName]: parentId } : undefined}\n key={String(parentId)}\n onSave={handleSave}\n />\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/DocHeaderButton/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAoD,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/DocHeaderButton/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAWxE,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAmItE,CAAA"}
|