@payloadcms/ui 4.0.0-canary.23 → 4.0.0-canary.25

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 (96) hide show
  1. package/dist/elements/AppHeader/index.css +1 -0
  2. package/dist/elements/ArrayAction/index.d.ts +1 -0
  3. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  4. package/dist/elements/ArrayAction/index.js +45 -32
  5. package/dist/elements/ArrayAction/index.js.map +1 -1
  6. package/dist/elements/Button/index.css +2 -2
  7. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts +10 -0
  8. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
  9. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +55 -0
  10. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
  11. package/dist/elements/Drawer/index.css +10 -4
  12. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +3 -2
  13. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  14. package/dist/elements/IDLabel/index.css +6 -0
  15. package/dist/elements/IDLabel/index.d.ts +1 -1
  16. package/dist/elements/IDLabel/index.d.ts.map +1 -1
  17. package/dist/elements/IDLabel/index.js +16 -21
  18. package/dist/elements/IDLabel/index.js.map +1 -1
  19. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts +1 -7
  20. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts.map +1 -1
  21. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +26 -32
  22. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  23. package/dist/elements/Popup/PopupButtonList/index.css +1 -1
  24. package/dist/elements/Popup/index.js +1 -1
  25. package/dist/elements/Popup/index.js.map +1 -1
  26. package/dist/elements/QueryPresets/QueryPresetBar/index.js +1 -3
  27. package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
  28. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  29. package/dist/elements/RelationshipTable/index.js +5 -2
  30. package/dist/elements/RelationshipTable/index.js.map +1 -1
  31. package/dist/elements/SortHeader/index.d.ts.map +1 -1
  32. package/dist/elements/SortHeader/index.js +29 -26
  33. package/dist/elements/SortHeader/index.js.map +1 -1
  34. package/dist/elements/StepNav/index.css +64 -14
  35. package/dist/elements/StepNav/index.d.ts.map +1 -1
  36. package/dist/elements/StepNav/index.js +143 -69
  37. package/dist/elements/StepNav/index.js.map +1 -1
  38. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  39. package/dist/elements/Table/DefaultCell/index.js +3 -11
  40. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  41. package/dist/fields/Array/ArrayRow.d.ts +1 -0
  42. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  43. package/dist/fields/Array/ArrayRow.js +2 -0
  44. package/dist/fields/Array/ArrayRow.js.map +1 -1
  45. package/dist/fields/Array/index.d.ts.map +1 -1
  46. package/dist/fields/Array/index.js +38 -10
  47. package/dist/fields/Array/index.js.map +1 -1
  48. package/dist/fields/Blocks/BlockRow.d.ts +1 -0
  49. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  50. package/dist/fields/Blocks/BlockRow.js +2 -0
  51. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  52. package/dist/fields/Blocks/RowActions.d.ts +1 -0
  53. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  54. package/dist/fields/Blocks/RowActions.js +22 -19
  55. package/dist/fields/Blocks/RowActions.js.map +1 -1
  56. package/dist/fields/Blocks/index.d.ts.map +1 -1
  57. package/dist/fields/Blocks/index.js +35 -7
  58. package/dist/fields/Blocks/index.js.map +1 -1
  59. package/dist/icons/Edit/index.d.ts +0 -1
  60. package/dist/icons/Edit/index.d.ts.map +1 -1
  61. package/dist/icons/Edit/index.js +4 -4
  62. package/dist/icons/Edit/index.js.map +1 -1
  63. package/dist/providers/Actions/index.d.ts +1 -0
  64. package/dist/providers/Actions/index.d.ts.map +1 -1
  65. package/dist/providers/Actions/index.js +43 -11
  66. package/dist/providers/Actions/index.js.map +1 -1
  67. package/dist/providers/Locale/index.d.ts.map +1 -1
  68. package/dist/providers/Locale/index.js +41 -36
  69. package/dist/providers/Locale/index.js.map +1 -1
  70. package/dist/styles.css +1 -1
  71. package/dist/templates/Default/index.d.ts +1 -0
  72. package/dist/templates/Default/index.d.ts.map +1 -1
  73. package/dist/templates/Default/index.js +2 -0
  74. package/dist/templates/Default/index.js.map +1 -1
  75. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
  76. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +3 -2
  77. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  78. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -1
  79. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +7 -7
  80. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
  81. package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
  82. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +104 -66
  83. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  84. package/dist/views/Dashboard/Default/ModularDashboard/index.css +33 -140
  85. package/dist/views/List/ListHeader/index.d.ts +1 -10
  86. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  87. package/dist/views/List/ListHeader/index.js +1 -3
  88. package/dist/views/List/ListHeader/index.js.map +1 -1
  89. package/dist/views/List/index.client.d.ts.map +1 -1
  90. package/dist/views/List/index.client.js +0 -14
  91. package/dist/views/List/index.client.js.map +1 -1
  92. package/dist/views/List/index.css +5 -0
  93. package/dist/views/Root/index.d.ts.map +1 -1
  94. package/dist/views/Root/index.js +1 -0
  95. package/dist/views/Root/index.js.map +1 -1
  96. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"index.client.js","names":["c","_c","DndContext","DragOverlay","useDraggable","useDroppable","snapCenterToCursor","React","useMemo","useState","Popup","PopupList","ChevronIcon","XIcon","useTranslation","DashboardStepNav","useDashboardLayout","closestInXAxis","useDashboardSensors","WidgetEditControl","snapCenterToCursorOnlyForPointer","args","activatorEvent","transform","WIDTH_TO_PERCENTAGE","small","medium","large","full","ModularDashboardClient","t0","$","clientLayout","initialLayout","widgets","t","addWidget","cancel","cancelModal","currentLayout","deleteWidget","isEditing","moveWidget","resetLayout","resizeWidget","saveLayout","setIsEditing","updateWidgetData","activeDragId","setActiveDragId","sensors","t1","t2","Symbol","for","t3","event","over","droppableId","id","i","lastIndexOf","slug","slice","position","active","moveFromIndex","findIndex","widget","item","moveToIndex","widget_0","t4","event_0","_jsxs","children","_jsx","autoScroll","enabled","threshold","x","y","collisionDetection","onDragCancel","onDragEnd","onDragStart","className","style","display","flexWrap","length","map","widget_1","_index","Fragment","DraggableItem","disabled","width","inert","component","onPointerDown","_temp","onSave","data","widgetData","widgetID","WidgetWidthDropdown","currentWidth","maxWidth","minWidth","onResize","onClick","type","dropAnimation","duration","modifiers","draggedWidget","find","widget_2","e","stopPropagation","validOptions","minPercentage","maxPercentage","Object","entries","key","value","percentage","filter","option","isDisabled","button","buttonType","render","close","ButtonGroup","isSelected","Button","toFixed","size","verticalAlign","props","attributes","isDragging","listeners","setNodeRef","mergedStyles","opacity","draggableProps","DroppableItem","ref","height","isOver","t5","t6","t7","t8","left","right","top","bottom","borderRadius","backgroundColor","marginBottom","marginTop","pointerEvents","zIndex"],"sources":["../../../../../src/views/Dashboard/Default/ModularDashboard/index.client.tsx"],"sourcesContent":["'use client'\n\nimport type { Modifier } from '@dnd-kit/core'\nimport type { ClientWidget, WidgetWidth } from 'payload'\n\nimport { DndContext, DragOverlay, useDraggable, useDroppable } from '@dnd-kit/core'\nimport { snapCenterToCursor } from '@dnd-kit/modifiers'\nimport React, { useMemo, useState } from 'react'\n\nimport { Popup } from '../../../../elements/Popup/index.js'\nimport * as PopupList from '../../../../elements/Popup/PopupButtonList/index.js'\nimport { ChevronIcon } from '../../../../icons/Chevron/index.js'\nimport { XIcon } from '../../../../icons/X/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { DashboardStepNav } from './DashboardStepNav.js'\nimport { useDashboardLayout } from './useDashboardLayout.js'\nimport { closestInXAxis } from './utils/collisionDetection.js'\nimport { useDashboardSensors } from './utils/sensors.js'\nimport { WidgetEditControl } from './WidgetEditControl.js'\n\n/**\n * Custom modifier that only applies snapCenterToCursor for pointer events.\n * During keyboard navigation, we handle positioning ourselves via the coordinate getter.\n */\nconst snapCenterToCursorOnlyForPointer: Modifier = (args) => {\n const { activatorEvent } = args\n\n // Only apply snap for pointer events (mouse/touch), not keyboard\n // Check activatorEvent.type since KeyboardEvent may not exist on server\n if (activatorEvent && 'key' in activatorEvent) {\n return args.transform\n }\n\n return snapCenterToCursor(args)\n}\n\nexport type WidgetItem = {\n data?: Record<string, unknown>\n id: string\n maxWidth: WidgetWidth\n minWidth: WidgetWidth\n width: WidgetWidth\n}\n\nexport type WidgetInstanceClient = {\n component: React.ReactNode\n item: WidgetItem\n}\n\nexport type DropTargetWidget = {\n position: 'after' | 'before'\n widget: WidgetInstanceClient\n} | null\n\n/* eslint-disable perfectionist/sort-objects */\nconst WIDTH_TO_PERCENTAGE = {\n 'x-small': 25,\n small: (1 / 3) * 100,\n medium: 50,\n large: (2 / 3) * 100,\n 'x-large': 75,\n full: 100,\n} as const\n\nexport function ModularDashboardClient({\n clientLayout: initialLayout,\n widgets,\n}: {\n clientLayout: WidgetInstanceClient[]\n widgets: ClientWidget[]\n}) {\n const { t } = useTranslation()\n const {\n addWidget,\n cancel,\n cancelModal,\n currentLayout,\n deleteWidget,\n isEditing,\n moveWidget,\n resetLayout,\n resizeWidget,\n saveLayout,\n setIsEditing,\n updateWidgetData,\n } = useDashboardLayout(initialLayout)\n\n const [activeDragId, setActiveDragId] = useState<null | string>(null)\n const sensors = useDashboardSensors()\n\n return (\n <div>\n <DndContext\n autoScroll={{\n enabled: true,\n threshold: {\n x: 0, // No horizontal scroll\n y: 0.2, // Allow vertical scroll at 20% from edge\n },\n }}\n collisionDetection={closestInXAxis}\n // https://github.com/clauderic/dnd-kit/issues/926#issuecomment-1640115665\n id=\"dashboard-dnd-context\"\n onDragCancel={() => {\n setActiveDragId(null)\n }}\n onDragEnd={(event) => {\n if (!event.over) {\n setActiveDragId(null)\n return\n }\n const droppableId = event.over.id as string\n const i = droppableId.lastIndexOf('-')\n const slug = droppableId.slice(0, i)\n const position = droppableId.slice(i + 1)\n\n if (slug === event.active.id) {\n return\n }\n\n const moveFromIndex = currentLayout?.findIndex(\n (widget) => widget.item.id === event.active.id,\n )\n let moveToIndex = currentLayout?.findIndex((widget) => widget.item.id === slug)\n if (moveFromIndex < moveToIndex) {\n moveToIndex--\n }\n if (position === 'after') {\n moveToIndex++\n }\n moveWidget({ moveFromIndex, moveToIndex })\n setActiveDragId(null)\n }}\n onDragStart={(event) => {\n setActiveDragId(event.active.id as string)\n }}\n sensors={sensors}\n >\n <div\n className={`modular-dashboard ${isEditing ? 'editing' : ''}`}\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n // Don't add gap here! We need to use padding on the widgets instead\n // to make sure all rows have the same width always.\n }}\n >\n {currentLayout?.length === 0 && (\n <div className=\"modular-dashboard__empty\">\n <p>{t('dashboard:noItems')}</p>\n </div>\n )}\n {currentLayout?.map((widget, _index) => (\n <React.Fragment key={widget.item.id}>\n <DraggableItem\n disabled={!isEditing}\n id={widget.item.id}\n style={{\n width: `${WIDTH_TO_PERCENTAGE[widget.item.width]}%`,\n }}\n width={widget.item.width}\n >\n <div className={`widget-wrapper ${isEditing ? 'widget-wrapper--editing' : ''}`}>\n <div aria-hidden={isEditing} className=\"widget-content\" inert={isEditing}>\n {widget.component}\n </div>\n {isEditing && (\n <div\n className=\"widget-wrapper__controls\"\n onPointerDown={(e) => e.stopPropagation()}\n >\n <WidgetEditControl\n onSave={(data) => {\n updateWidgetData(widget.item.id, data)\n }}\n widgetData={widget.item.data}\n widgetID={widget.item.id}\n />\n <WidgetWidthDropdown\n currentWidth={widget.item.width}\n maxWidth={widget.item.maxWidth}\n minWidth={widget.item.minWidth}\n onResize={(width) => resizeWidget(widget.item.id, width)}\n />\n <button\n className=\"widget-wrapper__delete-btn\"\n onClick={() => deleteWidget(widget.item.id)}\n type=\"button\"\n >\n <span className=\"sr-only\">\n {t('dashboard:deleteWidget', { id: widget.item.id })}\n </span>\n <XIcon />\n </button>\n </div>\n )}\n </div>\n </DraggableItem>\n </React.Fragment>\n ))}\n <DragOverlay\n className=\"drag-overlay\"\n dropAnimation={{\n duration: 100,\n }}\n // Uses custom modifier that only applies for pointer, not keyboard navigation.\n modifiers={[snapCenterToCursorOnlyForPointer]}\n >\n {activeDragId\n ? (() => {\n const draggedWidget = currentLayout?.find(\n (widget) => widget.item.id === activeDragId,\n )\n return draggedWidget ? (\n <div\n style={{\n transform: 'scale(0.25)',\n }}\n >\n <div\n className={`widget-wrapper ${isEditing ? 'widget-wrapper--editing' : ''}`}\n >\n <div className=\"widget-content\">{draggedWidget.component}</div>\n </div>\n </div>\n ) : null\n })()\n : null}\n </DragOverlay>\n </div>\n </DndContext>\n <DashboardStepNav\n addWidget={addWidget}\n cancel={cancel}\n isEditing={isEditing}\n resetLayout={resetLayout}\n saveLayout={saveLayout}\n setIsEditing={setIsEditing}\n widgets={widgets}\n />\n {cancelModal}\n </div>\n )\n}\n\nfunction WidgetWidthDropdown({\n currentWidth,\n maxWidth,\n minWidth,\n onResize,\n}: {\n currentWidth: WidgetWidth\n maxWidth: WidgetWidth\n minWidth: WidgetWidth\n onResize: (width: WidgetWidth) => void\n}) {\n // Filter options based on minWidth and maxWidth\n const validOptions = useMemo(() => {\n const minPercentage = WIDTH_TO_PERCENTAGE[minWidth]\n const maxPercentage = WIDTH_TO_PERCENTAGE[maxWidth]\n\n return Object.entries(WIDTH_TO_PERCENTAGE)\n .map(([key, value]) => ({\n width: key as WidgetWidth,\n percentage: value,\n }))\n .filter((option) => option.percentage >= minPercentage && option.percentage <= maxPercentage)\n }, [minWidth, maxWidth])\n\n const isDisabled = validOptions.length <= 1\n\n if (isDisabled) {\n return null\n }\n\n return (\n <Popup\n button={\n <button\n className=\"widget-wrapper__size-btn\"\n onPointerDown={(e) => e.stopPropagation()}\n type=\"button\"\n >\n <span className=\"widget-wrapper__size-btn-text\">{currentWidth}</span>\n <ChevronIcon className=\"widget-wrapper__size-btn-icon\" />\n </button>\n }\n buttonType=\"custom\"\n render={({ close }) => (\n <PopupList.ButtonGroup>\n {validOptions.map((option) => {\n const isSelected = option.width === currentWidth\n return (\n <PopupList.Button\n active={isSelected}\n key={option.width}\n onClick={() => {\n onResize(option.width)\n close()\n }}\n >\n <span className=\"widget-wrapper__size-btn-label\">{option.width}</span>\n <span className=\"widget-wrapper__size-btn-percentage\">\n {option.percentage.toFixed(0)}%\n </span>\n </PopupList.Button>\n )\n })}\n </PopupList.ButtonGroup>\n )}\n size=\"small\"\n verticalAlign=\"bottom\"\n />\n )\n}\n\nfunction DraggableItem(props: {\n children: React.ReactNode\n disabled?: boolean\n id: string\n style?: React.CSSProperties\n width: WidgetWidth\n}) {\n const { attributes, isDragging, listeners, setNodeRef } = useDraggable({\n id: props.id,\n disabled: props.disabled,\n })\n\n const mergedStyles: React.CSSProperties = {\n ...props.style,\n opacity: isDragging ? 0.3 : 1,\n position: 'relative',\n }\n\n // Only apply draggable attributes and listeners when not disabled\n // to prevent disabling interactive elements inside the widget\n const draggableProps = props.disabled ? {} : { ...listeners, ...attributes }\n\n return (\n <div className=\"widget\" data-slug={props.id} data-width={props.width} style={mergedStyles}>\n <DroppableItem id={props.id} position=\"before\" />\n <div\n className=\"draggable\"\n id={props.id}\n ref={setNodeRef}\n {...draggableProps}\n style={{\n width: '100%',\n height: '100%',\n }}\n >\n {props.children}\n </div>\n <DroppableItem id={props.id} position=\"after\" />\n </div>\n )\n}\n\nfunction DroppableItem({ id, position }: { id: string; position: 'after' | 'before' }) {\n const { setNodeRef, isOver } = useDroppable({ id: `${id}-${position}`, data: { position } })\n\n return (\n <div\n className=\"droppable-widget\"\n data-testid={`${id}-${position}`}\n ref={setNodeRef}\n style={{\n position: 'absolute',\n left: position === 'before' ? -2 : 'auto',\n right: position === 'after' ? -2 : 'auto',\n top: 0,\n bottom: 0,\n borderRadius: '1000px',\n width: '4px',\n backgroundColor: isOver ? 'var(--color-bg-success)' : 'transparent',\n marginBottom: '10px',\n marginTop: '10px',\n pointerEvents: 'none',\n zIndex: 1000,\n }}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.client.js","names":["c","_c","DndContext","DragOverlay","useDraggable","useDroppable","snapCenterToCursor","React","useEffect","useMemo","useState","Button","Popup","PopupList","ChevronIcon","useTranslation","DashboardStepNav","useDashboardLayout","closestInXAxis","useDashboardSensors","WidgetEditControl","snapCenterToCursorOnlyForPointer","args","activatorEvent","transform","WIDTH_TO_PERCENTAGE","small","medium","large","full","ModularDashboardClient","t0","$","clientLayout","initialLayout","widgets","t","addWidget","cancel","cancelModal","currentLayout","deleteWidget","isEditing","moveWidget","resetLayout","resizeWidget","saveLayout","setIsEditing","updateWidgetData","activeDragId","setActiveDragId","activeControlsWidgetID","setActiveControlsWidgetID","sensors","t1","t2","t3","t4","Symbol","for","t5","event","over","droppableId","id","i","lastIndexOf","slug","slice","position","active","moveFromIndex","findIndex","widget","item","moveToIndex","widget_0","t6","event_0","_jsxs","children","_jsx","autoScroll","enabled","threshold","x","y","collisionDetection","onDragCancel","onDragEnd","onDragStart","className","style","display","flexWrap","length","map","widget_1","_index","Fragment","DraggableItem","disabled","width","filter","Boolean","join","inert","component","onPointerDown","_temp","onSave","data","widgetData","widgetID","WidgetWidthDropdown","currentWidth","maxWidth","minWidth","onOpenChange","isOpen","onResize","buttonStyle","icon","margin","onClick","round","dropAnimation","duration","modifiers","draggedWidget","find","widget_2","e","stopPropagation","validOptions","minPercentage","maxPercentage","Object","entries","key","value","percentage","option","isDisabled","onToggleClose","onToggleOpen","render","close","ButtonGroup","isSelected","toFixed","renderButton","_active","onKeyDown","ariaProps","extraButtonProps","size","selected","verticalAlign","props","attributes","isDragging","listeners","setNodeRef","mergedStyles","opacity","draggableProps","DroppableItem","ref","height","isOver","t7","t8","left","right","top","bottom","borderRadius","backgroundColor","marginBottom","marginTop","pointerEvents","zIndex"],"sources":["../../../../../src/views/Dashboard/Default/ModularDashboard/index.client.tsx"],"sourcesContent":["'use client'\n\nimport type { Modifier } from '@dnd-kit/core'\nimport type { ClientWidget, WidgetWidth } from 'payload'\n\nimport { DndContext, DragOverlay, useDraggable, useDroppable } from '@dnd-kit/core'\nimport { snapCenterToCursor } from '@dnd-kit/modifiers'\nimport React, { useEffect, useMemo, useState } from 'react'\n\nimport { Button } from '../../../../elements/Button/index.js'\nimport { Popup } from '../../../../elements/Popup/index.js'\nimport * as PopupList from '../../../../elements/Popup/PopupButtonList/index.js'\nimport { ChevronIcon } from '../../../../icons/Chevron/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { DashboardStepNav } from './DashboardStepNav.js'\nimport { useDashboardLayout } from './useDashboardLayout.js'\nimport { closestInXAxis } from './utils/collisionDetection.js'\nimport { useDashboardSensors } from './utils/sensors.js'\nimport { WidgetEditControl } from './WidgetEditControl.js'\n\n/**\n * Custom modifier that only applies snapCenterToCursor for pointer events.\n * During keyboard navigation, we handle positioning ourselves via the coordinate getter.\n */\nconst snapCenterToCursorOnlyForPointer: Modifier = (args) => {\n const { activatorEvent } = args\n\n // Only apply snap for pointer events (mouse/touch), not keyboard\n // Check activatorEvent.type since KeyboardEvent may not exist on server\n if (activatorEvent && 'key' in activatorEvent) {\n return args.transform\n }\n\n return snapCenterToCursor(args)\n}\n\nexport type WidgetItem = {\n data?: Record<string, unknown>\n id: string\n maxWidth: WidgetWidth\n minWidth: WidgetWidth\n width: WidgetWidth\n}\n\nexport type WidgetInstanceClient = {\n component: React.ReactNode\n item: WidgetItem\n}\n\nexport type DropTargetWidget = {\n position: 'after' | 'before'\n widget: WidgetInstanceClient\n} | null\n\n/* eslint-disable perfectionist/sort-objects */\nconst WIDTH_TO_PERCENTAGE = {\n 'x-small': 25,\n small: (1 / 3) * 100,\n medium: 50,\n large: (2 / 3) * 100,\n 'x-large': 75,\n full: 100,\n} as const\n\nexport function ModularDashboardClient({\n clientLayout: initialLayout,\n widgets,\n}: {\n clientLayout: WidgetInstanceClient[]\n widgets: ClientWidget[]\n}) {\n const { t } = useTranslation()\n const {\n addWidget,\n cancel,\n cancelModal,\n currentLayout,\n deleteWidget,\n isEditing,\n moveWidget,\n resetLayout,\n resizeWidget,\n saveLayout,\n setIsEditing,\n updateWidgetData,\n } = useDashboardLayout(initialLayout)\n\n const [activeDragId, setActiveDragId] = useState<null | string>(null)\n const [activeControlsWidgetID, setActiveControlsWidgetID] = useState<null | string>(null)\n const sensors = useDashboardSensors()\n\n useEffect(() => {\n if (!isEditing) {\n setActiveControlsWidgetID(null)\n }\n }, [isEditing])\n\n return (\n <div>\n <DndContext\n autoScroll={{\n enabled: true,\n threshold: {\n x: 0, // No horizontal scroll\n y: 0.2, // Allow vertical scroll at 20% from edge\n },\n }}\n collisionDetection={closestInXAxis}\n // https://github.com/clauderic/dnd-kit/issues/926#issuecomment-1640115665\n id=\"dashboard-dnd-context\"\n onDragCancel={() => {\n setActiveDragId(null)\n }}\n onDragEnd={(event) => {\n if (!event.over) {\n setActiveDragId(null)\n return\n }\n const droppableId = event.over.id as string\n const i = droppableId.lastIndexOf('-')\n const slug = droppableId.slice(0, i)\n const position = droppableId.slice(i + 1)\n\n if (slug === event.active.id) {\n return\n }\n\n const moveFromIndex = currentLayout?.findIndex(\n (widget) => widget.item.id === event.active.id,\n )\n let moveToIndex = currentLayout?.findIndex((widget) => widget.item.id === slug)\n if (moveFromIndex < moveToIndex) {\n moveToIndex--\n }\n if (position === 'after') {\n moveToIndex++\n }\n moveWidget({ moveFromIndex, moveToIndex })\n setActiveDragId(null)\n }}\n onDragStart={(event) => {\n setActiveDragId(event.active.id as string)\n }}\n sensors={sensors}\n >\n <div\n className={`modular-dashboard ${isEditing ? 'editing' : ''}`}\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n // Don't add gap here! We need to use padding on the widgets instead\n // to make sure all rows have the same width always.\n }}\n >\n {currentLayout?.length === 0 && (\n <div className=\"modular-dashboard__empty\">\n <p>{t('dashboard:noItems')}</p>\n </div>\n )}\n {currentLayout?.map((widget, _index) => (\n <React.Fragment key={widget.item.id}>\n <DraggableItem\n disabled={!isEditing}\n id={widget.item.id}\n style={{\n width: `${WIDTH_TO_PERCENTAGE[widget.item.width]}%`,\n }}\n width={widget.item.width}\n >\n <div\n className={[\n 'widget-wrapper',\n isEditing ? 'widget-wrapper--editing' : '',\n activeControlsWidgetID === widget.item.id\n ? 'widget-wrapper--controls-active'\n : '',\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div aria-hidden={isEditing} className=\"widget-content\" inert={isEditing}>\n {widget.component}\n </div>\n {isEditing && <div aria-hidden className=\"widget-wrapper__edit-overlay\" />}\n {isEditing && (\n <div\n className=\"widget-wrapper__controls\"\n onPointerDown={(e) => e.stopPropagation()}\n >\n <WidgetEditControl\n onSave={(data) => {\n updateWidgetData(widget.item.id, data)\n }}\n widgetData={widget.item.data}\n widgetID={widget.item.id}\n />\n <WidgetWidthDropdown\n currentWidth={widget.item.width}\n maxWidth={widget.item.maxWidth}\n minWidth={widget.item.minWidth}\n onOpenChange={(isOpen) => {\n setActiveControlsWidgetID(isOpen ? widget.item.id : null)\n }}\n onResize={(width) => resizeWidget(widget.item.id, width)}\n />\n <Button\n aria-label={t('dashboard:deleteWidget', { id: widget.item.id })}\n buttonStyle=\"destructive\"\n className=\"widget-wrapper__delete-btn\"\n icon=\"x\"\n margin={false}\n onClick={() => deleteWidget(widget.item.id)}\n round\n />\n </div>\n )}\n </div>\n </DraggableItem>\n </React.Fragment>\n ))}\n <DragOverlay\n className=\"drag-overlay\"\n dropAnimation={{\n duration: 100,\n }}\n // Uses custom modifier that only applies for pointer, not keyboard navigation.\n modifiers={[snapCenterToCursorOnlyForPointer]}\n >\n {activeDragId\n ? (() => {\n const draggedWidget = currentLayout?.find(\n (widget) => widget.item.id === activeDragId,\n )\n return draggedWidget ? (\n <div\n style={{\n transform: 'scale(0.25)',\n }}\n >\n <div\n className={`widget-wrapper ${isEditing ? 'widget-wrapper--editing' : ''}`}\n >\n <div className=\"widget-content\">{draggedWidget.component}</div>\n </div>\n </div>\n ) : null\n })()\n : null}\n </DragOverlay>\n </div>\n </DndContext>\n <DashboardStepNav\n addWidget={addWidget}\n cancel={cancel}\n isEditing={isEditing}\n resetLayout={resetLayout}\n saveLayout={saveLayout}\n setIsEditing={setIsEditing}\n widgets={widgets}\n />\n {cancelModal}\n </div>\n )\n}\n\nfunction WidgetWidthDropdown({\n currentWidth,\n maxWidth,\n minWidth,\n onOpenChange,\n onResize,\n}: {\n currentWidth: WidgetWidth\n maxWidth: WidgetWidth\n minWidth: WidgetWidth\n onOpenChange: (isOpen: boolean) => void\n onResize: (width: WidgetWidth) => void\n}) {\n // Filter options based on minWidth and maxWidth\n const validOptions = useMemo(() => {\n const minPercentage = WIDTH_TO_PERCENTAGE[minWidth]\n const maxPercentage = WIDTH_TO_PERCENTAGE[maxWidth]\n\n return Object.entries(WIDTH_TO_PERCENTAGE)\n .map(([key, value]) => ({\n width: key as WidgetWidth,\n percentage: value,\n }))\n .filter((option) => option.percentage >= minPercentage && option.percentage <= maxPercentage)\n }, [minWidth, maxWidth])\n\n const isDisabled = validOptions.length <= 1\n\n if (isDisabled) {\n return null\n }\n\n return (\n <Popup\n onToggleClose={() => onOpenChange(false)}\n onToggleOpen={onOpenChange}\n render={({ close }) => (\n <PopupList.ButtonGroup>\n {validOptions.map((option) => {\n const isSelected = option.width === currentWidth\n return (\n <PopupList.Button\n active={isSelected}\n key={option.width}\n onClick={() => {\n onResize(option.width)\n close()\n }}\n >\n <span className=\"widget-wrapper__size-btn-label\">{option.width}</span>\n <span className=\"widget-wrapper__size-btn-percentage\">\n {option.percentage.toFixed(0)}%\n </span>\n </PopupList.Button>\n )\n })}\n </PopupList.ButtonGroup>\n )}\n renderButton={({ active: _active, onClick, onKeyDown, ...ariaProps }) => (\n <Button\n buttonStyle=\"secondary\"\n className=\"widget-wrapper__size-btn\"\n extraButtonProps={{\n onKeyDown,\n onPointerDown: (e) => e.stopPropagation(),\n ...ariaProps,\n }}\n icon={<ChevronIcon className=\"widget-wrapper__size-btn-icon\" size={16} />}\n margin={false}\n onClick={onClick}\n selected={_active}\n >\n {currentWidth}\n </Button>\n )}\n size=\"small\"\n verticalAlign=\"bottom\"\n />\n )\n}\n\nfunction DraggableItem(props: {\n children: React.ReactNode\n disabled?: boolean\n id: string\n style?: React.CSSProperties\n width: WidgetWidth\n}) {\n const { attributes, isDragging, listeners, setNodeRef } = useDraggable({\n id: props.id,\n disabled: props.disabled,\n })\n\n const mergedStyles: React.CSSProperties = {\n ...props.style,\n opacity: isDragging ? 0.3 : 1,\n position: 'relative',\n }\n\n // Only apply draggable attributes and listeners when not disabled\n // to prevent disabling interactive elements inside the widget\n const draggableProps = props.disabled ? {} : { ...listeners, ...attributes }\n\n return (\n <div className=\"widget\" data-slug={props.id} data-width={props.width} style={mergedStyles}>\n <DroppableItem id={props.id} position=\"before\" />\n <div\n className=\"draggable\"\n id={props.id}\n ref={setNodeRef}\n {...draggableProps}\n style={{\n width: '100%',\n height: '100%',\n }}\n >\n {props.children}\n </div>\n <DroppableItem id={props.id} position=\"after\" />\n </div>\n )\n}\n\nfunction DroppableItem({ id, position }: { id: string; position: 'after' | 'before' }) {\n const { setNodeRef, isOver } = useDroppable({ id: `${id}-${position}`, data: { position } })\n\n return (\n <div\n className=\"droppable-widget\"\n data-testid={`${id}-${position}`}\n ref={setNodeRef}\n style={{\n position: 'absolute',\n left: position === 'before' ? -2 : 'auto',\n right: position === 'after' ? -2 : 'auto',\n top: 0,\n bottom: 0,\n borderRadius: '1000px',\n width: '4px',\n backgroundColor: isOver ? 'var(--color-bg-brand-secondary)' : 'transparent',\n marginBottom: '10px',\n marginTop: '10px',\n pointerEvents: 'none',\n zIndex: 1000,\n }}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -93,7 +93,33 @@
93
93
  width: 100%;
94
94
  }
95
95
 
96
- .widget-wrapper--editing:hover .widget-wrapper__controls {
96
+ .widget-wrapper--editing .widget-wrapper__controls {
97
+ transition: opacity 0.2s ease;
98
+ }
99
+
100
+ .widget-wrapper--editing:hover .widget-wrapper__controls,
101
+ .widget-wrapper--editing:has(:focus-visible) .widget-wrapper__controls,
102
+ .widget-wrapper--controls-active .widget-wrapper__controls {
103
+ opacity: 1;
104
+ }
105
+
106
+ .widget-wrapper__edit-overlay {
107
+ position: absolute;
108
+ inset: 0;
109
+ z-index: 5;
110
+ pointer-events: none;
111
+ background: rgba(0, 0, 0, 0.35);
112
+ outline: var(--accessibility-outline);
113
+ outline-offset: var(--accessibility-outline-offset);
114
+ border-radius: var(--radius-medium);
115
+ box-sizing: border-box;
116
+ opacity: 0;
117
+ transition: opacity 0.2s ease;
118
+ }
119
+
120
+ .widget-wrapper--editing:hover .widget-wrapper__edit-overlay,
121
+ .widget-wrapper--editing:has(:focus-visible) .widget-wrapper__edit-overlay,
122
+ .widget-wrapper--controls-active .widget-wrapper__edit-overlay {
97
123
  opacity: 1;
98
124
  }
99
125
 
@@ -107,159 +133,26 @@
107
133
  gap: var(--spacer-2);
108
134
  }
109
135
 
110
- .widget-wrapper__delete-btn {
111
- display: flex;
112
- align-items: center;
113
- justify-content: center;
114
- width: var(--spacer-4);
115
- height: var(--spacer-4);
116
- background: var(--color-bg-danger);
117
- border: none;
118
- border-radius: var(--radius-small);
119
- cursor: pointer;
120
- color: var(--color-text-ondanger);
121
-
122
- &:hover {
123
- background: var(--color-bg-danger-hover);
124
- }
125
-
126
- &:active {
127
- background: var(--color-bg-danger-pressed);
128
- }
129
-
130
- &:focus-visible {
131
- outline: var(--accessibility-outline);
132
- outline-offset: var(--accessibility-outline-offset);
133
- }
134
-
135
- & svg {
136
- pointer-events: none;
137
- }
138
- }
139
-
140
- .widget-wrapper__edit-btn {
141
- display: flex;
142
- align-items: center;
143
- justify-content: center;
144
- width: var(--spacer-4);
145
- height: var(--spacer-4);
146
- background: var(--color-text);
147
- border: none;
148
- border-radius: var(--radius-small);
149
- cursor: pointer;
150
- color: var(--color-bg);
151
-
152
- & .icon {
153
- width: var(--spacer-3);
154
- height: var(--spacer-3);
155
- }
156
-
157
- &:hover {
158
- background: var(--color-text-secondary);
159
- }
160
-
161
- &:active {
162
- background: var(--color-text-tertiary);
163
- }
164
-
165
- & svg {
166
- pointer-events: none;
167
- }
168
- }
169
-
170
136
  .widget-wrapper__size-btn {
171
- display: flex;
172
- align-items: center;
173
- gap: var(--spacer-1);
174
- padding: var(--spacer-1) var(--spacer-2);
175
137
  min-width: auto;
176
- height: var(--spacer-4);
177
- background: var(--color-bg-inverse);
178
- border: none;
179
- border-radius: var(--radius-small);
180
- cursor: pointer;
181
- font-family: var(--text-body-small-font-family);
182
- font-size: var(--text-body-small-font-size);
183
- font-weight: var(--text-body-small-font-weight);
184
- line-height: var(--text-body-small-line-height);
185
- letter-spacing: var(--text-body-small-letter-spacing);
186
- color: var(--color-text-oninverse);
187
- white-space: nowrap;
188
-
189
- & .icon .stroke {
190
- stroke: var(--color-icon-oninverse);
191
- stroke-width: var(--stroke-width-medium);
192
- }
193
-
194
- &:hover {
195
- background: var(--color-bg-inverse-hover);
196
- }
197
-
198
- &:active {
199
- background: var(--color-bg-inverse-pressed);
200
- }
201
-
202
- &:disabled {
203
- opacity: 0.5;
204
- cursor: not-allowed;
205
- }
206
-
207
- &:disabled:hover {
208
- background: var(--color-bg-inverse);
209
- }
210
-
211
- &:focus-visible {
212
- outline: var(--accessibility-outline);
213
- outline-offset: var(--accessibility-outline-offset);
214
- }
215
138
 
216
- & svg {
217
- pointer-events: none;
139
+ & .btn__content {
140
+ gap: var(--spacer-1);
218
141
  }
219
142
  }
220
143
 
221
144
  .widget-wrapper__size-btn-percentage {
222
- font-family: var(--text-body-small-font-family);
223
- font-size: var(--text-body-small-font-size);
224
- margin-left: auto;
145
+ margin-left: var(--spacer-1);
225
146
  color: var(--color-text-tertiary);
226
147
  }
227
148
 
228
- .popup-button-list:has(.widget-wrapper__size-btn-label) .popup__scroll-container {
229
- padding: 0;
230
- }
231
-
232
- .popup__content:has(.widget-wrapper__size-btn-label) {
233
- padding: var(--spacer-1);
234
- box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;
235
- }
236
-
237
- .popup-button-list__button:has(.widget-wrapper__size-btn-label) {
238
- display: flex !important;
239
- align-items: center !important;
240
- gap: var(--spacer-3);
241
- }
242
-
243
- .popup-button-list__button:has(.widget-wrapper__size-btn-label) .widget-wrapper__size-btn-label {
244
- flex: 0 0 auto;
245
- }
246
-
247
- .popup-button-list__button:has(.widget-wrapper__size-btn-label)
248
- .widget-wrapper__size-btn-percentage {
249
- margin-left: auto !important;
250
- }
251
-
252
149
  .step-nav .dashboard-breadcrumb-dropdown .btn {
253
150
  padding-right: var(--spacer-1);
254
151
  }
255
152
 
256
- /* .step-nav .dashboard-breadcrumb-dropdown {
257
- margin-left: calc(var(--spacer-2) * -1);
258
- } */
259
-
260
153
  .step-nav .dashboard-breadcrumb-dropdown__editing {
261
154
  align-items: center;
262
- display: flex !important;
155
+ display: flex;
263
156
  gap: var(--spacer-2-5);
264
157
 
265
158
  > span:first-child {
@@ -268,8 +161,8 @@
268
161
  }
269
162
 
270
163
  .step-nav .dashboard-breadcrumb-dropdown__actions {
271
- display: flex !important;
272
- gap: var(--spacer-2-5);
164
+ display: flex;
165
+ gap: var(--spacer-2);
273
166
  }
274
167
 
275
168
  .step-nav .dashboard-breadcrumb-dropdown__label {
@@ -1,4 +1,4 @@
1
- import type { I18nClient, TFunction } from '@payloadcms/translations';
1
+ import type { I18nClient } from '@payloadcms/translations';
2
2
  import type { ClientCollectionConfig, ViewTypes } from 'payload';
3
3
  import React from 'react';
4
4
  import './index.css';
@@ -17,16 +17,7 @@ export type ListHeaderProps = {
17
17
  isTrashEnabled?: boolean;
18
18
  newDocumentURL: string;
19
19
  onBulkUploadSuccess?: () => void;
20
- /** @deprecated This prop will be removed in the next major version.
21
- *
22
- * Opening of the bulk upload modal is handled internally.
23
- *
24
- * Prefer `onBulkUploadSuccess` usage to handle the success of the bulk upload.
25
- */
26
- openBulkUpload: () => void;
27
20
  smallBreak: boolean;
28
- /** @deprecated This prop will be removed in the next major version. */
29
- t?: TFunction;
30
21
  TitleActions?: React.ReactNode[];
31
22
  viewType?: ViewTypes;
32
23
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/List/ListHeader/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACrE,OAAO,KAAK,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGhE,OAAO,KAAK,MAAM,OAAO,CAAA;AAezB,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,sBAAsB,CAAA;IACxC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,IAAI,EAAE,UAAU,CAAA;IAChB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAA;IAChC;;;;;OAKG;IACH,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,UAAU,EAAE,OAAO,CAAA;IACnB,uEAAuE;IACvE,CAAC,CAAC,EAAE,SAAS,CAAA;IACb,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAChC,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAiG1D,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/List/ListHeader/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGhE,OAAO,KAAK,MAAM,OAAO,CAAA;AAezB,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,sBAAsB,CAAA;IACxC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,IAAI,EAAE,UAAU,CAAA;IAChB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAA;IAChC,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAChC,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA+F1D,CAAA"}
@@ -26,7 +26,6 @@ export const CollectionListHeader = ({
26
26
  isBulkUploadEnabled,
27
27
  isTrashEnabled,
28
28
  onBulkUploadSuccess,
29
- openBulkUpload,
30
29
  smallBreak,
31
30
  viewType
32
31
  }) => {
@@ -84,8 +83,7 @@ export const CollectionListHeader = ({
84
83
  collectionSlug: collectionConfig.slug,
85
84
  hasCreatePermission: hasCreatePermission,
86
85
  isBulkUploadEnabled: isBulkUploadEnabled,
87
- onBulkUploadSuccess: onBulkUploadSuccess,
88
- openBulkUpload: openBulkUpload
86
+ onBulkUploadSuccess: onBulkUploadSuccess
89
87
  }, "list-header-bulk-upload"), hasDeletePermission && isTrashEnabled && viewType === 'trash' && /*#__PURE__*/_jsx(ListEmptyTrashButton, {
90
88
  collectionConfig: collectionConfig,
91
89
  hasDeletePermission: hasDeletePermission
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getTranslation","React","CloseModalButton","DefaultListViewTabs","useListDrawerContext","DrawerRelationshipSelect","ListDrawerCreateNewDocButton","ListHeader","ListBulkUploadButton","ListEmptyTrashButton","useConfig","useListQuery","ListSelection","drawerBaseClass","CollectionListHeader","className","collectionConfig","Description","disableBulkDelete","disableBulkEdit","hasCreatePermission","hasDeletePermission","hasTrashPermission","i18n","isBulkUploadEnabled","isTrashEnabled","onBulkUploadSuccess","openBulkUpload","smallBreak","viewType","config","getEntityConfig","drawerSlug","isInDrawer","selectedOption","isTrashRoute","isGroupingBy","_jsx","Actions","AfterListHeaderContent","_jsxs","_Fragment","BeforeTitle","slug","title","collectionSlug","value","labels","plural","TitleActions","filter","Boolean","label","showSelectAllAcrossPages"],"sources":["../../../../src/views/List/ListHeader/index.tsx"],"sourcesContent":["import type { I18nClient, TFunction } from '@payloadcms/translations'\nimport type { ClientCollectionConfig, ViewTypes } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { CloseModalButton } from '../../../elements/CloseModalButton/index.js'\nimport { DefaultListViewTabs } from '../../../elements/DefaultListViewTabs/index.js'\nimport { useListDrawerContext } from '../../../elements/ListDrawer/Provider.js'\nimport { DrawerRelationshipSelect } from '../../../elements/ListHeader/DrawerRelationshipSelect/index.js'\nimport { ListDrawerCreateNewDocButton } from '../../../elements/ListHeader/DrawerTitleActions/index.js'\nimport { ListHeader } from '../../../elements/ListHeader/index.js'\nimport {\n ListBulkUploadButton,\n ListEmptyTrashButton,\n} from '../../../elements/ListHeader/TitleActions/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useListQuery } from '../../../providers/ListQuery/index.js'\nimport { ListSelection } from '../ListSelection/index.js'\nimport './index.css'\n\nconst drawerBaseClass = 'list-drawer'\n\nexport type ListHeaderProps = {\n Actions?: React.ReactNode[]\n className?: string\n collectionConfig: ClientCollectionConfig\n Description?: React.ReactNode\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n hasCreatePermission: boolean\n hasDeletePermission?: boolean\n hasTrashPermission?: boolean\n i18n: I18nClient\n isBulkUploadEnabled: boolean\n isTrashEnabled?: boolean\n newDocumentURL: string\n onBulkUploadSuccess?: () => void\n /** @deprecated This prop will be removed in the next major version.\n *\n * Opening of the bulk upload modal is handled internally.\n *\n * Prefer `onBulkUploadSuccess` usage to handle the success of the bulk upload.\n */\n openBulkUpload: () => void\n smallBreak: boolean\n /** @deprecated This prop will be removed in the next major version. */\n t?: TFunction\n TitleActions?: React.ReactNode[]\n viewType?: ViewTypes\n}\n\nexport const CollectionListHeader: React.FC<ListHeaderProps> = ({\n className,\n collectionConfig,\n Description,\n disableBulkDelete,\n disableBulkEdit,\n hasCreatePermission,\n hasDeletePermission,\n hasTrashPermission,\n i18n,\n isBulkUploadEnabled,\n isTrashEnabled,\n onBulkUploadSuccess,\n openBulkUpload,\n smallBreak,\n viewType,\n}) => {\n const { config, getEntityConfig } = useConfig()\n const { drawerSlug, isInDrawer, selectedOption } = useListDrawerContext()\n const isTrashRoute = viewType === 'trash'\n const { isGroupingBy } = useListQuery()\n\n if (isInDrawer) {\n return (\n <ListHeader\n Actions={[]}\n AfterListHeaderContent={\n <>\n {Description}\n {<DrawerRelationshipSelect />}\n </>\n }\n BeforeTitle={\n <CloseModalButton className={`${drawerBaseClass}__header-close`} slug={drawerSlug} />\n }\n className={`${drawerBaseClass}__header`}\n title={getTranslation(\n getEntityConfig({ collectionSlug: selectedOption.value })?.labels?.plural,\n i18n,\n )}\n TitleActions={[\n <ListDrawerCreateNewDocButton\n hasCreatePermission={hasCreatePermission}\n key=\"list-drawer-create-new-doc\"\n />,\n ].filter(Boolean)}\n />\n )\n }\n\n return (\n <ListHeader\n Actions={[\n !smallBreak && !isGroupingBy && (\n <ListSelection\n collectionConfig={collectionConfig}\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n hasDeletePermission={hasDeletePermission}\n hasTrashPermission={hasTrashPermission}\n key=\"list-selection\"\n label={getTranslation(collectionConfig?.labels?.plural, i18n)}\n showSelectAllAcrossPages={!isGroupingBy}\n viewType={viewType}\n />\n ),\n <DefaultListViewTabs\n collectionConfig={collectionConfig}\n config={config}\n key=\"default-list-actions\"\n viewType={viewType}\n />,\n ].filter(Boolean)}\n AfterListHeaderContent={Description}\n className={className}\n title={getTranslation(collectionConfig?.labels?.plural, i18n)}\n TitleActions={[\n hasCreatePermission && isBulkUploadEnabled && !isTrashRoute && (\n <ListBulkUploadButton\n collectionSlug={collectionConfig.slug}\n hasCreatePermission={hasCreatePermission}\n isBulkUploadEnabled={isBulkUploadEnabled}\n key=\"list-header-bulk-upload\"\n onBulkUploadSuccess={onBulkUploadSuccess}\n openBulkUpload={openBulkUpload}\n />\n ),\n hasDeletePermission && isTrashEnabled && viewType === 'trash' && (\n <ListEmptyTrashButton\n collectionConfig={collectionConfig}\n hasDeletePermission={hasDeletePermission}\n key=\"list-header-empty-trash\"\n />\n ),\n ].filter(Boolean)}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getTranslation","React","CloseModalButton","DefaultListViewTabs","useListDrawerContext","DrawerRelationshipSelect","ListDrawerCreateNewDocButton","ListHeader","ListBulkUploadButton","ListEmptyTrashButton","useConfig","useListQuery","ListSelection","drawerBaseClass","CollectionListHeader","className","collectionConfig","Description","disableBulkDelete","disableBulkEdit","hasCreatePermission","hasDeletePermission","hasTrashPermission","i18n","isBulkUploadEnabled","isTrashEnabled","onBulkUploadSuccess","smallBreak","viewType","config","getEntityConfig","drawerSlug","isInDrawer","selectedOption","isTrashRoute","isGroupingBy","_jsx","Actions","AfterListHeaderContent","_jsxs","_Fragment","BeforeTitle","slug","title","collectionSlug","value","labels","plural","TitleActions","filter","Boolean","label","showSelectAllAcrossPages"],"sources":["../../../../src/views/List/ListHeader/index.tsx"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type { ClientCollectionConfig, ViewTypes } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { CloseModalButton } from '../../../elements/CloseModalButton/index.js'\nimport { DefaultListViewTabs } from '../../../elements/DefaultListViewTabs/index.js'\nimport { useListDrawerContext } from '../../../elements/ListDrawer/Provider.js'\nimport { DrawerRelationshipSelect } from '../../../elements/ListHeader/DrawerRelationshipSelect/index.js'\nimport { ListDrawerCreateNewDocButton } from '../../../elements/ListHeader/DrawerTitleActions/index.js'\nimport { ListHeader } from '../../../elements/ListHeader/index.js'\nimport {\n ListBulkUploadButton,\n ListEmptyTrashButton,\n} from '../../../elements/ListHeader/TitleActions/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useListQuery } from '../../../providers/ListQuery/index.js'\nimport { ListSelection } from '../ListSelection/index.js'\nimport './index.css'\n\nconst drawerBaseClass = 'list-drawer'\n\nexport type ListHeaderProps = {\n Actions?: React.ReactNode[]\n className?: string\n collectionConfig: ClientCollectionConfig\n Description?: React.ReactNode\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n hasCreatePermission: boolean\n hasDeletePermission?: boolean\n hasTrashPermission?: boolean\n i18n: I18nClient\n isBulkUploadEnabled: boolean\n isTrashEnabled?: boolean\n newDocumentURL: string\n onBulkUploadSuccess?: () => void\n smallBreak: boolean\n TitleActions?: React.ReactNode[]\n viewType?: ViewTypes\n}\n\nexport const CollectionListHeader: React.FC<ListHeaderProps> = ({\n className,\n collectionConfig,\n Description,\n disableBulkDelete,\n disableBulkEdit,\n hasCreatePermission,\n hasDeletePermission,\n hasTrashPermission,\n i18n,\n isBulkUploadEnabled,\n isTrashEnabled,\n onBulkUploadSuccess,\n smallBreak,\n viewType,\n}) => {\n const { config, getEntityConfig } = useConfig()\n const { drawerSlug, isInDrawer, selectedOption } = useListDrawerContext()\n const isTrashRoute = viewType === 'trash'\n const { isGroupingBy } = useListQuery()\n\n if (isInDrawer) {\n return (\n <ListHeader\n Actions={[]}\n AfterListHeaderContent={\n <>\n {Description}\n {<DrawerRelationshipSelect />}\n </>\n }\n BeforeTitle={\n <CloseModalButton className={`${drawerBaseClass}__header-close`} slug={drawerSlug} />\n }\n className={`${drawerBaseClass}__header`}\n title={getTranslation(\n getEntityConfig({ collectionSlug: selectedOption.value })?.labels?.plural,\n i18n,\n )}\n TitleActions={[\n <ListDrawerCreateNewDocButton\n hasCreatePermission={hasCreatePermission}\n key=\"list-drawer-create-new-doc\"\n />,\n ].filter(Boolean)}\n />\n )\n }\n\n return (\n <ListHeader\n Actions={[\n !smallBreak && !isGroupingBy && (\n <ListSelection\n collectionConfig={collectionConfig}\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n hasDeletePermission={hasDeletePermission}\n hasTrashPermission={hasTrashPermission}\n key=\"list-selection\"\n label={getTranslation(collectionConfig?.labels?.plural, i18n)}\n showSelectAllAcrossPages={!isGroupingBy}\n viewType={viewType}\n />\n ),\n <DefaultListViewTabs\n collectionConfig={collectionConfig}\n config={config}\n key=\"default-list-actions\"\n viewType={viewType}\n />,\n ].filter(Boolean)}\n AfterListHeaderContent={Description}\n className={className}\n title={getTranslation(collectionConfig?.labels?.plural, i18n)}\n TitleActions={[\n hasCreatePermission && isBulkUploadEnabled && !isTrashRoute && (\n <ListBulkUploadButton\n collectionSlug={collectionConfig.slug}\n hasCreatePermission={hasCreatePermission}\n isBulkUploadEnabled={isBulkUploadEnabled}\n key=\"list-header-bulk-upload\"\n onBulkUploadSuccess={onBulkUploadSuccess}\n />\n ),\n hasDeletePermission && isTrashEnabled && viewType === 'trash' && (\n <ListEmptyTrashButton\n collectionConfig={collectionConfig}\n hasDeletePermission={hasDeletePermission}\n key=\"list-header-empty-trash\"\n />\n ),\n ].filter(Boolean)}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../../src/views/List/index.client.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAIlD,OAAO,KAAgD,MAAM,OAAO,CAAA;AA4BpE,OAAO,aAAa,CAAA;AAIpB,wBAAgB,eAAe,CAAC,KAAK,EAAE,mBAAmB,qBAkVzD"}
1
+ {"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../../src/views/List/index.client.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAIlD,OAAO,KAAgD,MAAM,OAAO,CAAA;AA0BpE,OAAO,aAAa,CAAA;AAIpB,wBAAgB,eAAe,CAAC,KAAK,EAAE,mBAAmB,qBAyUzD"}
@@ -4,7 +4,6 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { getTranslation } from '@payloadcms/translations';
5
5
  import { formatAdminURL, formatFilesize } from 'payload/shared';
6
6
  import React, { Fragment, useEffect, useRef, useState } from 'react';
7
- import { useBulkUpload } from '../../elements/BulkUpload/index.js';
8
7
  import { Button } from '../../elements/Button/index.js';
9
8
  import { ListControls } from '../../elements/ListControls/index.js';
10
9
  import { useListDrawerContext } from '../../elements/ListDrawer/Provider.js';
@@ -21,7 +20,6 @@ import { useControllableState } from '../../hooks/useControllableState.js';
21
20
  import { useConfig } from '../../providers/Config/index.js';
22
21
  import { DocumentSelectionProvider } from '../../providers/DocumentSelection/index.js';
23
22
  import { useListQuery } from '../../providers/ListQuery/index.js';
24
- import { useRouter } from '../../providers/RouterAdapter/index.js';
25
23
  import { SelectionProvider } from '../../providers/Selection/index.js';
26
24
  import { TableColumnsProvider } from '../../providers/TableColumns/index.js';
27
25
  import { useTranslation } from '../../providers/Translation/index.js';
@@ -77,7 +75,6 @@ export function DefaultListView(props) {
77
75
  },
78
76
  getEntityConfig
79
77
  } = useConfig();
80
- const router = useRouter();
81
78
  const {
82
79
  data,
83
80
  hasActiveFilters,
@@ -97,11 +94,6 @@ export function DefaultListView(props) {
97
94
  const {
98
95
  openModal
99
96
  } = useModal();
100
- const {
101
- modalSlug: bulkUploadModalSlug,
102
- setCollectionSlug,
103
- setOnSuccess
104
- } = useBulkUpload();
105
97
  const collectionConfig = getEntityConfig({
106
98
  collectionSlug
107
99
  });
@@ -136,11 +128,6 @@ export function DefaultListView(props) {
136
128
  return data?.docs;
137
129
  }
138
130
  }, [data?.docs, isUploadCollection]);
139
- const openBulkUpload = React.useCallback(() => {
140
- setCollectionSlug(collectionSlug);
141
- openModal(bulkUploadModalSlug);
142
- setOnSuccess(() => router.refresh());
143
- }, [router, collectionSlug, bulkUploadModalSlug, openModal, setCollectionSlug, setOnSuccess]);
144
131
  useEffect(() => {
145
132
  if (!isInDrawer) {
146
133
  const baseLabel = {
@@ -202,7 +189,6 @@ export function DefaultListView(props) {
202
189
  isBulkUploadEnabled: isBulkUploadEnabled && !upload.hideFileInputOnCreate,
203
190
  isTrashEnabled: isTrashEnabled,
204
191
  newDocumentURL: newDocumentURL,
205
- openBulkUpload: openBulkUpload,
206
192
  smallBreak: smallBreak,
207
193
  viewType: viewType
208
194
  }), /*#__PURE__*/_jsx(ListControls, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.client.js","names":["getTranslation","formatAdminURL","formatFilesize","React","Fragment","useEffect","useRef","useState","useBulkUpload","Button","ListControls","useListDrawerContext","ListWhereBuilder","useModal","NoListResults","PageControls","RenderCustomComponent","SelectMany","useStepNav","RelationshipProvider","ViewDescription","useControllableState","useConfig","DocumentSelectionProvider","useListQuery","useRouter","SelectionProvider","TableColumnsProvider","useTranslation","useWindowInfo","ListSelection","DocumentListSelection","HierarchyTable","CollectionListHeader","baseClass","DefaultListView","props","AfterList","AfterListTable","beforeActions","BeforeList","BeforeListTable","collectionSlug","columnState","Description","disableBulkDelete","disableBulkEdit","disableQueryPresets","enableRowSelections","hasCreatePermission","hasCreatePermissionFromProps","hasDeletePermission","hasTrashPermission","hierarchyData","listMenuItems","newDocumentURL","NoResults","queryPreset","queryPresetPermissions","renderedFilters","resolvedFilterOptions","Table","InitialTable","viewType","allowCreate","createNewDrawerSlug","isInDrawer","onBulkSelect","undefined","config","routes","admin","adminRoute","serverURL","getEntityConfig","router","data","hasActiveFilters","isGroupingBy","query","hasWhereParam","Boolean","where","isWhereOpen","setIsWhereOpen","current","openModal","modalSlug","bulkUploadModalSlug","setCollectionSlug","setOnSuccess","collectionConfig","labels","upload","isUploadCollection","isBulkUploadEnabled","bulkUpload","isTrashEnabled","trash","i18n","collectionLabel","plural","setStepNav","breakpoints","s","smallBreak","docs","useMemo","map","doc","filesize","openBulkUpload","useCallback","refresh","baseLabel","label","url","path","trashLabel","t","navItems","breadcrumbs","queryParam","parentFieldName","hierarchyBreadcrumbs","crumb","index","isLast","length","title","id","_jsxs","_jsx","className","totalDocs","description","CustomComponent","Fallback","hideFileInputOnCreate","onClick","enableQueryPresets","onWhereToggle","prev","collectionPluralLabel","fields","onEmptyRemove","collectionData","childrenData","Object","fromEntries","entries","relatedDocumentsByCollection","slug","related","result","hierarchyLabel","parentId","relatedGroups","fieldName","hasMany","useAsTitle","Actions","el","singular","to","withMargin","AfterPageControls","showSelectAllAcrossPages","totalPages"],"sources":["../../../src/views/List/index.client.tsx"],"sourcesContent":["'use client'\n\nimport type { ListViewClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL, formatFilesize } from 'payload/shared'\nimport React, { Fragment, useEffect, useRef, useState } from 'react'\n\nimport { useBulkUpload } from '../../elements/BulkUpload/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { ListControls } from '../../elements/ListControls/index.js'\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { ListWhereBuilder } from '../../elements/ListWhereBuilder/index.js'\nimport { useModal } from '../../elements/Modal/index.js'\nimport { NoListResults } from '../../elements/NoListResults/index.js'\nimport { PageControls } from '../../elements/PageControls/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { SelectMany } from '../../elements/SelectMany/index.js'\nimport { useStepNav } from '../../elements/StepNav/index.js'\nimport { RelationshipProvider } from '../../elements/Table/RelationshipProvider/index.js'\nimport { ViewDescription } from '../../elements/ViewDescription/index.js'\nimport { useControllableState } from '../../hooks/useControllableState.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { DocumentSelectionProvider } from '../../providers/DocumentSelection/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useRouter } from '../../providers/RouterAdapter/index.js'\nimport { SelectionProvider } from '../../providers/Selection/index.js'\nimport { TableColumnsProvider } from '../../providers/TableColumns/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useWindowInfo } from '../../providers/WindowInfo/index.js'\nimport { ListSelection } from '../../views/List/ListSelection/index.js'\nimport { DocumentListSelection } from '../HierarchyList/DocumentListSelection/index.js'\nimport { HierarchyTable } from '../HierarchyList/HierarchyTable/index.js'\nimport { CollectionListHeader } from './ListHeader/index.js'\nimport './index.css'\n\nconst baseClass = 'collection-list'\n\nexport function DefaultListView(props: ListViewClientProps) {\n const {\n AfterList,\n AfterListTable,\n beforeActions,\n BeforeList,\n BeforeListTable,\n collectionSlug,\n columnState,\n Description,\n disableBulkDelete,\n disableBulkEdit,\n disableQueryPresets,\n enableRowSelections,\n hasCreatePermission: hasCreatePermissionFromProps,\n hasDeletePermission,\n hasTrashPermission,\n hierarchyData,\n listMenuItems,\n newDocumentURL,\n NoResults,\n queryPreset,\n queryPresetPermissions,\n renderedFilters,\n resolvedFilterOptions,\n Table: InitialTable,\n viewType,\n } = props\n\n const [Table] = useControllableState(InitialTable)\n\n const { allowCreate, createNewDrawerSlug, isInDrawer, onBulkSelect } = useListDrawerContext()\n\n const hasCreatePermission =\n allowCreate !== undefined\n ? allowCreate && hasCreatePermissionFromProps\n : hasCreatePermissionFromProps\n\n const {\n config: {\n routes: { admin: adminRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n const router = useRouter()\n\n const { data, hasActiveFilters, isGroupingBy, query } = useListQuery()\n\n const hasWhereParam = useRef(Boolean(query?.where))\n const [isWhereOpen, setIsWhereOpen] = useState(hasActiveFilters)\n\n useEffect(() => {\n if (hasWhereParam.current && !query?.where) {\n hasWhereParam.current = false\n setIsWhereOpen(false)\n } else if (query?.where) {\n hasWhereParam.current = true\n }\n }, [query?.where])\n\n const { openModal } = useModal()\n const { modalSlug: bulkUploadModalSlug, setCollectionSlug, setOnSuccess } = useBulkUpload()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const { labels, upload } = collectionConfig\n\n const isUploadCollection = Boolean(upload)\n\n const isBulkUploadEnabled = isUploadCollection && collectionConfig.upload.bulkUpload\n\n const isTrashEnabled = Boolean(collectionConfig.trash)\n\n const { i18n } = useTranslation()\n\n const collectionLabel = getTranslation(labels?.plural, i18n)\n\n const { setStepNav } = useStepNav()\n\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const docs = React.useMemo(() => {\n if (isUploadCollection) {\n return data.docs.map((doc) => {\n return {\n ...doc,\n filesize: formatFilesize(doc.filesize),\n }\n })\n } else {\n return data?.docs\n }\n }, [data?.docs, isUploadCollection])\n\n const openBulkUpload = React.useCallback(() => {\n setCollectionSlug(collectionSlug)\n openModal(bulkUploadModalSlug)\n setOnSuccess(() => router.refresh())\n }, [router, collectionSlug, bulkUploadModalSlug, openModal, setCollectionSlug, setOnSuccess])\n\n useEffect(() => {\n if (!isInDrawer) {\n const baseLabel = {\n label: collectionLabel,\n url:\n hierarchyData || (isTrashEnabled && viewType === 'trash')\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}`,\n })\n : undefined,\n }\n\n const trashLabel = {\n label: i18n.t('general:trash'),\n }\n\n let navItems = isTrashEnabled && viewType === 'trash' ? [baseLabel, trashLabel] : [baseLabel]\n\n // Add hierarchy breadcrumbs\n if (hierarchyData?.breadcrumbs) {\n const queryParam = hierarchyData.parentFieldName || 'parent'\n const hierarchyBreadcrumbs = hierarchyData.breadcrumbs.map((crumb, index) => {\n const isLast = index === hierarchyData.breadcrumbs.length - 1\n return {\n label: crumb.title,\n url: isLast\n ? undefined\n : formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}?${queryParam}=${crumb.id}`,\n }),\n }\n })\n navItems = [...navItems, ...hierarchyBreadcrumbs]\n }\n\n setStepNav(navItems)\n }\n }, [\n adminRoute,\n setStepNav,\n serverURL,\n labels,\n isInDrawer,\n isTrashEnabled,\n viewType,\n i18n,\n collectionSlug,\n hierarchyData,\n collectionLabel,\n ])\n\n return (\n <Fragment>\n <TableColumnsProvider collectionSlug={collectionSlug} columnState={columnState}>\n <div className={`${baseClass} ${baseClass}--${collectionSlug}`}>\n <SelectionProvider docs={docs} totalDocs={data?.totalDocs}>\n {BeforeList}\n <CollectionListHeader\n collectionConfig={collectionConfig}\n Description={\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 ) : undefined\n }\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n hasCreatePermission={hasCreatePermission}\n hasDeletePermission={hasDeletePermission}\n hasTrashPermission={hasTrashPermission}\n i18n={i18n}\n isBulkUploadEnabled={isBulkUploadEnabled && !upload.hideFileInputOnCreate}\n isTrashEnabled={isTrashEnabled}\n newDocumentURL={newDocumentURL}\n openBulkUpload={openBulkUpload}\n smallBreak={smallBreak}\n viewType={viewType}\n />\n <ListControls\n beforeActions={\n enableRowSelections && typeof onBulkSelect === 'function'\n ? beforeActions\n ? [...beforeActions, <SelectMany key=\"select-many\" onClick={onBulkSelect} />]\n : [<SelectMany key=\"select-many\" onClick={onBulkSelect} />]\n : beforeActions\n }\n collectionConfig={collectionConfig}\n collectionSlug={collectionSlug}\n disableQueryPresets={\n collectionConfig?.enableQueryPresets !== true || disableQueryPresets\n }\n hasCreatePermission={hasCreatePermission && viewType !== 'trash' && !isInDrawer}\n isWhereOpen={isWhereOpen}\n listMenuItems={listMenuItems}\n newDocumentURL={newDocumentURL}\n onWhereToggle={() => setIsWhereOpen((prev) => !prev)}\n queryPreset={queryPreset}\n queryPresetPermissions={queryPresetPermissions}\n renderedFilters={renderedFilters}\n resolvedFilterOptions={resolvedFilterOptions}\n />\n {isWhereOpen && (\n <ListWhereBuilder\n collectionPluralLabel={collectionConfig?.labels?.plural}\n collectionSlug={collectionSlug}\n fields={collectionConfig?.fields}\n onEmptyRemove={() => setIsWhereOpen(false)}\n renderedFilters={renderedFilters}\n resolvedFilterOptions={resolvedFilterOptions}\n />\n )}\n {BeforeListTable}\n {hierarchyData ? (\n <DocumentSelectionProvider\n collectionData={{\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 <HierarchyTable\n childrenData={hierarchyData.childrenData}\n collectionSlug={collectionSlug}\n hierarchyLabel={collectionLabel}\n key={hierarchyData.parentId}\n parentId={hierarchyData.parentId}\n relatedGroups={Object.entries(hierarchyData.relatedDocumentsByCollection).map(\n ([slug, related]) => ({\n collectionSlug: slug,\n data: related.result,\n fieldName: related.fieldName,\n hasMany: related.hasMany,\n label: related.label,\n }),\n )}\n useAsTitle={collectionConfig?.admin?.useAsTitle || 'id'}\n />\n <DocumentListSelection\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n />\n </DocumentSelectionProvider>\n ) : docs?.length > 0 ? (\n <RelationshipProvider>{Table}</RelationshipProvider>\n ) : null}\n {/* HierarchyTable handles its own empty state, skip for hierarchy views */}\n {docs?.length === 0 &&\n (NoResults ?? (\n <NoListResults\n Actions={\n hasCreatePermission && newDocumentURL && viewType !== 'trash'\n ? [\n isInDrawer ? (\n <Button\n el=\"button\"\n key=\"create\"\n onClick={() => openModal(createNewDrawerSlug)}\n >\n {i18n.t('general:createNewLabel', {\n label: getTranslation(labels?.singular, i18n),\n })}\n </Button>\n ) : (\n <Button el=\"link\" key=\"create\" to={newDocumentURL}>\n {i18n.t('general:createNewLabel', {\n label: getTranslation(labels?.singular, i18n),\n })}\n </Button>\n ),\n ]\n : []\n }\n description={\n viewType === 'trash'\n ? i18n.t('general:noTrashResults', {\n label: getTranslation(labels?.plural, i18n),\n })\n : i18n.t('general:noResultsDescription')\n }\n title={viewType !== 'trash' ? i18n.t('general:noResultsFound') : undefined}\n withMargin\n />\n ))}\n {AfterListTable}\n {AfterList}\n {docs?.length > 0 && !isGroupingBy && (\n <PageControls\n AfterPageControls={\n smallBreak ? (\n <div className={`${baseClass}__list-selection`}>\n <ListSelection\n collectionConfig={collectionConfig}\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n label={collectionLabel}\n showSelectAllAcrossPages={!isGroupingBy}\n />\n <div className={`${baseClass}__list-selection-actions`}>\n {enableRowSelections && typeof onBulkSelect === 'function'\n ? beforeActions\n ? [\n ...beforeActions,\n <SelectMany key=\"select-many\" onClick={onBulkSelect} />,\n ]\n : [<SelectMany key=\"select-many\" onClick={onBulkSelect} />]\n : beforeActions}\n </div>\n </div>\n ) : null\n }\n collectionConfig={collectionConfig}\n />\n )}\n </SelectionProvider>\n </div>\n </TableColumnsProvider>\n {docs?.length > 0 && isGroupingBy && data.totalPages > 1 && (\n <PageControls collectionConfig={collectionConfig} />\n )}\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.client.js","names":["getTranslation","formatAdminURL","formatFilesize","React","Fragment","useEffect","useRef","useState","Button","ListControls","useListDrawerContext","ListWhereBuilder","useModal","NoListResults","PageControls","RenderCustomComponent","SelectMany","useStepNav","RelationshipProvider","ViewDescription","useControllableState","useConfig","DocumentSelectionProvider","useListQuery","SelectionProvider","TableColumnsProvider","useTranslation","useWindowInfo","ListSelection","DocumentListSelection","HierarchyTable","CollectionListHeader","baseClass","DefaultListView","props","AfterList","AfterListTable","beforeActions","BeforeList","BeforeListTable","collectionSlug","columnState","Description","disableBulkDelete","disableBulkEdit","disableQueryPresets","enableRowSelections","hasCreatePermission","hasCreatePermissionFromProps","hasDeletePermission","hasTrashPermission","hierarchyData","listMenuItems","newDocumentURL","NoResults","queryPreset","queryPresetPermissions","renderedFilters","resolvedFilterOptions","Table","InitialTable","viewType","allowCreate","createNewDrawerSlug","isInDrawer","onBulkSelect","undefined","config","routes","admin","adminRoute","serverURL","getEntityConfig","data","hasActiveFilters","isGroupingBy","query","hasWhereParam","Boolean","where","isWhereOpen","setIsWhereOpen","current","openModal","collectionConfig","labels","upload","isUploadCollection","isBulkUploadEnabled","bulkUpload","isTrashEnabled","trash","i18n","collectionLabel","plural","setStepNav","breakpoints","s","smallBreak","docs","useMemo","map","doc","filesize","baseLabel","label","url","path","trashLabel","t","navItems","breadcrumbs","queryParam","parentFieldName","hierarchyBreadcrumbs","crumb","index","isLast","length","title","id","_jsxs","_jsx","className","totalDocs","description","CustomComponent","Fallback","hideFileInputOnCreate","onClick","enableQueryPresets","onWhereToggle","prev","collectionPluralLabel","fields","onEmptyRemove","collectionData","childrenData","Object","fromEntries","entries","relatedDocumentsByCollection","slug","related","result","hierarchyLabel","parentId","relatedGroups","fieldName","hasMany","useAsTitle","Actions","el","singular","to","withMargin","AfterPageControls","showSelectAllAcrossPages","totalPages"],"sources":["../../../src/views/List/index.client.tsx"],"sourcesContent":["'use client'\n\nimport type { ListViewClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL, formatFilesize } from 'payload/shared'\nimport React, { Fragment, useEffect, useRef, useState } from 'react'\n\nimport { Button } from '../../elements/Button/index.js'\nimport { ListControls } from '../../elements/ListControls/index.js'\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { ListWhereBuilder } from '../../elements/ListWhereBuilder/index.js'\nimport { useModal } from '../../elements/Modal/index.js'\nimport { NoListResults } from '../../elements/NoListResults/index.js'\nimport { PageControls } from '../../elements/PageControls/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { SelectMany } from '../../elements/SelectMany/index.js'\nimport { useStepNav } from '../../elements/StepNav/index.js'\nimport { RelationshipProvider } from '../../elements/Table/RelationshipProvider/index.js'\nimport { ViewDescription } from '../../elements/ViewDescription/index.js'\nimport { useControllableState } from '../../hooks/useControllableState.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { DocumentSelectionProvider } from '../../providers/DocumentSelection/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { SelectionProvider } from '../../providers/Selection/index.js'\nimport { TableColumnsProvider } from '../../providers/TableColumns/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useWindowInfo } from '../../providers/WindowInfo/index.js'\nimport { ListSelection } from '../../views/List/ListSelection/index.js'\nimport { DocumentListSelection } from '../HierarchyList/DocumentListSelection/index.js'\nimport { HierarchyTable } from '../HierarchyList/HierarchyTable/index.js'\nimport { CollectionListHeader } from './ListHeader/index.js'\nimport './index.css'\n\nconst baseClass = 'collection-list'\n\nexport function DefaultListView(props: ListViewClientProps) {\n const {\n AfterList,\n AfterListTable,\n beforeActions,\n BeforeList,\n BeforeListTable,\n collectionSlug,\n columnState,\n Description,\n disableBulkDelete,\n disableBulkEdit,\n disableQueryPresets,\n enableRowSelections,\n hasCreatePermission: hasCreatePermissionFromProps,\n hasDeletePermission,\n hasTrashPermission,\n hierarchyData,\n listMenuItems,\n newDocumentURL,\n NoResults,\n queryPreset,\n queryPresetPermissions,\n renderedFilters,\n resolvedFilterOptions,\n Table: InitialTable,\n viewType,\n } = props\n\n const [Table] = useControllableState(InitialTable)\n\n const { allowCreate, createNewDrawerSlug, isInDrawer, onBulkSelect } = useListDrawerContext()\n\n const hasCreatePermission =\n allowCreate !== undefined\n ? allowCreate && hasCreatePermissionFromProps\n : hasCreatePermissionFromProps\n\n const {\n config: {\n routes: { admin: adminRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const { data, hasActiveFilters, isGroupingBy, query } = useListQuery()\n\n const hasWhereParam = useRef(Boolean(query?.where))\n const [isWhereOpen, setIsWhereOpen] = useState(hasActiveFilters)\n\n useEffect(() => {\n if (hasWhereParam.current && !query?.where) {\n hasWhereParam.current = false\n setIsWhereOpen(false)\n } else if (query?.where) {\n hasWhereParam.current = true\n }\n }, [query?.where])\n\n const { openModal } = useModal()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const { labels, upload } = collectionConfig\n\n const isUploadCollection = Boolean(upload)\n\n const isBulkUploadEnabled = isUploadCollection && collectionConfig.upload.bulkUpload\n\n const isTrashEnabled = Boolean(collectionConfig.trash)\n\n const { i18n } = useTranslation()\n\n const collectionLabel = getTranslation(labels?.plural, i18n)\n\n const { setStepNav } = useStepNav()\n\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const docs = React.useMemo(() => {\n if (isUploadCollection) {\n return data.docs.map((doc) => {\n return {\n ...doc,\n filesize: formatFilesize(doc.filesize),\n }\n })\n } else {\n return data?.docs\n }\n }, [data?.docs, isUploadCollection])\n\n useEffect(() => {\n if (!isInDrawer) {\n const baseLabel = {\n label: collectionLabel,\n url:\n hierarchyData || (isTrashEnabled && viewType === 'trash')\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}`,\n })\n : undefined,\n }\n\n const trashLabel = {\n label: i18n.t('general:trash'),\n }\n\n let navItems = isTrashEnabled && viewType === 'trash' ? [baseLabel, trashLabel] : [baseLabel]\n\n // Add hierarchy breadcrumbs\n if (hierarchyData?.breadcrumbs) {\n const queryParam = hierarchyData.parentFieldName || 'parent'\n const hierarchyBreadcrumbs = hierarchyData.breadcrumbs.map((crumb, index) => {\n const isLast = index === hierarchyData.breadcrumbs.length - 1\n return {\n label: crumb.title,\n url: isLast\n ? undefined\n : formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}?${queryParam}=${crumb.id}`,\n }),\n }\n })\n navItems = [...navItems, ...hierarchyBreadcrumbs]\n }\n\n setStepNav(navItems)\n }\n }, [\n adminRoute,\n setStepNav,\n serverURL,\n labels,\n isInDrawer,\n isTrashEnabled,\n viewType,\n i18n,\n collectionSlug,\n hierarchyData,\n collectionLabel,\n ])\n\n return (\n <Fragment>\n <TableColumnsProvider collectionSlug={collectionSlug} columnState={columnState}>\n <div className={`${baseClass} ${baseClass}--${collectionSlug}`}>\n <SelectionProvider docs={docs} totalDocs={data?.totalDocs}>\n {BeforeList}\n <CollectionListHeader\n collectionConfig={collectionConfig}\n Description={\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 ) : undefined\n }\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n hasCreatePermission={hasCreatePermission}\n hasDeletePermission={hasDeletePermission}\n hasTrashPermission={hasTrashPermission}\n i18n={i18n}\n isBulkUploadEnabled={isBulkUploadEnabled && !upload.hideFileInputOnCreate}\n isTrashEnabled={isTrashEnabled}\n newDocumentURL={newDocumentURL}\n smallBreak={smallBreak}\n viewType={viewType}\n />\n <ListControls\n beforeActions={\n enableRowSelections && typeof onBulkSelect === 'function'\n ? beforeActions\n ? [...beforeActions, <SelectMany key=\"select-many\" onClick={onBulkSelect} />]\n : [<SelectMany key=\"select-many\" onClick={onBulkSelect} />]\n : beforeActions\n }\n collectionConfig={collectionConfig}\n collectionSlug={collectionSlug}\n disableQueryPresets={\n collectionConfig?.enableQueryPresets !== true || disableQueryPresets\n }\n hasCreatePermission={hasCreatePermission && viewType !== 'trash' && !isInDrawer}\n isWhereOpen={isWhereOpen}\n listMenuItems={listMenuItems}\n newDocumentURL={newDocumentURL}\n onWhereToggle={() => setIsWhereOpen((prev) => !prev)}\n queryPreset={queryPreset}\n queryPresetPermissions={queryPresetPermissions}\n renderedFilters={renderedFilters}\n resolvedFilterOptions={resolvedFilterOptions}\n />\n {isWhereOpen && (\n <ListWhereBuilder\n collectionPluralLabel={collectionConfig?.labels?.plural}\n collectionSlug={collectionSlug}\n fields={collectionConfig?.fields}\n onEmptyRemove={() => setIsWhereOpen(false)}\n renderedFilters={renderedFilters}\n resolvedFilterOptions={resolvedFilterOptions}\n />\n )}\n {BeforeListTable}\n {hierarchyData ? (\n <DocumentSelectionProvider\n collectionData={{\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 <HierarchyTable\n childrenData={hierarchyData.childrenData}\n collectionSlug={collectionSlug}\n hierarchyLabel={collectionLabel}\n key={hierarchyData.parentId}\n parentId={hierarchyData.parentId}\n relatedGroups={Object.entries(hierarchyData.relatedDocumentsByCollection).map(\n ([slug, related]) => ({\n collectionSlug: slug,\n data: related.result,\n fieldName: related.fieldName,\n hasMany: related.hasMany,\n label: related.label,\n }),\n )}\n useAsTitle={collectionConfig?.admin?.useAsTitle || 'id'}\n />\n <DocumentListSelection\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n />\n </DocumentSelectionProvider>\n ) : docs?.length > 0 ? (\n <RelationshipProvider>{Table}</RelationshipProvider>\n ) : null}\n {/* HierarchyTable handles its own empty state, skip for hierarchy views */}\n {docs?.length === 0 &&\n (NoResults ?? (\n <NoListResults\n Actions={\n hasCreatePermission && newDocumentURL && viewType !== 'trash'\n ? [\n isInDrawer ? (\n <Button\n el=\"button\"\n key=\"create\"\n onClick={() => openModal(createNewDrawerSlug)}\n >\n {i18n.t('general:createNewLabel', {\n label: getTranslation(labels?.singular, i18n),\n })}\n </Button>\n ) : (\n <Button el=\"link\" key=\"create\" to={newDocumentURL}>\n {i18n.t('general:createNewLabel', {\n label: getTranslation(labels?.singular, i18n),\n })}\n </Button>\n ),\n ]\n : []\n }\n description={\n viewType === 'trash'\n ? i18n.t('general:noTrashResults', {\n label: getTranslation(labels?.plural, i18n),\n })\n : i18n.t('general:noResultsDescription')\n }\n title={viewType !== 'trash' ? i18n.t('general:noResultsFound') : undefined}\n withMargin\n />\n ))}\n {AfterListTable}\n {AfterList}\n {docs?.length > 0 && !isGroupingBy && (\n <PageControls\n AfterPageControls={\n smallBreak ? (\n <div className={`${baseClass}__list-selection`}>\n <ListSelection\n collectionConfig={collectionConfig}\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n label={collectionLabel}\n showSelectAllAcrossPages={!isGroupingBy}\n />\n <div className={`${baseClass}__list-selection-actions`}>\n {enableRowSelections && typeof onBulkSelect === 'function'\n ? beforeActions\n ? [\n ...beforeActions,\n <SelectMany key=\"select-many\" onClick={onBulkSelect} />,\n ]\n : [<SelectMany key=\"select-many\" onClick={onBulkSelect} />]\n : beforeActions}\n </div>\n </div>\n ) : null\n }\n collectionConfig={collectionConfig}\n />\n )}\n </SelectionProvider>\n </div>\n </TableColumnsProvider>\n {docs?.length > 0 && isGroupingBy && data.totalPages > 1 && (\n <PageControls collectionConfig={collectionConfig} />\n )}\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}