@payloadcms/ui 3.80.0-internal.21e9c47 → 3.80.0-internal.8d9ec7c

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.
Files changed (94) hide show
  1. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
  2. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +49 -1
  3. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
  4. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js +384 -0
  5. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js.map +1 -0
  6. package/dist/elements/Combobox/index.d.ts.map +1 -1
  7. package/dist/elements/Combobox/index.js +1 -0
  8. package/dist/elements/Combobox/index.js.map +1 -1
  9. package/dist/elements/HierarchyColumnBrowser/index.d.ts +1 -1
  10. package/dist/elements/HierarchyColumnBrowser/index.d.ts.map +1 -1
  11. package/dist/elements/HierarchyColumnBrowser/index.js +6 -3
  12. package/dist/elements/HierarchyColumnBrowser/index.js.map +1 -1
  13. package/dist/elements/HierarchyColumnBrowser/types.d.ts +3 -0
  14. package/dist/elements/HierarchyColumnBrowser/types.d.ts.map +1 -1
  15. package/dist/elements/HierarchyColumnBrowser/types.js.map +1 -1
  16. package/dist/elements/HierarchyDrawer/Drawer/index.d.ts +1 -1
  17. package/dist/elements/HierarchyDrawer/Drawer/index.d.ts.map +1 -1
  18. package/dist/elements/HierarchyDrawer/Drawer/index.js +2 -0
  19. package/dist/elements/HierarchyDrawer/Drawer/index.js.map +1 -1
  20. package/dist/elements/HierarchyDrawer/index.d.ts.map +1 -1
  21. package/dist/elements/HierarchyDrawer/index.js +4 -2
  22. package/dist/elements/HierarchyDrawer/index.js.map +1 -1
  23. package/dist/elements/HierarchyDrawer/types.d.ts +3 -0
  24. package/dist/elements/HierarchyDrawer/types.d.ts.map +1 -1
  25. package/dist/elements/HierarchyDrawer/types.js.map +1 -1
  26. package/dist/elements/HierarchyTree/HierarchySidebarTab.d.ts +1 -0
  27. package/dist/elements/HierarchyTree/HierarchySidebarTab.d.ts.map +1 -1
  28. package/dist/elements/HierarchyTree/HierarchySidebarTab.js +47 -36
  29. package/dist/elements/HierarchyTree/HierarchySidebarTab.js.map +1 -1
  30. package/dist/elements/HierarchyTree/HierarchySidebarTab.server.d.ts.map +1 -1
  31. package/dist/elements/HierarchyTree/HierarchySidebarTab.server.js +14 -5
  32. package/dist/elements/HierarchyTree/HierarchySidebarTab.server.js.map +1 -1
  33. package/dist/elements/HierarchyTree/index.d.ts.map +1 -1
  34. package/dist/elements/HierarchyTree/index.js +2 -0
  35. package/dist/elements/HierarchyTree/index.js.map +1 -1
  36. package/dist/elements/HierarchyTree/types.d.ts +3 -1
  37. package/dist/elements/HierarchyTree/types.d.ts.map +1 -1
  38. package/dist/elements/HierarchyTree/types.js.map +1 -1
  39. package/dist/elements/HydrateHierarchyProvider/index.d.ts.map +1 -1
  40. package/dist/elements/HydrateHierarchyProvider/index.js +22 -19
  41. package/dist/elements/HydrateHierarchyProvider/index.js.map +1 -1
  42. package/dist/elements/Link/index.d.ts.map +1 -1
  43. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  44. package/dist/elements/PublishButton/index.js +3 -1
  45. package/dist/elements/PublishButton/index.js.map +1 -1
  46. package/dist/elements/Toasts/fieldErrors.d.ts +4 -0
  47. package/dist/elements/Toasts/fieldErrors.d.ts.map +1 -1
  48. package/dist/elements/Toasts/fieldErrors.js +4 -2
  49. package/dist/elements/Toasts/fieldErrors.js.map +1 -1
  50. package/dist/elements/Toasts/fieldErrors.spec.js +46 -0
  51. package/dist/elements/Toasts/fieldErrors.spec.js.map +1 -0
  52. package/dist/elements/Tree/TreeNode/index.d.ts +1 -1
  53. package/dist/elements/Tree/TreeNode/index.d.ts.map +1 -1
  54. package/dist/elements/Tree/TreeNode/index.js +3 -0
  55. package/dist/elements/Tree/TreeNode/index.js.map +1 -1
  56. package/dist/elements/Tree/index.d.ts.map +1 -1
  57. package/dist/elements/Tree/index.js +54 -42
  58. package/dist/elements/Tree/index.js.map +1 -1
  59. package/dist/elements/Tree/types.d.ts +3 -0
  60. package/dist/elements/Tree/types.d.ts.map +1 -1
  61. package/dist/elements/Tree/types.js.map +1 -1
  62. package/dist/elements/Tree/useChildren.d.ts +4 -1
  63. package/dist/elements/Tree/useChildren.d.ts.map +1 -1
  64. package/dist/elements/Tree/useChildren.js +8 -8
  65. package/dist/elements/Tree/useChildren.js.map +1 -1
  66. package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
  67. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +8 -6
  68. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  69. package/dist/elements/WhereBuilder/field-types.d.ts.map +1 -1
  70. package/dist/elements/WhereBuilder/field-types.js +2 -5
  71. package/dist/elements/WhereBuilder/field-types.js.map +1 -1
  72. package/dist/exports/client/{DatePicker-CL2EGBVQ.js → DatePicker-T2DMDMM5.js} +2 -2
  73. package/dist/exports/client/chunk-WDZJLNNB.js +29 -0
  74. package/dist/exports/client/{chunk-SH42NW5R.js.map → chunk-WDZJLNNB.js.map} +4 -4
  75. package/dist/exports/client/index.js +14 -14
  76. package/dist/exports/client/index.js.map +4 -4
  77. package/dist/providers/Hierarchy/index.d.ts.map +1 -1
  78. package/dist/providers/Hierarchy/index.js +12 -3
  79. package/dist/providers/Hierarchy/index.js.map +1 -1
  80. package/dist/providers/Hierarchy/types.d.ts +5 -1
  81. package/dist/providers/Hierarchy/types.d.ts.map +1 -1
  82. package/dist/providers/Hierarchy/types.js.map +1 -1
  83. package/dist/views/Edit/index.js +1 -1
  84. package/dist/views/Edit/index.js.map +1 -1
  85. package/dist/views/HierarchyList/HierarchyTable/index.d.ts +6 -2
  86. package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
  87. package/dist/views/HierarchyList/HierarchyTable/index.js +19 -18
  88. package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
  89. package/dist/views/HierarchyList/index.d.ts.map +1 -1
  90. package/dist/views/HierarchyList/index.js +3 -1
  91. package/dist/views/HierarchyList/index.js.map +1 -1
  92. package/package.json +5 -5
  93. package/dist/exports/client/chunk-SH42NW5R.js +0 -29
  94. /package/dist/exports/client/{DatePicker-CL2EGBVQ.js.map → DatePicker-T2DMDMM5.js.map} +0 -0
@@ -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 where = search ? {
118
- and: [parentCondition, {
119
- [useAsTitle]: {
120
- like: search
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 whereClause = {
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 where_0 = search ? {
185
- and: [whereClause, {
186
- [relatedUseAsTitle]: {
187
- like: search
188
- }
189
- }]
190
- } : whereClause;
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, collectionSlug]);
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/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 /** 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,qBAyW3D"}
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.21e9c47",
3
+ "version": "3.80.0-internal.8d9ec7c",
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.21e9c47"
139
+ "@payloadcms/translations": "3.80.0-internal.8d9ec7c"
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.21e9c47",
155
- "@payloadcms/eslint-config": "3.28.0"
154
+ "@payloadcms/eslint-config": "3.28.0",
155
+ "payload": "3.80.0-internal.8d9ec7c"
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.21e9c47"
161
+ "payload": "3.80.0-internal.8d9ec7c"
162
162
  },
163
163
  "engines": {
164
164
  "node": "^18.20.2 || >=20.9.0"