@payloadcms/ui 3.80.0-internal.21e9c47 → 3.80.0-internal.52ab774
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/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +53 -3
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js +541 -0
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js.map +1 -0
- package/dist/elements/Combobox/index.d.ts.map +1 -1
- package/dist/elements/Combobox/index.js +1 -0
- package/dist/elements/Combobox/index.js.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/Column/index.d.ts.map +1 -0
- package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/Column/index.js +5 -5
- package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js.map +1 -0
- package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/Column/index.scss +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.d.ts.map +1 -0
- package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/ColumnItem/index.js +3 -3
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js.map +1 -0
- package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/ColumnItem/index.scss +1 -1
- package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/index.d.ts +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -0
- package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/index.js +13 -10
- package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -0
- package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/types.d.ts +3 -0
- package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts.map +1 -0
- package/dist/elements/Hierarchy/ColumnBrowser/types.js.map +1 -0
- package/dist/elements/Hierarchy/DocHeaderButton/index.d.ts.map +1 -0
- package/dist/elements/{HierarchyButton → Hierarchy/DocHeaderButton}/index.js +6 -6
- package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -0
- package/dist/elements/Hierarchy/DocHeaderButton/index.server.d.ts.map +1 -0
- package/dist/elements/{HierarchyButton → Hierarchy/DocHeaderButton}/index.server.js +3 -3
- package/dist/elements/Hierarchy/DocHeaderButton/index.server.js.map +1 -0
- package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.d.ts.map +1 -0
- package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.js.map +1 -0
- package/dist/elements/{HierarchyDrawer → Hierarchy}/Drawer/index.d.ts +3 -3
- package/dist/elements/Hierarchy/Drawer/index.d.ts.map +1 -0
- package/dist/elements/{HierarchyDrawer → Hierarchy}/Drawer/index.js +4 -2
- package/dist/elements/Hierarchy/Drawer/index.js.map +1 -0
- package/dist/elements/{HierarchyDrawer → Hierarchy/Drawer}/types.d.ts +4 -1
- package/dist/elements/Hierarchy/Drawer/types.d.ts.map +1 -0
- package/dist/elements/Hierarchy/Drawer/types.js.map +1 -0
- package/dist/elements/{HierarchyDrawer/index.d.ts → Hierarchy/Drawer/useHierarchyDrawer.d.ts} +1 -1
- package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.d.ts.map +1 -0
- package/dist/elements/{HierarchyDrawer/index.js → Hierarchy/Drawer/useHierarchyDrawer.js} +10 -8
- package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.js.map +1 -0
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +1 -0
- package/dist/elements/{HierarchyField → Hierarchy/Field}/SelectedHierarchies.js +7 -16
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +1 -0
- package/dist/elements/{HierarchyField → Hierarchy/Field}/SelectedHierarchies.scss +1 -1
- package/dist/elements/Hierarchy/Field/index.client.d.ts.map +1 -0
- package/dist/elements/{HierarchyField → Hierarchy/Field}/index.client.js +17 -29
- package/dist/elements/Hierarchy/Field/index.client.js.map +1 -0
- package/dist/elements/{HierarchyField → Hierarchy/Field}/index.scss +1 -1
- package/dist/elements/Hierarchy/Field/index.server.d.ts.map +1 -0
- package/dist/elements/{HierarchyField → Hierarchy/Field}/index.server.js +2 -2
- package/dist/elements/Hierarchy/Field/index.server.js.map +1 -0
- package/dist/elements/Hierarchy/HydrateProvider/index.d.ts +4 -0
- package/dist/elements/Hierarchy/HydrateProvider/index.d.ts.map +1 -0
- package/dist/elements/Hierarchy/HydrateProvider/index.js +70 -0
- package/dist/elements/Hierarchy/HydrateProvider/index.js.map +1 -0
- package/dist/elements/{MoveMany → Hierarchy/MoveMany}/index.d.ts +3 -3
- package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -0
- package/dist/elements/{MoveMany → Hierarchy/MoveMany}/index.js +10 -10
- package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -0
- package/dist/elements/{MoveMany → Hierarchy/MoveMany}/index.scss +1 -1
- package/dist/elements/Hierarchy/Search/HierarchySearchInput.d.ts.map +1 -0
- package/dist/elements/{HierarchySearch → Hierarchy/Search}/HierarchySearchInput.js +5 -5
- package/dist/elements/Hierarchy/Search/HierarchySearchInput.js.map +1 -0
- package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.d.ts.map +1 -0
- package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.js.map +1 -0
- package/dist/elements/Hierarchy/Search/HierarchySearchResults.d.ts.map +1 -0
- package/dist/elements/{HierarchySearch → Hierarchy/Search}/HierarchySearchResults.js +2 -2
- package/dist/elements/Hierarchy/Search/HierarchySearchResults.js.map +1 -0
- package/dist/elements/Hierarchy/Search/index.d.ts.map +1 -0
- package/dist/elements/{HierarchySearch → Hierarchy/Search}/index.js +2 -2
- package/dist/elements/Hierarchy/Search/index.js.map +1 -0
- package/dist/elements/{HierarchySearch → Hierarchy/Search}/index.scss +1 -1
- package/dist/elements/Hierarchy/Search/types.d.ts.map +1 -0
- package/dist/elements/Hierarchy/Search/types.js.map +1 -0
- package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts.map +1 -0
- package/dist/elements/{HierarchySearch → Hierarchy/Search}/useHierarchySearch.js +2 -2
- package/dist/elements/Hierarchy/Search/useHierarchySearch.js.map +1 -0
- package/dist/elements/{HierarchyTree → Hierarchy/Tree}/HierarchySidebarTab.d.ts +1 -0
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -0
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +194 -0
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -0
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -0
- package/dist/elements/{HierarchyTree → Hierarchy/Tree}/HierarchySidebarTab.server.js +20 -10
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -0
- package/dist/elements/Hierarchy/Tree/LoadMore/LoadMoreButton.d.ts.map +1 -0
- package/dist/elements/{Tree → Hierarchy/Tree}/LoadMore/LoadMoreButton.js +1 -1
- package/dist/elements/Hierarchy/Tree/LoadMore/LoadMoreButton.js.map +1 -0
- package/dist/elements/Hierarchy/Tree/LoadMore/index.d.ts.map +1 -0
- package/dist/elements/{Tree → Hierarchy/Tree}/LoadMore/index.js +1 -1
- package/dist/elements/Hierarchy/Tree/LoadMore/index.js.map +1 -0
- package/dist/elements/Hierarchy/Tree/TreeConnector.d.ts.map +1 -0
- package/dist/elements/Hierarchy/Tree/TreeConnector.js.map +1 -0
- package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts.map +1 -0
- package/dist/elements/Hierarchy/Tree/TreeFocusContext.js.map +1 -0
- package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts +5 -0
- package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -0
- package/dist/elements/{Tree → Hierarchy/Tree}/TreeNode/index.js +11 -4
- package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -0
- package/dist/elements/{Tree → Hierarchy/Tree}/TreeNode/index.scss +1 -1
- package/dist/elements/{HierarchyTree → Hierarchy/Tree}/index.d.ts +1 -0
- package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -0
- package/dist/elements/Hierarchy/Tree/index.js +305 -0
- package/dist/elements/Hierarchy/Tree/index.js.map +1 -0
- package/dist/elements/{Tree → Hierarchy/Tree}/index.scss +2 -5
- package/dist/elements/{Tree → Hierarchy/Tree}/types.d.ts +31 -22
- package/dist/elements/Hierarchy/Tree/types.d.ts.map +1 -0
- package/dist/elements/Hierarchy/Tree/types.js.map +1 -0
- package/dist/elements/Hierarchy/Tree/useChildren.d.ts +32 -0
- package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -0
- package/dist/elements/{Tree → Hierarchy/Tree}/useChildren.js +52 -32
- package/dist/elements/Hierarchy/Tree/useChildren.js.map +1 -0
- package/dist/elements/Link/index.d.ts.map +1 -1
- package/dist/elements/LoadMoreRow/index.js +1 -1
- package/dist/elements/LoadMoreRow/index.js.map +1 -1
- package/dist/elements/PublishButton/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/index.js +3 -1
- package/dist/elements/PublishButton/index.js.map +1 -1
- package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/index.js +14 -9
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +1 -1
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -1
- package/dist/elements/Toasts/fieldErrors.d.ts +4 -0
- package/dist/elements/Toasts/fieldErrors.d.ts.map +1 -1
- package/dist/elements/Toasts/fieldErrors.js +4 -2
- package/dist/elements/Toasts/fieldErrors.js.map +1 -1
- package/dist/elements/Toasts/fieldErrors.spec.js +46 -0
- package/dist/elements/Toasts/fieldErrors.spec.js.map +1 -0
- package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js +8 -6
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
- package/dist/elements/WhereBuilder/field-types.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/field-types.js +2 -5
- package/dist/elements/WhereBuilder/field-types.js.map +1 -1
- package/dist/exports/client/{DatePicker-CL2EGBVQ.js → DatePicker-T2DMDMM5.js} +2 -2
- package/dist/exports/client/chunk-WDZJLNNB.js +29 -0
- package/dist/exports/client/{chunk-SH42NW5R.js.map → chunk-WDZJLNNB.js.map} +4 -4
- package/dist/exports/client/index.d.ts +11 -15
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +26 -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/forms/Form/mergeServerFormState.d.ts.map +1 -1
- package/dist/forms/Form/mergeServerFormState.js +101 -24
- package/dist/forms/Form/mergeServerFormState.js.map +1 -1
- package/dist/icons/TableView/index.d.ts +3 -0
- package/dist/icons/TableView/index.d.ts.map +1 -0
- package/dist/icons/TableView/index.js +16 -0
- package/dist/icons/TableView/index.js.map +1 -0
- package/dist/providers/Hierarchy/index.d.ts.map +1 -1
- package/dist/providers/Hierarchy/index.js +29 -8
- package/dist/providers/Hierarchy/index.js.map +1 -1
- package/dist/providers/Hierarchy/types.d.ts +10 -5
- package/dist/providers/Hierarchy/types.d.ts.map +1 -1
- package/dist/providers/Hierarchy/types.js.map +1 -1
- package/dist/providers/SidebarTabs/index.d.ts +19 -0
- package/dist/providers/SidebarTabs/index.d.ts.map +1 -0
- package/dist/providers/SidebarTabs/index.js +24 -0
- package/dist/providers/SidebarTabs/index.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +12 -3
- 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 +147 -86
- package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyListHeader/index.js +7 -6
- package/dist/views/HierarchyList/HierarchyListHeader/index.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/index.d.ts +7 -3
- package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/index.js +19 -18
- package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
- package/dist/views/HierarchyList/index.d.ts.map +1 -1
- package/dist/views/HierarchyList/index.js +3 -1
- package/dist/views/HierarchyList/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/elements/HierarchyButton/index.d.ts.map +0 -1
- package/dist/elements/HierarchyButton/index.js.map +0 -1
- package/dist/elements/HierarchyButton/index.server.d.ts.map +0 -1
- package/dist/elements/HierarchyButton/index.server.js.map +0 -1
- package/dist/elements/HierarchyColumnBrowser/Column/index.d.ts.map +0 -1
- package/dist/elements/HierarchyColumnBrowser/Column/index.js.map +0 -1
- package/dist/elements/HierarchyColumnBrowser/ColumnItem/index.d.ts.map +0 -1
- package/dist/elements/HierarchyColumnBrowser/ColumnItem/index.js.map +0 -1
- package/dist/elements/HierarchyColumnBrowser/index.d.ts.map +0 -1
- package/dist/elements/HierarchyColumnBrowser/index.js.map +0 -1
- package/dist/elements/HierarchyColumnBrowser/types.d.ts.map +0 -1
- package/dist/elements/HierarchyColumnBrowser/types.js.map +0 -1
- package/dist/elements/HierarchyDrawer/Drawer/index.d.ts.map +0 -1
- package/dist/elements/HierarchyDrawer/Drawer/index.js.map +0 -1
- package/dist/elements/HierarchyDrawer/fetchAncestorPath.d.ts.map +0 -1
- package/dist/elements/HierarchyDrawer/fetchAncestorPath.js.map +0 -1
- package/dist/elements/HierarchyDrawer/index.d.ts.map +0 -1
- package/dist/elements/HierarchyDrawer/index.js.map +0 -1
- package/dist/elements/HierarchyDrawer/types.d.ts.map +0 -1
- package/dist/elements/HierarchyDrawer/types.js.map +0 -1
- package/dist/elements/HierarchyField/SelectedHierarchies.d.ts.map +0 -1
- package/dist/elements/HierarchyField/SelectedHierarchies.js.map +0 -1
- package/dist/elements/HierarchyField/index.client.d.ts.map +0 -1
- package/dist/elements/HierarchyField/index.client.js.map +0 -1
- package/dist/elements/HierarchyField/index.server.d.ts.map +0 -1
- package/dist/elements/HierarchyField/index.server.js.map +0 -1
- package/dist/elements/HierarchySearch/HierarchySearchInput.d.ts.map +0 -1
- package/dist/elements/HierarchySearch/HierarchySearchInput.js.map +0 -1
- package/dist/elements/HierarchySearch/HierarchySearchResultItem.d.ts.map +0 -1
- package/dist/elements/HierarchySearch/HierarchySearchResultItem.js.map +0 -1
- package/dist/elements/HierarchySearch/HierarchySearchResults.d.ts.map +0 -1
- package/dist/elements/HierarchySearch/HierarchySearchResults.js.map +0 -1
- package/dist/elements/HierarchySearch/index.d.ts.map +0 -1
- package/dist/elements/HierarchySearch/index.js.map +0 -1
- package/dist/elements/HierarchySearch/types.d.ts.map +0 -1
- package/dist/elements/HierarchySearch/types.js.map +0 -1
- package/dist/elements/HierarchySearch/useHierarchySearch.d.ts.map +0 -1
- package/dist/elements/HierarchySearch/useHierarchySearch.js.map +0 -1
- package/dist/elements/HierarchyTree/HierarchySidebarTab.d.ts.map +0 -1
- package/dist/elements/HierarchyTree/HierarchySidebarTab.js +0 -156
- package/dist/elements/HierarchyTree/HierarchySidebarTab.js.map +0 -1
- package/dist/elements/HierarchyTree/HierarchySidebarTab.server.d.ts.map +0 -1
- package/dist/elements/HierarchyTree/HierarchySidebarTab.server.js.map +0 -1
- package/dist/elements/HierarchyTree/LoadMore/LoadMoreButton.d.ts.map +0 -1
- package/dist/elements/HierarchyTree/LoadMore/LoadMoreButton.js +0 -36
- package/dist/elements/HierarchyTree/LoadMore/LoadMoreButton.js.map +0 -1
- package/dist/elements/HierarchyTree/LoadMore/index.d.ts.map +0 -1
- package/dist/elements/HierarchyTree/LoadMore/index.js +0 -29
- package/dist/elements/HierarchyTree/LoadMore/index.js.map +0 -1
- package/dist/elements/HierarchyTree/LoadMore/index.scss +0 -26
- package/dist/elements/HierarchyTree/TreeConnector.d.ts.map +0 -1
- package/dist/elements/HierarchyTree/TreeConnector.js.map +0 -1
- package/dist/elements/HierarchyTree/TreeFocusContext.d.ts.map +0 -1
- package/dist/elements/HierarchyTree/TreeFocusContext.js.map +0 -1
- package/dist/elements/HierarchyTree/TreeNode/index.d.ts +0 -5
- package/dist/elements/HierarchyTree/TreeNode/index.d.ts.map +0 -1
- package/dist/elements/HierarchyTree/TreeNode/index.js +0 -201
- package/dist/elements/HierarchyTree/TreeNode/index.js.map +0 -1
- package/dist/elements/HierarchyTree/TreeNode/index.scss +0 -99
- package/dist/elements/HierarchyTree/index.d.ts.map +0 -1
- package/dist/elements/HierarchyTree/index.js +0 -64
- package/dist/elements/HierarchyTree/index.js.map +0 -1
- package/dist/elements/HierarchyTree/index.scss +0 -42
- package/dist/elements/HierarchyTree/types.d.ts +0 -55
- package/dist/elements/HierarchyTree/types.d.ts.map +0 -1
- package/dist/elements/HierarchyTree/types.js.map +0 -1
- package/dist/elements/HierarchyTree/useChildren.d.ts +0 -26
- package/dist/elements/HierarchyTree/useChildren.d.ts.map +0 -1
- package/dist/elements/HierarchyTree/useChildren.js +0 -150
- package/dist/elements/HierarchyTree/useChildren.js.map +0 -1
- package/dist/elements/HierarchyTree/useTreeState.d.ts +0 -9
- package/dist/elements/HierarchyTree/useTreeState.d.ts.map +0 -1
- package/dist/elements/HierarchyTree/useTreeState.js +0 -50
- package/dist/elements/HierarchyTree/useTreeState.js.map +0 -1
- package/dist/elements/HydrateHierarchyProvider/index.d.ts +0 -4
- package/dist/elements/HydrateHierarchyProvider/index.d.ts.map +0 -1
- package/dist/elements/HydrateHierarchyProvider/index.js +0 -67
- package/dist/elements/HydrateHierarchyProvider/index.js.map +0 -1
- package/dist/elements/MoveMany/index.d.ts.map +0 -1
- package/dist/elements/MoveMany/index.js.map +0 -1
- package/dist/elements/Tree/LoadMore/LoadMoreButton.d.ts +0 -8
- package/dist/elements/Tree/LoadMore/LoadMoreButton.d.ts.map +0 -1
- package/dist/elements/Tree/LoadMore/LoadMoreButton.js.map +0 -1
- package/dist/elements/Tree/LoadMore/index.d.ts +0 -12
- package/dist/elements/Tree/LoadMore/index.d.ts.map +0 -1
- package/dist/elements/Tree/LoadMore/index.js.map +0 -1
- package/dist/elements/Tree/TreeConnector.d.ts +0 -7
- package/dist/elements/Tree/TreeConnector.d.ts.map +0 -1
- package/dist/elements/Tree/TreeConnector.js +0 -23
- package/dist/elements/Tree/TreeConnector.js.map +0 -1
- package/dist/elements/Tree/TreeFocusContext.d.ts +0 -28
- package/dist/elements/Tree/TreeFocusContext.d.ts.map +0 -1
- package/dist/elements/Tree/TreeFocusContext.js +0 -140
- package/dist/elements/Tree/TreeFocusContext.js.map +0 -1
- package/dist/elements/Tree/TreeNode/index.d.ts +0 -5
- package/dist/elements/Tree/TreeNode/index.d.ts.map +0 -1
- package/dist/elements/Tree/TreeNode/index.js.map +0 -1
- package/dist/elements/Tree/index.d.ts +0 -5
- package/dist/elements/Tree/index.d.ts.map +0 -1
- package/dist/elements/Tree/index.js +0 -258
- package/dist/elements/Tree/index.js.map +0 -1
- package/dist/elements/Tree/types.d.ts.map +0 -1
- package/dist/elements/Tree/types.js +0 -2
- package/dist/elements/Tree/types.js.map +0 -1
- package/dist/elements/Tree/useChildren.d.ts +0 -25
- package/dist/elements/Tree/useChildren.d.ts.map +0 -1
- package/dist/elements/Tree/useChildren.js.map +0 -1
- package/dist/exports/client/chunk-SH42NW5R.js +0 -29
- /package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/Column/index.d.ts +0 -0
- /package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/ColumnItem/index.d.ts +0 -0
- /package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/index.scss +0 -0
- /package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/types.js +0 -0
- /package/dist/elements/{HierarchyButton → Hierarchy/DocHeaderButton}/index.d.ts +0 -0
- /package/dist/elements/{HierarchyButton → Hierarchy/DocHeaderButton}/index.scss +0 -0
- /package/dist/elements/{HierarchyButton → Hierarchy/DocHeaderButton}/index.server.d.ts +0 -0
- /package/dist/elements/{HierarchyDrawer → Hierarchy/Drawer}/fetchAncestorPath.d.ts +0 -0
- /package/dist/elements/{HierarchyDrawer → Hierarchy/Drawer}/fetchAncestorPath.js +0 -0
- /package/dist/elements/{HierarchyDrawer → Hierarchy}/Drawer/index.scss +0 -0
- /package/dist/elements/{HierarchyDrawer → Hierarchy/Drawer}/types.js +0 -0
- /package/dist/elements/{HierarchyField → Hierarchy/Field}/SelectedHierarchies.d.ts +0 -0
- /package/dist/elements/{HierarchyField → Hierarchy/Field}/index.client.d.ts +0 -0
- /package/dist/elements/{HierarchyField → Hierarchy/Field}/index.server.d.ts +0 -0
- /package/dist/elements/{HierarchySearch → Hierarchy/Search}/HierarchySearchInput.d.ts +0 -0
- /package/dist/elements/{HierarchySearch → Hierarchy/Search}/HierarchySearchResultItem.d.ts +0 -0
- /package/dist/elements/{HierarchySearch → Hierarchy/Search}/HierarchySearchResultItem.js +0 -0
- /package/dist/elements/{HierarchySearch → Hierarchy/Search}/HierarchySearchResults.d.ts +0 -0
- /package/dist/elements/{HierarchySearch → Hierarchy/Search}/index.d.ts +0 -0
- /package/dist/elements/{HierarchySearch → Hierarchy/Search}/types.d.ts +0 -0
- /package/dist/elements/{HierarchySearch → Hierarchy/Search}/types.js +0 -0
- /package/dist/elements/{HierarchySearch → Hierarchy/Search}/useHierarchySearch.d.ts +0 -0
- /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/HierarchySidebarTab.server.d.ts +0 -0
- /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/LoadMore/LoadMoreButton.d.ts +0 -0
- /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/LoadMore/index.d.ts +0 -0
- /package/dist/elements/{Tree → Hierarchy/Tree}/LoadMore/index.scss +0 -0
- /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/TreeConnector.d.ts +0 -0
- /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/TreeConnector.js +0 -0
- /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/TreeFocusContext.d.ts +0 -0
- /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/TreeFocusContext.js +0 -0
- /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/types.js +0 -0
- /package/dist/exports/client/{DatePicker-CL2EGBVQ.js.map → DatePicker-T2DMDMM5.js.map} +0 -0
|
@@ -12,7 +12,7 @@ import { DocumentListSelection } from '../DocumentListSelection/index.js';
|
|
|
12
12
|
import './index.scss';
|
|
13
13
|
const baseClass = 'hierarchy-list-header';
|
|
14
14
|
export function HierarchyListHeader(t0) {
|
|
15
|
-
const $ = _c(
|
|
15
|
+
const $ = _c(4);
|
|
16
16
|
const {
|
|
17
17
|
collectionConfig,
|
|
18
18
|
collections,
|
|
@@ -35,16 +35,17 @@ export function HierarchyListHeader(t0) {
|
|
|
35
35
|
refreshTree
|
|
36
36
|
} = useHierarchy();
|
|
37
37
|
let t1;
|
|
38
|
-
if ($[0] !== clearRouteCache || $[1] !== refreshTree) {
|
|
38
|
+
if ($[0] !== clearRouteCache || $[1] !== collectionConfig.slug || $[2] !== refreshTree) {
|
|
39
39
|
t1 = () => {
|
|
40
40
|
clearRouteCache();
|
|
41
|
-
refreshTree();
|
|
41
|
+
refreshTree(collectionConfig.slug);
|
|
42
42
|
};
|
|
43
43
|
$[0] = clearRouteCache;
|
|
44
|
-
$[1] =
|
|
45
|
-
$[2] =
|
|
44
|
+
$[1] = collectionConfig.slug;
|
|
45
|
+
$[2] = refreshTree;
|
|
46
|
+
$[3] = t1;
|
|
46
47
|
} else {
|
|
47
|
-
t1 = $[
|
|
48
|
+
t1 = $[3];
|
|
48
49
|
}
|
|
49
50
|
const handleSave = t1;
|
|
50
51
|
return _jsx(ListHeader, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","getTranslation","React","CreateDocumentButton","ListHeader","useHierarchy","useRouteCache","DocumentListSelection","baseClass","HierarchyListHeader","t0","$","collectionConfig","collections","currentItemTitle","Description","disableBulkDelete","disableBulkEdit","hasCreatePermission","HierarchyIcon","i18n","labels","title","plural","clearRouteCache","refreshTree","t1","handleSave","_jsx","Actions","hierarchyIcon","hierarchySlug","
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","getTranslation","React","CreateDocumentButton","ListHeader","useHierarchy","useRouteCache","DocumentListSelection","baseClass","HierarchyListHeader","t0","$","collectionConfig","collections","currentItemTitle","Description","disableBulkDelete","disableBulkEdit","hasCreatePermission","HierarchyIcon","i18n","labels","title","plural","clearRouteCache","refreshTree","t1","slug","handleSave","_jsx","Actions","hierarchyIcon","hierarchySlug","AfterListHeaderContent","className","TitleActions","length","drawerSlug","onSave","undefined"],"sources":["../../../../src/views/HierarchyList/HierarchyListHeader/index.tsx"],"sourcesContent":["'use client'\n\nimport type { I18nClient } from '@payloadcms/translations'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { CollectionOption } from '../../../elements/CreateDocumentButton/index.js'\n\nimport { CreateDocumentButton } from '../../../elements/CreateDocumentButton/index.js'\nimport { ListHeader } from '../../../elements/ListHeader/index.js'\nimport { useHierarchy } from '../../../providers/Hierarchy/index.js'\nimport { useRouteCache } from '../../../providers/RouteCache/index.js'\nimport { DocumentListSelection } from '../DocumentListSelection/index.js'\nimport './index.scss'\n\nconst baseClass = 'hierarchy-list-header'\n\nexport type HierarchyListHeaderProps = {\n collectionConfig: ClientCollectionConfig\n /** Collections available for creation with their initial data */\n collections: CollectionOption[]\n /** Title to display - defaults to collection label if not provided */\n currentItemTitle?: string\n Description?: React.ReactNode\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n hasCreatePermission: boolean\n /** Icon to display in the move drawer */\n HierarchyIcon?: React.ReactNode\n i18n: I18nClient\n}\n\nexport function HierarchyListHeader({\n collectionConfig,\n collections,\n currentItemTitle,\n Description,\n disableBulkDelete,\n disableBulkEdit,\n hasCreatePermission,\n HierarchyIcon,\n i18n,\n}: HierarchyListHeaderProps) {\n const { labels } = collectionConfig\n const title = currentItemTitle || getTranslation(labels?.plural, i18n)\n const { clearRouteCache } = useRouteCache()\n const { refreshTree } = useHierarchy()\n\n const handleSave = () => {\n clearRouteCache()\n refreshTree(collectionConfig.slug)\n }\n\n return (\n <ListHeader\n Actions={[\n <DocumentListSelection\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n hierarchyIcon={HierarchyIcon}\n hierarchySlug={collectionConfig.slug}\n key=\"document-list-selection\"\n />,\n ]}\n AfterListHeaderContent={Description}\n className={baseClass}\n title={title}\n TitleActions={\n hasCreatePermission && collections.length > 0\n ? [\n <CreateDocumentButton\n collections={collections}\n drawerSlug={`hierarchy-create-${collectionConfig.slug}`}\n key=\"hierarchy-create-button\"\n onSave={handleSave}\n />,\n ]\n : undefined\n }\n />\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAKA,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,MAAW;AAIlB,SAASC,oBAAoB,QAAQ;AACrC,SAASC,UAAU,QAAQ;AAC3B,SAASC,YAAY,QAAQ;AAC7B,SAASC,aAAa,QAAQ;AAC9B,SAASC,qBAAqB,QAAQ;AACtC,OAAO;AAEP,MAAMC,SAAA,GAAY;AAiBlB,OAAO,SAAAC,oBAAAC,EAAA;EAAA,MAAAC,CAAA,GAAAX,EAAA;EAA6B;IAAAY,gBAAA;IAAAC,WAAA;IAAAC,gBAAA;IAAAC,WAAA;IAAAC,iBAAA;IAAAC,eAAA;IAAAC,mBAAA;IAAAC,aAAA;IAAAC;EAAA,IAAAV,EAUT;EACzB;IAAAW;EAAA,IAAmBT,gBAAA;EACnB,MAAAU,KAAA,GAAcR,gBAAA,IAAoBb,cAAA,CAAeoB,MAAA,EAAAE,MAAA,EAAgBH,IAAA;EACjE;IAAAI;EAAA,IAA4BlB,aAAA;EAC5B;IAAAmB;EAAA,IAAwBpB,YAAA;EAAA,IAAAqB,EAAA;EAAA,IAAAf,CAAA,QAAAa,eAAA,IAAAb,CAAA,QAAAC,gBAAA,CAAAe,IAAA,IAAAhB,CAAA,QAAAc,WAAA;IAELC,EAAA,GAAAA,CAAA;MACjBF,eAAA;MACAC,WAAA,CAAYb,gBAAA,CAAAe,IAAqB;IAAA;IACnChB,CAAA,MAAAa,eAAA;IAAAb,CAAA,MAAAC,gBAAA,CAAAe,IAAA;IAAAhB,CAAA,MAAAc,WAAA;IAAAd,CAAA,MAAAe,EAAA;EAAA;IAAAA,EAAA,GAAAf,CAAA;EAAA;EAHA,MAAAiB,UAAA,GAAmBF,EAGnB;EAAA,OAGEG,IAAA,CAAAzB,UAAA;IAAA0B,OAAA,GAEID,IAAA,CAAAtB,qBAAA;MAAAS,iBAAA;MAAAC,eAAA;MAAAc,aAAA,EAGiBZ,aAAA;MAAAa,aAAA,EACApB,gBAAA,CAAAe;IAAA,GACX;IAAAM,sBAAA,EAGgBlB,WAAA;IAAAmB,SAAA,EAAA1B,SAAA;IAAAc,KAAA;IAAAa,YAAA,EAItBjB,mBAAA,IAAuBL,WAAA,CAAAuB,MAAA,IAAqB,IAEtCP,IAAA,CAAA1B,oBAAA;MAAAU,WAAA;MAAAwB,UAAA,EAEc,oBAAoBzB,gBAAA,CAAAe,IAAA,EAAuB;MAAAW,MAAA,EAE/CV;IAAA,GADJ,8BAAAW;EAIR,C","ignoreList":[]}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import type { PaginatedDocs } from 'payload';
|
|
1
|
+
import type { PaginatedDocs, Where } from 'payload';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import type { CollectionOption } from '../../../elements/CreateDocumentButton/index.js';
|
|
4
|
-
import type { HierarchyDocument } from '../../../elements/
|
|
4
|
+
import type { HierarchyDocument } from '../../../elements/Hierarchy/Tree/types.js';
|
|
5
5
|
import type { RelatedGroup } from './types.js';
|
|
6
6
|
import './index.scss';
|
|
7
7
|
export type HierarchyTableProps = {
|
|
8
|
+
/** Base filter applied to hierarchy collection queries (e.g., tenant filter) */
|
|
9
|
+
baseFilter?: Where;
|
|
8
10
|
childrenData?: PaginatedDocs<HierarchyDocument>;
|
|
9
11
|
/** Collections available for creation (for empty state) */
|
|
10
12
|
collections?: CollectionOption[];
|
|
@@ -15,9 +17,11 @@ export type HierarchyTableProps = {
|
|
|
15
17
|
hierarchyLabel: string;
|
|
16
18
|
parentFieldName?: string;
|
|
17
19
|
parentId: null | number | string;
|
|
20
|
+
/** Base filters for related collections (keyed by collection slug) */
|
|
21
|
+
relatedBaseFilters?: Record<string, Where>;
|
|
18
22
|
relatedGroups: RelatedGroup[];
|
|
19
23
|
search?: string;
|
|
20
24
|
useAsTitle: string;
|
|
21
25
|
};
|
|
22
|
-
export declare function HierarchyTable({ childrenData, collections, collectionSlug, hasCreatePermission, HierarchyIcon, hierarchyLabel, parentFieldName, parentId, relatedGroups, search, useAsTitle, }: HierarchyTableProps): React.JSX.Element;
|
|
26
|
+
export declare function HierarchyTable({ baseFilter, childrenData, collections, collectionSlug, hasCreatePermission, HierarchyIcon, hierarchyLabel, parentFieldName, parentId, relatedBaseFilters, relatedGroups, search, useAsTitle, }: HierarchyTableProps): React.JSX.Element;
|
|
23
27
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/HierarchyList/HierarchyTable/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/HierarchyList/HierarchyTable/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AASnD,OAAO,KAAyC,MAAM,OAAO,CAAA;AAE7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iDAAiD,CAAA;AACvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAA;AAElF,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,YAAY,CAAA;AAcxD,OAAO,cAAc,CAAA;AAcrB,MAAM,MAAM,mBAAmB,GAAG;IAChC,gFAAgF;IAChF,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,YAAY,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;IAC/C,2DAA2D;IAC3D,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAChC,cAAc,EAAE,MAAM,CAAA;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,wCAAwC;IACxC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC/B,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;IAChC,sEAAsE;IACtE,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC1C,aAAa,EAAE,YAAY,EAAE,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAeD,wBAAgB,cAAc,CAAC,EAC7B,UAAU,EACV,YAAY,EACZ,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,eAAe,EACf,QAAQ,EACR,kBAAkB,EAClB,aAAa,EACb,MAAM,EACN,UAAU,GACX,EAAE,mBAAmB,qBA0ZrB"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
4
4
|
import { getTranslation } from '@payloadcms/translations';
|
|
5
|
-
import { DEFAULT_HIERARCHY_LIST_LIMIT, formatAdminURL } from 'payload/shared';
|
|
5
|
+
import { combineWhereConstraints, DEFAULT_HIERARCHY_LIST_LIMIT, formatAdminURL } from 'payload/shared';
|
|
6
6
|
import * as qs from 'qs-esm';
|
|
7
7
|
import React, { useCallback, useMemo, useState } from 'react';
|
|
8
8
|
import { CreateDocumentButton } from '../../../elements/CreateDocumentButton/index.js';
|
|
@@ -30,6 +30,7 @@ const CollectionCell = ({
|
|
|
30
30
|
children: row._collectionLabel
|
|
31
31
|
});
|
|
32
32
|
export function HierarchyTable({
|
|
33
|
+
baseFilter,
|
|
33
34
|
childrenData,
|
|
34
35
|
collections,
|
|
35
36
|
collectionSlug,
|
|
@@ -38,6 +39,7 @@ export function HierarchyTable({
|
|
|
38
39
|
hierarchyLabel,
|
|
39
40
|
parentFieldName,
|
|
40
41
|
parentId,
|
|
42
|
+
relatedBaseFilters,
|
|
41
43
|
relatedGroups,
|
|
42
44
|
search,
|
|
43
45
|
useAsTitle
|
|
@@ -114,13 +116,12 @@ export function HierarchyTable({
|
|
|
114
116
|
}
|
|
115
117
|
}]
|
|
116
118
|
};
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
} : parentCondition;
|
|
119
|
+
const searchCondition = search ? {
|
|
120
|
+
[useAsTitle]: {
|
|
121
|
+
like: search
|
|
122
|
+
}
|
|
123
|
+
} : undefined;
|
|
124
|
+
const where = combineWhereConstraints([parentCondition, searchCondition, baseFilter]);
|
|
124
125
|
const queryString = qs.stringify({
|
|
125
126
|
limit: DEFAULT_HIERARCHY_LIST_LIMIT,
|
|
126
127
|
page: childPage + 1,
|
|
@@ -149,7 +150,7 @@ export function HierarchyTable({
|
|
|
149
150
|
} finally {
|
|
150
151
|
setChildLoading(false);
|
|
151
152
|
}
|
|
152
|
-
}, [apiRoute, childHasNext, childLoading, childPage, collectionSlug, parentFieldName, parentId, search, serverURL, useAsTitle]);
|
|
153
|
+
}, [apiRoute, baseFilter, childHasNext, childLoading, childPage, collectionSlug, parentFieldName, parentId, search, serverURL, useAsTitle]);
|
|
153
154
|
// Load more for a related collection
|
|
154
155
|
const handleLoadMoreRelated = useCallback(async relatedSlug => {
|
|
155
156
|
const state = relatedState[relatedSlug];
|
|
@@ -172,7 +173,7 @@ export function HierarchyTable({
|
|
|
172
173
|
// Field name is always _t_{hierarchySlug} by convention
|
|
173
174
|
const fieldName = `_t_${collectionSlug}`;
|
|
174
175
|
// "in" operator works for both hasMany and single relationship fields
|
|
175
|
-
const
|
|
176
|
+
const relationshipCondition = {
|
|
176
177
|
[fieldName]: {
|
|
177
178
|
in: [parentId]
|
|
178
179
|
}
|
|
@@ -181,13 +182,13 @@ export function HierarchyTable({
|
|
|
181
182
|
collectionSlug: relatedSlug
|
|
182
183
|
});
|
|
183
184
|
const relatedUseAsTitle = relatedConfig?.admin?.useAsTitle || 'id';
|
|
184
|
-
const
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
185
|
+
const searchCondition_0 = search ? {
|
|
186
|
+
[relatedUseAsTitle]: {
|
|
187
|
+
like: search
|
|
188
|
+
}
|
|
189
|
+
} : undefined;
|
|
190
|
+
const relatedBaseFilter = relatedBaseFilters?.[relatedSlug];
|
|
191
|
+
const where_0 = combineWhereConstraints([relationshipCondition, searchCondition_0, relatedBaseFilter]);
|
|
191
192
|
const queryString_0 = qs.stringify({
|
|
192
193
|
limit: DEFAULT_HIERARCHY_LIST_LIMIT,
|
|
193
194
|
page: state.page + 1,
|
|
@@ -226,7 +227,7 @@ export function HierarchyTable({
|
|
|
226
227
|
}
|
|
227
228
|
}));
|
|
228
229
|
}
|
|
229
|
-
}, [apiRoute, getEntityConfig, parentId, relatedGroups, relatedState, search, serverURL
|
|
230
|
+
}, [apiRoute, collectionSlug, getEntityConfig, parentId, relatedBaseFilters, relatedGroups, relatedState, search, serverURL]);
|
|
230
231
|
// Get allowedCollections field name from hierarchy config
|
|
231
232
|
const allowedCollectionsFieldName = useMemo(() => {
|
|
232
233
|
const config = getEntityConfig({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getTranslation","DEFAULT_HIERARCHY_LIST_LIMIT","formatAdminURL","qs","React","useCallback","useMemo","useState","CreateDocumentButton","LoadMoreRow","NoListResults","useConfig","useDocumentSelection","useRouteCache","useTranslation","ChildNameCell","DateCell","RelatedNameCell","SlotTable","baseClass","NameCell","props","row","_hasChildren","undefined","_jsx","CollectionCell","_collectionLabel","HierarchyTable","childrenData","collections","collectionSlug","hasCreatePermission","HierarchyIcon","hierarchyLabel","parentFieldName","parentId","relatedGroups","search","useAsTitle","i18n","t","clearRouteCache","config","routes","api","apiRoute","serverURL","getEntityConfig","childDocs","setChildDocs","docs","childHasNext","setChildHasNext","hasNextPage","childPage","setChildPage","page","childTotal","setChildTotal","totalDocs","childLoading","setChildLoading","relatedState","setRelatedState","initial","group","data","isLoading","isLocked","isSelected","toggleSelection","getRowLockedUser","locked","id","_collectionSlug","_userEditing","handleLoadMoreChildren","parentCondition","equals","or","exists","where","and","like","queryString","stringify","limit","addQueryPrefix","url","path","response","fetch","credentials","ok","Error","result","json","prev","_error","handleLoadMoreRelated","relatedSlug","state","find","g","fieldName","whereClause","in","relatedConfig","relatedUseAsTitle","admin","allowedCollectionsFieldName","hierarchy","collectionSpecific","childrenLabel","labels","plural","childTableData","map","doc","_allowedCollections","Boolean","_hierarchyIcon","hasChildren","hasRelated","some","allGroups","groups","push","slug","isChildren","isHierarchyEnabled","label","onCheckboxChange","metadata","allowedCollections","onLoadMore","relatedLabel","relatedTableData","columns","accessor","Cell","className","heading","canShowCreateButton","length","Actions","drawerSlug","onSave","Message","_jsxs","_Fragment","enableCheckbox","enableDragHandle","enableHeader","enableSelectAll","mergeCheckboxHeader","selectedIds","Set","filter","currentCount","hasMore"],"sources":["../../../../src/views/HierarchyList/HierarchyTable/index.tsx"],"sourcesContent":["'use client'\n\nimport type { PaginatedDocs } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { DEFAULT_HIERARCHY_LIST_LIMIT, formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useMemo, useState } from 'react'\n\nimport type { CollectionOption } from '../../../elements/CreateDocumentButton/index.js'\nimport type { HierarchyDocument } from '../../../elements/HierarchyTree/types.js'\nimport type { SlotColumn } from './SlotTable.js'\nimport type { RelatedGroup, TableRow } from './types.js'\n\nimport { CreateDocumentButton } from '../../../elements/CreateDocumentButton/index.js'\nimport { LoadMoreRow } from '../../../elements/LoadMoreRow/index.js'\nimport { NoListResults } from '../../../elements/NoListResults/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentSelection } from '../../../providers/DocumentSelection/index.js'\nimport { useRouteCache } from '../../../providers/RouteCache/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { ChildNameCell } from './ChildNameCell.js'\nimport { DateCell } from './DateCell.js'\nimport { RelatedNameCell } from './RelatedNameCell.js'\nimport { SlotTable } from './SlotTable.js'\nimport { baseClass } from './types.js'\nimport './index.scss'\n\n// Top-level cell components to avoid nested component eslint errors\nconst NameCell: SlotColumn<TableRow>['Cell'] = (props) =>\n props.row._hasChildren !== undefined ? (\n <ChildNameCell {...props} />\n ) : (\n <RelatedNameCell {...props} />\n )\n\nconst CollectionCell: SlotColumn<TableRow>['Cell'] = ({ row }) => (\n <span>{row._collectionLabel}</span>\n)\n\nexport type HierarchyTableProps = {\n childrenData?: PaginatedDocs<HierarchyDocument>\n /** Collections available for creation (for empty state) */\n collections?: CollectionOption[]\n collectionSlug: string\n hasCreatePermission?: boolean\n /** Resolved hierarchy icon component */\n HierarchyIcon?: React.ReactNode\n hierarchyLabel: string\n parentFieldName?: string\n parentId: null | number | string\n relatedGroups: RelatedGroup[]\n search?: string\n useAsTitle: string\n}\n\ntype GroupState = {\n docs: TableRow[]\n hasNextPage: boolean\n isChildren: boolean\n isHierarchyEnabled: boolean\n isLoading: boolean\n label: string\n onCheckboxChange: (row: TableRow) => void\n onLoadMore: () => void\n slug: string\n totalDocs: number\n}\n\nexport function HierarchyTable({\n childrenData,\n collections,\n collectionSlug,\n hasCreatePermission,\n HierarchyIcon,\n hierarchyLabel,\n parentFieldName,\n parentId,\n relatedGroups,\n search,\n useAsTitle,\n}: HierarchyTableProps) {\n const { i18n, t } = useTranslation()\n const { clearRouteCache } = useRouteCache()\n const {\n config: {\n routes: { api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n // Children pagination state\n const [childDocs, setChildDocs] = useState(childrenData?.docs || [])\n const [childHasNext, setChildHasNext] = useState(childrenData?.hasNextPage || false)\n const [childPage, setChildPage] = useState(childrenData?.page || 1)\n const [childTotal, setChildTotal] = useState(childrenData?.totalDocs || 0)\n const [childLoading, setChildLoading] = useState(false)\n\n // Related groups pagination state (per collection)\n const [relatedState, setRelatedState] = useState<\n Record<\n string,\n {\n isLoading: boolean\n } & Partial<PaginatedDocs>\n >\n >(() => {\n const initial: Record<\n string,\n {\n isLoading: boolean\n } & Partial<PaginatedDocs>\n > = {}\n for (const group of relatedGroups) {\n initial[group.collectionSlug] = {\n docs: group.data.docs,\n hasNextPage: group.data.hasNextPage,\n isLoading: false,\n page: group.data.page || 1,\n totalDocs: group.data.totalDocs,\n }\n }\n return initial\n })\n\n // Get selection functions from context\n const { isLocked, isSelected, toggleSelection } = useDocumentSelection()\n\n // Get the user who is locking a row (for SlotTable to show lock icon instead of checkbox)\n const getRowLockedUser = useCallback(\n (row: TableRow) => {\n const locked = isLocked({ id: row.id, collectionSlug: row._collectionSlug })\n return locked ? row._userEditing : undefined\n },\n [isLocked],\n )\n\n // Load more children\n const handleLoadMoreChildren = useCallback(async () => {\n if (childLoading || !childHasNext) {\n return\n }\n\n setChildLoading(true)\n\n try {\n const parentCondition = parentId\n ? { [parentFieldName]: { equals: parentId } }\n : {\n or: [{ [parentFieldName]: { exists: false } }, { [parentFieldName]: { equals: null } }],\n }\n\n const where = search\n ? { and: [parentCondition, { [useAsTitle]: { like: search } }] }\n : parentCondition\n\n const queryString = qs.stringify(\n { limit: DEFAULT_HIERARCHY_LIST_LIMIT, page: childPage + 1, where },\n { addQueryPrefix: true },\n )\n const url = formatAdminURL({ apiRoute, path: `/${collectionSlug}${queryString}`, serverURL })\n\n const response = await fetch(url, { credentials: 'include' })\n\n if (!response.ok) {\n throw new Error('Failed to load more')\n }\n\n const result: PaginatedDocs = await response.json()\n\n setChildDocs((prev) => [...prev, ...result.docs])\n setChildHasNext(result.hasNextPage)\n setChildPage(result.page || childPage + 1)\n setChildTotal(result.totalDocs)\n } catch (_error) {\n // Silently fail\n } finally {\n setChildLoading(false)\n }\n }, [\n apiRoute,\n childHasNext,\n childLoading,\n childPage,\n collectionSlug,\n parentFieldName,\n parentId,\n search,\n serverURL,\n useAsTitle,\n ])\n\n // Load more for a related collection\n const handleLoadMoreRelated = useCallback(\n async (relatedSlug: string) => {\n const state = relatedState[relatedSlug]\n if (!state || state.isLoading || !state.hasNextPage) {\n return\n }\n\n // Find the group to get field info\n const group = relatedGroups.find((g) => g.collectionSlug === relatedSlug)\n if (!group) {\n return\n }\n\n setRelatedState((prev) => ({\n ...prev,\n [relatedSlug]: { ...prev[relatedSlug], isLoading: true },\n }))\n\n try {\n // Field name is always _t_{hierarchySlug} by convention\n const fieldName = `_t_${collectionSlug}`\n\n // \"in\" operator works for both hasMany and single relationship fields\n const whereClause = { [fieldName]: { in: [parentId] } }\n\n const relatedConfig = getEntityConfig({ collectionSlug: relatedSlug })\n const relatedUseAsTitle = relatedConfig?.admin?.useAsTitle || 'id'\n\n const where = search\n ? { and: [whereClause, { [relatedUseAsTitle]: { like: search } }] }\n : whereClause\n\n const queryString = qs.stringify(\n { limit: DEFAULT_HIERARCHY_LIST_LIMIT, page: state.page + 1, where },\n { addQueryPrefix: true },\n )\n const url = formatAdminURL({\n apiRoute,\n path: `/${relatedSlug}${queryString}`,\n serverURL,\n })\n\n const response = await fetch(url, { credentials: 'include' })\n\n if (!response.ok) {\n throw new Error('Failed to load more')\n }\n\n const result: PaginatedDocs = await response.json()\n\n setRelatedState((prev) => ({\n ...prev,\n [relatedSlug]: {\n docs: [...prev[relatedSlug].docs, ...result.docs],\n hasNextPage: result.hasNextPage,\n isLoading: false,\n page: result.page || prev[relatedSlug].page + 1,\n totalDocs: result.totalDocs,\n },\n }))\n } catch (_error) {\n setRelatedState((prev) => ({\n ...prev,\n [relatedSlug]: { ...prev[relatedSlug], isLoading: false },\n }))\n }\n },\n [\n apiRoute,\n getEntityConfig,\n parentId,\n relatedGroups,\n relatedState,\n search,\n serverURL,\n collectionSlug,\n ],\n )\n\n // Get allowedCollections field name from hierarchy config\n const allowedCollectionsFieldName = useMemo(() => {\n const config = getEntityConfig({ collectionSlug })\n const hierarchy = config?.hierarchy\n\n if (hierarchy && typeof hierarchy === 'object' && hierarchy.collectionSpecific) {\n return hierarchy.collectionSpecific.fieldName\n }\n\n return undefined\n }, [collectionSlug, getEntityConfig])\n\n // Compute collection label for children (once)\n const childrenLabel = useMemo(\n () =>\n getTranslation(getEntityConfig({ collectionSlug })?.labels?.plural, i18n) || hierarchyLabel,\n [collectionSlug, getEntityConfig, hierarchyLabel, i18n],\n )\n\n // Build children data for table\n const childTableData: TableRow[] = useMemo(\n () =>\n childDocs.map((doc) => ({\n ...doc,\n id: doc.id,\n _allowedCollections: allowedCollectionsFieldName\n ? (doc[allowedCollectionsFieldName] as string[] | undefined)\n : undefined,\n _collectionLabel: childrenLabel,\n _collectionSlug: collectionSlug,\n _hasChildren: Boolean(doc._hasChildren),\n _hierarchyIcon: HierarchyIcon,\n })),\n [HierarchyIcon, allowedCollectionsFieldName, childDocs, childrenLabel, collectionSlug],\n )\n\n const hasChildren = childTotal > 0\n const hasRelated = relatedGroups.some((g) => relatedState[g.collectionSlug]?.totalDocs > 0)\n\n // Unified groups array\n const allGroups: GroupState[] = useMemo(() => {\n const groups: GroupState[] = []\n\n // Children group\n if (hasChildren) {\n groups.push({\n slug: collectionSlug,\n docs: childTableData,\n hasNextPage: childHasNext,\n isChildren: true,\n isHierarchyEnabled: true,\n isLoading: childLoading,\n label: childrenLabel,\n onCheckboxChange: (row: TableRow) =>\n toggleSelection({\n id: row.id,\n collectionSlug,\n metadata: {\n allowedCollections: row._allowedCollections as string[] | undefined,\n },\n }),\n onLoadMore: () => void handleLoadMoreChildren(),\n totalDocs: childTotal,\n })\n }\n\n // Related groups\n for (const group of relatedGroups) {\n const state = relatedState[group.collectionSlug]\n if (!state || state.totalDocs === 0) {\n continue\n }\n\n const relatedConfig = getEntityConfig({ collectionSlug: group.collectionSlug })\n const relatedLabel = getTranslation(relatedConfig?.labels?.plural, i18n) || group.label\n\n const relatedTableData: TableRow[] = state.docs.map((doc: Record<string, unknown>) => ({\n ...doc,\n id: doc.id as number | string,\n _collectionLabel: relatedLabel,\n _collectionSlug: group.collectionSlug,\n }))\n\n groups.push({\n slug: group.collectionSlug,\n docs: relatedTableData,\n hasNextPage: state.hasNextPage,\n isChildren: false,\n isHierarchyEnabled: false,\n isLoading: state.isLoading,\n label: relatedLabel,\n onCheckboxChange: (row: TableRow) =>\n toggleSelection({\n id: row.id,\n collectionSlug: group.collectionSlug,\n metadata: {}, // Related items don't have allowedCollections - their collection slug is the constraint\n }),\n onLoadMore: () => void handleLoadMoreRelated(group.collectionSlug),\n totalDocs: state.totalDocs,\n })\n }\n\n return groups\n }, [\n childHasNext,\n childLoading,\n childrenLabel,\n childTableData,\n childTotal,\n collectionSlug,\n getEntityConfig,\n handleLoadMoreChildren,\n handleLoadMoreRelated,\n hasChildren,\n i18n,\n relatedGroups,\n relatedState,\n toggleSelection,\n ])\n\n // Column definitions\n const columns: SlotColumn<TableRow>[] = useMemo(\n () => [\n {\n accessor: 'name',\n Cell: NameCell,\n className: `${baseClass}__col-name`,\n heading: t('general:name'),\n },\n {\n accessor: 'collection',\n Cell: CollectionCell,\n className: `${baseClass}__col-collection`,\n heading: t('general:collection'),\n },\n {\n accessor: 'updatedAt',\n Cell: DateCell,\n className: `${baseClass}__col-date`,\n heading: t('general:updatedAt'),\n },\n ],\n [t],\n )\n\n if (!hasChildren && !hasRelated) {\n const canShowCreateButton = hasCreatePermission && collections && collections.length > 0\n\n return (\n <NoListResults\n Actions={\n canShowCreateButton\n ? [\n <CreateDocumentButton\n collections={collections}\n drawerSlug={`hierarchy-create-empty-${collectionSlug}`}\n key=\"create\"\n onSave={clearRouteCache}\n />,\n ]\n : undefined\n }\n Message={\n <>\n <h3>{t('general:noResultsFound')}</h3>\n <p>{t('general:noResultsDescription')}</p>\n </>\n }\n />\n )\n }\n\n return (\n <div className={baseClass}>\n {allGroups.map((group) => (\n <div key={group.slug}>\n <div className={`${baseClass}__group-label`}>\n <span>{group.label}</span>\n </div>\n <SlotTable\n collectionSlug={group.slug}\n columns={columns}\n data={group.docs}\n enableCheckbox={true}\n enableDragHandle={false}\n enableHeader={true}\n enableSelectAll={false}\n getRowLockedUser={getRowLockedUser}\n mergeCheckboxHeader={true}\n onCheckboxChange={group.onCheckboxChange}\n parentId={parentId}\n selectedIds={\n new Set(\n group.docs\n .filter((row) => isSelected({ id: row.id, collectionSlug: group.slug }))\n .map((row) => row.id),\n )\n }\n />\n\n <div className={`${baseClass}__load-more-wrap`}>\n <LoadMoreRow\n currentCount={group.docs.length}\n hasMore={group.hasNextPage}\n isLoading={group.isLoading}\n onLoadMore={group.onLoadMore}\n totalDocs={group.totalDocs}\n />\n </div>\n </div>\n ))}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getTranslation","combineWhereConstraints","DEFAULT_HIERARCHY_LIST_LIMIT","formatAdminURL","qs","React","useCallback","useMemo","useState","CreateDocumentButton","LoadMoreRow","NoListResults","useConfig","useDocumentSelection","useRouteCache","useTranslation","ChildNameCell","DateCell","RelatedNameCell","SlotTable","baseClass","NameCell","props","row","_hasChildren","undefined","_jsx","CollectionCell","_collectionLabel","HierarchyTable","baseFilter","childrenData","collections","collectionSlug","hasCreatePermission","HierarchyIcon","hierarchyLabel","parentFieldName","parentId","relatedBaseFilters","relatedGroups","search","useAsTitle","i18n","t","clearRouteCache","config","routes","api","apiRoute","serverURL","getEntityConfig","childDocs","setChildDocs","docs","childHasNext","setChildHasNext","hasNextPage","childPage","setChildPage","page","childTotal","setChildTotal","totalDocs","childLoading","setChildLoading","relatedState","setRelatedState","initial","group","data","isLoading","isLocked","isSelected","toggleSelection","getRowLockedUser","locked","id","_collectionSlug","_userEditing","handleLoadMoreChildren","parentCondition","equals","or","exists","searchCondition","like","where","queryString","stringify","limit","addQueryPrefix","url","path","response","fetch","credentials","ok","Error","result","json","prev","_error","handleLoadMoreRelated","relatedSlug","state","find","g","fieldName","relationshipCondition","in","relatedConfig","relatedUseAsTitle","admin","relatedBaseFilter","allowedCollectionsFieldName","hierarchy","collectionSpecific","childrenLabel","labels","plural","childTableData","map","doc","_allowedCollections","Boolean","_hierarchyIcon","hasChildren","hasRelated","some","allGroups","groups","push","slug","isChildren","isHierarchyEnabled","label","onCheckboxChange","metadata","allowedCollections","onLoadMore","relatedLabel","relatedTableData","columns","accessor","Cell","className","heading","canShowCreateButton","length","Actions","drawerSlug","onSave","Message","_jsxs","_Fragment","enableCheckbox","enableDragHandle","enableHeader","enableSelectAll","mergeCheckboxHeader","selectedIds","Set","filter","currentCount","hasMore"],"sources":["../../../../src/views/HierarchyList/HierarchyTable/index.tsx"],"sourcesContent":["'use client'\n\nimport type { PaginatedDocs, Where } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n combineWhereConstraints,\n DEFAULT_HIERARCHY_LIST_LIMIT,\n formatAdminURL,\n} from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useMemo, useState } from 'react'\n\nimport type { CollectionOption } from '../../../elements/CreateDocumentButton/index.js'\nimport type { HierarchyDocument } from '../../../elements/Hierarchy/Tree/types.js'\nimport type { SlotColumn } from './SlotTable.js'\nimport type { RelatedGroup, TableRow } from './types.js'\n\nimport { CreateDocumentButton } from '../../../elements/CreateDocumentButton/index.js'\nimport { LoadMoreRow } from '../../../elements/LoadMoreRow/index.js'\nimport { NoListResults } from '../../../elements/NoListResults/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentSelection } from '../../../providers/DocumentSelection/index.js'\nimport { useRouteCache } from '../../../providers/RouteCache/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { ChildNameCell } from './ChildNameCell.js'\nimport { DateCell } from './DateCell.js'\nimport { RelatedNameCell } from './RelatedNameCell.js'\nimport { SlotTable } from './SlotTable.js'\nimport { baseClass } from './types.js'\nimport './index.scss'\n\n// Top-level cell components to avoid nested component eslint errors\nconst NameCell: SlotColumn<TableRow>['Cell'] = (props) =>\n props.row._hasChildren !== undefined ? (\n <ChildNameCell {...props} />\n ) : (\n <RelatedNameCell {...props} />\n )\n\nconst CollectionCell: SlotColumn<TableRow>['Cell'] = ({ row }) => (\n <span>{row._collectionLabel}</span>\n)\n\nexport type HierarchyTableProps = {\n /** Base filter applied to hierarchy collection queries (e.g., tenant filter) */\n baseFilter?: Where\n childrenData?: PaginatedDocs<HierarchyDocument>\n /** Collections available for creation (for empty state) */\n collections?: CollectionOption[]\n collectionSlug: string\n hasCreatePermission?: boolean\n /** Resolved hierarchy icon component */\n HierarchyIcon?: React.ReactNode\n hierarchyLabel: string\n parentFieldName?: string\n parentId: null | number | string\n /** Base filters for related collections (keyed by collection slug) */\n relatedBaseFilters?: Record<string, Where>\n relatedGroups: RelatedGroup[]\n search?: string\n useAsTitle: string\n}\n\ntype GroupState = {\n docs: TableRow[]\n hasNextPage: boolean\n isChildren: boolean\n isHierarchyEnabled: boolean\n isLoading: boolean\n label: string\n onCheckboxChange: (row: TableRow) => void\n onLoadMore: () => void\n slug: string\n totalDocs: number\n}\n\nexport function HierarchyTable({\n baseFilter,\n childrenData,\n collections,\n collectionSlug,\n hasCreatePermission,\n HierarchyIcon,\n hierarchyLabel,\n parentFieldName,\n parentId,\n relatedBaseFilters,\n relatedGroups,\n search,\n useAsTitle,\n}: HierarchyTableProps) {\n const { i18n, t } = useTranslation()\n const { clearRouteCache } = useRouteCache()\n const {\n config: {\n routes: { api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n // Children pagination state\n const [childDocs, setChildDocs] = useState(childrenData?.docs || [])\n const [childHasNext, setChildHasNext] = useState(childrenData?.hasNextPage || false)\n const [childPage, setChildPage] = useState(childrenData?.page || 1)\n const [childTotal, setChildTotal] = useState(childrenData?.totalDocs || 0)\n const [childLoading, setChildLoading] = useState(false)\n\n // Related groups pagination state (per collection)\n const [relatedState, setRelatedState] = useState<\n Record<\n string,\n {\n isLoading: boolean\n } & Partial<PaginatedDocs>\n >\n >(() => {\n const initial: Record<\n string,\n {\n isLoading: boolean\n } & Partial<PaginatedDocs>\n > = {}\n for (const group of relatedGroups) {\n initial[group.collectionSlug] = {\n docs: group.data.docs,\n hasNextPage: group.data.hasNextPage,\n isLoading: false,\n page: group.data.page || 1,\n totalDocs: group.data.totalDocs,\n }\n }\n return initial\n })\n\n // Get selection functions from context\n const { isLocked, isSelected, toggleSelection } = useDocumentSelection()\n\n // Get the user who is locking a row (for SlotTable to show lock icon instead of checkbox)\n const getRowLockedUser = useCallback(\n (row: TableRow) => {\n const locked = isLocked({ id: row.id, collectionSlug: row._collectionSlug })\n return locked ? row._userEditing : undefined\n },\n [isLocked],\n )\n\n // Load more children\n const handleLoadMoreChildren = useCallback(async () => {\n if (childLoading || !childHasNext) {\n return\n }\n\n setChildLoading(true)\n\n try {\n const parentCondition = parentId\n ? { [parentFieldName]: { equals: parentId } }\n : {\n or: [{ [parentFieldName]: { exists: false } }, { [parentFieldName]: { equals: null } }],\n }\n\n const searchCondition = search ? { [useAsTitle]: { like: search } } : undefined\n const where = combineWhereConstraints([parentCondition, searchCondition, baseFilter])\n\n const queryString = qs.stringify(\n { limit: DEFAULT_HIERARCHY_LIST_LIMIT, page: childPage + 1, where },\n { addQueryPrefix: true },\n )\n const url = formatAdminURL({ apiRoute, path: `/${collectionSlug}${queryString}`, serverURL })\n\n const response = await fetch(url, { credentials: 'include' })\n\n if (!response.ok) {\n throw new Error('Failed to load more')\n }\n\n const result: PaginatedDocs = await response.json()\n\n setChildDocs((prev) => [...prev, ...result.docs])\n setChildHasNext(result.hasNextPage)\n setChildPage(result.page || childPage + 1)\n setChildTotal(result.totalDocs)\n } catch (_error) {\n // Silently fail\n } finally {\n setChildLoading(false)\n }\n }, [\n apiRoute,\n baseFilter,\n childHasNext,\n childLoading,\n childPage,\n collectionSlug,\n parentFieldName,\n parentId,\n search,\n serverURL,\n useAsTitle,\n ])\n\n // Load more for a related collection\n const handleLoadMoreRelated = useCallback(\n async (relatedSlug: string) => {\n const state = relatedState[relatedSlug]\n if (!state || state.isLoading || !state.hasNextPage) {\n return\n }\n\n // Find the group to get field info\n const group = relatedGroups.find((g) => g.collectionSlug === relatedSlug)\n if (!group) {\n return\n }\n\n setRelatedState((prev) => ({\n ...prev,\n [relatedSlug]: { ...prev[relatedSlug], isLoading: true },\n }))\n\n try {\n // Field name is always _t_{hierarchySlug} by convention\n const fieldName = `_t_${collectionSlug}`\n\n // \"in\" operator works for both hasMany and single relationship fields\n const relationshipCondition = { [fieldName]: { in: [parentId] } }\n\n const relatedConfig = getEntityConfig({ collectionSlug: relatedSlug })\n const relatedUseAsTitle = relatedConfig?.admin?.useAsTitle || 'id'\n\n const searchCondition = search ? { [relatedUseAsTitle]: { like: search } } : undefined\n const relatedBaseFilter = relatedBaseFilters?.[relatedSlug]\n const where = combineWhereConstraints([\n relationshipCondition,\n searchCondition,\n relatedBaseFilter,\n ])\n\n const queryString = qs.stringify(\n { limit: DEFAULT_HIERARCHY_LIST_LIMIT, page: state.page + 1, where },\n { addQueryPrefix: true },\n )\n const url = formatAdminURL({\n apiRoute,\n path: `/${relatedSlug}${queryString}`,\n serverURL,\n })\n\n const response = await fetch(url, { credentials: 'include' })\n\n if (!response.ok) {\n throw new Error('Failed to load more')\n }\n\n const result: PaginatedDocs = await response.json()\n\n setRelatedState((prev) => ({\n ...prev,\n [relatedSlug]: {\n docs: [...prev[relatedSlug].docs, ...result.docs],\n hasNextPage: result.hasNextPage,\n isLoading: false,\n page: result.page || prev[relatedSlug].page + 1,\n totalDocs: result.totalDocs,\n },\n }))\n } catch (_error) {\n setRelatedState((prev) => ({\n ...prev,\n [relatedSlug]: { ...prev[relatedSlug], isLoading: false },\n }))\n }\n },\n [\n apiRoute,\n collectionSlug,\n getEntityConfig,\n parentId,\n relatedBaseFilters,\n relatedGroups,\n relatedState,\n search,\n serverURL,\n ],\n )\n\n // Get allowedCollections field name from hierarchy config\n const allowedCollectionsFieldName = useMemo(() => {\n const config = getEntityConfig({ collectionSlug })\n const hierarchy = config?.hierarchy\n\n if (hierarchy && typeof hierarchy === 'object' && hierarchy.collectionSpecific) {\n return hierarchy.collectionSpecific.fieldName\n }\n\n return undefined\n }, [collectionSlug, getEntityConfig])\n\n // Compute collection label for children (once)\n const childrenLabel = useMemo(\n () =>\n getTranslation(getEntityConfig({ collectionSlug })?.labels?.plural, i18n) || hierarchyLabel,\n [collectionSlug, getEntityConfig, hierarchyLabel, i18n],\n )\n\n // Build children data for table\n const childTableData: TableRow[] = useMemo(\n () =>\n childDocs.map((doc) => ({\n ...doc,\n id: doc.id,\n _allowedCollections: allowedCollectionsFieldName\n ? (doc[allowedCollectionsFieldName] as string[] | undefined)\n : undefined,\n _collectionLabel: childrenLabel,\n _collectionSlug: collectionSlug,\n _hasChildren: Boolean(doc._hasChildren),\n _hierarchyIcon: HierarchyIcon,\n })),\n [HierarchyIcon, allowedCollectionsFieldName, childDocs, childrenLabel, collectionSlug],\n )\n\n const hasChildren = childTotal > 0\n const hasRelated = relatedGroups.some((g) => relatedState[g.collectionSlug]?.totalDocs > 0)\n\n // Unified groups array\n const allGroups: GroupState[] = useMemo(() => {\n const groups: GroupState[] = []\n\n // Children group\n if (hasChildren) {\n groups.push({\n slug: collectionSlug,\n docs: childTableData,\n hasNextPage: childHasNext,\n isChildren: true,\n isHierarchyEnabled: true,\n isLoading: childLoading,\n label: childrenLabel,\n onCheckboxChange: (row: TableRow) =>\n toggleSelection({\n id: row.id,\n collectionSlug,\n metadata: {\n allowedCollections: row._allowedCollections as string[] | undefined,\n },\n }),\n onLoadMore: () => void handleLoadMoreChildren(),\n totalDocs: childTotal,\n })\n }\n\n // Related groups\n for (const group of relatedGroups) {\n const state = relatedState[group.collectionSlug]\n if (!state || state.totalDocs === 0) {\n continue\n }\n\n const relatedConfig = getEntityConfig({ collectionSlug: group.collectionSlug })\n const relatedLabel = getTranslation(relatedConfig?.labels?.plural, i18n) || group.label\n\n const relatedTableData: TableRow[] = state.docs.map((doc: Record<string, unknown>) => ({\n ...doc,\n id: doc.id as number | string,\n _collectionLabel: relatedLabel,\n _collectionSlug: group.collectionSlug,\n }))\n\n groups.push({\n slug: group.collectionSlug,\n docs: relatedTableData,\n hasNextPage: state.hasNextPage,\n isChildren: false,\n isHierarchyEnabled: false,\n isLoading: state.isLoading,\n label: relatedLabel,\n onCheckboxChange: (row: TableRow) =>\n toggleSelection({\n id: row.id,\n collectionSlug: group.collectionSlug,\n metadata: {}, // Related items don't have allowedCollections - their collection slug is the constraint\n }),\n onLoadMore: () => void handleLoadMoreRelated(group.collectionSlug),\n totalDocs: state.totalDocs,\n })\n }\n\n return groups\n }, [\n childHasNext,\n childLoading,\n childrenLabel,\n childTableData,\n childTotal,\n collectionSlug,\n getEntityConfig,\n handleLoadMoreChildren,\n handleLoadMoreRelated,\n hasChildren,\n i18n,\n relatedGroups,\n relatedState,\n toggleSelection,\n ])\n\n // Column definitions\n const columns: SlotColumn<TableRow>[] = useMemo(\n () => [\n {\n accessor: 'name',\n Cell: NameCell,\n className: `${baseClass}__col-name`,\n heading: t('general:name'),\n },\n {\n accessor: 'collection',\n Cell: CollectionCell,\n className: `${baseClass}__col-collection`,\n heading: t('general:collection'),\n },\n {\n accessor: 'updatedAt',\n Cell: DateCell,\n className: `${baseClass}__col-date`,\n heading: t('general:updatedAt'),\n },\n ],\n [t],\n )\n\n if (!hasChildren && !hasRelated) {\n const canShowCreateButton = hasCreatePermission && collections && collections.length > 0\n\n return (\n <NoListResults\n Actions={\n canShowCreateButton\n ? [\n <CreateDocumentButton\n collections={collections}\n drawerSlug={`hierarchy-create-empty-${collectionSlug}`}\n key=\"create\"\n onSave={clearRouteCache}\n />,\n ]\n : undefined\n }\n Message={\n <>\n <h3>{t('general:noResultsFound')}</h3>\n <p>{t('general:noResultsDescription')}</p>\n </>\n }\n />\n )\n }\n\n return (\n <div className={baseClass}>\n {allGroups.map((group) => (\n <div key={group.slug}>\n <div className={`${baseClass}__group-label`}>\n <span>{group.label}</span>\n </div>\n <SlotTable\n collectionSlug={group.slug}\n columns={columns}\n data={group.docs}\n enableCheckbox={true}\n enableDragHandle={false}\n enableHeader={true}\n enableSelectAll={false}\n getRowLockedUser={getRowLockedUser}\n mergeCheckboxHeader={true}\n onCheckboxChange={group.onCheckboxChange}\n parentId={parentId}\n selectedIds={\n new Set(\n group.docs\n .filter((row) => isSelected({ id: row.id, collectionSlug: group.slug }))\n .map((row) => row.id),\n )\n }\n />\n\n <div className={`${baseClass}__load-more-wrap`}>\n <LoadMoreRow\n currentCount={group.docs.length}\n hasMore={group.hasNextPage}\n isLoading={group.isLoading}\n onLoadMore={group.onLoadMore}\n totalDocs={group.totalDocs}\n />\n </div>\n </div>\n ))}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/HierarchyList/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAMlD,OAAO,KAA8D,MAAM,OAAO,CAAA;AAoBlF,OAAO,cAAc,CAAA;AAIrB,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/HierarchyList/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAMlD,OAAO,KAA8D,MAAM,OAAO,CAAA;AAoBlF,OAAO,cAAc,CAAA;AAIrB,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,qBA2W3D"}
|
|
@@ -26,6 +26,7 @@ const baseClass = 'hierarchy-list';
|
|
|
26
26
|
export function HierarchyListView(props) {
|
|
27
27
|
const {
|
|
28
28
|
AfterList,
|
|
29
|
+
baseFilter,
|
|
29
30
|
BeforeList,
|
|
30
31
|
collectionSlug,
|
|
31
32
|
Description,
|
|
@@ -283,6 +284,7 @@ export function HierarchyListView(props) {
|
|
|
283
284
|
searchQueryParam: searchFromURL
|
|
284
285
|
})
|
|
285
286
|
}), /*#__PURE__*/_jsx(HierarchyTable, {
|
|
287
|
+
baseFilter: baseFilter,
|
|
286
288
|
childrenData: filteredChildrenData,
|
|
287
289
|
collections: collections,
|
|
288
290
|
collectionSlug: collectionSlug,
|
|
@@ -294,7 +296,7 @@ export function HierarchyListView(props) {
|
|
|
294
296
|
relatedGroups: filteredRelatedGroups,
|
|
295
297
|
search: searchFromURL,
|
|
296
298
|
useAsTitle: collectionConfig?.admin?.useAsTitle || 'id'
|
|
297
|
-
}, `${collectionSlug}-${parentId}-${searchFromURL}-${filteredChildrenData?.totalDocs}-${Object.entries(hierarchyData?.relatedDocumentsByCollection || {}).map(([slug_4, r]) => `${slug_4}:${r.result.totalDocs}`).join(',')}`)]
|
|
299
|
+
}, `${collectionSlug}-${parentId}-${searchFromURL}-${JSON.stringify(baseFilter)}-${filteredChildrenData?.totalDocs}-${Object.entries(hierarchyData?.relatedDocumentsByCollection || {}).map(([slug_4, r]) => `${slug_4}:${r.result.totalDocs}`).join(',')}`)]
|
|
298
300
|
})
|
|
299
301
|
}), AfterList]
|
|
300
302
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getTranslation","useRouter","useSearchParams","formatAdminURL","qs","React","Fragment","useCallback","useEffect","useMemo","useState","Gutter","useListDrawerContext","RenderCustomComponent","SearchBar","useStepNav","ViewDescription","TagIcon","useConfig","DocumentSelectionProvider","useHierarchy","useRouteTransition","useTranslation","HierarchyListHeader","HierarchyTable","TypeFilter","baseClass","HierarchyListView","props","AfterList","BeforeList","collectionSlug","Description","hasCreatePermission","hasCreatePermissionFromProps","hierarchyData","HierarchyIcon","router","searchParams","startRouteTransition","allowCreate","isInDrawer","undefined","config","routes","admin","adminRoute","getEntityConfig","collectionConfig","labels","i18n","t","collectionLabel","plural","setStepNav","parent","searchFromURL","get","handleSearchChange","value","currentParams","forEach","v","k","search","queryString","stringify","addQueryPrefix","newUrl","window","location","pathname","replace","currentItemTitle","breadcrumbs","length","title","ancestorBreadcrumbs","slice","baseLabel","label","_jsxs","className","_jsx","color","url","id","path","navItems","hierarchyBreadcrumbs","map","crumb","hierarchyConfig","hierarchy","parentFieldName","parentId","allowedCollections","collections","hierarchyInitialData","collectionSpecificFieldName","collectionSpecific","fieldName","parentCollectionSpecificValues","push","initialData","Object","keys","slug","relatedConfig","entries","relatedCollections","some","c","fieldValue","hasMany","typeOptions","options","typeFilterFromURL","typeFilterValues","split","selectedTypes","setSelectedTypes","opt","handleTypeFilterChange","values","allSelected","typeFilter","join","filteredChildrenData","childrenData","filteredRelatedGroups","relatedDocumentsByCollection","filter","includes","related","data","result","collectionData","docs","fromEntries","description","CustomComponent","Fallback","Actions","onChange","selectedValues","useAsTitle","onSearchChange","searchQueryParam","hierarchyLabel","relatedGroups","totalDocs","r"],"sources":["../../../src/views/HierarchyList/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ListViewClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { Fragment, useCallback, useEffect, useMemo, useState } from 'react'\n\nimport type { CollectionOption } from '../../elements/CreateDocumentButton/index.js'\nimport type { StepNavItem } from '../../elements/StepNav/index.js'\n\nimport { Gutter } from '../../elements/Gutter/index.js'\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { SearchBar } from '../../elements/SearchBar/index.js'\nimport { useStepNav } from '../../elements/StepNav/index.js'\nimport { ViewDescription } from '../../elements/ViewDescription/index.js'\nimport { TagIcon } from '../../icons/Tag/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { DocumentSelectionProvider } from '../../providers/DocumentSelection/index.js'\nimport { useHierarchy } from '../../providers/Hierarchy/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { HierarchyListHeader } from './HierarchyListHeader/index.js'\nimport { HierarchyTable } from './HierarchyTable/index.js'\nimport { TypeFilter } from './TypeFilter/index.js'\nimport './index.scss'\n\nconst baseClass = 'hierarchy-list'\n\nexport function HierarchyListView(props: ListViewClientProps) {\n const {\n AfterList,\n BeforeList,\n collectionSlug,\n Description,\n hasCreatePermission: hasCreatePermissionFromProps,\n hierarchyData,\n HierarchyIcon,\n } = props\n\n const router = useRouter()\n const searchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n\n const { allowCreate, isInDrawer } = useListDrawerContext()\n\n const hasCreatePermission =\n allowCreate !== undefined\n ? allowCreate && hasCreatePermissionFromProps\n : hasCreatePermissionFromProps\n\n const {\n config: {\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const { labels } = collectionConfig\n\n const { i18n, t } = useTranslation()\n const collectionLabel = getTranslation(labels?.plural, i18n)\n\n const { setStepNav } = useStepNav()\n const { parent } = useHierarchy()\n\n // Get search from URL params\n const searchFromURL = searchParams.get('search') || ''\n\n // Update URL when search changes (debouncing is handled by SearchFilter)\n // This triggers a server refetch via Next.js router\n const handleSearchChange = useCallback(\n (value: string) => {\n // Build new URL with updated search param\n const currentParams: Record<string, string> = {}\n searchParams.forEach((v, k) => {\n currentParams[k] = v\n })\n\n if (value) {\n currentParams.search = value\n } else {\n delete currentParams.search\n }\n\n const queryString = qs.stringify(currentParams, { addQueryPrefix: true })\n const newUrl = `${window.location.pathname}${queryString}`\n\n if (window.location.search !== queryString) {\n startRouteTransition(() => router.replace(newUrl))\n }\n },\n [router, searchParams, startRouteTransition],\n )\n\n // Get current item title from breadcrumbs (last item is the current one)\n const currentItemTitle =\n hierarchyData?.breadcrumbs && hierarchyData.breadcrumbs.length > 0\n ? hierarchyData.breadcrumbs[hierarchyData.breadcrumbs.length - 1].title\n : undefined\n\n useEffect(() => {\n if (!isInDrawer) {\n // Breadcrumbs exclude the last item (current item) since it's shown in the header\n const ancestorBreadcrumbs = hierarchyData?.breadcrumbs?.slice(0, -1) || []\n\n const baseLabel: StepNavItem = {\n label: (\n <div className={`${baseClass}__step-nav-icon-label`}>\n {HierarchyIcon || <TagIcon color=\"muted\" />}\n {collectionLabel}\n </div>\n ),\n url: parent?.id\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}`,\n })\n : undefined,\n }\n\n let navItems = [baseLabel]\n\n if (ancestorBreadcrumbs.length > 0) {\n const hierarchyBreadcrumbs: StepNavItem[] = ancestorBreadcrumbs.map((crumb) => ({\n label: crumb.title,\n url: formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}?parent=${crumb.id}`,\n }),\n }))\n navItems = [...navItems, ...hierarchyBreadcrumbs]\n }\n\n setStepNav(navItems)\n }\n }, [\n adminRoute,\n setStepNav,\n isInDrawer,\n collectionSlug,\n hierarchyData,\n collectionLabel,\n currentItemTitle,\n parent,\n HierarchyIcon,\n ])\n\n const hierarchyConfig =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy\n : undefined\n const parentFieldName = hierarchyConfig?.parentFieldName\n const parentId = hierarchyData?.parentId ?? null\n\n // Build collections array for create button\n // Filter by allowedCollections when set (from parent's collectionSpecific field)\n const { allowedCollections } = hierarchyData || {}\n\n const collections: CollectionOption[] = []\n\n // Add hierarchy collection (always allowed for creating child hierarchy items)\n // Include parent's collectionSpecific values so new folders inherit the restriction\n const hierarchyInitialData: Record<string, unknown> = {}\n if (parentId !== null) {\n hierarchyInitialData[parentFieldName] = parentId\n\n const collectionSpecificFieldName =\n hierarchyConfig?.collectionSpecific && typeof hierarchyConfig.collectionSpecific === 'object'\n ? hierarchyConfig.collectionSpecific.fieldName\n : undefined\n const parentCollectionSpecificValues = collectionSpecificFieldName\n ? (parent?.[collectionSpecificFieldName] as string[] | undefined)\n : undefined\n if (\n collectionSpecificFieldName &&\n parentCollectionSpecificValues &&\n parentCollectionSpecificValues.length > 0\n ) {\n hierarchyInitialData[collectionSpecificFieldName] = parentCollectionSpecificValues\n }\n }\n\n collections.push({\n collectionSlug,\n initialData: Object.keys(hierarchyInitialData).length > 0 ? hierarchyInitialData : {},\n })\n\n // Add related collections (for creating documents that reference this hierarchy)\n // Filter by allowedCollections when set\n for (const [slug, relatedConfig] of Object.entries(hierarchyConfig?.relatedCollections || {})) {\n // Skip if not in allowed list (when allowedCollections has restrictions)\n // Empty array means \"no restrictions\" (folder accepts all types)\n if (\n allowedCollections &&\n allowedCollections.length > 0 &&\n !allowedCollections.some((c) => c.slug === slug)\n ) {\n continue\n }\n\n // Use array for hasMany fields, single value for hasMany: false\n const fieldValue = relatedConfig.hasMany ? [parentId] : parentId\n\n collections.push({\n collectionSlug: slug,\n initialData: parentId !== null ? { [relatedConfig.fieldName]: fieldValue } : {},\n })\n }\n\n // Build type filter options from hierarchy collection + related collections\n // Filter by allowedCollections when set\n const typeOptions = useMemo(() => {\n const options: { label: string; value: string }[] = []\n\n // Add related collections (filtered by allowedCollections when set)\n for (const [slug] of Object.entries(hierarchyConfig?.relatedCollections || {})) {\n // Skip if not in allowed list (when allowedCollections has restrictions)\n // Empty array means \"no restrictions\" (folder accepts all types)\n if (\n allowedCollections &&\n allowedCollections.length > 0 &&\n !allowedCollections.some((c) => c.slug === slug)\n ) {\n continue\n }\n\n const config = getEntityConfig({ collectionSlug: slug })\n options.push({\n label: getTranslation(config.labels?.plural, i18n),\n value: slug,\n })\n }\n\n return options\n }, [allowedCollections, getEntityConfig, hierarchyConfig?.relatedCollections, i18n])\n\n // Get type filter from URL params (comma-separated list)\n const typeFilterFromURL = searchParams.get('typeFilter')\n const typeFilterValues = typeFilterFromURL ? typeFilterFromURL.split(',') : null\n\n // Track selected types (default: from URL or all selected)\n const [selectedTypes, setSelectedTypes] = useState<string[]>(\n () => typeFilterValues || typeOptions.map((opt) => opt.value),\n )\n\n // Update URL when type filter changes\n const handleTypeFilterChange = useCallback(\n (values: string[]) => {\n setSelectedTypes(values)\n\n // Build new URL with updated typeFilter param\n const currentParams: Record<string, string> = {}\n searchParams.forEach((v, k) => {\n currentParams[k] = v\n })\n\n // Only add typeFilter if not all types are selected\n const allSelected = values.length === typeOptions.length\n if (!allSelected && values.length > 0) {\n currentParams.typeFilter = values.join(',')\n } else {\n delete currentParams.typeFilter\n }\n\n const queryString = qs.stringify(currentParams, { addQueryPrefix: true })\n const newUrl = `${window.location.pathname}${queryString}`\n\n if (window.location.search !== queryString) {\n startRouteTransition(() => router.replace(newUrl))\n }\n },\n [router, searchParams, startRouteTransition, typeOptions.length],\n )\n\n // Filter children based on selected types (client-side for immediate feedback)\n // Server already filters, but this handles the hierarchy collection toggle\n const filteredChildrenData = useMemo(() => {\n if (!hierarchyData?.childrenData) {\n return undefined\n }\n return hierarchyData.childrenData\n }, [hierarchyData?.childrenData])\n\n // Filter related groups based on selected types\n const filteredRelatedGroups = useMemo(() => {\n return Object.entries(hierarchyData?.relatedDocumentsByCollection || {})\n .filter(([slug]) => selectedTypes.includes(slug))\n .map(([slug, related]) => ({\n collectionSlug: slug,\n data: related.result,\n hasMany: related.hasMany,\n label: related.label,\n }))\n }, [hierarchyData?.relatedDocumentsByCollection, selectedTypes])\n\n const collectionData = hierarchyData\n ? {\n [collectionSlug]: { docs: hierarchyData.childrenData.docs },\n ...Object.fromEntries(\n Object.entries(hierarchyData.relatedDocumentsByCollection || {}).map(\n ([slug, related]) => [slug, { docs: related.result.docs }],\n ),\n ),\n }\n : {}\n\n return (\n <Fragment>\n <div className={`${baseClass} ${baseClass}--${collectionSlug}`}>\n {BeforeList}\n <DocumentSelectionProvider collectionData={collectionData}>\n <Gutter className={`${baseClass}__wrap`}>\n <HierarchyListHeader\n collectionConfig={collectionConfig}\n collections={collections}\n currentItemTitle={currentItemTitle}\n Description={\n <React.Fragment>\n {hierarchyData.allowedCollections &&\n hierarchyData.allowedCollections.length > 0 && (\n <div className={`${baseClass}__allowed-types`}>\n {t('general:accepts')}:{' '}\n {hierarchyData.allowedCollections.map((c) => c.label).join(', ')}\n </div>\n )}\n {Description || collectionConfig?.admin?.description ? (\n <div className={`${baseClass}__sub-header`}>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={\n <ViewDescription\n collectionSlug={collectionSlug}\n description={collectionConfig?.admin?.description}\n />\n }\n />\n </div>\n ) : null}\n </React.Fragment>\n }\n hasCreatePermission={hasCreatePermission}\n HierarchyIcon={HierarchyIcon}\n i18n={i18n}\n />\n\n <div className={`${baseClass}__controls`}>\n <SearchBar\n Actions={[\n <TypeFilter\n i18n={i18n}\n key={`type-filter-${hierarchyData.parent ? hierarchyData.parent.id : 'root'}`}\n onChange={handleTypeFilterChange}\n options={typeOptions}\n selectedValues={selectedTypes}\n />,\n ]}\n label={t('general:searchBy', {\n label: getTranslation(collectionConfig?.admin?.useAsTitle || 'id', i18n),\n })}\n onSearchChange={handleSearchChange}\n searchQueryParam={searchFromURL}\n />\n </div>\n\n <HierarchyTable\n childrenData={filteredChildrenData}\n collections={collections}\n collectionSlug={collectionSlug}\n hasCreatePermission={hasCreatePermission}\n HierarchyIcon={HierarchyIcon}\n hierarchyLabel={collectionLabel}\n key={`${collectionSlug}-${parentId}-${searchFromURL}-${filteredChildrenData?.totalDocs}-${Object.entries(\n hierarchyData?.relatedDocumentsByCollection || {},\n )\n .map(([slug, r]) => `${slug}:${r.result.totalDocs}`)\n .join(',')}`}\n parentFieldName={parentFieldName}\n parentId={parentId}\n relatedGroups={filteredRelatedGroups}\n search={searchFromURL}\n useAsTitle={collectionConfig?.admin?.useAsTitle || 'id'}\n />\n </Gutter>\n </DocumentSelectionProvider>\n {AfterList}\n </div>\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getTranslation","useRouter","useSearchParams","formatAdminURL","qs","React","Fragment","useCallback","useEffect","useMemo","useState","Gutter","useListDrawerContext","RenderCustomComponent","SearchBar","useStepNav","ViewDescription","TagIcon","useConfig","DocumentSelectionProvider","useHierarchy","useRouteTransition","useTranslation","HierarchyListHeader","HierarchyTable","TypeFilter","baseClass","HierarchyListView","props","AfterList","baseFilter","BeforeList","collectionSlug","Description","hasCreatePermission","hasCreatePermissionFromProps","hierarchyData","HierarchyIcon","router","searchParams","startRouteTransition","allowCreate","isInDrawer","undefined","config","routes","admin","adminRoute","getEntityConfig","collectionConfig","labels","i18n","t","collectionLabel","plural","setStepNav","parent","searchFromURL","get","handleSearchChange","value","currentParams","forEach","v","k","search","queryString","stringify","addQueryPrefix","newUrl","window","location","pathname","replace","currentItemTitle","breadcrumbs","length","title","ancestorBreadcrumbs","slice","baseLabel","label","_jsxs","className","_jsx","color","url","id","path","navItems","hierarchyBreadcrumbs","map","crumb","hierarchyConfig","hierarchy","parentFieldName","parentId","allowedCollections","collections","hierarchyInitialData","collectionSpecificFieldName","collectionSpecific","fieldName","parentCollectionSpecificValues","push","initialData","Object","keys","slug","relatedConfig","entries","relatedCollections","some","c","fieldValue","hasMany","typeOptions","options","typeFilterFromURL","typeFilterValues","split","selectedTypes","setSelectedTypes","opt","handleTypeFilterChange","values","allSelected","typeFilter","join","filteredChildrenData","childrenData","filteredRelatedGroups","relatedDocumentsByCollection","filter","includes","related","data","result","collectionData","docs","fromEntries","description","CustomComponent","Fallback","Actions","onChange","selectedValues","useAsTitle","onSearchChange","searchQueryParam","hierarchyLabel","relatedGroups","JSON","totalDocs","r"],"sources":["../../../src/views/HierarchyList/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ListViewClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { Fragment, useCallback, useEffect, useMemo, useState } from 'react'\n\nimport type { CollectionOption } from '../../elements/CreateDocumentButton/index.js'\nimport type { StepNavItem } from '../../elements/StepNav/index.js'\n\nimport { Gutter } from '../../elements/Gutter/index.js'\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { SearchBar } from '../../elements/SearchBar/index.js'\nimport { useStepNav } from '../../elements/StepNav/index.js'\nimport { ViewDescription } from '../../elements/ViewDescription/index.js'\nimport { TagIcon } from '../../icons/Tag/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { DocumentSelectionProvider } from '../../providers/DocumentSelection/index.js'\nimport { useHierarchy } from '../../providers/Hierarchy/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { HierarchyListHeader } from './HierarchyListHeader/index.js'\nimport { HierarchyTable } from './HierarchyTable/index.js'\nimport { TypeFilter } from './TypeFilter/index.js'\nimport './index.scss'\n\nconst baseClass = 'hierarchy-list'\n\nexport function HierarchyListView(props: ListViewClientProps) {\n const {\n AfterList,\n baseFilter,\n BeforeList,\n collectionSlug,\n Description,\n hasCreatePermission: hasCreatePermissionFromProps,\n hierarchyData,\n HierarchyIcon,\n } = props\n\n const router = useRouter()\n const searchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n\n const { allowCreate, isInDrawer } = useListDrawerContext()\n\n const hasCreatePermission =\n allowCreate !== undefined\n ? allowCreate && hasCreatePermissionFromProps\n : hasCreatePermissionFromProps\n\n const {\n config: {\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const { labels } = collectionConfig\n\n const { i18n, t } = useTranslation()\n const collectionLabel = getTranslation(labels?.plural, i18n)\n\n const { setStepNav } = useStepNav()\n const { parent } = useHierarchy()\n\n // Get search from URL params\n const searchFromURL = searchParams.get('search') || ''\n\n // Update URL when search changes (debouncing is handled by SearchFilter)\n // This triggers a server refetch via Next.js router\n const handleSearchChange = useCallback(\n (value: string) => {\n // Build new URL with updated search param\n const currentParams: Record<string, string> = {}\n searchParams.forEach((v, k) => {\n currentParams[k] = v\n })\n\n if (value) {\n currentParams.search = value\n } else {\n delete currentParams.search\n }\n\n const queryString = qs.stringify(currentParams, { addQueryPrefix: true })\n const newUrl = `${window.location.pathname}${queryString}`\n\n if (window.location.search !== queryString) {\n startRouteTransition(() => router.replace(newUrl))\n }\n },\n [router, searchParams, startRouteTransition],\n )\n\n // Get current item title from breadcrumbs (last item is the current one)\n const currentItemTitle =\n hierarchyData?.breadcrumbs && hierarchyData.breadcrumbs.length > 0\n ? hierarchyData.breadcrumbs[hierarchyData.breadcrumbs.length - 1].title\n : undefined\n\n useEffect(() => {\n if (!isInDrawer) {\n // Breadcrumbs exclude the last item (current item) since it's shown in the header\n const ancestorBreadcrumbs = hierarchyData?.breadcrumbs?.slice(0, -1) || []\n\n const baseLabel: StepNavItem = {\n label: (\n <div className={`${baseClass}__step-nav-icon-label`}>\n {HierarchyIcon || <TagIcon color=\"muted\" />}\n {collectionLabel}\n </div>\n ),\n url: parent?.id\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}`,\n })\n : undefined,\n }\n\n let navItems = [baseLabel]\n\n if (ancestorBreadcrumbs.length > 0) {\n const hierarchyBreadcrumbs: StepNavItem[] = ancestorBreadcrumbs.map((crumb) => ({\n label: crumb.title,\n url: formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}?parent=${crumb.id}`,\n }),\n }))\n navItems = [...navItems, ...hierarchyBreadcrumbs]\n }\n\n setStepNav(navItems)\n }\n }, [\n adminRoute,\n setStepNav,\n isInDrawer,\n collectionSlug,\n hierarchyData,\n collectionLabel,\n currentItemTitle,\n parent,\n HierarchyIcon,\n ])\n\n const hierarchyConfig =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy\n : undefined\n const parentFieldName = hierarchyConfig?.parentFieldName\n const parentId = hierarchyData?.parentId ?? null\n\n // Build collections array for create button\n // Filter by allowedCollections when set (from parent's collectionSpecific field)\n const { allowedCollections } = hierarchyData || {}\n\n const collections: CollectionOption[] = []\n\n // Add hierarchy collection (always allowed for creating child hierarchy items)\n // Include parent's collectionSpecific values so new folders inherit the restriction\n const hierarchyInitialData: Record<string, unknown> = {}\n if (parentId !== null) {\n hierarchyInitialData[parentFieldName] = parentId\n\n const collectionSpecificFieldName =\n hierarchyConfig?.collectionSpecific && typeof hierarchyConfig.collectionSpecific === 'object'\n ? hierarchyConfig.collectionSpecific.fieldName\n : undefined\n const parentCollectionSpecificValues = collectionSpecificFieldName\n ? (parent?.[collectionSpecificFieldName] as string[] | undefined)\n : undefined\n if (\n collectionSpecificFieldName &&\n parentCollectionSpecificValues &&\n parentCollectionSpecificValues.length > 0\n ) {\n hierarchyInitialData[collectionSpecificFieldName] = parentCollectionSpecificValues\n }\n }\n\n collections.push({\n collectionSlug,\n initialData: Object.keys(hierarchyInitialData).length > 0 ? hierarchyInitialData : {},\n })\n\n // Add related collections (for creating documents that reference this hierarchy)\n // Filter by allowedCollections when set\n for (const [slug, relatedConfig] of Object.entries(hierarchyConfig?.relatedCollections || {})) {\n // Skip if not in allowed list (when allowedCollections has restrictions)\n // Empty array means \"no restrictions\" (folder accepts all types)\n if (\n allowedCollections &&\n allowedCollections.length > 0 &&\n !allowedCollections.some((c) => c.slug === slug)\n ) {\n continue\n }\n\n // Use array for hasMany fields, single value for hasMany: false\n const fieldValue = relatedConfig.hasMany ? [parentId] : parentId\n\n collections.push({\n collectionSlug: slug,\n initialData: parentId !== null ? { [relatedConfig.fieldName]: fieldValue } : {},\n })\n }\n\n // Build type filter options from hierarchy collection + related collections\n // Filter by allowedCollections when set\n const typeOptions = useMemo(() => {\n const options: { label: string; value: string }[] = []\n\n // Add related collections (filtered by allowedCollections when set)\n for (const [slug] of Object.entries(hierarchyConfig?.relatedCollections || {})) {\n // Skip if not in allowed list (when allowedCollections has restrictions)\n // Empty array means \"no restrictions\" (folder accepts all types)\n if (\n allowedCollections &&\n allowedCollections.length > 0 &&\n !allowedCollections.some((c) => c.slug === slug)\n ) {\n continue\n }\n\n const config = getEntityConfig({ collectionSlug: slug })\n options.push({\n label: getTranslation(config.labels?.plural, i18n),\n value: slug,\n })\n }\n\n return options\n }, [allowedCollections, getEntityConfig, hierarchyConfig?.relatedCollections, i18n])\n\n // Get type filter from URL params (comma-separated list)\n const typeFilterFromURL = searchParams.get('typeFilter')\n const typeFilterValues = typeFilterFromURL ? typeFilterFromURL.split(',') : null\n\n // Track selected types (default: from URL or all selected)\n const [selectedTypes, setSelectedTypes] = useState<string[]>(\n () => typeFilterValues || typeOptions.map((opt) => opt.value),\n )\n\n // Update URL when type filter changes\n const handleTypeFilterChange = useCallback(\n (values: string[]) => {\n setSelectedTypes(values)\n\n // Build new URL with updated typeFilter param\n const currentParams: Record<string, string> = {}\n searchParams.forEach((v, k) => {\n currentParams[k] = v\n })\n\n // Only add typeFilter if not all types are selected\n const allSelected = values.length === typeOptions.length\n if (!allSelected && values.length > 0) {\n currentParams.typeFilter = values.join(',')\n } else {\n delete currentParams.typeFilter\n }\n\n const queryString = qs.stringify(currentParams, { addQueryPrefix: true })\n const newUrl = `${window.location.pathname}${queryString}`\n\n if (window.location.search !== queryString) {\n startRouteTransition(() => router.replace(newUrl))\n }\n },\n [router, searchParams, startRouteTransition, typeOptions.length],\n )\n\n // Filter children based on selected types (client-side for immediate feedback)\n // Server already filters, but this handles the hierarchy collection toggle\n const filteredChildrenData = useMemo(() => {\n if (!hierarchyData?.childrenData) {\n return undefined\n }\n return hierarchyData.childrenData\n }, [hierarchyData?.childrenData])\n\n // Filter related groups based on selected types\n const filteredRelatedGroups = useMemo(() => {\n return Object.entries(hierarchyData?.relatedDocumentsByCollection || {})\n .filter(([slug]) => selectedTypes.includes(slug))\n .map(([slug, related]) => ({\n collectionSlug: slug,\n data: related.result,\n hasMany: related.hasMany,\n label: related.label,\n }))\n }, [hierarchyData?.relatedDocumentsByCollection, selectedTypes])\n\n const collectionData = hierarchyData\n ? {\n [collectionSlug]: { docs: hierarchyData.childrenData.docs },\n ...Object.fromEntries(\n Object.entries(hierarchyData.relatedDocumentsByCollection || {}).map(\n ([slug, related]) => [slug, { docs: related.result.docs }],\n ),\n ),\n }\n : {}\n\n return (\n <Fragment>\n <div className={`${baseClass} ${baseClass}--${collectionSlug}`}>\n {BeforeList}\n <DocumentSelectionProvider collectionData={collectionData}>\n <Gutter className={`${baseClass}__wrap`}>\n <HierarchyListHeader\n collectionConfig={collectionConfig}\n collections={collections}\n currentItemTitle={currentItemTitle}\n Description={\n <React.Fragment>\n {hierarchyData.allowedCollections &&\n hierarchyData.allowedCollections.length > 0 && (\n <div className={`${baseClass}__allowed-types`}>\n {t('general:accepts')}:{' '}\n {hierarchyData.allowedCollections.map((c) => c.label).join(', ')}\n </div>\n )}\n {Description || collectionConfig?.admin?.description ? (\n <div className={`${baseClass}__sub-header`}>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={\n <ViewDescription\n collectionSlug={collectionSlug}\n description={collectionConfig?.admin?.description}\n />\n }\n />\n </div>\n ) : null}\n </React.Fragment>\n }\n hasCreatePermission={hasCreatePermission}\n HierarchyIcon={HierarchyIcon}\n i18n={i18n}\n />\n\n <div className={`${baseClass}__controls`}>\n <SearchBar\n Actions={[\n <TypeFilter\n i18n={i18n}\n key={`type-filter-${hierarchyData.parent ? hierarchyData.parent.id : 'root'}`}\n onChange={handleTypeFilterChange}\n options={typeOptions}\n selectedValues={selectedTypes}\n />,\n ]}\n label={t('general:searchBy', {\n label: getTranslation(collectionConfig?.admin?.useAsTitle || 'id', i18n),\n })}\n onSearchChange={handleSearchChange}\n searchQueryParam={searchFromURL}\n />\n </div>\n\n <HierarchyTable\n baseFilter={baseFilter}\n childrenData={filteredChildrenData}\n collections={collections}\n collectionSlug={collectionSlug}\n hasCreatePermission={hasCreatePermission}\n HierarchyIcon={HierarchyIcon}\n hierarchyLabel={collectionLabel}\n key={`${collectionSlug}-${parentId}-${searchFromURL}-${JSON.stringify(baseFilter)}-${filteredChildrenData?.totalDocs}-${Object.entries(\n hierarchyData?.relatedDocumentsByCollection || {},\n )\n .map(([slug, r]) => `${slug}:${r.result.totalDocs}`)\n .join(',')}`}\n parentFieldName={parentFieldName}\n parentId={parentId}\n relatedGroups={filteredRelatedGroups}\n search={searchFromURL}\n useAsTitle={collectionConfig?.admin?.useAsTitle || 'id'}\n />\n </Gutter>\n </DocumentSelectionProvider>\n {AfterList}\n </div>\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/ui",
|
|
3
|
-
"version": "3.80.0-internal.
|
|
3
|
+
"version": "3.80.0-internal.52ab774",
|
|
4
4
|
"homepage": "https://payloadcms.com",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -136,7 +136,7 @@
|
|
|
136
136
|
"ts-essentials": "10.0.3",
|
|
137
137
|
"use-context-selector": "2.0.0",
|
|
138
138
|
"uuid": "10.0.0",
|
|
139
|
-
"@payloadcms/translations": "3.80.0-internal.
|
|
139
|
+
"@payloadcms/translations": "3.80.0-internal.52ab774"
|
|
140
140
|
},
|
|
141
141
|
"devDependencies": {
|
|
142
142
|
"@babel/cli": "7.27.2",
|
|
@@ -151,14 +151,14 @@
|
|
|
151
151
|
"babel-plugin-react-compiler": "19.1.0-rc.3",
|
|
152
152
|
"esbuild": "0.27.1",
|
|
153
153
|
"esbuild-sass-plugin": "3.3.1",
|
|
154
|
-
"payload": "3.80.0-internal.
|
|
154
|
+
"payload": "3.80.0-internal.52ab774",
|
|
155
155
|
"@payloadcms/eslint-config": "3.28.0"
|
|
156
156
|
},
|
|
157
157
|
"peerDependencies": {
|
|
158
158
|
"next": ">=15.2.9 <15.3.0 || >=15.3.9 <15.4.0 || >=15.4.11 <15.5.0 || >=16.2.0-canary.10 <17.0.0",
|
|
159
159
|
"react": "^19.0.1 || ^19.1.2 || ^19.2.1",
|
|
160
160
|
"react-dom": "^19.0.1 || ^19.1.2 || ^19.2.1",
|
|
161
|
-
"payload": "3.80.0-internal.
|
|
161
|
+
"payload": "3.80.0-internal.52ab774"
|
|
162
162
|
},
|
|
163
163
|
"engines": {
|
|
164
164
|
"node": "^18.20.2 || >=20.9.0"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/HierarchyButton/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAUxE,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CA+HtE,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["formatAdminURL","React","useCallback","useEffect","useMemo","useState","useForm","useFormFields","useConfig","useDocumentInfo","useTranslation","Button","useHierarchyDrawer","baseClass","HierarchyButtonClient","fieldName","hasMany","hierarchyCollectionSlug","Icon","readOnly","t","config","getEntityConfig","collectionSlug","documentCollectionSlug","setModified","dispatchField","_","dispatch","currentFieldValue","fields","currentId","value","displayName","setDisplayName","isLoading","setIsLoading","collectionConfig","useAsTitle","admin","isHierarchyCollection","filterByCollection","undefined","HierarchyDrawer","openDrawer","fetchItemName","response","fetch","apiRoute","routes","api","path","serverURL","credentials","ok","itemData","json","title","name","id","String","handleDrawerSave","closeDrawer","selections","ids","Array","from","keys","newValue","type","handleClick","label","_jsxs","_Fragment","_jsx","buttonStyle","className","filter","Boolean","join","disabled","icon","iconPosition","margin","onClick","initialSelections","onSave"],"sources":["../../../src/elements/HierarchyButton/index.tsx"],"sourcesContent":["'use client'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport type { SelectionWithPath } from '../HierarchyDrawer/types.js'\n\nimport { useForm, useFormFields } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { useHierarchyDrawer } from '../HierarchyDrawer/index.js'\nimport './index.scss'\n\nconst baseClass = 'hierarchy-button'\n\nexport type HierarchyButtonClientProps = {\n fieldName: string\n hasMany?: boolean\n hierarchyCollectionSlug: string\n Icon?: React.ReactNode\n readOnly?: boolean\n}\n\nexport const HierarchyButtonClient: React.FC<HierarchyButtonClientProps> = ({\n fieldName,\n hasMany = false,\n hierarchyCollectionSlug,\n Icon,\n readOnly,\n}) => {\n const { t } = useTranslation()\n const { config, getEntityConfig } = useConfig()\n const { collectionSlug: documentCollectionSlug } = useDocumentInfo()\n const { setModified } = useForm()\n const dispatchField = useFormFields(([_, dispatch]) => dispatch)\n\n const currentFieldValue = useFormFields(([fields]) => (fields && fields?.[fieldName]) || null)\n const currentId = currentFieldValue?.value as null | number | string\n\n const [displayName, setDisplayName] = useState<string>('')\n const [isLoading, setIsLoading] = useState(true)\n\n const collectionConfig = getEntityConfig({ collectionSlug: hierarchyCollectionSlug })\n const useAsTitle = collectionConfig?.admin?.useAsTitle || 'name'\n\n const isHierarchyCollection = documentCollectionSlug === hierarchyCollectionSlug\n\n // When in hierarchy collection, let the drawer use allowedCollections from context\n // When in other collections, filter by that collection's slug\n // Memoize to prevent new array references on every render\n const filterByCollection = useMemo(\n () => (isHierarchyCollection || !documentCollectionSlug ? undefined : [documentCollectionSlug]),\n [isHierarchyCollection, documentCollectionSlug],\n )\n\n const [HierarchyDrawer, , { openDrawer }] = useHierarchyDrawer({\n filterByCollection,\n hierarchyCollectionSlug,\n Icon,\n })\n\n // Fetch item name when currentId changes\n useEffect(() => {\n const fetchItemName = async () => {\n if (currentId && (typeof currentId === 'string' || typeof currentId === 'number')) {\n setIsLoading(true)\n try {\n const response = await fetch(\n formatAdminURL({\n apiRoute: config.routes.api,\n path: `/${hierarchyCollectionSlug}/${currentId}`,\n serverURL: config.serverURL,\n }),\n { credentials: 'include' },\n )\n\n if (response.ok) {\n const itemData = await response.json()\n const title = itemData?.[useAsTitle] || itemData?.name || itemData?.id\n\n setDisplayName(String(title))\n } else {\n setDisplayName(t('general:none'))\n }\n } catch {\n setDisplayName(t('general:none'))\n } finally {\n setIsLoading(false)\n }\n } else {\n setDisplayName(t('general:none'))\n setIsLoading(false)\n }\n }\n\n void fetchItemName()\n }, [currentId, hierarchyCollectionSlug, config.routes.api, config.serverURL, useAsTitle, t])\n\n const handleDrawerSave = useCallback(\n ({\n closeDrawer,\n selections,\n }: {\n closeDrawer: () => void\n selections: Map<number | string, SelectionWithPath>\n }) => {\n const ids = Array.from(selections.keys())\n const newValue = hasMany ? ids : (ids[0] ?? null)\n\n if (currentFieldValue?.value !== newValue) {\n dispatchField({\n type: 'UPDATE',\n path: fieldName,\n value: newValue,\n })\n setModified(true)\n }\n closeDrawer()\n },\n [currentFieldValue?.value, dispatchField, fieldName, hasMany, setModified],\n )\n\n const handleClick = useCallback(() => {\n if (!readOnly) {\n openDrawer()\n }\n }, [openDrawer, readOnly])\n\n const label = isLoading ? `${t('general:loading')}...` : displayName\n\n return (\n <>\n <Button\n buttonStyle=\"subtle\"\n className={[baseClass, readOnly && `${baseClass}--read-only`].filter(Boolean).join(' ')}\n disabled={readOnly}\n icon={Icon}\n iconPosition=\"left\"\n margin={false}\n onClick={handleClick}\n >\n {label}\n </Button>\n <HierarchyDrawer\n hasMany={hasMany}\n initialSelections={currentId ? [currentId] : undefined}\n onSave={handleDrawerSave}\n />\n </>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.server.d.ts","sourceRoot":"","sources":["../../../src/elements/HierarchyButton/index.server.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAqChE,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.server.js","names":["React","FolderIcon","RenderServerComponent","HierarchyButtonClient","HierarchyButton","fieldName","hasMany","hierarchyCollectionSlug","payload","hierarchyCollectionConfig","config","collections","find","c","slug","hierarchyConfig","hierarchy","undefined","IconComponent","admin","components","Icon","isDefaultFolderIcon","renderedIcon","_jsx","color","Component","importMap","key"],"sources":["../../../src/elements/HierarchyButton/index.server.tsx"],"sourcesContent":["import type { Payload } from 'payload'\n\nimport React from 'react'\n\nimport { FolderIcon } from '../../icons/Folder/index.js'\nimport { RenderServerComponent } from '../RenderServerComponent/index.js'\n// eslint-disable-next-line payload/no-imports-from-exports-dir -- Server component must reference exports dir for proper client boundary\nimport { HierarchyButtonClient } from '../../exports/client/index.js'\n\nexport type HierarchyButtonServerProps = {\n fieldName: string\n hasMany?: boolean\n hierarchyCollectionSlug: string\n payload: Payload\n}\n\nexport const HierarchyButton: React.FC<HierarchyButtonServerProps> = ({\n fieldName,\n hasMany,\n hierarchyCollectionSlug,\n payload,\n}) => {\n const hierarchyCollectionConfig = payload.config.collections.find(\n (c) => c.slug === hierarchyCollectionSlug,\n )\n const hierarchyConfig =\n hierarchyCollectionConfig?.hierarchy && typeof hierarchyCollectionConfig.hierarchy === 'object'\n ? hierarchyCollectionConfig.hierarchy\n : undefined\n const IconComponent = hierarchyConfig?.admin.components.Icon\n\n // Render the custom icon if provided, otherwise use FolderIcon directly\n // Important: Must render the icon here on server to avoid hydration mismatch\n // For default FolderIcon path, render directly to avoid import map requirement\n const isDefaultFolderIcon = !IconComponent || IconComponent === '@payloadcms/ui#FolderIcon'\n const renderedIcon = isDefaultFolderIcon ? (\n <FolderIcon color=\"muted\" />\n ) : (\n RenderServerComponent({\n Component: IconComponent,\n importMap: payload.importMap,\n key: `hierarchy-button-icon-${hierarchyCollectionSlug}`,\n })\n )\n\n return (\n <HierarchyButtonClient\n fieldName={fieldName}\n hasMany={hasMany}\n hierarchyCollectionSlug={hierarchyCollectionSlug}\n Icon={renderedIcon}\n />\n )\n}\n"],"mappings":";AAEA,OAAOA,KAAA,MAAW;AAElB,SAASC,UAAU,QAAQ;AAC3B,SAASC,qBAAqB,QAAQ;AACtC;AACA,SAASC,qBAAqB,QAAQ;AAStC,OAAO,MAAMC,eAAA,GAAwDA,CAAC;EACpEC,SAAS;EACTC,OAAO;EACPC,uBAAuB;EACvBC;AAAO,CACR;EACC,MAAMC,yBAAA,GAA4BD,OAAA,CAAQE,MAAM,CAACC,WAAW,CAACC,IAAI,CAC9DC,CAAA,IAAMA,CAAA,CAAEC,IAAI,KAAKP,uBAAA;EAEpB,MAAMQ,eAAA,GACJN,yBAAA,EAA2BO,SAAA,IAAa,OAAOP,yBAAA,CAA0BO,SAAS,KAAK,WACnFP,yBAAA,CAA0BO,SAAS,GACnCC,SAAA;EACN,MAAMC,aAAA,GAAgBH,eAAA,EAAiBI,KAAA,CAAMC,UAAA,CAAWC,IAAA;EAExD;EACA;EACA;EACA,MAAMC,mBAAA,GAAsB,CAACJ,aAAA,IAAiBA,aAAA,KAAkB;EAChE,MAAMK,YAAA,GAAeD,mBAAA,gBACnBE,IAAA,CAACvB,UAAA;IAAWwB,KAAA,EAAM;OAElBvB,qBAAA,CAAsB;IACpBwB,SAAA,EAAWR,aAAA;IACXS,SAAA,EAAWnB,OAAA,CAAQmB,SAAS;IAC5BC,GAAA,EAAK,yBAAyBrB,uBAAA;EAChC;EAGF,oBACEiB,IAAA,CAACrB,qBAAA;IACCE,SAAA,EAAWA,SAAA;IACXC,OAAA,EAASA,OAAA;IACTC,uBAAA,EAAyBA,uBAAA;IACzBc,IAAA,EAAME;;AAGZ","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/HierarchyColumnBrowser/Column/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAQ9C,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA2FxC,CAAA"}
|