@payloadcms/ui 3.80.0-internal.cdd7ef7 → 3.80.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/EditForm/index.js +12 -0
- package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +29 -7
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/Button/index.d.ts.map +1 -1
- package/dist/elements/Button/index.js +3 -5
- package/dist/elements/Button/index.js.map +1 -1
- package/dist/elements/Button/index.scss +5 -38
- 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/CheckboxPopup/index.d.ts.map +1 -1
- package/dist/elements/CheckboxPopup/index.js +1 -0
- package/dist/elements/CheckboxPopup/index.js.map +1 -1
- package/dist/elements/CheckboxPopup/index.scss +0 -1
- package/dist/elements/DefaultListViewTabs/index.d.ts.map +1 -1
- package/dist/elements/DefaultListViewTabs/index.js +54 -28
- package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
- package/dist/elements/DocumentControls/index.d.ts +0 -1
- package/dist/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/elements/DocumentControls/index.js +10 -6
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/DocumentControls/index.scss +1 -1
- package/dist/elements/DocumentDrawer/index.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/index.js +141 -54
- package/dist/elements/DocumentDrawer/index.js.map +1 -1
- package/dist/elements/DocumentDrawer/types.d.ts +1 -7
- package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/types.js.map +1 -1
- package/dist/elements/DrawerActionHeader/index.d.ts.map +1 -1
- package/dist/elements/DrawerActionHeader/index.js +0 -2
- package/dist/elements/DrawerActionHeader/index.js.map +1 -1
- package/dist/elements/DrawerActionHeader/index.scss +2 -2
- package/dist/elements/FolderView/Breadcrumbs/index.d.ts +19 -0
- package/dist/elements/FolderView/Breadcrumbs/index.d.ts.map +1 -0
- package/dist/elements/FolderView/Breadcrumbs/index.js +96 -0
- package/dist/elements/FolderView/Breadcrumbs/index.js.map +1 -0
- package/dist/elements/FolderView/Breadcrumbs/index.scss +56 -0
- package/dist/elements/FolderView/BrowseByFolderButton/index.d.ts +6 -0
- package/dist/elements/FolderView/BrowseByFolderButton/index.d.ts.map +1 -0
- package/dist/elements/FolderView/BrowseByFolderButton/index.js +40 -0
- package/dist/elements/FolderView/BrowseByFolderButton/index.js.map +1 -0
- package/dist/elements/FolderView/BrowseByFolderButton/index.scss +30 -0
- package/dist/elements/FolderView/Cell/index.client.d.ts +13 -0
- package/dist/elements/FolderView/Cell/index.client.d.ts.map +1 -0
- package/dist/elements/FolderView/Cell/index.client.js +95 -0
- package/dist/elements/FolderView/Cell/index.client.js.map +1 -0
- package/dist/elements/FolderView/Cell/index.server.d.ts +4 -0
- package/dist/elements/FolderView/Cell/index.server.d.ts.map +1 -0
- package/dist/elements/FolderView/Cell/index.server.js +18 -0
- package/dist/elements/FolderView/Cell/index.server.js.map +1 -0
- package/dist/elements/FolderView/ColoredFolderIcon/index.d.ts +3 -0
- package/dist/elements/FolderView/ColoredFolderIcon/index.d.ts.map +1 -0
- package/dist/elements/FolderView/ColoredFolderIcon/index.js +9 -0
- package/dist/elements/FolderView/ColoredFolderIcon/index.js.map +1 -0
- package/dist/elements/FolderView/ColoredFolderIcon/index.scss +5 -0
- package/dist/elements/FolderView/CurrentFolderActions/index.d.ts +7 -0
- package/dist/elements/FolderView/CurrentFolderActions/index.d.ts.map +1 -0
- package/dist/elements/FolderView/CurrentFolderActions/index.js +162 -0
- package/dist/elements/FolderView/CurrentFolderActions/index.js.map +1 -0
- package/dist/elements/FolderView/DragOverlaySelection/index.d.ts +11 -0
- package/dist/elements/FolderView/DragOverlaySelection/index.d.ts.map +1 -0
- package/dist/elements/FolderView/DragOverlaySelection/index.js +62 -0
- package/dist/elements/FolderView/DragOverlaySelection/index.js.map +1 -0
- package/dist/elements/FolderView/DragOverlaySelection/index.scss +35 -0
- package/dist/elements/FolderView/DraggableTableRow/index.d.ts +18 -0
- package/dist/elements/FolderView/DraggableTableRow/index.d.ts.map +1 -0
- package/dist/elements/FolderView/DraggableTableRow/index.js +63 -0
- package/dist/elements/FolderView/DraggableTableRow/index.js.map +1 -0
- package/dist/elements/FolderView/DraggableTableRow/index.scss +135 -0
- package/dist/elements/FolderView/DraggableWithClick/index.d.ts +15 -0
- package/dist/elements/FolderView/DraggableWithClick/index.d.ts.map +1 -0
- package/dist/elements/FolderView/DraggableWithClick/index.js +86 -0
- package/dist/elements/FolderView/DraggableWithClick/index.js.map +1 -0
- package/dist/elements/FolderView/DraggableWithClick/index.scss +5 -0
- package/dist/elements/FolderView/Drawers/EditFolderAction/index.d.ts +7 -0
- package/dist/elements/FolderView/Drawers/EditFolderAction/index.d.ts.map +1 -0
- package/dist/elements/FolderView/Drawers/EditFolderAction/index.js +39 -0
- package/dist/elements/FolderView/Drawers/EditFolderAction/index.js.map +1 -0
- package/dist/elements/FolderView/Drawers/MoveToFolder/index.d.ts +37 -0
- package/dist/elements/FolderView/Drawers/MoveToFolder/index.d.ts.map +1 -0
- package/dist/elements/FolderView/Drawers/MoveToFolder/index.js +609 -0
- package/dist/elements/FolderView/Drawers/MoveToFolder/index.js.map +1 -0
- package/dist/elements/FolderView/Drawers/MoveToFolder/index.scss +30 -0
- package/dist/elements/FolderView/FilterFolderTypePill/index.d.ts +4 -0
- package/dist/elements/FolderView/FilterFolderTypePill/index.d.ts.map +1 -0
- package/dist/elements/FolderView/FilterFolderTypePill/index.js +102 -0
- package/dist/elements/FolderView/FilterFolderTypePill/index.js.map +1 -0
- package/dist/elements/FolderView/FilterFolderTypePill/index.scss +16 -0
- package/dist/elements/FolderView/FolderField/index.scss +12 -0
- package/dist/elements/FolderView/FolderField/index.server.d.ts +4 -0
- package/dist/elements/FolderView/FolderField/index.server.d.ts.map +1 -0
- package/dist/elements/FolderView/FolderField/index.server.js +16 -0
- package/dist/elements/FolderView/FolderField/index.server.js.map +1 -0
- package/dist/elements/FolderView/FolderFileCard/index.d.ts +30 -0
- package/dist/elements/FolderView/FolderFileCard/index.d.ts.map +1 -0
- package/dist/elements/FolderView/FolderFileCard/index.js +209 -0
- package/dist/elements/FolderView/FolderFileCard/index.js.map +1 -0
- package/dist/elements/FolderView/FolderFileCard/index.scss +247 -0
- package/dist/elements/FolderView/FolderFileTable/index.d.ts +8 -0
- package/dist/elements/FolderView/FolderFileTable/index.d.ts.map +1 -0
- package/dist/elements/FolderView/FolderFileTable/index.js +284 -0
- package/dist/elements/FolderView/FolderFileTable/index.js.map +1 -0
- package/dist/elements/FolderView/FolderFileTable/index.scss +11 -0
- package/dist/elements/FolderView/FolderTypeField/index.d.ts +4 -0
- package/dist/elements/FolderView/FolderTypeField/index.d.ts.map +1 -0
- package/dist/elements/FolderView/FolderTypeField/index.js +123 -0
- package/dist/elements/FolderView/FolderTypeField/index.js.map +1 -0
- package/dist/elements/FolderView/ItemCardGrid/index.d.ts +16 -0
- package/dist/elements/FolderView/ItemCardGrid/index.d.ts.map +1 -0
- package/dist/elements/FolderView/ItemCardGrid/index.js +34 -0
- package/dist/elements/FolderView/ItemCardGrid/index.js.map +1 -0
- package/dist/elements/FolderView/ItemCardGrid/index.scss +16 -0
- package/dist/elements/FolderView/MoveDocToFolder/index.d.ts +37 -0
- package/dist/elements/FolderView/MoveDocToFolder/index.d.ts.map +1 -0
- package/dist/elements/FolderView/MoveDocToFolder/index.js +292 -0
- package/dist/elements/FolderView/MoveDocToFolder/index.js.map +1 -0
- package/dist/elements/{Hierarchy/DocHeaderButton → FolderView/MoveDocToFolder}/index.scss +1 -7
- package/dist/elements/FolderView/SimpleTable/index.d.ts +19 -0
- package/dist/elements/FolderView/SimpleTable/index.d.ts.map +1 -0
- package/dist/elements/FolderView/SimpleTable/index.js +95 -0
- package/dist/elements/FolderView/SimpleTable/index.js.map +1 -0
- package/dist/elements/FolderView/SimpleTable/index.scss +59 -0
- package/dist/elements/FolderView/SortByPill/index.d.ts +4 -0
- package/dist/elements/FolderView/SortByPill/index.d.ts.map +1 -0
- package/dist/elements/FolderView/SortByPill/index.js +112 -0
- package/dist/elements/FolderView/SortByPill/index.js.map +1 -0
- package/dist/elements/FolderView/SortByPill/index.scss +16 -0
- package/dist/elements/FolderView/ToggleViewButtons/index.d.ts +8 -0
- package/dist/elements/FolderView/ToggleViewButtons/index.d.ts.map +1 -0
- package/dist/elements/FolderView/ToggleViewButtons/index.js +31 -0
- package/dist/elements/FolderView/ToggleViewButtons/index.js.map +1 -0
- package/dist/elements/FolderView/ToggleViewButtons/index.scss +17 -0
- package/dist/elements/Link/index.d.ts +0 -4
- package/dist/elements/Link/index.d.ts.map +1 -1
- package/dist/elements/Link/index.js +0 -5
- package/dist/elements/Link/index.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.d.ts +15 -0
- package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.d.ts.map +1 -0
- package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js +182 -0
- package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js.map +1 -0
- package/dist/elements/ListHeader/TitleActions/index.d.ts +1 -0
- package/dist/elements/ListHeader/TitleActions/index.d.ts.map +1 -1
- package/dist/elements/ListHeader/TitleActions/index.js +1 -0
- package/dist/elements/ListHeader/TitleActions/index.js.map +1 -1
- package/dist/elements/ListHeader/index.js +2 -2
- package/dist/elements/ListHeader/index.js.map +1 -1
- package/dist/elements/ListSelection/index.scss +1 -2
- package/dist/elements/LivePreview/Window/index.d.ts.map +1 -1
- package/dist/elements/LivePreview/Window/index.js +9 -7
- package/dist/elements/LivePreview/Window/index.js.map +1 -1
- package/dist/elements/Locked/index.scss +1 -1
- package/dist/elements/RelationshipTable/index.js +3 -3
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/StepNav/index.d.ts.map +1 -1
- package/dist/elements/StepNav/index.js +1 -10
- package/dist/elements/StepNav/index.js.map +1 -1
- package/dist/elements/StepNav/types.d.ts +0 -1
- package/dist/elements/StepNav/types.d.ts.map +1 -1
- package/dist/elements/StepNav/types.js.map +1 -1
- package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js +0 -20
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/Tooltip/index.js +1 -1
- package/dist/elements/Tooltip/index.js.map +1 -1
- package/dist/elements/Tooltip/index.scss +15 -1
- package/dist/exports/client/index.d.ts +10 -27
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +24 -26
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/rsc/index.d.ts +3 -3
- package/dist/exports/rsc/index.d.ts.map +1 -1
- package/dist/exports/rsc/index.js +3 -3
- package/dist/exports/rsc/index.js.map +1 -1
- package/dist/fields/Join/index.d.ts.map +1 -1
- package/dist/fields/Join/index.js +1 -1
- package/dist/fields/Join/index.js.map +1 -1
- package/dist/fields/shared/index.d.ts +2 -2
- package/dist/fields/shared/index.d.ts.map +1 -1
- package/dist/fields/shared/index.js.map +1 -1
- package/dist/icons/Chevron/index.d.ts.map +1 -1
- package/dist/icons/Chevron/index.js +1 -5
- package/dist/icons/Chevron/index.js.map +1 -1
- package/dist/icons/Document/index.d.ts +1 -3
- package/dist/icons/Document/index.d.ts.map +1 -1
- package/dist/icons/Document/index.js +2 -4
- package/dist/icons/Document/index.js.map +1 -1
- package/dist/icons/Document/index.scss +0 -4
- package/dist/icons/Folder/index.d.ts +2 -4
- package/dist/icons/Folder/index.d.ts.map +1 -1
- package/dist/icons/Folder/index.js +2 -4
- package/dist/icons/Folder/index.js.map +1 -1
- package/dist/icons/Folder/index.scss +0 -8
- package/dist/icons/Lock/index.scss +1 -1
- package/dist/icons/Plus/index.d.ts.map +1 -1
- package/dist/icons/Plus/index.js +1 -2
- package/dist/icons/Plus/index.js.map +1 -1
- package/dist/providers/Folders/groupItemIDsByRelation.d.ts +3 -0
- package/dist/providers/Folders/groupItemIDsByRelation.d.ts.map +1 -0
- package/dist/providers/Folders/groupItemIDsByRelation.js +10 -0
- package/dist/providers/Folders/groupItemIDsByRelation.js.map +1 -0
- package/dist/providers/Folders/index.d.ts +143 -0
- package/dist/providers/Folders/index.d.ts.map +1 -0
- package/dist/providers/Folders/index.js +641 -0
- package/dist/providers/Folders/index.js.map +1 -0
- package/dist/providers/LivePreview/context.d.ts +6 -0
- package/dist/providers/LivePreview/context.d.ts.map +1 -1
- package/dist/providers/LivePreview/context.js +1 -0
- package/dist/providers/LivePreview/context.js.map +1 -1
- package/dist/providers/LivePreview/index.d.ts.map +1 -1
- package/dist/providers/LivePreview/index.js +13 -1
- package/dist/providers/LivePreview/index.js.map +1 -1
- package/dist/providers/Root/index.d.ts.map +1 -1
- package/dist/providers/Root/index.js +15 -18
- package/dist/providers/Root/index.js.map +1 -1
- package/dist/providers/ServerFunctions/index.d.ts +6 -1
- package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
- package/dist/providers/ServerFunctions/index.js +18 -0
- package/dist/providers/ServerFunctions/index.js.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts +1 -2
- package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/renderCell.js +1 -34
- package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utilities/getFolderResultsComponentAndData.d.ts +25 -0
- package/dist/utilities/getFolderResultsComponentAndData.d.ts.map +1 -0
- package/dist/utilities/getFolderResultsComponentAndData.js +135 -0
- package/dist/utilities/getFolderResultsComponentAndData.js.map +1 -0
- package/dist/utilities/handleLivePreview.d.ts.map +1 -1
- package/dist/utilities/renderTable.d.ts +1 -3
- package/dist/utilities/renderTable.d.ts.map +1 -1
- package/dist/utilities/renderTable.js +3 -9
- package/dist/utilities/renderTable.js.map +1 -1
- package/dist/views/BrowseByFolder/index.d.ts +5 -0
- package/dist/views/BrowseByFolder/index.d.ts.map +1 -0
- package/dist/views/BrowseByFolder/index.js +342 -0
- package/dist/views/BrowseByFolder/index.js.map +1 -0
- package/dist/views/BrowseByFolder/index.scss +174 -0
- package/dist/views/CollectionFolder/ListSelection/index.d.ts +9 -0
- package/dist/views/CollectionFolder/ListSelection/index.d.ts.map +1 -0
- package/dist/views/CollectionFolder/ListSelection/index.js +180 -0
- package/dist/views/CollectionFolder/ListSelection/index.js.map +1 -0
- package/dist/views/CollectionFolder/index.d.ts +5 -0
- package/dist/views/CollectionFolder/index.d.ts.map +1 -0
- package/dist/views/CollectionFolder/index.js +325 -0
- package/dist/views/CollectionFolder/index.js.map +1 -0
- package/dist/views/CollectionFolder/index.scss +162 -0
- package/dist/views/Edit/index.d.ts +1 -1
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +10 -8
- package/dist/views/Edit/index.js.map +1 -1
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +7 -51
- package/dist/views/List/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/elements/CreateDocumentButton/index.d.ts +0 -26
- package/dist/elements/CreateDocumentButton/index.d.ts.map +0 -1
- package/dist/elements/CreateDocumentButton/index.js +0 -182
- package/dist/elements/CreateDocumentButton/index.js.map +0 -1
- package/dist/elements/DelayedSpinner/index.d.ts +0 -23
- package/dist/elements/DelayedSpinner/index.d.ts.map +0 -1
- package/dist/elements/DelayedSpinner/index.js +0 -61
- package/dist/elements/DelayedSpinner/index.js.map +0 -1
- package/dist/elements/Hierarchy/ColumnBrowser/Column/index.d.ts +0 -5
- package/dist/elements/Hierarchy/ColumnBrowser/Column/index.d.ts.map +0 -1
- package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js +0 -166
- package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js.map +0 -1
- package/dist/elements/Hierarchy/ColumnBrowser/Column/index.scss +0 -63
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.d.ts +0 -5
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.d.ts.map +0 -1
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js +0 -161
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js.map +0 -1
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.scss +0 -105
- package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts +0 -8
- package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +0 -1
- package/dist/elements/Hierarchy/ColumnBrowser/index.js +0 -473
- package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +0 -1
- package/dist/elements/Hierarchy/ColumnBrowser/index.scss +0 -20
- package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts +0 -106
- package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts.map +0 -1
- package/dist/elements/Hierarchy/ColumnBrowser/types.js +0 -2
- package/dist/elements/Hierarchy/ColumnBrowser/types.js.map +0 -1
- package/dist/elements/Hierarchy/DocHeaderButton/index.d.ts +0 -11
- package/dist/elements/Hierarchy/DocHeaderButton/index.d.ts.map +0 -1
- package/dist/elements/Hierarchy/DocHeaderButton/index.js +0 -126
- package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +0 -1
- package/dist/elements/Hierarchy/DocHeaderButton/index.server.d.ts +0 -10
- package/dist/elements/Hierarchy/DocHeaderButton/index.server.d.ts.map +0 -1
- package/dist/elements/Hierarchy/DocHeaderButton/index.server.js +0 -34
- package/dist/elements/Hierarchy/DocHeaderButton/index.server.js.map +0 -1
- package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.d.ts +0 -15
- package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.js +0 -60
- package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.js.map +0 -1
- package/dist/elements/Hierarchy/Drawer/index.d.ts +0 -20
- package/dist/elements/Hierarchy/Drawer/index.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Drawer/index.js +0 -291
- package/dist/elements/Hierarchy/Drawer/index.js.map +0 -1
- package/dist/elements/Hierarchy/Drawer/index.scss +0 -81
- package/dist/elements/Hierarchy/Drawer/types.d.ts +0 -68
- package/dist/elements/Hierarchy/Drawer/types.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Drawer/types.js +0 -3
- package/dist/elements/Hierarchy/Drawer/types.js.map +0 -1
- package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.d.ts +0 -30
- package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.js +0 -148
- package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.js.map +0 -1
- 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 -185
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +0 -1
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.scss +0 -78
- package/dist/elements/Hierarchy/Field/index.client.d.ts +0 -8
- package/dist/elements/Hierarchy/Field/index.client.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Field/index.client.js +0 -186
- package/dist/elements/Hierarchy/Field/index.client.js.map +0 -1
- package/dist/elements/Hierarchy/Field/index.scss +0 -35
- package/dist/elements/Hierarchy/Field/index.server.d.ts +0 -3
- package/dist/elements/Hierarchy/Field/index.server.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Field/index.server.js +0 -30
- package/dist/elements/Hierarchy/Field/index.server.js.map +0 -1
- package/dist/elements/Hierarchy/HydrateProvider/index.d.ts +0 -4
- package/dist/elements/Hierarchy/HydrateProvider/index.d.ts.map +0 -1
- package/dist/elements/Hierarchy/HydrateProvider/index.js +0 -70
- package/dist/elements/Hierarchy/HydrateProvider/index.js.map +0 -1
- package/dist/elements/Hierarchy/MoveMany/index.d.ts +0 -22
- package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +0 -1
- package/dist/elements/Hierarchy/MoveMany/index.js +0 -278
- package/dist/elements/Hierarchy/MoveMany/index.js.map +0 -1
- package/dist/elements/Hierarchy/MoveMany/index.scss +0 -7
- package/dist/elements/Hierarchy/Search/HierarchySearchInput.d.ts +0 -18
- package/dist/elements/Hierarchy/Search/HierarchySearchInput.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Search/HierarchySearchInput.js +0 -115
- package/dist/elements/Hierarchy/Search/HierarchySearchInput.js.map +0 -1
- package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.d.ts +0 -13
- package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.js +0 -88
- package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.js.map +0 -1
- package/dist/elements/Hierarchy/Search/HierarchySearchResults.d.ts +0 -17
- package/dist/elements/Hierarchy/Search/HierarchySearchResults.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Search/HierarchySearchResults.js +0 -85
- package/dist/elements/Hierarchy/Search/HierarchySearchResults.js.map +0 -1
- package/dist/elements/Hierarchy/Search/index.d.ts +0 -10
- package/dist/elements/Hierarchy/Search/index.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Search/index.js +0 -144
- package/dist/elements/Hierarchy/Search/index.js.map +0 -1
- package/dist/elements/Hierarchy/Search/index.scss +0 -212
- package/dist/elements/Hierarchy/Search/types.d.ts +0 -21
- package/dist/elements/Hierarchy/Search/types.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Search/types.js +0 -2
- package/dist/elements/Hierarchy/Search/types.js.map +0 -1
- package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts +0 -20
- package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Search/useHierarchySearch.js +0 -122
- package/dist/elements/Hierarchy/Search/useHierarchySearch.js.map +0 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts +0 -21
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +0 -162
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +0 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts +0 -7
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js +0 -177
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +0 -1
- package/dist/elements/Hierarchy/Tree/LoadMore/LoadMoreButton.d.ts +0 -8
- package/dist/elements/Hierarchy/Tree/LoadMore/LoadMoreButton.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Tree/LoadMore/LoadMoreButton.js +0 -36
- package/dist/elements/Hierarchy/Tree/LoadMore/LoadMoreButton.js.map +0 -1
- package/dist/elements/Hierarchy/Tree/LoadMore/index.d.ts +0 -12
- package/dist/elements/Hierarchy/Tree/LoadMore/index.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Tree/LoadMore/index.js +0 -29
- package/dist/elements/Hierarchy/Tree/LoadMore/index.js.map +0 -1
- package/dist/elements/Hierarchy/Tree/LoadMore/index.scss +0 -26
- package/dist/elements/Hierarchy/Tree/TreeConnector.d.ts +0 -7
- package/dist/elements/Hierarchy/Tree/TreeConnector.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Tree/TreeConnector.js +0 -23
- package/dist/elements/Hierarchy/Tree/TreeConnector.js.map +0 -1
- package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts +0 -28
- package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Tree/TreeFocusContext.js +0 -140
- package/dist/elements/Hierarchy/Tree/TreeFocusContext.js.map +0 -1
- package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts +0 -5
- package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Tree/TreeNode/index.js +0 -225
- package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +0 -1
- package/dist/elements/Hierarchy/Tree/TreeNode/index.scss +0 -110
- package/dist/elements/Hierarchy/Tree/index.d.ts +0 -5
- package/dist/elements/Hierarchy/Tree/index.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Tree/index.js +0 -270
- package/dist/elements/Hierarchy/Tree/index.js.map +0 -1
- package/dist/elements/Hierarchy/Tree/index.scss +0 -60
- package/dist/elements/Hierarchy/Tree/types.d.ts +0 -76
- package/dist/elements/Hierarchy/Tree/types.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Tree/types.js +0 -2
- package/dist/elements/Hierarchy/Tree/types.js.map +0 -1
- package/dist/elements/Hierarchy/Tree/useChildren.d.ts +0 -32
- package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Tree/useChildren.js +0 -229
- package/dist/elements/Hierarchy/Tree/useChildren.js.map +0 -1
- package/dist/elements/LoadMoreRow/index.d.ts +0 -15
- package/dist/elements/LoadMoreRow/index.d.ts.map +0 -1
- package/dist/elements/LoadMoreRow/index.js +0 -75
- package/dist/elements/LoadMoreRow/index.js.map +0 -1
- package/dist/elements/LoadMoreRow/index.scss +0 -42
- package/dist/elements/Spinner/index.d.ts +0 -16
- package/dist/elements/Spinner/index.d.ts.map +0 -1
- package/dist/elements/Spinner/index.js +0 -49
- package/dist/elements/Spinner/index.js.map +0 -1
- package/dist/elements/Spinner/index.scss +0 -39
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts +0 -6
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +0 -1
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +0 -187
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +0 -1
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.scss +0 -29
- package/dist/fields/Null/index.d.ts +0 -11
- package/dist/fields/Null/index.d.ts.map +0 -1
- package/dist/fields/Null/index.js +0 -13
- package/dist/fields/Null/index.js.map +0 -1
- package/dist/icons/Filter/index.d.ts +0 -4
- package/dist/icons/Filter/index.d.ts.map +0 -1
- package/dist/icons/Filter/index.js +0 -15
- package/dist/icons/Filter/index.js.map +0 -1
- package/dist/icons/Filter/index.scss +0 -13
- package/dist/icons/TableView/index.d.ts +0 -3
- package/dist/icons/TableView/index.d.ts.map +0 -1
- package/dist/icons/TableView/index.js +0 -16
- package/dist/icons/TableView/index.js.map +0 -1
- package/dist/icons/Tag/index.d.ts +0 -8
- package/dist/icons/Tag/index.d.ts.map +0 -1
- package/dist/icons/Tag/index.js +0 -22
- package/dist/icons/Tag/index.js.map +0 -1
- package/dist/icons/Tag/index.scss +0 -14
- package/dist/providers/DocumentSelection/index.d.ts +0 -8
- package/dist/providers/DocumentSelection/index.d.ts.map +0 -1
- package/dist/providers/DocumentSelection/index.js +0 -239
- package/dist/providers/DocumentSelection/index.js.map +0 -1
- package/dist/providers/DocumentSelection/types.d.ts +0 -122
- package/dist/providers/DocumentSelection/types.d.ts.map +0 -1
- package/dist/providers/DocumentSelection/types.js +0 -5
- package/dist/providers/DocumentSelection/types.js.map +0 -1
- package/dist/providers/Hierarchy/index.d.ts +0 -5
- package/dist/providers/Hierarchy/index.d.ts.map +0 -1
- package/dist/providers/Hierarchy/index.js +0 -350
- package/dist/providers/Hierarchy/index.js.map +0 -1
- package/dist/providers/Hierarchy/types.d.ts +0 -106
- package/dist/providers/Hierarchy/types.d.ts.map +0 -1
- package/dist/providers/Hierarchy/types.js +0 -2
- package/dist/providers/Hierarchy/types.js.map +0 -1
- package/dist/providers/SidebarTabs/index.d.ts +0 -19
- package/dist/providers/SidebarTabs/index.d.ts.map +0 -1
- package/dist/providers/SidebarTabs/index.js +0 -24
- package/dist/providers/SidebarTabs/index.js.map +0 -1
- package/dist/utilities/isSuperset.d.ts +0 -6
- package/dist/utilities/isSuperset.d.ts.map +0 -1
- package/dist/utilities/isSuperset.js +0 -10
- package/dist/utilities/isSuperset.js.map +0 -1
- package/dist/views/HierarchyList/DocumentListSelection/index.d.ts +0 -10
- package/dist/views/HierarchyList/DocumentListSelection/index.d.ts.map +0 -1
- package/dist/views/HierarchyList/DocumentListSelection/index.js +0 -194
- package/dist/views/HierarchyList/DocumentListSelection/index.js.map +0 -1
- package/dist/views/HierarchyList/HierarchyListHeader/index.d.ts +0 -21
- package/dist/views/HierarchyList/HierarchyListHeader/index.d.ts.map +0 -1
- package/dist/views/HierarchyList/HierarchyListHeader/index.js +0 -67
- package/dist/views/HierarchyList/HierarchyListHeader/index.js.map +0 -1
- package/dist/views/HierarchyList/HierarchyListHeader/index.scss +0 -9
- package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.d.ts +0 -4
- package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.d.ts.map +0 -1
- package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js +0 -104
- package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js.map +0 -1
- package/dist/views/HierarchyList/HierarchyTable/DateCell.d.ts +0 -4
- package/dist/views/HierarchyList/HierarchyTable/DateCell.d.ts.map +0 -1
- package/dist/views/HierarchyList/HierarchyTable/DateCell.js +0 -53
- package/dist/views/HierarchyList/HierarchyTable/DateCell.js.map +0 -1
- package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.d.ts +0 -4
- package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.d.ts.map +0 -1
- package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.js +0 -128
- package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.js.map +0 -1
- package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts +0 -99
- package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts.map +0 -1
- package/dist/views/HierarchyList/HierarchyTable/SlotTable.js +0 -118
- package/dist/views/HierarchyList/HierarchyTable/SlotTable.js.map +0 -1
- package/dist/views/HierarchyList/HierarchyTable/SlotTable.scss +0 -214
- package/dist/views/HierarchyList/HierarchyTable/index.d.ts +0 -27
- package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +0 -1
- package/dist/views/HierarchyList/HierarchyTable/index.js +0 -388
- package/dist/views/HierarchyList/HierarchyTable/index.js.map +0 -1
- package/dist/views/HierarchyList/HierarchyTable/index.scss +0 -148
- package/dist/views/HierarchyList/HierarchyTable/types.d.ts +0 -20
- package/dist/views/HierarchyList/HierarchyTable/types.d.ts.map +0 -1
- package/dist/views/HierarchyList/HierarchyTable/types.js +0 -2
- package/dist/views/HierarchyList/HierarchyTable/types.js.map +0 -1
- package/dist/views/HierarchyList/TypeFilter/index.d.ts +0 -15
- package/dist/views/HierarchyList/TypeFilter/index.d.ts.map +0 -1
- package/dist/views/HierarchyList/TypeFilter/index.js +0 -37
- package/dist/views/HierarchyList/TypeFilter/index.js.map +0 -1
- package/dist/views/HierarchyList/TypeFilter/index.scss +0 -32
- package/dist/views/HierarchyList/index.d.ts +0 -5
- package/dist/views/HierarchyList/index.d.ts.map +0 -1
- package/dist/views/HierarchyList/index.js +0 -305
- package/dist/views/HierarchyList/index.js.map +0 -1
- package/dist/views/HierarchyList/index.scss +0 -72
|
@@ -1,473 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
-
import { getTranslation } from '@payloadcms/translations';
|
|
5
|
-
import { combineWhereConstraints, DEFAULT_HIERARCHY_TREE_LIMIT, formatAdminURL } from 'payload/shared';
|
|
6
|
-
import * as qs from 'qs-esm';
|
|
7
|
-
import React, { useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react';
|
|
8
|
-
import { useEffectEvent } from '../../../hooks/useEffectEvent.js';
|
|
9
|
-
import { useAuth } from '../../../providers/Auth/index.js';
|
|
10
|
-
import { useConfig } from '../../../providers/Config/index.js';
|
|
11
|
-
import { useTranslation } from '../../../providers/Translation/index.js';
|
|
12
|
-
import { isSuperset } from '../../../utilities/isSuperset.js';
|
|
13
|
-
import { Spinner } from '../../Spinner/index.js';
|
|
14
|
-
import { Column } from './Column/index.js';
|
|
15
|
-
import './index.scss';
|
|
16
|
-
const baseClass = 'hierarchy-column-browser';
|
|
17
|
-
export const HierarchyColumnBrowser = function HierarchyColumnBrowser({
|
|
18
|
-
ancestorsWithSelections,
|
|
19
|
-
baseFilter,
|
|
20
|
-
disabledIds,
|
|
21
|
-
filterByCollection,
|
|
22
|
-
hierarchyCollectionSlug,
|
|
23
|
-
initialExpandedPath,
|
|
24
|
-
isLoadingPath,
|
|
25
|
-
onCreateNew,
|
|
26
|
-
onSelect,
|
|
27
|
-
parentFieldName,
|
|
28
|
-
ref,
|
|
29
|
-
selectedIds,
|
|
30
|
-
useAsTitle = 'id'
|
|
31
|
-
}) {
|
|
32
|
-
const {
|
|
33
|
-
i18n
|
|
34
|
-
} = useTranslation();
|
|
35
|
-
const {
|
|
36
|
-
permissions
|
|
37
|
-
} = useAuth();
|
|
38
|
-
const {
|
|
39
|
-
config: {
|
|
40
|
-
routes: {
|
|
41
|
-
api
|
|
42
|
-
},
|
|
43
|
-
serverURL
|
|
44
|
-
},
|
|
45
|
-
getEntityConfig
|
|
46
|
-
} = useConfig();
|
|
47
|
-
const collectionConfig = getEntityConfig({
|
|
48
|
-
collectionSlug: hierarchyCollectionSlug
|
|
49
|
-
});
|
|
50
|
-
const hierarchyConfig = collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object' ? collectionConfig.hierarchy : undefined;
|
|
51
|
-
const treeLimit = hierarchyConfig?.admin?.treeLimit ?? DEFAULT_HIERARCHY_TREE_LIMIT;
|
|
52
|
-
const collectionLabel = collectionConfig ? getTranslation(collectionConfig.labels?.singular || hierarchyCollectionSlug, i18n) : hierarchyCollectionSlug;
|
|
53
|
-
const canCreate = Boolean(permissions?.collections?.[hierarchyCollectionSlug]?.create);
|
|
54
|
-
const [columns, setColumns] = useState([]);
|
|
55
|
-
const [expandedPath, setExpandedPath] = useState([]);
|
|
56
|
-
const containerRef = useRef(null);
|
|
57
|
-
const lastColumnRef = useRef(null);
|
|
58
|
-
const hasLoadedRef = useRef(false);
|
|
59
|
-
const fetchItems = useCallback(async ({
|
|
60
|
-
page,
|
|
61
|
-
parentId
|
|
62
|
-
}) => {
|
|
63
|
-
const parentWhere = parentId === null ? {
|
|
64
|
-
[parentFieldName]: {
|
|
65
|
-
exists: false
|
|
66
|
-
}
|
|
67
|
-
} : {
|
|
68
|
-
[parentFieldName]: {
|
|
69
|
-
equals: parentId
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
// Build the final where clause, adding collectionSpecific filtering if configured
|
|
73
|
-
let where = parentWhere;
|
|
74
|
-
// Filter by collection type if collectionSpecific is configured and filterByCollection is defined
|
|
75
|
-
// - undefined: no filtering, show all folders
|
|
76
|
-
// - [] empty: show all folders (no constraints)
|
|
77
|
-
// - ['posts', ...]: show folders that allow ANY of these OR unrestricted
|
|
78
|
-
// Note: Ideally we'd enforce ALL (superset) but hasMany enum fields in PG
|
|
79
|
-
// do not support "contains all" queries easily
|
|
80
|
-
if (hierarchyConfig?.collectionSpecific && filterByCollection !== undefined) {
|
|
81
|
-
const typeFieldName = hierarchyConfig.collectionSpecific.fieldName;
|
|
82
|
-
if (filterByCollection.length > 0) {
|
|
83
|
-
// Get all possible type field values from relatedCollections
|
|
84
|
-
// This is used to detect "unrestricted" folders (empty allowedTypes array)
|
|
85
|
-
const allPossibleTypes = Object.keys(hierarchyConfig.relatedCollections || {});
|
|
86
|
-
where = {
|
|
87
|
-
and: [parentWhere, {
|
|
88
|
-
or: [
|
|
89
|
-
// items that allow ANY of the selected collections
|
|
90
|
-
{
|
|
91
|
-
[typeFieldName]: {
|
|
92
|
-
in: filterByCollection
|
|
93
|
-
}
|
|
94
|
-
},
|
|
95
|
-
// OR items that are unrestricted (no type field exists)
|
|
96
|
-
{
|
|
97
|
-
[typeFieldName]: {
|
|
98
|
-
exists: false
|
|
99
|
-
}
|
|
100
|
-
},
|
|
101
|
-
// OR items with empty allowedTypes array (unrestricted)
|
|
102
|
-
// Using not_in with all possible values matches empty arrays in both MongoDB and Postgres
|
|
103
|
-
...(allPossibleTypes.length > 0 ? [{
|
|
104
|
-
[typeFieldName]: {
|
|
105
|
-
not_in: allPossibleTypes
|
|
106
|
-
}
|
|
107
|
-
}] : [])]
|
|
108
|
-
}]
|
|
109
|
-
};
|
|
110
|
-
} else {
|
|
111
|
-
// Empty array: show all items of this parent
|
|
112
|
-
where = parentWhere;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
// Combine with baseFilter if provided
|
|
116
|
-
const whereWithBaseFilter = combineWhereConstraints([where, baseFilter]);
|
|
117
|
-
const queryString = qs.stringify({
|
|
118
|
-
limit: treeLimit,
|
|
119
|
-
page,
|
|
120
|
-
sort: useAsTitle,
|
|
121
|
-
where: whereWithBaseFilter
|
|
122
|
-
}, {
|
|
123
|
-
addQueryPrefix: true
|
|
124
|
-
});
|
|
125
|
-
const url = formatAdminURL({
|
|
126
|
-
apiRoute: api,
|
|
127
|
-
path: `/${hierarchyCollectionSlug}${queryString}`,
|
|
128
|
-
serverURL
|
|
129
|
-
});
|
|
130
|
-
const response = await fetch(url, {
|
|
131
|
-
credentials: 'include'
|
|
132
|
-
});
|
|
133
|
-
if (!response.ok) {
|
|
134
|
-
throw new Error('Failed to fetch items');
|
|
135
|
-
}
|
|
136
|
-
const data = await response.json();
|
|
137
|
-
const typeFieldName_0 = hierarchyConfig?.collectionSpecific ? hierarchyConfig.collectionSpecific.fieldName : undefined;
|
|
138
|
-
const allItems = (data.docs || []).map(doc => ({
|
|
139
|
-
id: doc.id,
|
|
140
|
-
allowedCollections: typeFieldName_0 ? doc[typeFieldName_0] : undefined,
|
|
141
|
-
hasChildren: true,
|
|
142
|
-
title: String(doc[useAsTitle] || doc.id)
|
|
143
|
-
}));
|
|
144
|
-
// Client-side filter: only show items that are a superset of required collections
|
|
145
|
-
// Server query uses ANY (due to PG limitations), but we want ALL (superset)
|
|
146
|
-
const items = filterByCollection && filterByCollection.length > 0 ? allItems.filter(item => isSuperset(item.allowedCollections, filterByCollection)) : allItems;
|
|
147
|
-
return {
|
|
148
|
-
hasNextPage: data.hasNextPage || false,
|
|
149
|
-
items,
|
|
150
|
-
totalDocs: data.totalDocs || 0
|
|
151
|
-
};
|
|
152
|
-
}, [api, baseFilter, filterByCollection, hierarchyConfig, parentFieldName, serverURL, hierarchyCollectionSlug, treeLimit, useAsTitle]);
|
|
153
|
-
const refreshColumn = useCallback(async parentId_0 => {
|
|
154
|
-
const columnIndex = columns.findIndex(col => col.parentId === parentId_0);
|
|
155
|
-
if (columnIndex === -1) {
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
setColumns(prev => {
|
|
159
|
-
const updated = [...prev];
|
|
160
|
-
updated[columnIndex] = {
|
|
161
|
-
...updated[columnIndex],
|
|
162
|
-
isLoading: true
|
|
163
|
-
};
|
|
164
|
-
return updated;
|
|
165
|
-
});
|
|
166
|
-
try {
|
|
167
|
-
const {
|
|
168
|
-
hasNextPage,
|
|
169
|
-
items: items_0,
|
|
170
|
-
totalDocs
|
|
171
|
-
} = await fetchItems({
|
|
172
|
-
page: 1,
|
|
173
|
-
parentId: parentId_0
|
|
174
|
-
});
|
|
175
|
-
setColumns(prev_1 => {
|
|
176
|
-
const updated_1 = [...prev_1];
|
|
177
|
-
if (updated_1[columnIndex]) {
|
|
178
|
-
updated_1[columnIndex] = {
|
|
179
|
-
...updated_1[columnIndex],
|
|
180
|
-
hasNextPage,
|
|
181
|
-
isLoading: false,
|
|
182
|
-
items: items_0,
|
|
183
|
-
page: 1,
|
|
184
|
-
totalDocs
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
return updated_1;
|
|
188
|
-
});
|
|
189
|
-
} catch {
|
|
190
|
-
setColumns(prev_0 => {
|
|
191
|
-
const updated_0 = [...prev_0];
|
|
192
|
-
if (updated_0[columnIndex]) {
|
|
193
|
-
updated_0[columnIndex] = {
|
|
194
|
-
...updated_0[columnIndex],
|
|
195
|
-
isLoading: false
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
return updated_0;
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
}, [columns, fetchItems]);
|
|
202
|
-
useImperativeHandle(ref, () => ({
|
|
203
|
-
refreshColumn
|
|
204
|
-
}), [refreshColumn]);
|
|
205
|
-
const loadColumns = useEffectEvent(async path => {
|
|
206
|
-
// Build list of parentIds to fetch: [null, ...path]
|
|
207
|
-
const parentIds = [null];
|
|
208
|
-
if (path?.length) {
|
|
209
|
-
parentIds.push(...path);
|
|
210
|
-
}
|
|
211
|
-
// Set initial loading state for all columns
|
|
212
|
-
setColumns(parentIds.map(parentId_1 => ({
|
|
213
|
-
hasNextPage: false,
|
|
214
|
-
isLoading: true,
|
|
215
|
-
items: [],
|
|
216
|
-
page: 1,
|
|
217
|
-
parentId: parentId_1,
|
|
218
|
-
totalDocs: 0
|
|
219
|
-
})));
|
|
220
|
-
// Set expanded path to match (excluding null/root)
|
|
221
|
-
if (path?.length) {
|
|
222
|
-
setExpandedPath(path);
|
|
223
|
-
}
|
|
224
|
-
// Fetch all columns in parallel
|
|
225
|
-
const results = await Promise.all(parentIds.map(async (parentId_2, index) => {
|
|
226
|
-
try {
|
|
227
|
-
const {
|
|
228
|
-
hasNextPage: hasNextPage_0,
|
|
229
|
-
items: items_1,
|
|
230
|
-
totalDocs: totalDocs_0
|
|
231
|
-
} = await fetchItems({
|
|
232
|
-
page: 1,
|
|
233
|
-
parentId: parentId_2
|
|
234
|
-
});
|
|
235
|
-
let parentTitle;
|
|
236
|
-
if (index > 0 && parentId_2 !== null) {
|
|
237
|
-
// Will be filled in after all fetches complete
|
|
238
|
-
}
|
|
239
|
-
return {
|
|
240
|
-
hasNextPage: hasNextPage_0,
|
|
241
|
-
isLoading: false,
|
|
242
|
-
items: items_1,
|
|
243
|
-
page: 1,
|
|
244
|
-
parentId: parentId_2,
|
|
245
|
-
parentTitle,
|
|
246
|
-
totalDocs: totalDocs_0
|
|
247
|
-
};
|
|
248
|
-
} catch {
|
|
249
|
-
return {
|
|
250
|
-
hasNextPage: false,
|
|
251
|
-
isLoading: false,
|
|
252
|
-
items: [],
|
|
253
|
-
page: 1,
|
|
254
|
-
parentId: parentId_2,
|
|
255
|
-
parentTitle: undefined,
|
|
256
|
-
totalDocs: 0
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
}));
|
|
260
|
-
// Fill in parent titles from previous columns
|
|
261
|
-
const columnsWithTitles = results.map((col_0, index_0) => {
|
|
262
|
-
if (index_0 === 0 || col_0.parentId === null) {
|
|
263
|
-
return col_0;
|
|
264
|
-
}
|
|
265
|
-
const prevColumn = results[index_0 - 1];
|
|
266
|
-
const parentItem = prevColumn?.items.find(item_0 => item_0.id === col_0.parentId);
|
|
267
|
-
return {
|
|
268
|
-
...col_0,
|
|
269
|
-
parentTitle: parentItem?.title || String(col_0.parentId)
|
|
270
|
-
};
|
|
271
|
-
});
|
|
272
|
-
setColumns(columnsWithTitles);
|
|
273
|
-
});
|
|
274
|
-
// Load columns on mount - wait for path loading to complete
|
|
275
|
-
useEffect(() => {
|
|
276
|
-
if (isLoadingPath || hasLoadedRef.current) {
|
|
277
|
-
return;
|
|
278
|
-
}
|
|
279
|
-
hasLoadedRef.current = true;
|
|
280
|
-
void loadColumns(initialExpandedPath);
|
|
281
|
-
}, [initialExpandedPath, isLoadingPath]);
|
|
282
|
-
// Auto-scroll to the last column when columns change
|
|
283
|
-
useEffect(() => {
|
|
284
|
-
if (lastColumnRef.current && columns.length > 1) {
|
|
285
|
-
lastColumnRef.current.scrollIntoView({
|
|
286
|
-
behavior: 'smooth',
|
|
287
|
-
inline: 'start'
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
}, [columns.length]);
|
|
291
|
-
const handleExpand = useCallback(async ({
|
|
292
|
-
columnIndex: columnIndex_0,
|
|
293
|
-
itemId
|
|
294
|
-
}) => {
|
|
295
|
-
const column = columns[columnIndex_0];
|
|
296
|
-
if (!column) {
|
|
297
|
-
return;
|
|
298
|
-
}
|
|
299
|
-
const item_1 = column.items.find(i => i.id === itemId);
|
|
300
|
-
if (!item_1) {
|
|
301
|
-
return;
|
|
302
|
-
}
|
|
303
|
-
// Update expanded path - keep path up to this column, add new item
|
|
304
|
-
const newExpandedPath = [...expandedPath.slice(0, columnIndex_0), itemId];
|
|
305
|
-
setExpandedPath(newExpandedPath);
|
|
306
|
-
// Remove columns to the right and add new loading column
|
|
307
|
-
const newColumns = columns.slice(0, columnIndex_0 + 1);
|
|
308
|
-
newColumns.push({
|
|
309
|
-
hasNextPage: false,
|
|
310
|
-
isLoading: true,
|
|
311
|
-
items: [],
|
|
312
|
-
page: 1,
|
|
313
|
-
parentId: itemId,
|
|
314
|
-
parentTitle: item_1.title,
|
|
315
|
-
totalDocs: 0
|
|
316
|
-
});
|
|
317
|
-
setColumns(newColumns);
|
|
318
|
-
// Fetch children
|
|
319
|
-
try {
|
|
320
|
-
const {
|
|
321
|
-
hasNextPage: hasNextPage_1,
|
|
322
|
-
items: items_2,
|
|
323
|
-
totalDocs: totalDocs_1
|
|
324
|
-
} = await fetchItems({
|
|
325
|
-
page: 1,
|
|
326
|
-
parentId: itemId
|
|
327
|
-
});
|
|
328
|
-
setColumns(prev_3 => {
|
|
329
|
-
const updated_3 = [...prev_3];
|
|
330
|
-
const targetIndex_0 = columnIndex_0 + 1;
|
|
331
|
-
if (updated_3[targetIndex_0]?.parentId === itemId) {
|
|
332
|
-
updated_3[targetIndex_0] = {
|
|
333
|
-
hasNextPage: hasNextPage_1,
|
|
334
|
-
isLoading: false,
|
|
335
|
-
items: items_2,
|
|
336
|
-
page: 1,
|
|
337
|
-
parentId: itemId,
|
|
338
|
-
parentTitle: item_1.title,
|
|
339
|
-
totalDocs: totalDocs_1
|
|
340
|
-
};
|
|
341
|
-
}
|
|
342
|
-
return updated_3;
|
|
343
|
-
});
|
|
344
|
-
} catch {
|
|
345
|
-
setColumns(prev_2 => {
|
|
346
|
-
const updated_2 = [...prev_2];
|
|
347
|
-
const targetIndex = columnIndex_0 + 1;
|
|
348
|
-
if (updated_2[targetIndex]?.parentId === itemId) {
|
|
349
|
-
updated_2[targetIndex] = {
|
|
350
|
-
hasNextPage: false,
|
|
351
|
-
isLoading: false,
|
|
352
|
-
items: [],
|
|
353
|
-
page: 1,
|
|
354
|
-
parentId: itemId,
|
|
355
|
-
parentTitle: item_1.title,
|
|
356
|
-
totalDocs: 0
|
|
357
|
-
};
|
|
358
|
-
}
|
|
359
|
-
return updated_2;
|
|
360
|
-
});
|
|
361
|
-
}
|
|
362
|
-
}, [columns, expandedPath, fetchItems]);
|
|
363
|
-
const handleLoadMore = useCallback(async ({
|
|
364
|
-
columnIndex: columnIndex_1
|
|
365
|
-
}) => {
|
|
366
|
-
const column_0 = columns[columnIndex_1];
|
|
367
|
-
if (!column_0 || column_0.isLoading || !column_0.hasNextPage) {
|
|
368
|
-
return;
|
|
369
|
-
}
|
|
370
|
-
const nextPage = column_0.page + 1;
|
|
371
|
-
// Set loading state
|
|
372
|
-
setColumns(prev_4 => {
|
|
373
|
-
const updated_4 = [...prev_4];
|
|
374
|
-
updated_4[columnIndex_1] = {
|
|
375
|
-
...updated_4[columnIndex_1],
|
|
376
|
-
isLoading: true
|
|
377
|
-
};
|
|
378
|
-
return updated_4;
|
|
379
|
-
});
|
|
380
|
-
try {
|
|
381
|
-
const {
|
|
382
|
-
hasNextPage: hasNextPage_2,
|
|
383
|
-
items: newItems
|
|
384
|
-
} = await fetchItems({
|
|
385
|
-
page: nextPage,
|
|
386
|
-
parentId: column_0.parentId
|
|
387
|
-
});
|
|
388
|
-
setColumns(prev_6 => {
|
|
389
|
-
const updated_6 = [...prev_6];
|
|
390
|
-
if (updated_6[columnIndex_1]) {
|
|
391
|
-
updated_6[columnIndex_1] = {
|
|
392
|
-
...updated_6[columnIndex_1],
|
|
393
|
-
hasNextPage: hasNextPage_2,
|
|
394
|
-
isLoading: false,
|
|
395
|
-
items: [...updated_6[columnIndex_1].items, ...newItems],
|
|
396
|
-
page: nextPage
|
|
397
|
-
};
|
|
398
|
-
}
|
|
399
|
-
return updated_6;
|
|
400
|
-
});
|
|
401
|
-
} catch {
|
|
402
|
-
setColumns(prev_5 => {
|
|
403
|
-
const updated_5 = [...prev_5];
|
|
404
|
-
if (updated_5[columnIndex_1]) {
|
|
405
|
-
updated_5[columnIndex_1] = {
|
|
406
|
-
...updated_5[columnIndex_1],
|
|
407
|
-
isLoading: false
|
|
408
|
-
};
|
|
409
|
-
}
|
|
410
|
-
return updated_5;
|
|
411
|
-
});
|
|
412
|
-
}
|
|
413
|
-
}, [columns, fetchItems]);
|
|
414
|
-
// Build path for each column based on parent info
|
|
415
|
-
const getPathToColumn = columnIndex_2 => {
|
|
416
|
-
const path_0 = [];
|
|
417
|
-
for (let i_0 = 1; i_0 <= columnIndex_2; i_0++) {
|
|
418
|
-
const col_1 = columns[i_0];
|
|
419
|
-
if (col_1?.parentId !== null && col_1?.parentId !== undefined) {
|
|
420
|
-
path_0.push({
|
|
421
|
-
id: col_1.parentId,
|
|
422
|
-
title: col_1.parentTitle || String(col_1.parentId)
|
|
423
|
-
});
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
return path_0;
|
|
427
|
-
};
|
|
428
|
-
return /*#__PURE__*/_jsxs("div", {
|
|
429
|
-
className: baseClass,
|
|
430
|
-
ref: containerRef,
|
|
431
|
-
children: [columns.map((column_1, index_1) => {
|
|
432
|
-
const isLastColumn = index_1 === columns.length - 1 && !isLoadingPath;
|
|
433
|
-
const expandedId = expandedPath[index_1] ?? null;
|
|
434
|
-
const pathToColumn = getPathToColumn(index_1);
|
|
435
|
-
return /*#__PURE__*/_jsx("div", {
|
|
436
|
-
className: `${baseClass}__column-wrapper`,
|
|
437
|
-
ref: isLastColumn ? lastColumnRef : undefined,
|
|
438
|
-
children: /*#__PURE__*/_jsx(Column, {
|
|
439
|
-
ancestorsWithSelections: ancestorsWithSelections,
|
|
440
|
-
canCreate: canCreate && Boolean(onCreateNew),
|
|
441
|
-
collectionLabel: collectionLabel,
|
|
442
|
-
disabled: isLoadingPath,
|
|
443
|
-
disabledIds: disabledIds,
|
|
444
|
-
expandedId: expandedId,
|
|
445
|
-
filterByCollection: filterByCollection,
|
|
446
|
-
hasNextPage: column_1.hasNextPage,
|
|
447
|
-
isLoading: column_1.isLoading,
|
|
448
|
-
items: column_1.items,
|
|
449
|
-
onCreateNew: onCreateNew || (() => {}),
|
|
450
|
-
onExpand: ({
|
|
451
|
-
id
|
|
452
|
-
}) => handleExpand({
|
|
453
|
-
columnIndex: index_1,
|
|
454
|
-
itemId: id
|
|
455
|
-
}),
|
|
456
|
-
onLoadMore: () => handleLoadMore({
|
|
457
|
-
columnIndex: index_1
|
|
458
|
-
}),
|
|
459
|
-
onSelect: onSelect,
|
|
460
|
-
parentId: column_1.parentId,
|
|
461
|
-
parentTitle: column_1.parentTitle,
|
|
462
|
-
pathToColumn: pathToColumn,
|
|
463
|
-
selectedIds: selectedIds,
|
|
464
|
-
totalDocs: column_1.totalDocs
|
|
465
|
-
})
|
|
466
|
-
}, `${column_1.parentId ?? 'root'}-${index_1}`);
|
|
467
|
-
}), isLoadingPath && /*#__PURE__*/_jsx("div", {
|
|
468
|
-
className: `${baseClass}__column-wrapper ${baseClass}__column-wrapper--loading`,
|
|
469
|
-
children: /*#__PURE__*/_jsx(Spinner, {})
|
|
470
|
-
})]
|
|
471
|
-
});
|
|
472
|
-
};
|
|
473
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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.scss'\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: 'smooth', 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,20 +0,0 @@
|
|
|
1
|
-
.hierarchy-column-browser {
|
|
2
|
-
display: flex;
|
|
3
|
-
flex: 1;
|
|
4
|
-
overflow-x: auto;
|
|
5
|
-
// scroll-snap-type: x proximity;
|
|
6
|
-
|
|
7
|
-
&__column-wrapper {
|
|
8
|
-
// scroll-snap-align: start;
|
|
9
|
-
flex-shrink: 0;
|
|
10
|
-
|
|
11
|
-
&:first-child {
|
|
12
|
-
margin-left: var(--gutter-h);
|
|
13
|
-
border-left: 1px solid var(--theme-elevation-100);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
&__column-wrapper--loading {
|
|
18
|
-
padding: calc(var(--base) * 0.8) var(--base);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import type { Where } from 'payload';
|
|
2
|
-
export type ColumnItemData = {
|
|
3
|
-
/** For folders with collectionSpecific config, the allowed collection slugs */
|
|
4
|
-
allowedCollections?: string[];
|
|
5
|
-
hasChildren: boolean;
|
|
6
|
-
id: number | string;
|
|
7
|
-
title: string;
|
|
8
|
-
};
|
|
9
|
-
export type PathSegment = {
|
|
10
|
-
id: number | string;
|
|
11
|
-
title: string;
|
|
12
|
-
};
|
|
13
|
-
export type ColumnItemProps = {
|
|
14
|
-
disabled?: boolean;
|
|
15
|
-
/** Required collections that the folder must allow (for superset check) */
|
|
16
|
-
filterByCollection?: string[];
|
|
17
|
-
hasSelectedDescendants: boolean;
|
|
18
|
-
isExpanded: boolean;
|
|
19
|
-
isSelected: boolean;
|
|
20
|
-
item: ColumnItemData;
|
|
21
|
-
onExpand: (params: {
|
|
22
|
-
id: number | string;
|
|
23
|
-
}) => void;
|
|
24
|
-
onSelect: (params: {
|
|
25
|
-
id: number | string;
|
|
26
|
-
}) => void;
|
|
27
|
-
};
|
|
28
|
-
export type ColumnProps = {
|
|
29
|
-
ancestorsWithSelections: Set<number | string>;
|
|
30
|
-
/** Whether user can create new documents */
|
|
31
|
-
canCreate: boolean;
|
|
32
|
-
/** Label for the collection (e.g., "Folder") */
|
|
33
|
-
collectionLabel: string;
|
|
34
|
-
disabled?: boolean;
|
|
35
|
-
/** IDs that should be disabled (e.g., items being moved can't be selected as destination) */
|
|
36
|
-
disabledIds?: Set<number | string>;
|
|
37
|
-
expandedId: null | number | string;
|
|
38
|
-
/** Required collections for superset check (passed to ColumnItem) */
|
|
39
|
-
filterByCollection?: string[];
|
|
40
|
-
hasNextPage: boolean;
|
|
41
|
-
isLoading: boolean;
|
|
42
|
-
items: ColumnItemData[];
|
|
43
|
-
/** Called when user clicks "New" button - parent should open drawer with parentId */
|
|
44
|
-
onCreateNew: (params: {
|
|
45
|
-
parentId: null | number | string;
|
|
46
|
-
}) => void;
|
|
47
|
-
onExpand: (params: {
|
|
48
|
-
id: number | string;
|
|
49
|
-
}) => void;
|
|
50
|
-
onLoadMore: () => void;
|
|
51
|
-
onSelect: (params: {
|
|
52
|
-
id: number | string;
|
|
53
|
-
path: PathSegment[];
|
|
54
|
-
}) => void;
|
|
55
|
-
parentId: null | number | string;
|
|
56
|
-
parentTitle?: string;
|
|
57
|
-
pathToColumn: PathSegment[];
|
|
58
|
-
selectedIds: Set<number | string>;
|
|
59
|
-
totalDocs: number;
|
|
60
|
-
};
|
|
61
|
-
export type ColumnState = {
|
|
62
|
-
hasNextPage: boolean;
|
|
63
|
-
isLoading: boolean;
|
|
64
|
-
items: ColumnItemData[];
|
|
65
|
-
page: number;
|
|
66
|
-
parentId: null | number | string;
|
|
67
|
-
parentTitle?: string;
|
|
68
|
-
totalDocs: number;
|
|
69
|
-
};
|
|
70
|
-
export type HierarchyColumnBrowserRef = {
|
|
71
|
-
/** Refetch a specific column by parentId */
|
|
72
|
-
refreshColumn: (parentId: null | number | string) => Promise<void>;
|
|
73
|
-
};
|
|
74
|
-
export type HierarchyColumnBrowserProps = {
|
|
75
|
-
ancestorsWithSelections: Set<number | string>;
|
|
76
|
-
/** Base filter constraint (e.g., tenant filter) to apply to all queries */
|
|
77
|
-
baseFilter?: null | Where;
|
|
78
|
-
/** IDs that should be disabled (e.g., items being moved can't be selected as destination) */
|
|
79
|
-
disabledIds?: Set<number | string>;
|
|
80
|
-
/**
|
|
81
|
-
* Filters hierarchy items based on collection type restrictions:
|
|
82
|
-
* - `undefined`: No filtering, show all folders
|
|
83
|
-
* - `[]` (empty array): No filtering, show all folders (no constraints)
|
|
84
|
-
* - `['posts', ...]`: Show folders accepting ANY of these collections OR unrestricted folders
|
|
85
|
-
*
|
|
86
|
-
* Note: Query uses ANY semantics due to PG hasMany enum limitations.
|
|
87
|
-
* Client-side enforcement can disable selection of folders that don't allow ALL required collections.
|
|
88
|
-
*/
|
|
89
|
-
filterByCollection?: string[];
|
|
90
|
-
hierarchyCollectionSlug: string;
|
|
91
|
-
initialExpandedPath?: (number | string)[];
|
|
92
|
-
/** Whether the initial expanded path is still being loaded */
|
|
93
|
-
isLoadingPath?: boolean;
|
|
94
|
-
/** Called when user clicks "New" button to create a new item */
|
|
95
|
-
onCreateNew?: (params: {
|
|
96
|
-
parentId: null | number | string;
|
|
97
|
-
}) => void;
|
|
98
|
-
onSelect: (params: {
|
|
99
|
-
id: number | string;
|
|
100
|
-
path: PathSegment[];
|
|
101
|
-
}) => void;
|
|
102
|
-
parentFieldName: string;
|
|
103
|
-
selectedIds: Set<number | string>;
|
|
104
|
-
useAsTitle?: string;
|
|
105
|
-
};
|
|
106
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/ColumnBrowser/types.ts"],"names":[],"mappings":"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"}
|