@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
|
@@ -2,49 +2,66 @@
|
|
|
2
2
|
|
|
3
3
|
@layer payload-default {
|
|
4
4
|
.tree-node {
|
|
5
|
-
border-radius: var(--button-radius);
|
|
6
|
-
|
|
7
|
-
.tree-node {
|
|
8
|
-
margin-left: 0;
|
|
9
|
-
margin-right: 0;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
5
|
&:focus-visible {
|
|
13
6
|
outline: none;
|
|
14
7
|
}
|
|
15
8
|
}
|
|
16
9
|
|
|
17
|
-
.tree-node:focus-visible > .tree-node__content-wrapper > .tree-node__content {
|
|
10
|
+
.tree-node:focus-visible > .tree-node__content-wrapper > .tree-node__content::before {
|
|
18
11
|
outline: var(--accessibility-outline);
|
|
19
12
|
outline-offset: var(--accessibility-outline-offset);
|
|
20
13
|
}
|
|
21
14
|
|
|
22
|
-
.tree-node__content-wrapper {
|
|
23
|
-
margin-left: calc(
|
|
24
|
-
(var(--tree-depth, 0) * var(--tree-indent)) + (var(--spacer-1) * var(--tree-depth))
|
|
25
|
-
);
|
|
26
|
-
margin-bottom: var(--tree-row-gap);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
15
|
.tree-node__content {
|
|
16
|
+
position: relative;
|
|
17
|
+
isolation: isolate;
|
|
30
18
|
display: flex;
|
|
31
19
|
align-items: center;
|
|
20
|
+
height: var(--spacer-5);
|
|
21
|
+
font-family: var(--text-body-medium-font-family);
|
|
32
22
|
font-size: var(--tree-font-size);
|
|
23
|
+
font-weight: var(--text-body-medium-font-weight);
|
|
33
24
|
line-height: var(--tree-node-content-height);
|
|
25
|
+
cursor: pointer;
|
|
26
|
+
user-select: none;
|
|
27
|
+
|
|
28
|
+
&::before {
|
|
29
|
+
content: '';
|
|
30
|
+
position: absolute;
|
|
31
|
+
inset-block: var(--spacer-1);
|
|
32
|
+
inset-inline: var(--spacer-2);
|
|
33
|
+
border-radius: var(--button-radius);
|
|
34
|
+
z-index: -1;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&:hover:not(.tree-node__content--selected)::before {
|
|
38
|
+
background: var(--color-bg-secondary);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.tree-node__content--selected {
|
|
43
|
+
font-weight: var(--text-body-medium-strong-font-weight);
|
|
44
|
+
|
|
45
|
+
&::before {
|
|
46
|
+
background: var(--color-bg-selected);
|
|
47
|
+
}
|
|
34
48
|
}
|
|
35
49
|
|
|
36
50
|
.tree-node__toggle {
|
|
51
|
+
position: absolute;
|
|
52
|
+
inset-block: 0;
|
|
53
|
+
inset-inline-start: calc((var(--tree-depth, 0) * var(--tree-indent)) + var(--spacer-3));
|
|
54
|
+
z-index: 1;
|
|
55
|
+
width: var(--tree-chevron-width);
|
|
37
56
|
background: none;
|
|
38
57
|
border: none;
|
|
39
|
-
padding
|
|
40
|
-
padding-inline-start: var(--spacer-1);
|
|
58
|
+
padding: 0;
|
|
41
59
|
margin: 0;
|
|
42
60
|
display: flex;
|
|
43
61
|
align-items: center;
|
|
44
62
|
justify-content: center;
|
|
45
63
|
cursor: default;
|
|
46
64
|
color: var(--color-icon-tertiary);
|
|
47
|
-
flex-shrink: 0;
|
|
48
65
|
border-radius: var(--button-radius);
|
|
49
66
|
|
|
50
67
|
&:hover {
|
|
@@ -53,35 +70,48 @@
|
|
|
53
70
|
}
|
|
54
71
|
|
|
55
72
|
.tree-node__node-trigger {
|
|
73
|
+
position: absolute;
|
|
74
|
+
inset: 0;
|
|
56
75
|
border: none;
|
|
57
76
|
background: none;
|
|
58
77
|
margin: 0;
|
|
59
|
-
padding: 0;
|
|
60
78
|
color: inherit;
|
|
61
79
|
font: inherit;
|
|
80
|
+
text-align: left;
|
|
81
|
+
cursor: pointer;
|
|
62
82
|
min-width: 0;
|
|
63
|
-
flex: 1;
|
|
64
83
|
display: flex;
|
|
65
84
|
align-items: center;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
85
|
+
padding-block: 0;
|
|
86
|
+
padding-inline: calc(
|
|
87
|
+
(var(--tree-depth, 0) * var(--tree-indent)) + var(--spacer-3) + var(--tree-chevron-width) +
|
|
88
|
+
var(--tree-chevron-spacing)
|
|
89
|
+
)
|
|
90
|
+
var(--spacer-3);
|
|
71
91
|
}
|
|
72
92
|
|
|
73
93
|
.tree-node__title {
|
|
74
94
|
padding-left: 0;
|
|
75
|
-
margin-left: var(--spacer-1);
|
|
76
95
|
}
|
|
77
96
|
|
|
78
97
|
.tree-node__loading {
|
|
79
|
-
|
|
98
|
+
position: relative;
|
|
99
|
+
z-index: 1;
|
|
100
|
+
margin-inline: auto var(--spacer-3);
|
|
80
101
|
display: inline-flex;
|
|
81
102
|
align-items: center;
|
|
82
103
|
}
|
|
83
104
|
|
|
84
|
-
|
|
85
|
-
|
|
105
|
+
/*
|
|
106
|
+
* Drop invitation. An inset ring rather than an outset one, because tree rows are full-bleed and
|
|
107
|
+
* an outset ring would be clipped by the sidebar's own overflow.
|
|
108
|
+
*/
|
|
109
|
+
.tree-node__content--drop-over {
|
|
110
|
+
background: color-mix(in srgb, var(--color-border-selected) 8%, transparent);
|
|
111
|
+
box-shadow: inset 0 0 0 var(--stroke-width-medium) var(--color-border-selected);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.tree-node__content--drop-invalid {
|
|
115
|
+
cursor: not-allowed;
|
|
86
116
|
}
|
|
87
117
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { TreeNodeProps } from '../types.js';
|
|
3
3
|
import './index.css';
|
|
4
|
-
export declare const TreeNode: ({ allPossibleTypeValues, baseFilter, cache, collectionSlug, depth, expandedNodes, filterByCollections,
|
|
4
|
+
export declare const TreeNode: ({ allPossibleTypeValues, ancestorIds, baseFilter, cache, collectionSlug, depth, dropParentFieldName, expandedNodes, filterByCollections, limit, node, onSelect, onToggle, parentFieldName, selected, selectedNodeId, typeFieldName, useAsTitle, }: TreeNodeProps) => React.JSX.Element;
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/Hierarchy/Tree/TreeNode/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/Hierarchy/Tree/TreeNode/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAkD,MAAM,OAAO,CAAA;AAGtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAShD,OAAO,aAAa,CAAA;AA2BpB,eAAO,MAAM,QAAQ,sPAmBlB,aAAa,sBA8Pf,CAAA"}
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
4
|
-
import
|
|
4
|
+
import { useDroppable } from '@dnd-kit/core';
|
|
5
|
+
import React, { useCallback, useEffect, useMemo, useRef } from 'react';
|
|
5
6
|
import { Spinner } from '../../../../elements/Spinner/index.js';
|
|
6
7
|
import { ChevronIcon } from '../../../../icons/Chevron/index.js';
|
|
8
|
+
import { useHierarchyDnd } from '../../../../providers/HierarchyDnd/index.js';
|
|
7
9
|
import { useTranslation } from '../../../../providers/Translation/index.js';
|
|
8
10
|
import { LoadMore } from '../LoadMore/index.js';
|
|
9
11
|
import { useFocusableItem, useTreeFocus } from '../TreeFocusContext.js';
|
|
10
12
|
import { useChildren } from '../useChildren.js';
|
|
11
13
|
import './index.css';
|
|
12
14
|
const DEFAULT_TREE_LIMIT = 10;
|
|
15
|
+
/**
|
|
16
|
+
* How long a drag has to hover a collapsed node before it springs open, so a drag can drill into the
|
|
17
|
+
* tree without being dropped and restarted.
|
|
18
|
+
*/
|
|
19
|
+
const SPRING_LOAD_DELAY = 600;
|
|
13
20
|
const baseClass = 'tree-node';
|
|
14
21
|
const getDocumentTitle = (doc, useAsTitle) => {
|
|
15
22
|
const docId = doc.id;
|
|
@@ -25,13 +32,14 @@ const getDocumentTitle = (doc, useAsTitle) => {
|
|
|
25
32
|
};
|
|
26
33
|
export const TreeNode = ({
|
|
27
34
|
allPossibleTypeValues,
|
|
35
|
+
ancestorIds,
|
|
28
36
|
baseFilter,
|
|
29
37
|
cache,
|
|
30
38
|
collectionSlug,
|
|
31
39
|
depth = 0,
|
|
40
|
+
dropParentFieldName,
|
|
32
41
|
expandedNodes,
|
|
33
42
|
filterByCollections,
|
|
34
|
-
icon,
|
|
35
43
|
limit = DEFAULT_TREE_LIMIT,
|
|
36
44
|
node,
|
|
37
45
|
onSelect,
|
|
@@ -100,11 +108,48 @@ export const TreeNode = ({
|
|
|
100
108
|
id: node.id
|
|
101
109
|
});
|
|
102
110
|
}, [load, node.id, onToggle]);
|
|
111
|
+
const {
|
|
112
|
+
canDrop
|
|
113
|
+
} = useHierarchyDnd();
|
|
114
|
+
const childAncestorIds = useMemo(() => [...(ancestorIds ?? []), node.id], [ancestorIds, node.id]);
|
|
115
|
+
const dropData = useMemo(() => dropParentFieldName ? {
|
|
116
|
+
type: 'hierarchy-folder',
|
|
117
|
+
// Tree nodes carry only id/title/hasChildren, not the folder's collectionSpecific value,
|
|
118
|
+
// so type acceptance is left to the server validator here. The self/descendant check
|
|
119
|
+
// below still runs, since that only needs ids.
|
|
120
|
+
ancestorIds: ancestorIds ?? [],
|
|
121
|
+
folderId: node.id,
|
|
122
|
+
hierarchySlug: collectionSlug,
|
|
123
|
+
parentFieldName: dropParentFieldName,
|
|
124
|
+
title: node.title
|
|
125
|
+
} : undefined, [ancestorIds, collectionSlug, dropParentFieldName, node.id, node.title]);
|
|
126
|
+
const {
|
|
127
|
+
isOver,
|
|
128
|
+
setNodeRef: setDropRef
|
|
129
|
+
} = useDroppable({
|
|
130
|
+
id: `tree-node-drop-${collectionSlug}-${node.id}`,
|
|
131
|
+
data: dropData,
|
|
132
|
+
disabled: !dropData
|
|
133
|
+
});
|
|
134
|
+
const dropState = isOver && dropData ? canDrop(dropData) ? 'over' : 'invalid' : undefined;
|
|
103
135
|
const handleSelectClick = useCallback(() => {
|
|
104
136
|
onSelect?.({
|
|
105
137
|
id: node.id
|
|
106
138
|
});
|
|
107
139
|
}, [node.id, onSelect]);
|
|
140
|
+
/**
|
|
141
|
+
* Hovering a collapsed node mid-drag opens it after a beat. The timer is cleared when the drag
|
|
142
|
+
* leaves, so a pass-over on the way somewhere else doesn't expand the whole tree.
|
|
143
|
+
*/
|
|
144
|
+
useEffect(() => {
|
|
145
|
+
if (!isOver || expanded || !hasChildren) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
const timeout = setTimeout(() => {
|
|
149
|
+
handleToggle();
|
|
150
|
+
}, SPRING_LOAD_DELAY);
|
|
151
|
+
return () => clearTimeout(timeout);
|
|
152
|
+
}, [expanded, handleToggle, hasChildren, isOver]);
|
|
108
153
|
const handleKeyDown = useCallback(e_0 => {
|
|
109
154
|
if (e_0.target !== e_0.currentTarget) {
|
|
110
155
|
return;
|
|
@@ -154,7 +199,8 @@ export const TreeNode = ({
|
|
|
154
199
|
children: [/*#__PURE__*/_jsx("div", {
|
|
155
200
|
className: `${baseClass}__content-wrapper`,
|
|
156
201
|
children: /*#__PURE__*/_jsxs("div", {
|
|
157
|
-
className: [`${baseClass}__content`,
|
|
202
|
+
className: [`${baseClass}__content`, selected && `${baseClass}__content--selected`, dropState && `${baseClass}__content--drop-${dropState}`].filter(Boolean).join(' '),
|
|
203
|
+
ref: setDropRef,
|
|
158
204
|
children: [hasChildren && /*#__PURE__*/_jsx("button", {
|
|
159
205
|
"aria-label": expanded ? t('general:collapse') : t('general:open'),
|
|
160
206
|
className: `${baseClass}__toggle`,
|
|
@@ -166,20 +212,17 @@ export const TreeNode = ({
|
|
|
166
212
|
direction: expanded ? 'down' : 'right',
|
|
167
213
|
size: 16
|
|
168
214
|
})
|
|
169
|
-
}), /*#__PURE__*/
|
|
215
|
+
}), /*#__PURE__*/_jsx("button", {
|
|
170
216
|
className: [`${baseClass}__node-trigger`, selected && `${baseClass}__node-trigger--selected`].filter(Boolean).join(' '),
|
|
171
217
|
onClick: handleSelectClick,
|
|
172
218
|
onMouseDown: e_3 => e_3.preventDefault(),
|
|
173
219
|
tabIndex: -1,
|
|
174
220
|
title: node.title,
|
|
175
221
|
type: "button",
|
|
176
|
-
children:
|
|
177
|
-
className: "sidebar-row__icon",
|
|
178
|
-
children: icon
|
|
179
|
-
}), /*#__PURE__*/_jsx("span", {
|
|
222
|
+
children: /*#__PURE__*/_jsx("span", {
|
|
180
223
|
className: `${baseClass}__title sidebar-row__title`,
|
|
181
224
|
children: node.title
|
|
182
|
-
})
|
|
225
|
+
})
|
|
183
226
|
}), isLoading && expanded && /*#__PURE__*/_jsx("span", {
|
|
184
227
|
className: `${baseClass}__loading`,
|
|
185
228
|
children: /*#__PURE__*/_jsx(Spinner, {
|
|
@@ -198,13 +241,14 @@ export const TreeNode = ({
|
|
|
198
241
|
const childTitle = getDocumentTitle(child, useAsTitle);
|
|
199
242
|
return /*#__PURE__*/_jsx(TreeNode, {
|
|
200
243
|
allPossibleTypeValues: allPossibleTypeValues,
|
|
244
|
+
ancestorIds: childAncestorIds,
|
|
201
245
|
baseFilter: baseFilter,
|
|
202
246
|
cache: cache,
|
|
203
247
|
collectionSlug: collectionSlug,
|
|
204
248
|
depth: depth + 1,
|
|
249
|
+
dropParentFieldName: dropParentFieldName,
|
|
205
250
|
expandedNodes: expandedNodes,
|
|
206
251
|
filterByCollections: filterByCollections,
|
|
207
|
-
icon: icon,
|
|
208
252
|
limit: limit,
|
|
209
253
|
node: {
|
|
210
254
|
id: childId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useCallback","useRef","Spinner","ChevronIcon","useTranslation","LoadMore","useFocusableItem","useTreeFocus","useChildren","DEFAULT_TREE_LIMIT","baseClass","getDocumentTitle","doc","useAsTitle","docId","id","idStr","String","value","TreeNode","allPossibleTypeValues","baseFilter","cache","collectionSlug","depth","expandedNodes","filterByCollections","icon","limit","node","onSelect","onToggle","parentFieldName","selected","selectedNodeId","typeFieldName","t","expanded","has","nodeRef","setFocusedId","children","hasMore","isLoading","load","loadMore","loadMoreFromHook","totalDocs","enabled","parentId","handleLoadMore","newDocs","length","firstNewDoc","window","requestAnimationFrame","handleFocus","tabIndex","type","ref","hasChildren","handleToggle","e","stopPropagation","handleSelectClick","handleKeyDown","target","currentTarget","key","preventDefault","_jsxs","undefined","className","onFocus","onKeyDown","role","style","_jsx","filter","Boolean","join","onClick","onMouseDown","direction","size","title","loadingText","_Fragment","map","child","childData","childId","childTitle","currentCount","onLoadMore"],"sources":["../../../../../src/elements/Hierarchy/Tree/TreeNode/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { useCallback, useRef } from 'react'\n\nimport type { TreeNodeProps } from '../types.js'\n\nimport { Spinner } from '../../../../elements/Spinner/index.js'\nimport { ChevronIcon } from '../../../../icons/Chevron/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { LoadMore } from '../LoadMore/index.js'\nimport { useFocusableItem, useTreeFocus } from '../TreeFocusContext.js'\nimport { useChildren } from '../useChildren.js'\nimport './index.css'\n\nconst DEFAULT_TREE_LIMIT = 10\n\nconst baseClass = 'tree-node'\n\nconst getDocumentTitle = (doc: Record<string, unknown>, useAsTitle: string | undefined): string => {\n const docId: number | string = doc.id as number | string\n const idStr = typeof docId === 'number' ? String(docId) : docId\n\n if (!useAsTitle) {\n return idStr\n }\n\n const value = doc[useAsTitle]\n if (value && (typeof value === 'string' || typeof value === 'number')) {\n return String(value)\n }\n return idStr\n}\n\nexport const TreeNode = ({\n allPossibleTypeValues,\n baseFilter,\n cache,\n collectionSlug,\n depth = 0,\n expandedNodes,\n filterByCollections,\n icon,\n limit = DEFAULT_TREE_LIMIT,\n node,\n onSelect,\n onToggle,\n parentFieldName,\n selected,\n selectedNodeId,\n typeFieldName,\n useAsTitle,\n}: TreeNodeProps) => {\n const { t } = useTranslation()\n const expanded = expandedNodes.has(node.id)\n const nodeRef = useRef<HTMLDivElement>(null)\n const { setFocusedId } = useTreeFocus()\n\n const {\n children,\n hasMore,\n isLoading,\n load,\n loadMore: loadMoreFromHook,\n totalDocs,\n } = useChildren({\n allPossibleTypeValues,\n baseFilter,\n cache,\n collectionSlug,\n enabled: expanded,\n filterByCollections,\n limit,\n parentFieldName,\n parentId: node.id,\n typeFieldName,\n useAsTitle,\n })\n\n const handleLoadMore = React.useCallback(async () => {\n const newDocs = await loadMoreFromHook()\n\n if (newDocs && newDocs.length > 0) {\n const firstNewDoc = newDocs[0]\n const docId: number | string = (firstNewDoc as { id: number | string }).id\n window.requestAnimationFrame(() => {\n setFocusedId(`node-${docId}`)\n })\n }\n }, [loadMoreFromHook, setFocusedId])\n\n const { handleFocus, tabIndex } = useFocusableItem({\n id: `node-${node.id}`,\n type: 'node',\n ref: nodeRef,\n })\n\n // Determine if node has children:\n // - If explicitly set in data, use that\n // - If expanded and loaded, check the actual children\n // - Otherwise, assume it might have children (show chevron until proven otherwise)\n const hasChildren =\n node.hasChildren === true || (expanded && children !== null ? children.length > 0 : true)\n\n const handleToggle = useCallback(\n (e?: React.SyntheticEvent) => {\n e?.stopPropagation()\n void load()\n onToggle({ id: node.id })\n },\n [load, node.id, onToggle],\n )\n\n const handleSelectClick = useCallback(() => {\n onSelect?.({ id: node.id })\n }, [node.id, onSelect])\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.target !== e.currentTarget) {\n return\n }\n switch (e.key) {\n case ' ':\n case 'Enter':\n e.preventDefault()\n e.stopPropagation()\n handleSelectClick()\n break\n case 'ArrowLeft':\n e.preventDefault()\n e.stopPropagation()\n if (hasChildren && expanded) {\n onToggle({ id: node.id })\n }\n break\n case 'ArrowRight':\n e.preventDefault()\n e.stopPropagation()\n if (hasChildren && !expanded) {\n handleToggle()\n }\n break\n }\n },\n [expanded, handleSelectClick, handleToggle, hasChildren, node.id, onToggle],\n )\n\n return (\n <div\n aria-expanded={hasChildren ? expanded : undefined}\n aria-level={depth + 1}\n aria-selected={selected}\n className={baseClass}\n onFocus={(e) => {\n if (e.target === e.currentTarget) {\n handleFocus()\n }\n }}\n onKeyDown={handleKeyDown}\n ref={nodeRef}\n role=\"treeitem\"\n style={{ '--tree-depth': depth } as React.CSSProperties}\n tabIndex={tabIndex}\n >\n <div className={`${baseClass}__content-wrapper`}>\n <div\n className={[\n `${baseClass}__content`,\n 'sidebar-row',\n selected && `${baseClass}__content--selected`,\n selected && 'sidebar-row--selected',\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {hasChildren && (\n <button\n aria-label={expanded ? t('general:collapse') : t('general:open')}\n className={`${baseClass}__toggle`}\n onClick={handleToggle}\n onMouseDown={(e) => e.preventDefault()}\n tabIndex={-1}\n type=\"button\"\n >\n <ChevronIcon direction={expanded ? 'down' : 'right'} size={16} />\n </button>\n )}\n <button\n className={[\n `${baseClass}__node-trigger`,\n selected && `${baseClass}__node-trigger--selected`,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={handleSelectClick}\n onMouseDown={(e) => e.preventDefault()}\n tabIndex={-1}\n title={node.title}\n type=\"button\"\n >\n {Boolean(icon) && <span className=\"sidebar-row__icon\">{icon}</span>}\n <span className={`${baseClass}__title sidebar-row__title`}>{node.title}</span>\n </button>\n {isLoading && expanded && (\n <span className={`${baseClass}__loading`}>\n <Spinner loadingText={null} size=\"sm\" />\n </span>\n )}\n </div>\n </div>\n\n {expanded && children && children.length > 0 && (\n <>\n <div className={`${baseClass}__children`} role=\"group\">\n {children.map((child) => {\n const childData = child as { id: number | string }\n const childId = childData.id\n const childTitle = getDocumentTitle(child, useAsTitle)\n return (\n <TreeNode\n allPossibleTypeValues={allPossibleTypeValues}\n baseFilter={baseFilter}\n cache={cache}\n collectionSlug={collectionSlug}\n depth={depth + 1}\n expandedNodes={expandedNodes}\n filterByCollections={filterByCollections}\n icon={icon}\n key={String(childId)}\n limit={limit}\n node={{\n id: childId,\n hasChildren: true,\n title: childTitle,\n }}\n onSelect={onSelect}\n onToggle={onToggle}\n parentFieldName={parentFieldName}\n selected={String(childId) === String(selectedNodeId)}\n selectedNodeId={selectedNodeId}\n typeFieldName={typeFieldName}\n useAsTitle={useAsTitle}\n />\n )\n })}\n </div>\n {hasMore && (\n <LoadMore\n currentCount={children.length}\n depth={depth + 1}\n id={`load-more-${node.id}`}\n onLoadMore={handleLoadMore}\n totalDocs={totalDocs}\n />\n )}\n </>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useDroppable","React","useCallback","useEffect","useMemo","useRef","Spinner","ChevronIcon","useHierarchyDnd","useTranslation","LoadMore","useFocusableItem","useTreeFocus","useChildren","DEFAULT_TREE_LIMIT","SPRING_LOAD_DELAY","baseClass","getDocumentTitle","doc","useAsTitle","docId","id","idStr","String","value","TreeNode","allPossibleTypeValues","ancestorIds","baseFilter","cache","collectionSlug","depth","dropParentFieldName","expandedNodes","filterByCollections","limit","node","onSelect","onToggle","parentFieldName","selected","selectedNodeId","typeFieldName","t","expanded","has","nodeRef","setFocusedId","children","hasMore","isLoading","load","loadMore","loadMoreFromHook","totalDocs","enabled","parentId","handleLoadMore","newDocs","length","firstNewDoc","window","requestAnimationFrame","handleFocus","tabIndex","type","ref","hasChildren","handleToggle","e","stopPropagation","canDrop","childAncestorIds","dropData","folderId","hierarchySlug","title","undefined","isOver","setNodeRef","setDropRef","data","disabled","dropState","handleSelectClick","timeout","setTimeout","clearTimeout","handleKeyDown","target","currentTarget","key","preventDefault","_jsxs","className","onFocus","onKeyDown","role","style","_jsx","filter","Boolean","join","onClick","onMouseDown","direction","size","loadingText","_Fragment","map","child","childData","childId","childTitle","currentCount","onLoadMore"],"sources":["../../../../../src/elements/Hierarchy/Tree/TreeNode/index.tsx"],"sourcesContent":["'use client'\n\nimport { useDroppable } from '@dnd-kit/core'\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react'\n\nimport type { HierarchyDropData } from '../../../../providers/HierarchyDnd/types.js'\nimport type { TreeNodeProps } from '../types.js'\n\nimport { Spinner } from '../../../../elements/Spinner/index.js'\nimport { ChevronIcon } from '../../../../icons/Chevron/index.js'\nimport { useHierarchyDnd } from '../../../../providers/HierarchyDnd/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { LoadMore } from '../LoadMore/index.js'\nimport { useFocusableItem, useTreeFocus } from '../TreeFocusContext.js'\nimport { useChildren } from '../useChildren.js'\nimport './index.css'\n\nconst DEFAULT_TREE_LIMIT = 10\n\n/**\n * How long a drag has to hover a collapsed node before it springs open, so a drag can drill into the\n * tree without being dropped and restarted.\n */\nconst SPRING_LOAD_DELAY = 600\n\nconst baseClass = 'tree-node'\n\nconst getDocumentTitle = (doc: Record<string, unknown>, useAsTitle: string | undefined): string => {\n const docId: number | string = doc.id as number | string\n const idStr = typeof docId === 'number' ? String(docId) : docId\n\n if (!useAsTitle) {\n return idStr\n }\n\n const value = doc[useAsTitle]\n if (value && (typeof value === 'string' || typeof value === 'number')) {\n return String(value)\n }\n return idStr\n}\n\nexport const TreeNode = ({\n allPossibleTypeValues,\n ancestorIds,\n baseFilter,\n cache,\n collectionSlug,\n depth = 0,\n dropParentFieldName,\n expandedNodes,\n filterByCollections,\n limit = DEFAULT_TREE_LIMIT,\n node,\n onSelect,\n onToggle,\n parentFieldName,\n selected,\n selectedNodeId,\n typeFieldName,\n useAsTitle,\n}: TreeNodeProps) => {\n const { t } = useTranslation()\n const expanded = expandedNodes.has(node.id)\n const nodeRef = useRef<HTMLDivElement>(null)\n const { setFocusedId } = useTreeFocus()\n\n const {\n children,\n hasMore,\n isLoading,\n load,\n loadMore: loadMoreFromHook,\n totalDocs,\n } = useChildren({\n allPossibleTypeValues,\n baseFilter,\n cache,\n collectionSlug,\n enabled: expanded,\n filterByCollections,\n limit,\n parentFieldName,\n parentId: node.id,\n typeFieldName,\n useAsTitle,\n })\n\n const handleLoadMore = React.useCallback(async () => {\n const newDocs = await loadMoreFromHook()\n\n if (newDocs && newDocs.length > 0) {\n const firstNewDoc = newDocs[0]\n const docId: number | string = (firstNewDoc as { id: number | string }).id\n window.requestAnimationFrame(() => {\n setFocusedId(`node-${docId}`)\n })\n }\n }, [loadMoreFromHook, setFocusedId])\n\n const { handleFocus, tabIndex } = useFocusableItem({\n id: `node-${node.id}`,\n type: 'node',\n ref: nodeRef,\n })\n\n // Determine if node has children:\n // - If explicitly set in data, use that\n // - If expanded and loaded, check the actual children\n // - Otherwise, assume it might have children (show chevron until proven otherwise)\n const hasChildren =\n node.hasChildren === true || (expanded && children !== null ? children.length > 0 : true)\n\n const handleToggle = useCallback(\n (e?: React.SyntheticEvent) => {\n e?.stopPropagation()\n void load()\n onToggle({ id: node.id })\n },\n [load, node.id, onToggle],\n )\n\n const { canDrop } = useHierarchyDnd()\n\n const childAncestorIds = useMemo(() => [...(ancestorIds ?? []), node.id], [ancestorIds, node.id])\n\n const dropData = useMemo<HierarchyDropData | undefined>(\n () =>\n dropParentFieldName\n ? {\n type: 'hierarchy-folder',\n // Tree nodes carry only id/title/hasChildren, not the folder's collectionSpecific value,\n // so type acceptance is left to the server validator here. The self/descendant check\n // below still runs, since that only needs ids.\n ancestorIds: ancestorIds ?? [],\n folderId: node.id,\n hierarchySlug: collectionSlug,\n parentFieldName: dropParentFieldName,\n title: node.title,\n }\n : undefined,\n [ancestorIds, collectionSlug, dropParentFieldName, node.id, node.title],\n )\n\n const { isOver, setNodeRef: setDropRef } = useDroppable({\n id: `tree-node-drop-${collectionSlug}-${node.id}`,\n data: dropData,\n disabled: !dropData,\n })\n\n const dropState = isOver && dropData ? (canDrop(dropData) ? 'over' : 'invalid') : undefined\n\n const handleSelectClick = useCallback(() => {\n onSelect?.({ id: node.id })\n }, [node.id, onSelect])\n\n /**\n * Hovering a collapsed node mid-drag opens it after a beat. The timer is cleared when the drag\n * leaves, so a pass-over on the way somewhere else doesn't expand the whole tree.\n */\n useEffect(() => {\n if (!isOver || expanded || !hasChildren) {\n return\n }\n\n const timeout = setTimeout(() => {\n handleToggle()\n }, SPRING_LOAD_DELAY)\n\n return () => clearTimeout(timeout)\n }, [expanded, handleToggle, hasChildren, isOver])\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.target !== e.currentTarget) {\n return\n }\n switch (e.key) {\n case ' ':\n case 'Enter':\n e.preventDefault()\n e.stopPropagation()\n handleSelectClick()\n break\n case 'ArrowLeft':\n e.preventDefault()\n e.stopPropagation()\n if (hasChildren && expanded) {\n onToggle({ id: node.id })\n }\n break\n case 'ArrowRight':\n e.preventDefault()\n e.stopPropagation()\n if (hasChildren && !expanded) {\n handleToggle()\n }\n break\n }\n },\n [expanded, handleSelectClick, handleToggle, hasChildren, node.id, onToggle],\n )\n\n return (\n <div\n aria-expanded={hasChildren ? expanded : undefined}\n aria-level={depth + 1}\n aria-selected={selected}\n className={baseClass}\n onFocus={(e) => {\n if (e.target === e.currentTarget) {\n handleFocus()\n }\n }}\n onKeyDown={handleKeyDown}\n ref={nodeRef}\n role=\"treeitem\"\n style={{ '--tree-depth': depth } as React.CSSProperties}\n tabIndex={tabIndex}\n >\n <div className={`${baseClass}__content-wrapper`}>\n <div\n className={[\n `${baseClass}__content`,\n selected && `${baseClass}__content--selected`,\n dropState && `${baseClass}__content--drop-${dropState}`,\n ]\n .filter(Boolean)\n .join(' ')}\n ref={setDropRef}\n >\n {hasChildren && (\n <button\n aria-label={expanded ? t('general:collapse') : t('general:open')}\n className={`${baseClass}__toggle`}\n onClick={handleToggle}\n onMouseDown={(e) => e.preventDefault()}\n tabIndex={-1}\n type=\"button\"\n >\n <ChevronIcon direction={expanded ? 'down' : 'right'} size={16} />\n </button>\n )}\n <button\n className={[\n `${baseClass}__node-trigger`,\n selected && `${baseClass}__node-trigger--selected`,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={handleSelectClick}\n onMouseDown={(e) => e.preventDefault()}\n tabIndex={-1}\n title={node.title}\n type=\"button\"\n >\n <span className={`${baseClass}__title sidebar-row__title`}>{node.title}</span>\n </button>\n {isLoading && expanded && (\n <span className={`${baseClass}__loading`}>\n <Spinner loadingText={null} size=\"sm\" />\n </span>\n )}\n </div>\n </div>\n\n {expanded && children && children.length > 0 && (\n <>\n <div className={`${baseClass}__children`} role=\"group\">\n {children.map((child) => {\n const childData = child as { id: number | string }\n const childId = childData.id\n const childTitle = getDocumentTitle(child, useAsTitle)\n return (\n <TreeNode\n allPossibleTypeValues={allPossibleTypeValues}\n ancestorIds={childAncestorIds}\n baseFilter={baseFilter}\n cache={cache}\n collectionSlug={collectionSlug}\n depth={depth + 1}\n dropParentFieldName={dropParentFieldName}\n expandedNodes={expandedNodes}\n filterByCollections={filterByCollections}\n key={String(childId)}\n limit={limit}\n node={{\n id: childId,\n hasChildren: true,\n title: childTitle,\n }}\n onSelect={onSelect}\n onToggle={onToggle}\n parentFieldName={parentFieldName}\n selected={String(childId) === String(selectedNodeId)}\n selectedNodeId={selectedNodeId}\n typeFieldName={typeFieldName}\n useAsTitle={useAsTitle}\n />\n )\n })}\n </div>\n {hasMore && (\n <LoadMore\n currentCount={children.length}\n depth={depth + 1}\n id={`load-more-${node.id}`}\n onLoadMore={handleLoadMore}\n totalDocs={totalDocs}\n />\n )}\n </>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,29 +3,29 @@
|
|
|
3
3
|
.hierarchy-sidebar-tab {
|
|
4
4
|
display: flex;
|
|
5
5
|
flex-direction: column;
|
|
6
|
-
gap: var(--spacer-2);
|
|
7
6
|
}
|
|
8
7
|
|
|
9
8
|
.tree {
|
|
10
9
|
--tree-indent: var(--spacer-3);
|
|
11
10
|
--tree-chevron-width: var(--spacer-3);
|
|
12
|
-
--tree-chevron-spacing: var(--spacer-
|
|
11
|
+
--tree-chevron-spacing: var(--spacer-1);
|
|
13
12
|
--tree-node-content-height: var(--text-body-medium-line-height);
|
|
14
13
|
--tree-row-gap: var(--spacer-1);
|
|
15
14
|
--tree-font-size: var(--text-body-medium-font-size);
|
|
16
15
|
|
|
17
|
-
padding: 0;
|
|
16
|
+
padding: var(--spacer-1) 0;
|
|
18
17
|
margin: 0;
|
|
19
18
|
}
|
|
20
19
|
|
|
21
20
|
.tree__all-option-wrapper {
|
|
22
21
|
display: grid;
|
|
22
|
+
padding: var(--spacer-1) var(--spacer-2) var(--spacer-1) var(--spacer-2-5);
|
|
23
23
|
gap: var(--spacer-1);
|
|
24
|
-
grid-template-columns:
|
|
24
|
+
grid-template-columns: auto auto;
|
|
25
25
|
align-items: center;
|
|
26
|
-
|
|
26
|
+
justify-content: space-between;
|
|
27
27
|
|
|
28
|
-
.
|
|
28
|
+
.tree__collapse-all-button {
|
|
29
29
|
padding: 0;
|
|
30
30
|
|
|
31
31
|
&:hover {
|
|
@@ -35,9 +35,8 @@
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
.tree__all-option {
|
|
38
|
-
gap:
|
|
39
|
-
padding-
|
|
40
|
-
padding-block: var(--spacer-1);
|
|
38
|
+
gap: 0;
|
|
39
|
+
padding-inline-end: var(--spacer-2);
|
|
41
40
|
|
|
42
41
|
.sidebar-row__title {
|
|
43
42
|
font-weight: var(--text-body-medium-strong-font-weight);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Tree/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Tree/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA8C,MAAM,OAAO,CAAA;AAElE,OAAO,KAAK,EAAkB,kBAAkB,EAAgB,MAAM,YAAY,CAAA;AAclF,OAAO,aAAa,CAAA;AA4XpB,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAMtD,CAAA"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
4
|
-
import { useModal } from '@faceless-ui/modal';
|
|
3
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
4
|
import { getTranslation } from '@payloadcms/translations';
|
|
6
5
|
import { DEFAULT_HIERARCHY_TREE_LIMIT } from 'payload/shared';
|
|
7
|
-
import React, { useCallback, useId, useMemo, useRef
|
|
8
|
-
import {
|
|
9
|
-
import { useAuth } from '../../../providers/Auth/index.js';
|
|
6
|
+
import React, { useCallback, useId, useMemo, useRef } from 'react';
|
|
7
|
+
import { CollapseLayersIcon } from '../../../icons/CollapseLayers/index.js';
|
|
10
8
|
import { useConfig } from '../../../providers/Config/index.js';
|
|
11
9
|
import { useHierarchy } from '../../../providers/Hierarchy/index.js';
|
|
12
10
|
import { useRouter } from '../../../providers/RouterAdapter/index.js';
|
|
@@ -14,13 +12,14 @@ import { useTranslation } from '../../../providers/Translation/index.js';
|
|
|
14
12
|
import { Button } from '../../Button/index.js';
|
|
15
13
|
import { CreateDocumentButton } from '../../CreateDocumentButton/index.js';
|
|
16
14
|
import { DelayedSpinner } from '../../DelayedSpinner/index.js';
|
|
17
|
-
import { DocumentDrawer } from '../../DocumentDrawer/index.js';
|
|
18
15
|
import { LoadMore } from './LoadMore/index.js';
|
|
19
16
|
import { TreeFocusProvider, useTreeFocus } from './TreeFocusContext.js';
|
|
20
17
|
import { TreeNode } from './TreeNode/index.js';
|
|
21
18
|
import { useChildren } from './useChildren.js';
|
|
22
19
|
import './index.css';
|
|
23
20
|
const baseClass = 'tree';
|
|
21
|
+
/** Root nodes have no ancestors; hoisted so the reference stays stable across renders. */
|
|
22
|
+
const ROOT_ANCESTOR_IDS = [];
|
|
24
23
|
const getDocumentTitle = (doc, useAsTitle) => {
|
|
25
24
|
const docId = doc.id;
|
|
26
25
|
const idStr = typeof docId === 'number' ? String(docId) : docId;
|
|
@@ -54,19 +53,12 @@ const HierarchyTreeInner = ({
|
|
|
54
53
|
i18n,
|
|
55
54
|
t
|
|
56
55
|
} = useTranslation();
|
|
57
|
-
const {
|
|
58
|
-
permissions
|
|
59
|
-
} = useAuth();
|
|
60
56
|
const {
|
|
61
57
|
getEntityConfig
|
|
62
58
|
} = useConfig();
|
|
63
|
-
const {
|
|
64
|
-
closeModal,
|
|
65
|
-
openModal
|
|
66
|
-
} = useModal();
|
|
67
59
|
const createDrawerSlug = `tree-create-${useId()}`;
|
|
68
|
-
const [isCreateDrawerOpen, setIsCreateDrawerOpen] = useState(false);
|
|
69
60
|
const {
|
|
61
|
+
collapseAllForCollection,
|
|
70
62
|
getExpandedNodesForCollection,
|
|
71
63
|
getTreeDataForCollection,
|
|
72
64
|
toggleNodeForCollection,
|
|
@@ -79,7 +71,6 @@ const HierarchyTreeInner = ({
|
|
|
79
71
|
const parentFieldName = hierarchyConfig?.parentFieldName;
|
|
80
72
|
const treeLimit = hierarchyConfig?.admin?.treeLimit ?? DEFAULT_HIERARCHY_TREE_LIMIT;
|
|
81
73
|
const useAsTitle = useAsTitleProp ?? collectionConfig.admin?.useAsTitle;
|
|
82
|
-
const canCreate = Boolean(permissions?.collections?.[collectionSlug]?.create);
|
|
83
74
|
const allPossibleTypeValues = useMemo(() => hierarchyConfig?.relatedCollections ? Object.keys(hierarchyConfig.relatedCollections) : undefined, [hierarchyConfig?.relatedCollections]);
|
|
84
75
|
const contextData = getTreeDataForCollection(collectionSlug);
|
|
85
76
|
const baseFilterKey = baseFilter ? JSON.stringify(baseFilter) : '';
|
|
@@ -132,6 +123,12 @@ const HierarchyTreeInner = ({
|
|
|
132
123
|
}
|
|
133
124
|
toggleNodeForCollection(collectionSlug, id);
|
|
134
125
|
}, [collectionSlug, getExpandedNodesForCollection, initialExpandedNodesProp, toggleNodeForCollection]);
|
|
126
|
+
const handleCollapseAll = useCallback(() => {
|
|
127
|
+
// Mark context as seeded so the expandedNodes memo trusts the now-empty context
|
|
128
|
+
// rather than falling back to the server-provided initial nodes.
|
|
129
|
+
contextSeededRef.current = true;
|
|
130
|
+
collapseAllForCollection(collectionSlug);
|
|
131
|
+
}, [collapseAllForCollection, collectionSlug]);
|
|
135
132
|
// Pre-populate cache with initialData synchronously before first render
|
|
136
133
|
const childrenCache = useRef(new Map());
|
|
137
134
|
const prevBaseFilterKeyRef = useRef(baseFilterKey);
|
|
@@ -269,7 +266,7 @@ const HierarchyTreeInner = ({
|
|
|
269
266
|
tabIndex: -1,
|
|
270
267
|
children: [/*#__PURE__*/_jsxs("div", {
|
|
271
268
|
className: `${baseClass}__all-option-wrapper`,
|
|
272
|
-
children: [/*#__PURE__*/
|
|
269
|
+
children: [/*#__PURE__*/_jsxs("div", {
|
|
273
270
|
"aria-selected": isAllSelected,
|
|
274
271
|
className: [`${baseClass}__all-option`, 'sidebar-row', isAllSelected && `${baseClass}__all-option--selected`, isAllSelected && 'sidebar-row--selected'].filter(Boolean).join(' '),
|
|
275
272
|
onClick: handleAllClick,
|
|
@@ -281,39 +278,23 @@ const HierarchyTreeInner = ({
|
|
|
281
278
|
},
|
|
282
279
|
role: "treeitem",
|
|
283
280
|
tabIndex: 0,
|
|
284
|
-
children: /*#__PURE__*/
|
|
281
|
+
children: [Boolean(icon) && /*#__PURE__*/_jsx("span", {
|
|
282
|
+
className: "sidebar-row__icon",
|
|
283
|
+
children: icon
|
|
284
|
+
}), /*#__PURE__*/_jsx("span", {
|
|
285
285
|
className: "sidebar-row__title",
|
|
286
|
-
children:
|
|
286
|
+
children: getTranslation(getEntityConfig({
|
|
287
287
|
collectionSlug
|
|
288
|
-
})?.labels?.plural, i18n)
|
|
289
|
-
})
|
|
290
|
-
}), canCreate && /*#__PURE__*/_jsxs(_Fragment, {
|
|
291
|
-
children: [/*#__PURE__*/_jsx(Button, {
|
|
292
|
-
"aria-label": t('general:createNew'),
|
|
293
|
-
buttonStyle: "ghost",
|
|
294
|
-
className: `${baseClass}__create-button`,
|
|
295
|
-
margin: false,
|
|
296
|
-
onClick: () => {
|
|
297
|
-
setIsCreateDrawerOpen(true);
|
|
298
|
-
openModal(createDrawerSlug);
|
|
299
|
-
},
|
|
300
|
-
children: /*#__PURE__*/_jsx(PlusIcon, {
|
|
301
|
-
size: 24
|
|
302
|
-
})
|
|
303
|
-
}), isCreateDrawerOpen && /*#__PURE__*/_jsx(DocumentDrawer, {
|
|
304
|
-
collectionSlug: collectionSlug,
|
|
305
|
-
drawerSlug: createDrawerSlug,
|
|
306
|
-
initialData: parentFieldName ? {
|
|
307
|
-
[parentFieldName]: null
|
|
308
|
-
} : undefined,
|
|
309
|
-
onSave: async () => {
|
|
310
|
-
closeModal(createDrawerSlug);
|
|
311
|
-
setIsCreateDrawerOpen(false);
|
|
312
|
-
await refresh();
|
|
313
|
-
router.refresh();
|
|
314
|
-
},
|
|
315
|
-
redirectAfterCreate: false
|
|
288
|
+
})?.labels?.plural, i18n)
|
|
316
289
|
})]
|
|
290
|
+
}), expandedNodes.size > 0 && /*#__PURE__*/_jsx(Button, {
|
|
291
|
+
"aria-label": t('fields:collapseAll'),
|
|
292
|
+
buttonStyle: "ghost",
|
|
293
|
+
className: `${baseClass}__collapse-all-button`,
|
|
294
|
+
margin: false,
|
|
295
|
+
onClick: handleCollapseAll,
|
|
296
|
+
tooltip: t('fields:collapseAll'),
|
|
297
|
+
children: /*#__PURE__*/_jsx(CollapseLayersIcon, {})
|
|
317
298
|
})]
|
|
318
299
|
}), rootNodes.map(node_0 => {
|
|
319
300
|
const nodeId_0 = node_0.id;
|
|
@@ -321,13 +302,14 @@ const HierarchyTreeInner = ({
|
|
|
321
302
|
const nodeTitle = getDocumentTitle(node_0, useAsTitle);
|
|
322
303
|
return /*#__PURE__*/_jsx(TreeNode, {
|
|
323
304
|
allPossibleTypeValues: allPossibleTypeValues,
|
|
305
|
+
ancestorIds: ROOT_ANCESTOR_IDS,
|
|
324
306
|
baseFilter: baseFilter,
|
|
325
307
|
cache: childrenCache,
|
|
326
308
|
collectionSlug: collectionSlug,
|
|
327
309
|
depth: 0,
|
|
310
|
+
dropParentFieldName: parentFieldName,
|
|
328
311
|
expandedNodes: expandedNodes,
|
|
329
312
|
filterByCollections: filterByCollections,
|
|
330
|
-
icon: icon,
|
|
331
313
|
limit: treeLimit,
|
|
332
314
|
node: {
|
|
333
315
|
id: nodeId_0,
|