@payloadcms/ui 4.0.0-internal.f15737c → 4.0.0-internal.f2a04f7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/preflight.css +21 -2
- package/dist/elements/AppHeader/index.css +1 -1
- package/dist/elements/AppHeader/index.d.ts.map +1 -1
- package/dist/elements/AppHeader/index.js +5 -1
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +10 -3
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/Button/index.css +24 -0
- package/dist/elements/Button/types.d.ts +1 -1
- package/dist/elements/Button/types.d.ts.map +1 -1
- package/dist/elements/Button/types.js.map +1 -1
- package/dist/elements/CloseModalOnRouteChange/index.d.ts.map +1 -1
- package/dist/elements/CloseModalOnRouteChange/index.js +27 -19
- package/dist/elements/CloseModalOnRouteChange/index.js.map +1 -1
- package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
- package/dist/elements/CodeEditor/CodeEditor.js +5 -0
- package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
- package/dist/elements/DatePicker/DatePicker.js +6 -2
- package/dist/elements/DatePicker/DatePicker.js.map +1 -1
- package/dist/elements/DatePicker/index.css +35 -25
- package/dist/elements/DocumentControls/index.css +13 -10
- package/dist/elements/DocumentControls/index.d.ts +4 -2
- package/dist/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/DocumentDrawer/types.d.ts +1 -5
- package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/types.js.map +1 -1
- package/dist/elements/DocumentFields/index.css +7 -7
- package/dist/elements/DocumentFields/index.d.ts.map +1 -1
- package/dist/elements/DocumentFields/index.js +1 -2
- package/dist/elements/DocumentFields/index.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
- package/dist/elements/Drawer/types.d.ts +2 -2
- package/dist/elements/Drawer/types.d.ts.map +1 -1
- package/dist/elements/Drawer/types.js.map +1 -1
- package/dist/elements/EditUpload/library.css +6 -13
- package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
- package/dist/elements/FileManager/index.d.ts.map +1 -1
- package/dist/elements/FileManager/index.js +6 -1
- package/dist/elements/FileManager/index.js.map +1 -1
- package/dist/elements/Hierarchy/ActionsMenu/index.css +18 -0
- package/dist/elements/Hierarchy/ActionsMenu/index.d.ts +35 -0
- package/dist/elements/Hierarchy/ActionsMenu/index.d.ts.map +1 -0
- package/dist/elements/Hierarchy/ActionsMenu/index.js +99 -0
- package/dist/elements/Hierarchy/ActionsMenu/index.js.map +1 -0
- package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js +18 -16
- package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts +2 -0
- package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/types.js.map +1 -1
- package/dist/elements/Hierarchy/DocHeaderButton/index.css +12 -0
- package/dist/elements/Hierarchy/DocHeaderButton/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/DocHeaderButton/index.js +61 -14
- package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -1
- package/dist/elements/Hierarchy/Modal/Footer/index.css +33 -0
- package/dist/elements/Hierarchy/Modal/Footer/index.d.ts +21 -0
- package/dist/elements/Hierarchy/Modal/Footer/index.d.ts.map +1 -0
- package/dist/elements/Hierarchy/Modal/Footer/index.js +122 -0
- package/dist/elements/Hierarchy/Modal/Footer/index.js.map +1 -0
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts +8 -3
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js +38 -12
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js.map +1 -1
- package/dist/elements/Hierarchy/Modal/index.css +0 -56
- package/dist/elements/Hierarchy/Modal/index.d.ts +5 -3
- package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Modal/index.js +64 -65
- package/dist/elements/Hierarchy/Modal/index.js.map +1 -1
- package/dist/elements/Hierarchy/Modal/types.d.ts +2 -0
- package/dist/elements/Hierarchy/Modal/types.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Modal/types.js.map +1 -1
- package/dist/elements/Hierarchy/MoveMany/index.d.ts +1 -3
- package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/MoveMany/index.js +62 -84
- package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
- package/dist/elements/ListControls/types.d.ts +0 -10
- package/dist/elements/ListControls/types.d.ts.map +1 -1
- package/dist/elements/ListControls/types.js.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.js +1 -2
- package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/ListDrawer/Provider.d.ts +0 -6
- package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
- package/dist/elements/ListDrawer/Provider.js.map +1 -1
- package/dist/elements/ListDrawer/index.d.ts.map +1 -1
- package/dist/elements/ListDrawer/index.js +1 -1
- package/dist/elements/ListDrawer/index.js.map +1 -1
- package/dist/elements/ListDrawer/types.d.ts +1 -0
- package/dist/elements/ListDrawer/types.d.ts.map +1 -1
- package/dist/elements/ListDrawer/types.js.map +1 -1
- package/dist/elements/ListHeader/DrawerRelationshipSelect/index.d.ts.map +1 -1
- package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js +24 -20
- package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js.map +1 -1
- package/dist/elements/LivePreview/Window/index.css +7 -1
- package/dist/elements/Nav/NavWrapper/index.d.ts.map +1 -1
- package/dist/elements/Nav/NavWrapper/index.js +19 -14
- package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
- package/dist/elements/PublishButton/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/index.js +71 -8
- package/dist/elements/PublishButton/index.js.map +1 -1
- package/dist/elements/PublishButton/validateAllLocales.d.ts +11 -0
- package/dist/elements/PublishButton/validateAllLocales.d.ts.map +1 -0
- package/dist/elements/PublishButton/validateAllLocales.js +263 -0
- package/dist/elements/PublishButton/validateAllLocales.js.map +1 -0
- package/dist/elements/RelationshipTable/AddNewButton.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/AddNewButton.js +3 -0
- package/dist/elements/RelationshipTable/AddNewButton.js.map +1 -1
- package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
- package/dist/elements/SaveDraftButton/index.js +15 -2
- package/dist/elements/SaveDraftButton/index.js.map +1 -1
- package/dist/elements/SchedulePublishButton/index.js.map +1 -1
- package/dist/elements/SegmentedControl/index.css +50 -7
- package/dist/elements/Table/DefaultCell/fields/File/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.css +0 -9
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +63 -40
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js +6 -1
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/elements/Tabs/index.css +4 -3
- package/dist/elements/Upload/getEditorFileSrc.d.ts +11 -0
- package/dist/elements/Upload/getEditorFileSrc.d.ts.map +1 -0
- package/dist/elements/Upload/getEditorFileSrc.js +6 -0
- package/dist/elements/Upload/getEditorFileSrc.js.map +1 -0
- package/dist/elements/Upload/index.d.ts.map +1 -1
- package/dist/elements/Upload/index.js +6 -1
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/exports/client/{CodeEditor-UKD3EPUY.js → CodeEditor-I6PL55BF.js} +2 -2
- package/dist/exports/client/{DatePicker-POZJVQP4.js → DatePicker-XAKGIULG.js} +2 -2
- package/dist/exports/client/{chunk-2AY67NFV.js → chunk-36JJSMEB.js} +2 -2
- package/dist/exports/client/chunk-36JJSMEB.js.map +7 -0
- package/dist/exports/client/chunk-R7M6BG75.js +27 -0
- package/dist/exports/client/chunk-R7M6BG75.js.map +7 -0
- package/dist/exports/client/index.d.ts +3 -0
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +27 -27
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/shared/index.js +2 -2
- package/dist/exports/shared/index.js.map +3 -3
- package/dist/fields/Group/index.css +3 -5
- package/dist/fields/Tabs/index.css +14 -14
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +3 -1
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
- package/dist/forms/Form/fieldReducer.js +6 -9
- package/dist/forms/Form/fieldReducer.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +0 -1
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/types.d.ts +0 -5
- package/dist/forms/Form/types.d.ts.map +1 -1
- package/dist/forms/Form/types.js.map +1 -1
- package/dist/forms/RenderFields/index.css +2 -2
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts +2 -2
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/index.d.ts +2 -2
- package/dist/forms/fieldSchemasToFormState/index.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/index.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts +2 -2
- package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/iterateFields.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/types.d.ts +2 -2
- package/dist/forms/fieldSchemasToFormState/types.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/types.js.map +1 -1
- package/dist/forms/useField/types.d.ts +0 -4
- package/dist/forms/useField/types.d.ts.map +1 -1
- package/dist/forms/useField/types.js.map +1 -1
- package/dist/icons/Arrow/index.d.ts +1 -1
- package/dist/icons/Arrow/index.d.ts.map +1 -1
- package/dist/icons/Arrow/index.js +7 -1
- package/dist/icons/Arrow/index.js.map +1 -1
- package/dist/icons/Clock/index.d.ts +6 -0
- package/dist/icons/Clock/index.d.ts.map +1 -0
- package/dist/icons/Clock/index.js +18 -0
- package/dist/icons/Clock/index.js.map +1 -0
- package/dist/icons/Pin/index.d.ts +7 -0
- package/dist/icons/Pin/index.d.ts.map +1 -0
- package/dist/icons/Pin/index.js +23 -0
- package/dist/icons/Pin/index.js.map +1 -0
- package/dist/icons/Sidebar/index.d.ts.map +1 -1
- package/dist/icons/Sidebar/index.js +2 -0
- package/dist/icons/Sidebar/index.js.map +1 -1
- package/dist/icons/Table/index.css +5 -1
- package/dist/layouts/Root/getRootLayoutData.d.ts +2 -2
- package/dist/layouts/Root/getRootLayoutData.d.ts.map +1 -1
- package/dist/layouts/Root/getRootLayoutData.js +8 -4
- package/dist/layouts/Root/getRootLayoutData.js.map +1 -1
- package/dist/layouts/Root/index.d.ts +1 -1
- package/dist/layouts/Root/index.d.ts.map +1 -1
- package/dist/layouts/Root/index.js +5 -20
- package/dist/layouts/Root/index.js.map +1 -1
- package/dist/providers/ListQuery/types.d.ts +0 -4
- package/dist/providers/ListQuery/types.d.ts.map +1 -1
- package/dist/providers/ListQuery/types.js.map +1 -1
- package/dist/providers/RouteCache/index.d.ts.map +1 -1
- package/dist/providers/RouteCache/index.js +37 -25
- package/dist/providers/RouteCache/index.js.map +1 -1
- package/dist/providers/TableColumns/RenderDefaultCell/index.d.ts.map +1 -1
- package/dist/providers/TableColumns/RenderDefaultCell/index.js +1 -2
- package/dist/providers/TableColumns/RenderDefaultCell/index.js.map +1 -1
- package/dist/providers/TableColumns/types.d.ts +1 -34
- package/dist/providers/TableColumns/types.d.ts.map +1 -1
- package/dist/providers/TableColumns/types.js.map +1 -1
- package/dist/styles.css +22 -3
- package/dist/templates/Default/index.css +0 -1
- package/dist/utilities/appendCacheTag.d.ts +1 -0
- package/dist/utilities/appendCacheTag.d.ts.map +1 -1
- package/dist/utilities/appendCacheTag.js +2 -1
- package/dist/utilities/appendCacheTag.js.map +1 -1
- package/dist/utilities/buildClientFieldSchemaMap/traverseFields.d.ts.map +1 -1
- package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js +32 -6
- package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js.map +1 -1
- package/dist/utilities/getDisplayedFieldValue.d.ts +8 -2
- package/dist/utilities/getDisplayedFieldValue.d.ts.map +1 -1
- package/dist/utilities/getDisplayedFieldValue.js +11 -1
- package/dist/utilities/getDisplayedFieldValue.js.map +1 -1
- package/dist/utilities/getDocumentThumbnail.d.ts +6 -0
- package/dist/utilities/getDocumentThumbnail.d.ts.map +1 -0
- package/dist/utilities/getDocumentThumbnail.js +27 -0
- package/dist/utilities/getDocumentThumbnail.js.map +1 -0
- package/dist/utilities/getDocumentThumbnailPopulate.d.ts +7 -0
- package/dist/utilities/getDocumentThumbnailPopulate.d.ts.map +1 -0
- package/dist/utilities/getDocumentThumbnailPopulate.js +23 -0
- package/dist/utilities/getDocumentThumbnailPopulate.js.map +1 -0
- package/dist/utilities/getDocumentThumbnailSelect.d.ts +7 -0
- package/dist/utilities/getDocumentThumbnailSelect.d.ts.map +1 -0
- package/dist/utilities/getDocumentThumbnailSelect.js +24 -0
- package/dist/utilities/getDocumentThumbnailSelect.js.map +1 -0
- package/dist/utilities/getHasScheduledPublish.js.map +1 -1
- package/dist/utilities/handleLivePreview.js.map +1 -1
- package/dist/utilities/hasSavePermission.js.map +1 -1
- package/dist/utilities/schedulePublishHandler.js.map +1 -1
- package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
- package/dist/utilities/serverFunctionRegistry.js +2 -0
- package/dist/utilities/serverFunctionRegistry.js.map +1 -1
- package/dist/utilities/traverseForLocalizedFields.d.ts +7 -2
- package/dist/utilities/traverseForLocalizedFields.d.ts.map +1 -1
- package/dist/utilities/traverseForLocalizedFields.js +22 -8
- package/dist/utilities/traverseForLocalizedFields.js.map +1 -1
- package/dist/views/CreateFirstUser/index.d.ts.map +1 -1
- package/dist/views/CreateFirstUser/index.js +4 -2
- package/dist/views/CreateFirstUser/index.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +30 -21
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.d.ts +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js +16 -4
- package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js.map +1 -1
- package/dist/views/Edit/index.css +26 -0
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +1 -1
- package/dist/views/Edit/index.js.map +1 -1
- package/dist/views/HierarchyList/DocumentListSelection/index.d.ts.map +1 -1
- package/dist/views/HierarchyList/DocumentListSelection/index.js +0 -1
- package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
- package/dist/views/List/DocumentGrid/index.d.ts.map +1 -1
- package/dist/views/List/DocumentGrid/index.js +2 -37
- package/dist/views/List/DocumentGrid/index.js.map +1 -1
- package/dist/views/List/enrichDocsWithVersionStatus.d.ts.map +1 -1
- package/dist/views/List/enrichDocsWithVersionStatus.js +3 -1
- package/dist/views/List/enrichDocsWithVersionStatus.js.map +1 -1
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +11 -24
- package/dist/views/List/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +2 -12
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +8 -8
- package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js.map +1 -1
- package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts.map +1 -1
- package/dist/widgets/RecentlyViewed/CollectionsField/index.js +31 -5
- package/dist/widgets/RecentlyViewed/CollectionsField/index.js.map +1 -1
- package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.css +41 -0
- package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.d.ts +19 -0
- package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.d.ts.map +1 -0
- package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.js +121 -0
- package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.js.map +1 -0
- package/dist/widgets/RecentlyViewed/getDocuments.d.ts +20 -0
- package/dist/widgets/RecentlyViewed/getDocuments.d.ts.map +1 -0
- package/dist/widgets/RecentlyViewed/getDocuments.js +254 -0
- package/dist/widgets/RecentlyViewed/getDocuments.js.map +1 -0
- package/dist/widgets/RecentlyViewed/index.client.d.ts +41 -0
- package/dist/widgets/RecentlyViewed/index.client.d.ts.map +1 -0
- package/dist/widgets/RecentlyViewed/index.client.js +409 -0
- package/dist/widgets/RecentlyViewed/index.client.js.map +1 -0
- package/dist/widgets/RecentlyViewed/index.css +352 -0
- package/dist/widgets/RecentlyViewed/index.d.ts +1 -1
- package/dist/widgets/RecentlyViewed/index.d.ts.map +1 -1
- package/dist/widgets/RecentlyViewed/index.js +33 -134
- package/dist/widgets/RecentlyViewed/index.js.map +1 -1
- package/dist/widgets/RecentlyViewed/pinnedPreferences.d.ts +18 -0
- package/dist/widgets/RecentlyViewed/pinnedPreferences.d.ts.map +1 -0
- package/dist/widgets/RecentlyViewed/pinnedPreferences.js +81 -0
- package/dist/widgets/RecentlyViewed/pinnedPreferences.js.map +1 -0
- package/dist/widgets/RecentlyViewed/recents.d.ts +8 -0
- package/dist/widgets/RecentlyViewed/recents.d.ts.map +1 -0
- package/dist/widgets/RecentlyViewed/recents.js +19 -0
- package/dist/widgets/RecentlyViewed/recents.js.map +1 -0
- package/package.json +16 -16
- package/dist/exports/client/chunk-2AY67NFV.js.map +0 -7
- package/dist/exports/client/chunk-6XCSN54Q.js +0 -27
- package/dist/exports/client/chunk-6XCSN54Q.js.map +0 -7
- /package/dist/exports/client/{CodeEditor-UKD3EPUY.js.map → CodeEditor-I6PL55BF.js.map} +0 -0
- /package/dist/exports/client/{DatePicker-POZJVQP4.js.map → DatePicker-XAKGIULG.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","React","useCallback","useId","PlusIcon","useTranslation","Button","LoadMoreRow","Spinner","ColumnItem","baseClass","Column","t0","$","ancestorsWithSelections","canCreate","collectionLabel","disabled","disabledIds","expandedId","filterByCollection","hasNextPage","isLoading","items","onCreateNew","onExpand","onLoadMore","onSelect","parentId","parentTitle","pathToColumn","selectedIds","totalDocs","t","titleID","createID","t1","headerTitle","t2","t3","id","item","find","i","fullPath","title","path","handleSelect","handleCreateNew","t4","item_0","_jsx","Boolean","has","hasSelectedDescendants","isExpanded","isSelected","String","_jsxs","className","children","buttonStyle","extraButtonProps","icon","size","margin","onClick","label","map","loadingText","currentCount","length","hasMore"],"sources":["../../../../../src/elements/Hierarchy/ColumnBrowser/Column/index.tsx"],"sourcesContent":["'use client'\nimport React, { useCallback, useId } from 'react'\n\nimport type { ColumnProps } from '../types.js'\n\nimport { PlusIcon } from '../../../../icons/Plus/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { Button } from '../../../Button/index.js'\nimport { LoadMoreRow } from '../../../LoadMoreRow/index.js'\nimport { Spinner } from '../../../Spinner/index.js'\nimport { ColumnItem } from '../ColumnItem/index.js'\nimport './index.css'\n\nconst baseClass = 'hierarchy-column'\n\nexport const Column: React.FC<ColumnProps> = ({\n ancestorsWithSelections,\n canCreate,\n collectionLabel,\n disabled,\n disabledIds,\n expandedId,\n filterByCollection,\n hasNextPage,\n isLoading,\n items,\n onCreateNew,\n onExpand,\n onLoadMore,\n onSelect,\n parentId,\n parentTitle,\n pathToColumn,\n selectedIds,\n totalDocs,\n}) => {\n const { t } = useTranslation()\n const titleID = useId()\n const createID = useId()\n\n const headerTitle = parentTitle || (parentId === null ? t('general:all') : '')\n\n const handleSelect = useCallback(\n ({ id }: { id: number | string }) => {\n const item = items.find((i) => i.id === id)\n const fullPath = item ? [...pathToColumn, { id: item.id, title: item.title }] : pathToColumn\n onSelect({ id, path: fullPath })\n },\n [items, onSelect, pathToColumn],\n )\n\n const handleCreateNew = useCallback(() => {\n onCreateNew({ parentId })\n }, [onCreateNew, parentId])\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__header`}>\n <h3 className={`${baseClass}__header-title`} id={titleID}>\n {headerTitle}\n </h3>\n {canCreate && (\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__add-button`}\n disabled={disabled}\n extraButtonProps={{ 'aria-labelledby': `${createID} ${titleID}` }}\n icon={<PlusIcon size={16} />}\n iconPosition=\"left\"\n margin={false}\n onClick={handleCreateNew}\n size=\"medium\"\n >\n <span id={createID}>{t('general:newLabel', { label: collectionLabel })}</span>\n </Button>\n )}\n </div>\n\n <div className={`${baseClass}__items`}>\n {items.map((item) => (\n <ColumnItem\n disabled={Boolean(disabled || disabledIds?.has(item.id))}\n filterByCollection={filterByCollection}\n hasSelectedDescendants={ancestorsWithSelections.has(item.id)}\n isExpanded={expandedId === item.id}\n isSelected={selectedIds.has(item.id)}\n item={item}\n key={String(item.id)}\n onExpand={onExpand}\n onSelect={handleSelect}\n />\n ))}\n\n {isLoading && (\n <div className={`${baseClass}__loading`}>\n <Spinner loadingText={null} size=\"sm\" />\n </div>\n )}\n\n {!disabled && !isLoading && totalDocs > 0 && (\n <LoadMoreRow\n className={`${baseClass}__load-more`}\n currentCount={items.length}\n hasMore={hasNextPage}\n onLoadMore={onLoadMore}\n totalDocs={totalDocs}\n />\n )}\n </div>\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,IAASC,WAAW,EAAEC,KAAK,QAAQ;AAI1C,SAASC,QAAQ,QAAQ;AACzB,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,WAAW,QAAQ;AAC5B,SAASC,OAAO,QAAQ;AACxB,SAASC,UAAU,QAAQ;AAC3B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,MAAA,GAAgCC,EAAA;EAAA,MAAAC,CAAA,GAAAb,EAAA;EAAC;IAAAc,uBAAA;IAAAC,SAAA;IAAAC,eAAA;IAAAC,QAAA;IAAAC,WAAA;IAAAC,UAAA;IAAAC,kBAAA;IAAAC,WAAA;IAAAC,SAAA;IAAAC,KAAA;IAAAC,WAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,QAAA;IAAAC,QAAA;IAAAC,WAAA;IAAAC,YAAA;IAAAC,WAAA;IAAAC;EAAA,IAAApB,EAoB7C;EACC;IAAAqB;EAAA,IAAc5B,cAAA;EACd,MAAA6B,OAAA,GAAgB/B,KAAA;EAChB,MAAAgC,QAAA,GAAiBhC,KAAA;EAAA,IAAAiC,EAAA;EAAA,IAAAvB,CAAA,QAAAC,uBAAA,IAAAD,CAAA,QAAAE,SAAA,IAAAF,CAAA,QAAAG,eAAA,IAAAH,CAAA,QAAAsB,QAAA,IAAAtB,CAAA,QAAAI,QAAA,IAAAJ,CAAA,QAAAK,WAAA,IAAAL,CAAA,QAAAM,UAAA,IAAAN,CAAA,QAAAO,kBAAA,IAAAP,CAAA,QAAAQ,WAAA,IAAAR,CAAA,QAAAS,SAAA,IAAAT,CAAA,SAAAU,KAAA,IAAAV,CAAA,SAAAW,WAAA,IAAAX,CAAA,SAAAY,QAAA,IAAAZ,CAAA,SAAAa,UAAA,IAAAb,CAAA,SAAAc,QAAA,IAAAd,CAAA,SAAAe,QAAA,IAAAf,CAAA,SAAAgB,WAAA,IAAAhB,CAAA,SAAAiB,YAAA,IAAAjB,CAAA,SAAAkB,WAAA,IAAAlB,CAAA,SAAAoB,CAAA,IAAApB,CAAA,SAAAqB,OAAA,IAAArB,CAAA,SAAAmB,SAAA;IAEjB,MAAAK,WAAA,GAAoBR,WAAA,KAAgBD,QAAA,SAAa,GAAOK,CAAA,CAAE,iBAAiB,EAAC;IAAA,IAAAK,EAAA;IAAA,IAAAzB,CAAA,SAAAU,KAAA,IAAAV,CAAA,SAAAc,QAAA,IAAAd,CAAA,SAAAiB,YAAA;MAG1EQ,EAAA,GAAAC,EAAA;QAAC;UAAAC;QAAA,IAAAD,EAA+B;QAC9B,MAAAE,IAAA,GAAalB,KAAA,CAAAmB,IAAA,CAAAC,CAAA,IAAkBA,CAAA,CAAAH,EAAA,KAASA,EAAA;QACxC,MAAAI,QAAA,GAAiBH,IAAA,OAAWX,YAAA;UAAAU,EAAA,EAAoBC,IAAA,CAAAD,EAAA;UAAAK,KAAA,EAAgBJ,IAAA,CAAAI;QAAA,KAAgBf,YAAA;QAChFH,QAAA;UAAAa,EAAA;UAAAM,IAAA,EAAqBF;QAAA,CAAS;MAAA;MAChC/B,CAAA,OAAAU,KAAA;MAAAV,CAAA,OAAAc,QAAA;MAAAd,CAAA,OAAAiB,YAAA;MAAAjB,CAAA,OAAAyB,EAAA;IAAA;MAAAA,EAAA,GAAAzB,CAAA;IAAA;IALF,MAAAkC,YAAA,GAAqBT,EAMY;IAAA,IAAAC,EAAA;IAAA,IAAA1B,CAAA,SAAAW,WAAA,IAAAX,CAAA,SAAAe,QAAA;
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","React","useCallback","useId","PlusIcon","useTranslation","Button","LoadMoreRow","Spinner","ColumnItem","baseClass","Column","t0","$","ancestorsWithSelections","canCreate","collectionLabel","disabled","disabledIds","expandedId","filterByCollection","hasNextPage","isLoading","items","onCreateNew","onExpand","onLoadMore","onSelect","parentId","parentTitle","pathToColumn","selectedIds","totalDocs","t","titleID","createID","t1","headerTitle","t2","t3","id","item","find","i","fullPath","title","path","handleSelect","handleCreateNew","t4","item_0","_jsx","Boolean","has","hasSelectedDescendants","isExpanded","isSelected","String","_jsxs","className","children","buttonStyle","extraButtonProps","icon","size","margin","onClick","label","map","loadingText","currentCount","length","hasMore"],"sources":["../../../../../src/elements/Hierarchy/ColumnBrowser/Column/index.tsx"],"sourcesContent":["'use client'\nimport React, { useCallback, useId } from 'react'\n\nimport type { ColumnProps } from '../types.js'\n\nimport { PlusIcon } from '../../../../icons/Plus/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { Button } from '../../../Button/index.js'\nimport { LoadMoreRow } from '../../../LoadMoreRow/index.js'\nimport { Spinner } from '../../../Spinner/index.js'\nimport { ColumnItem } from '../ColumnItem/index.js'\nimport './index.css'\n\nconst baseClass = 'hierarchy-column'\n\nexport const Column: React.FC<ColumnProps> = ({\n ancestorsWithSelections,\n canCreate,\n collectionLabel,\n disabled,\n disabledIds,\n expandedId,\n filterByCollection,\n hasNextPage,\n isLoading,\n items,\n onCreateNew,\n onExpand,\n onLoadMore,\n onSelect,\n parentId,\n parentTitle,\n pathToColumn,\n selectedIds,\n totalDocs,\n}) => {\n const { t } = useTranslation()\n const titleID = useId()\n const createID = useId()\n\n const headerTitle = parentTitle || (parentId === null ? t('general:all') : '')\n\n const handleSelect = useCallback(\n ({ id }: { id: number | string }) => {\n const item = items.find((i) => i.id === id)\n const fullPath = item ? [...pathToColumn, { id: item.id, title: item.title }] : pathToColumn\n onSelect({ id, path: fullPath })\n },\n [items, onSelect, pathToColumn],\n )\n\n const handleCreateNew = useCallback(() => {\n onCreateNew({ parentId, path: pathToColumn })\n }, [onCreateNew, parentId, pathToColumn])\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__header`}>\n <h3 className={`${baseClass}__header-title`} id={titleID}>\n {headerTitle}\n </h3>\n {canCreate && (\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__add-button`}\n disabled={disabled}\n extraButtonProps={{ 'aria-labelledby': `${createID} ${titleID}` }}\n icon={<PlusIcon size={16} />}\n iconPosition=\"left\"\n margin={false}\n onClick={handleCreateNew}\n size=\"medium\"\n >\n <span id={createID}>{t('general:newLabel', { label: collectionLabel })}</span>\n </Button>\n )}\n </div>\n\n <div className={`${baseClass}__items`}>\n {items.map((item) => (\n <ColumnItem\n disabled={Boolean(disabled || disabledIds?.has(item.id))}\n filterByCollection={filterByCollection}\n hasSelectedDescendants={ancestorsWithSelections.has(item.id)}\n isExpanded={expandedId === item.id}\n isSelected={selectedIds.has(item.id)}\n item={item}\n key={String(item.id)}\n onExpand={onExpand}\n onSelect={handleSelect}\n />\n ))}\n\n {isLoading && (\n <div className={`${baseClass}__loading`}>\n <Spinner loadingText={null} size=\"sm\" />\n </div>\n )}\n\n {!disabled && !isLoading && totalDocs > 0 && (\n <LoadMoreRow\n className={`${baseClass}__load-more`}\n currentCount={items.length}\n hasMore={hasNextPage}\n onLoadMore={onLoadMore}\n totalDocs={totalDocs}\n />\n )}\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -43,6 +43,7 @@ export type ColumnProps = {
|
|
|
43
43
|
/** Called when user clicks "New" button - parent should open modal with parentId */
|
|
44
44
|
onCreateNew: (params: {
|
|
45
45
|
parentId: null | number | string;
|
|
46
|
+
path: PathSegment[];
|
|
46
47
|
}) => void;
|
|
47
48
|
onExpand: (params: {
|
|
48
49
|
id: number | string;
|
|
@@ -94,6 +95,7 @@ export type HierarchyColumnBrowserProps = {
|
|
|
94
95
|
/** Called when user clicks "New" button to create a new item */
|
|
95
96
|
onCreateNew?: (params: {
|
|
96
97
|
parentId: null | number | string;
|
|
98
|
+
path: PathSegment[];
|
|
97
99
|
}) => void;
|
|
98
100
|
onSelect: (params: {
|
|
99
101
|
id: number | string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/ColumnBrowser/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAGpC,MAAM,MAAM,cAAc,GAAG;IAC3B,+EAA+E;IAC/E,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,WAAW,EAAE,OAAO,CAAA;IACpB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2EAA2E;IAC3E,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,sBAAsB,EAAE,OAAO,CAAA;IAC/B,UAAU,EAAE,OAAO,CAAA;IACnB,UAAU,EAAE,OAAO,CAAA;IACnB,IAAI,EAAE,cAAc,CAAA;IACpB,QAAQ,EAAE,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACnD,QAAQ,EAAE,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;CACpD,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,uBAAuB,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IAC7C,4CAA4C;IAC5C,SAAS,EAAE,OAAO,CAAA;IAClB,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,6FAA6F;IAC7F,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IAClC,UAAU,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;IAClC,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,cAAc,EAAE,CAAA;IACvB,oFAAoF;IACpF,WAAW,EAAE,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/ColumnBrowser/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/elements/Hierarchy/ColumnBrowser/types.ts"],"sourcesContent":["import type { Where } from 'payload'\nimport type React from 'react'\n\nexport type ColumnItemData = {\n /** For folders with collectionSpecific config, the allowed collection slugs */\n allowedCollections?: string[]\n hasChildren: boolean\n id: number | string\n title: string\n}\n\nexport type PathSegment = {\n id: number | string\n title: string\n}\n\nexport type ColumnItemProps = {\n disabled?: boolean\n /** Required collections that the folder must allow (for superset check) */\n filterByCollection?: string[]\n hasSelectedDescendants: boolean\n isExpanded: boolean\n isSelected: boolean\n item: ColumnItemData\n onExpand: (params: { id: number | string }) => void\n onSelect: (params: { id: number | string }) => void\n}\n\nexport type ColumnProps = {\n ancestorsWithSelections: Set<number | string>\n /** Whether user can create new documents */\n canCreate: boolean\n /** Label for the collection (e.g., \"Folder\") */\n collectionLabel: string\n disabled?: boolean\n /** IDs that should be disabled (e.g., items being moved can't be selected as destination) */\n disabledIds?: Set<number | string>\n expandedId: null | number | string\n /** Required collections for superset check (passed to ColumnItem) */\n filterByCollection?: string[]\n hasNextPage: boolean\n isLoading: boolean\n items: ColumnItemData[]\n /** Called when user clicks \"New\" button - parent should open modal with parentId */\n onCreateNew: (params: { parentId: null | number | string }) => void\n onExpand: (params: { id: number | string }) => void\n onLoadMore: () => void\n onSelect: (params: { id: number | string; path: PathSegment[] }) => void\n parentId: null | number | string\n parentTitle?: string\n pathToColumn: PathSegment[]\n selectedIds: Set<number | string>\n totalDocs: number\n}\n\nexport type ColumnState = {\n hasNextPage: boolean\n isLoading: boolean\n items: ColumnItemData[]\n page: number\n parentId: null | number | string\n parentTitle?: string\n totalDocs: number\n}\n\nexport type HierarchyColumnBrowserRef = {\n /** Refetch a specific column by parentId */\n refreshColumn: (parentId: null | number | string) => Promise<void>\n}\n\nexport type HierarchyColumnBrowserProps = {\n ancestorsWithSelections: Set<number | string>\n /** Base filter constraint (e.g., tenant filter) to apply to all queries */\n baseFilter?: null | Where\n /** IDs that should be disabled (e.g., items being moved can't be selected as destination) */\n disabledIds?: Set<number | string>\n /**\n * Filters hierarchy items based on collection type restrictions:\n * - `undefined`: No filtering, show all folders\n * - `[]` (empty array): No filtering, show all folders (no constraints)\n * - `['posts', ...]`: Show folders accepting ANY of these collections OR unrestricted folders\n *\n * Note: Query uses ANY semantics due to PG hasMany enum limitations.\n * Client-side enforcement can disable selection of folders that don't allow ALL required collections.\n */\n filterByCollection?: string[]\n hierarchyCollectionSlug: string\n initialExpandedPath?: (number | string)[]\n /** Whether the initial expanded path is still being loaded */\n isLoadingPath?: boolean\n /** Called when user clicks \"New\" button to create a new item */\n onCreateNew?: (params: { parentId: null | number | string }) => void\n onSelect: (params: { id: number | string; path: PathSegment[] }) => void\n parentFieldName: string\n selectedIds: Set<number | string>\n useAsTitle?: string\n}\n"],"mappings":"AAsEA","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/elements/Hierarchy/ColumnBrowser/types.ts"],"sourcesContent":["import type { Where } from 'payload'\nimport type React from 'react'\n\nexport type ColumnItemData = {\n /** For folders with collectionSpecific config, the allowed collection slugs */\n allowedCollections?: string[]\n hasChildren: boolean\n id: number | string\n title: string\n}\n\nexport type PathSegment = {\n id: number | string\n title: string\n}\n\nexport type ColumnItemProps = {\n disabled?: boolean\n /** Required collections that the folder must allow (for superset check) */\n filterByCollection?: string[]\n hasSelectedDescendants: boolean\n isExpanded: boolean\n isSelected: boolean\n item: ColumnItemData\n onExpand: (params: { id: number | string }) => void\n onSelect: (params: { id: number | string }) => void\n}\n\nexport type ColumnProps = {\n ancestorsWithSelections: Set<number | string>\n /** Whether user can create new documents */\n canCreate: boolean\n /** Label for the collection (e.g., \"Folder\") */\n collectionLabel: string\n disabled?: boolean\n /** IDs that should be disabled (e.g., items being moved can't be selected as destination) */\n disabledIds?: Set<number | string>\n expandedId: null | number | string\n /** Required collections for superset check (passed to ColumnItem) */\n filterByCollection?: string[]\n hasNextPage: boolean\n isLoading: boolean\n items: ColumnItemData[]\n /** Called when user clicks \"New\" button - parent should open modal with parentId */\n onCreateNew: (params: { parentId: null | number | string; path: PathSegment[] }) => void\n onExpand: (params: { id: number | string }) => void\n onLoadMore: () => void\n onSelect: (params: { id: number | string; path: PathSegment[] }) => void\n parentId: null | number | string\n parentTitle?: string\n pathToColumn: PathSegment[]\n selectedIds: Set<number | string>\n totalDocs: number\n}\n\nexport type ColumnState = {\n hasNextPage: boolean\n isLoading: boolean\n items: ColumnItemData[]\n page: number\n parentId: null | number | string\n parentTitle?: string\n totalDocs: number\n}\n\nexport type HierarchyColumnBrowserRef = {\n /** Refetch a specific column by parentId */\n refreshColumn: (parentId: null | number | string) => Promise<void>\n}\n\nexport type HierarchyColumnBrowserProps = {\n ancestorsWithSelections: Set<number | string>\n /** Base filter constraint (e.g., tenant filter) to apply to all queries */\n baseFilter?: null | Where\n /** IDs that should be disabled (e.g., items being moved can't be selected as destination) */\n disabledIds?: Set<number | string>\n /**\n * Filters hierarchy items based on collection type restrictions:\n * - `undefined`: No filtering, show all folders\n * - `[]` (empty array): No filtering, show all folders (no constraints)\n * - `['posts', ...]`: Show folders accepting ANY of these collections OR unrestricted folders\n *\n * Note: Query uses ANY semantics due to PG hasMany enum limitations.\n * Client-side enforcement can disable selection of folders that don't allow ALL required collections.\n */\n filterByCollection?: string[]\n hierarchyCollectionSlug: string\n initialExpandedPath?: (number | string)[]\n /** Whether the initial expanded path is still being loaded */\n isLoadingPath?: boolean\n /** Called when user clicks \"New\" button to create a new item */\n onCreateNew?: (params: { parentId: null | number | string; path: PathSegment[] }) => void\n onSelect: (params: { id: number | string; path: PathSegment[] }) => void\n parentFieldName: string\n selectedIds: Set<number | string>\n useAsTitle?: string\n}\n"],"mappings":"AAsEA","ignoreList":[]}
|
|
@@ -6,10 +6,22 @@
|
|
|
6
6
|
.btn__content {
|
|
7
7
|
gap: 0;
|
|
8
8
|
}
|
|
9
|
+
|
|
10
|
+
.btn__label {
|
|
11
|
+
min-inline-size: 0;
|
|
12
|
+
}
|
|
9
13
|
}
|
|
10
14
|
|
|
11
15
|
.hierarchy-button--read-only {
|
|
12
16
|
cursor: default;
|
|
13
17
|
color: var(--color-text-disabled);
|
|
14
18
|
}
|
|
19
|
+
|
|
20
|
+
.hierarchy-button__truncate {
|
|
21
|
+
display: block;
|
|
22
|
+
max-inline-size: calc(var(--spacer-6) * 4);
|
|
23
|
+
overflow: hidden;
|
|
24
|
+
text-overflow: ellipsis;
|
|
25
|
+
white-space: nowrap;
|
|
26
|
+
}
|
|
15
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/DocHeaderButton/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/DocHeaderButton/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAgBxE,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAsOtE,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
4
|
+
import { getTranslation } from '@payloadcms/translations';
|
|
4
5
|
import { formatAdminURL } from 'payload/shared';
|
|
5
6
|
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
6
7
|
import { useForm, useFormFields } from '../../../forms/Form/context.js';
|
|
@@ -8,7 +9,9 @@ import { useConfig } from '../../../providers/Config/index.js';
|
|
|
8
9
|
import { useDocumentInfo } from '../../../providers/DocumentInfo/index.js';
|
|
9
10
|
import { useTranslation } from '../../../providers/Translation/index.js';
|
|
10
11
|
import { getEffectiveHierarchyCollections, getHierarchyCollectionRestrictions } from '../../../utilities/hierarchyCollectionRestrictions.js';
|
|
12
|
+
import { getHierarchyListURL } from '../../../views/HierarchyList/getHierarchyListURL.js';
|
|
11
13
|
import { Button } from '../../Button/index.js';
|
|
14
|
+
import { HierarchyActionsMenu } from '../ActionsMenu/index.js';
|
|
12
15
|
import { useHierarchyModal } from '../Modal/useHierarchyModal.js';
|
|
13
16
|
import './index.css';
|
|
14
17
|
const baseClass = 'hierarchy-button';
|
|
@@ -21,6 +24,7 @@ export const HierarchyButtonClient = ({
|
|
|
21
24
|
SmallIcon
|
|
22
25
|
}) => {
|
|
23
26
|
const {
|
|
27
|
+
i18n,
|
|
24
28
|
t
|
|
25
29
|
} = useTranslation();
|
|
26
30
|
const {
|
|
@@ -38,7 +42,14 @@ export const HierarchyButtonClient = ({
|
|
|
38
42
|
const readOnly = readOnlyFromProps || formDisabled;
|
|
39
43
|
const dispatchField = useFormFields(([_, dispatch]) => dispatch);
|
|
40
44
|
const currentFieldValue = useFormFields(([fields]) => fields && fields?.[fieldName] || null);
|
|
41
|
-
const
|
|
45
|
+
const currentSelections = useMemo(() => {
|
|
46
|
+
const value = currentFieldValue?.value;
|
|
47
|
+
if (Array.isArray(value)) {
|
|
48
|
+
return value.filter(selection => typeof selection === 'number' || typeof selection === 'string');
|
|
49
|
+
}
|
|
50
|
+
return typeof value === 'number' || typeof value === 'string' ? [value] : [];
|
|
51
|
+
}, [currentFieldValue?.value]);
|
|
52
|
+
const currentId = !hasMany ? currentSelections[0] : undefined;
|
|
42
53
|
const [displayName, setDisplayName] = useState('');
|
|
43
54
|
const [isLoading, setIsLoading] = useState(true);
|
|
44
55
|
const collectionConfig = getEntityConfig({
|
|
@@ -46,14 +57,15 @@ export const HierarchyButtonClient = ({
|
|
|
46
57
|
});
|
|
47
58
|
const useAsTitle = collectionConfig?.admin?.useAsTitle || 'name';
|
|
48
59
|
const {
|
|
60
|
+
hierarchyConfig,
|
|
49
61
|
relatedCollectionSlugs,
|
|
50
62
|
typeFieldName
|
|
51
63
|
} = useMemo(() => getHierarchyCollectionRestrictions({
|
|
52
64
|
collectionConfig
|
|
53
65
|
}), [collectionConfig]);
|
|
54
66
|
const allowedCollections = useFormFields(([fields_0]) => {
|
|
55
|
-
const
|
|
56
|
-
return Array.isArray(
|
|
67
|
+
const value_0 = typeFieldName ? fields_0?.[typeFieldName]?.value : undefined;
|
|
68
|
+
return Array.isArray(value_0) ? value_0 : undefined;
|
|
57
69
|
});
|
|
58
70
|
const isHierarchyCollection = documentCollectionSlug === hierarchyCollectionSlug;
|
|
59
71
|
// When in hierarchy collection, let the modal use allowedCollections from context
|
|
@@ -86,7 +98,7 @@ export const HierarchyButtonClient = ({
|
|
|
86
98
|
// Fetch item name when currentId changes
|
|
87
99
|
useEffect(() => {
|
|
88
100
|
const fetchItemName = async () => {
|
|
89
|
-
if (currentId && (typeof currentId === 'string' || typeof currentId === 'number')) {
|
|
101
|
+
if (currentId !== null && currentId !== undefined && (typeof currentId === 'string' || typeof currentId === 'number')) {
|
|
90
102
|
setIsLoading(true);
|
|
91
103
|
try {
|
|
92
104
|
const response = await fetch(formatAdminURL({
|
|
@@ -137,19 +149,54 @@ export const HierarchyButtonClient = ({
|
|
|
137
149
|
}
|
|
138
150
|
}, [openModal, readOnly]);
|
|
139
151
|
const label = isLoading ? `${t('general:loading')}...` : displayName;
|
|
152
|
+
const hasSingleSelection = !hasMany && (typeof currentId === 'number' || typeof currentId === 'string');
|
|
153
|
+
const hierarchyLabel = getTranslation(collectionConfig?.labels?.singular || hierarchyCollectionSlug, i18n) || hierarchyCollectionSlug;
|
|
154
|
+
const handleRemove = useCallback(() => {
|
|
155
|
+
dispatchField({
|
|
156
|
+
type: 'UPDATE',
|
|
157
|
+
path: fieldName,
|
|
158
|
+
value: null
|
|
159
|
+
});
|
|
160
|
+
setModified(true);
|
|
161
|
+
}, [dispatchField, fieldName, setModified]);
|
|
162
|
+
const goTo = useMemo(() => hasSingleSelection ? {
|
|
163
|
+
name: displayName,
|
|
164
|
+
href: getHierarchyListURL({
|
|
165
|
+
adminRoute: config.routes.admin,
|
|
166
|
+
collectionSlug: hierarchyCollectionSlug,
|
|
167
|
+
parentFieldName: hierarchyConfig?.parentFieldName,
|
|
168
|
+
parentID: currentId
|
|
169
|
+
})
|
|
170
|
+
} : undefined, [config.routes.admin, currentId, displayName, hasSingleSelection, hierarchyCollectionSlug, hierarchyConfig?.parentFieldName]);
|
|
171
|
+
const buttonClassName = [baseClass, readOnly && `${baseClass}--read-only`].filter(Boolean).join(' ');
|
|
140
172
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
141
|
-
children: [/*#__PURE__*/_jsx(
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
173
|
+
children: [/*#__PURE__*/_jsx(HierarchyActionsMenu, {
|
|
174
|
+
goTo: goTo,
|
|
175
|
+
hasActions: hasSingleSelection && !readOnly,
|
|
176
|
+
hierarchyLabel: hierarchyLabel,
|
|
177
|
+
onMove: openModal,
|
|
178
|
+
onRemove: handleRemove,
|
|
179
|
+
renderTrigger: triggerProps => /*#__PURE__*/_jsx(Button, {
|
|
180
|
+
"aria-label": triggerProps ? label : undefined,
|
|
181
|
+
buttonStyle: "secondary",
|
|
182
|
+
className: buttonClassName,
|
|
183
|
+
disabled: readOnly,
|
|
184
|
+
extraButtonProps: triggerProps?.extraButtonProps,
|
|
185
|
+
icon: SmallIcon ?? Icon,
|
|
186
|
+
iconPosition: "left",
|
|
187
|
+
margin: false,
|
|
188
|
+
onClick: triggerProps?.onClick ?? handleClick,
|
|
189
|
+
selected: triggerProps?.selected,
|
|
190
|
+
tooltip: triggerProps ? displayName : undefined,
|
|
191
|
+
children: triggerProps ? /*#__PURE__*/_jsx("span", {
|
|
192
|
+
className: `${baseClass}__truncate`,
|
|
193
|
+
children: label
|
|
194
|
+
}) : label
|
|
195
|
+
})
|
|
150
196
|
}), /*#__PURE__*/_jsx(HierarchyModal, {
|
|
197
|
+
confirmLabel: t('general:confirm'),
|
|
151
198
|
hasMany: hasMany,
|
|
152
|
-
initialSelections:
|
|
199
|
+
initialSelections: currentSelections,
|
|
153
200
|
onSave: handleModalSave
|
|
154
201
|
})]
|
|
155
202
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["formatAdminURL","React","useCallback","useEffect","useMemo","useState","useForm","useFormFields","useConfig","useDocumentInfo","useTranslation","getEffectiveHierarchyCollections","getHierarchyCollectionRestrictions","Button","useHierarchyModal","baseClass","HierarchyButtonClient","fieldName","hasMany","hierarchyCollectionSlug","Icon","readOnly","readOnlyFromProps","SmallIcon","t","config","getEntityConfig","id","documentId","collectionSlug","documentCollectionSlug","disabled","formDisabled","setModified","dispatchField","_","dispatch","currentFieldValue","fields","currentId","value","displayName","setDisplayName","isLoading","setIsLoading","collectionConfig","useAsTitle","admin","relatedCollectionSlugs","typeFieldName","allowedCollections","undefined","Array","isArray","isHierarchyCollection","filterByCollection","disabledIds","Set","HierarchyModal","openModal","fetchItemName","response","fetch","apiRoute","routes","api","path","serverURL","credentials","ok","itemData","json","title","name","String","handleModalSave","closeModal","selections","ids","from","keys","newValue","type","handleClick","label","_jsxs","_Fragment","_jsx","buttonStyle","className","filter","Boolean","join","icon","iconPosition","margin","onClick","initialSelections","onSave"],"sources":["../../../../src/elements/Hierarchy/DocHeaderButton/index.tsx"],"sourcesContent":["'use client'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport type { SelectionWithPath } from '../Modal/types.js'\n\nimport { useForm, useFormFields } from '../../../forms/Form/context.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport {\n getEffectiveHierarchyCollections,\n getHierarchyCollectionRestrictions,\n} from '../../../utilities/hierarchyCollectionRestrictions.js'\nimport { Button } from '../../Button/index.js'\nimport { useHierarchyModal } from '../Modal/useHierarchyModal.js'\nimport './index.css'\n\nconst baseClass = 'hierarchy-button'\n\nexport type HierarchyButtonClientProps = {\n fieldName: string\n hasMany?: boolean\n hierarchyCollectionSlug: string\n Icon?: React.ReactNode\n readOnly?: boolean\n SmallIcon?: React.ReactNode\n}\n\nexport const HierarchyButtonClient: React.FC<HierarchyButtonClientProps> = ({\n fieldName,\n hasMany = false,\n hierarchyCollectionSlug,\n Icon,\n readOnly: readOnlyFromProps,\n SmallIcon,\n}) => {\n const { t } = useTranslation()\n const { config, getEntityConfig } = useConfig()\n const { id: documentId, collectionSlug: documentCollectionSlug } = useDocumentInfo()\n const { disabled: formDisabled, setModified } = useForm()\n const readOnly = readOnlyFromProps || formDisabled\n const dispatchField = useFormFields(([_, dispatch]) => dispatch)\n\n const currentFieldValue = useFormFields(([fields]) => (fields && fields?.[fieldName]) || null)\n const currentId = currentFieldValue?.value as null | number | string\n\n const [displayName, setDisplayName] = useState<string>('')\n const [isLoading, setIsLoading] = useState(true)\n\n const collectionConfig = getEntityConfig({ collectionSlug: hierarchyCollectionSlug })\n const useAsTitle = collectionConfig?.admin?.useAsTitle || 'name'\n const { relatedCollectionSlugs, typeFieldName } = useMemo(\n () => getHierarchyCollectionRestrictions({ collectionConfig }),\n [collectionConfig],\n )\n\n const allowedCollections = useFormFields(([fields]) => {\n const value = typeFieldName ? fields?.[typeFieldName]?.value : undefined\n\n return Array.isArray(value) ? (value as string[]) : undefined\n })\n\n const isHierarchyCollection = documentCollectionSlug === hierarchyCollectionSlug\n\n // When in hierarchy collection, let the modal use allowedCollections from context\n // When in other collections, filter by that collection's slug\n // Memoize to prevent new array references on every render\n const filterByCollection = useMemo(() => {\n if (!documentCollectionSlug) {\n return undefined\n }\n if (!isHierarchyCollection) {\n return [documentCollectionSlug]\n }\n if (!typeFieldName) {\n return undefined\n }\n return getEffectiveHierarchyCollections({ allowedCollections, relatedCollectionSlugs })\n }, [\n allowedCollections,\n documentCollectionSlug,\n isHierarchyCollection,\n relatedCollectionSlugs,\n typeFieldName,\n ])\n\n const disabledIds = useMemo(\n () => (isHierarchyCollection && documentId !== undefined ? new Set([documentId]) : undefined),\n [documentId, isHierarchyCollection],\n )\n\n const [HierarchyModal, , { openModal }] = useHierarchyModal({\n disabledIds,\n filterByCollection,\n hierarchyCollectionSlug,\n Icon,\n })\n\n // Fetch item name when currentId changes\n useEffect(() => {\n const fetchItemName = async () => {\n if (currentId && (typeof currentId === 'string' || typeof currentId === 'number')) {\n setIsLoading(true)\n try {\n const response = await fetch(\n formatAdminURL({\n apiRoute: config.routes.api,\n path: `/${hierarchyCollectionSlug}/${currentId}`,\n serverURL: config.serverURL,\n }),\n { credentials: 'include' },\n )\n\n if (response.ok) {\n const itemData = await response.json()\n const title = itemData?.[useAsTitle] || itemData?.name || itemData?.id\n\n setDisplayName(String(title))\n } else {\n setDisplayName(t('general:none'))\n }\n } catch {\n setDisplayName(t('general:none'))\n } finally {\n setIsLoading(false)\n }\n } else {\n setDisplayName(t('general:none'))\n setIsLoading(false)\n }\n }\n\n void fetchItemName()\n }, [currentId, hierarchyCollectionSlug, config.routes.api, config.serverURL, useAsTitle, t])\n\n const handleModalSave = useCallback(\n ({\n closeModal,\n selections,\n }: {\n closeModal: () => void\n selections: Map<number | string, SelectionWithPath>\n }) => {\n const ids = Array.from(selections.keys())\n const newValue = hasMany ? ids : (ids[0] ?? null)\n\n if (currentFieldValue?.value !== newValue) {\n dispatchField({\n type: 'UPDATE',\n path: fieldName,\n value: newValue,\n })\n setModified(true)\n }\n closeModal()\n },\n [currentFieldValue?.value, dispatchField, fieldName, hasMany, setModified],\n )\n\n const handleClick = useCallback(() => {\n if (!readOnly) {\n openModal()\n }\n }, [openModal, readOnly])\n\n const label = isLoading ? `${t('general:loading')}...` : displayName\n\n return (\n <>\n <Button\n buttonStyle=\"secondary\"\n className={[baseClass, readOnly && `${baseClass}--read-only`].filter(Boolean).join(' ')}\n disabled={readOnly}\n icon={SmallIcon ?? Icon}\n iconPosition=\"left\"\n margin={false}\n onClick={handleClick}\n >\n {label}\n </Button>\n <HierarchyModal\n hasMany={hasMany}\n initialSelections={currentId ? [currentId] : undefined}\n onSave={handleModalSave}\n />\n </>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getTranslation","formatAdminURL","React","useCallback","useEffect","useMemo","useState","useForm","useFormFields","useConfig","useDocumentInfo","useTranslation","getEffectiveHierarchyCollections","getHierarchyCollectionRestrictions","getHierarchyListURL","Button","HierarchyActionsMenu","useHierarchyModal","baseClass","HierarchyButtonClient","fieldName","hasMany","hierarchyCollectionSlug","Icon","readOnly","readOnlyFromProps","SmallIcon","i18n","t","config","getEntityConfig","id","documentId","collectionSlug","documentCollectionSlug","disabled","formDisabled","setModified","dispatchField","_","dispatch","currentFieldValue","fields","currentSelections","value","Array","isArray","filter","selection","currentId","undefined","displayName","setDisplayName","isLoading","setIsLoading","collectionConfig","useAsTitle","admin","hierarchyConfig","relatedCollectionSlugs","typeFieldName","allowedCollections","isHierarchyCollection","filterByCollection","disabledIds","Set","HierarchyModal","openModal","fetchItemName","response","fetch","apiRoute","routes","api","path","serverURL","credentials","ok","itemData","json","title","name","String","handleModalSave","closeModal","selections","ids","from","keys","newValue","type","handleClick","label","hasSingleSelection","hierarchyLabel","labels","singular","handleRemove","goTo","href","adminRoute","parentFieldName","parentID","buttonClassName","Boolean","join","_jsxs","_Fragment","_jsx","hasActions","onMove","onRemove","renderTrigger","triggerProps","buttonStyle","className","extraButtonProps","icon","iconPosition","margin","onClick","selected","tooltip","confirmLabel","initialSelections","onSave"],"sources":["../../../../src/elements/Hierarchy/DocHeaderButton/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport type { SelectionWithPath } from '../Modal/types.js'\n\nimport { useForm, useFormFields } from '../../../forms/Form/context.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport {\n getEffectiveHierarchyCollections,\n getHierarchyCollectionRestrictions,\n} from '../../../utilities/hierarchyCollectionRestrictions.js'\nimport { getHierarchyListURL } from '../../../views/HierarchyList/getHierarchyListURL.js'\nimport { Button } from '../../Button/index.js'\nimport { HierarchyActionsMenu } from '../ActionsMenu/index.js'\nimport { useHierarchyModal } from '../Modal/useHierarchyModal.js'\nimport './index.css'\n\nconst baseClass = 'hierarchy-button'\n\nexport type HierarchyButtonClientProps = {\n fieldName: string\n hasMany?: boolean\n hierarchyCollectionSlug: string\n Icon?: React.ReactNode\n readOnly?: boolean\n SmallIcon?: React.ReactNode\n}\n\nexport const HierarchyButtonClient: React.FC<HierarchyButtonClientProps> = ({\n fieldName,\n hasMany = false,\n hierarchyCollectionSlug,\n Icon,\n readOnly: readOnlyFromProps,\n SmallIcon,\n}) => {\n const { i18n, t } = useTranslation()\n const { config, getEntityConfig } = useConfig()\n const { id: documentId, collectionSlug: documentCollectionSlug } = useDocumentInfo()\n const { disabled: formDisabled, setModified } = useForm()\n const readOnly = readOnlyFromProps || formDisabled\n const dispatchField = useFormFields(([_, dispatch]) => dispatch)\n\n const currentFieldValue = useFormFields(([fields]) => (fields && fields?.[fieldName]) || null)\n const currentSelections = useMemo(() => {\n const value = currentFieldValue?.value\n\n if (Array.isArray(value)) {\n return value.filter(\n (selection): selection is number | string =>\n typeof selection === 'number' || typeof selection === 'string',\n )\n }\n\n return typeof value === 'number' || typeof value === 'string' ? [value] : []\n }, [currentFieldValue?.value])\n const currentId = !hasMany ? currentSelections[0] : undefined\n\n const [displayName, setDisplayName] = useState<string>('')\n const [isLoading, setIsLoading] = useState(true)\n\n const collectionConfig = getEntityConfig({ collectionSlug: hierarchyCollectionSlug })\n const useAsTitle = collectionConfig?.admin?.useAsTitle || 'name'\n const { hierarchyConfig, relatedCollectionSlugs, typeFieldName } = useMemo(\n () => getHierarchyCollectionRestrictions({ collectionConfig }),\n [collectionConfig],\n )\n\n const allowedCollections = useFormFields(([fields]) => {\n const value = typeFieldName ? fields?.[typeFieldName]?.value : undefined\n\n return Array.isArray(value) ? (value as string[]) : undefined\n })\n\n const isHierarchyCollection = documentCollectionSlug === hierarchyCollectionSlug\n\n // When in hierarchy collection, let the modal use allowedCollections from context\n // When in other collections, filter by that collection's slug\n // Memoize to prevent new array references on every render\n const filterByCollection = useMemo(() => {\n if (!documentCollectionSlug) {\n return undefined\n }\n if (!isHierarchyCollection) {\n return [documentCollectionSlug]\n }\n if (!typeFieldName) {\n return undefined\n }\n return getEffectiveHierarchyCollections({ allowedCollections, relatedCollectionSlugs })\n }, [\n allowedCollections,\n documentCollectionSlug,\n isHierarchyCollection,\n relatedCollectionSlugs,\n typeFieldName,\n ])\n\n const disabledIds = useMemo(\n () => (isHierarchyCollection && documentId !== undefined ? new Set([documentId]) : undefined),\n [documentId, isHierarchyCollection],\n )\n\n const [HierarchyModal, , { openModal }] = useHierarchyModal({\n disabledIds,\n filterByCollection,\n hierarchyCollectionSlug,\n Icon,\n })\n\n // Fetch item name when currentId changes\n useEffect(() => {\n const fetchItemName = async () => {\n if (\n currentId !== null &&\n currentId !== undefined &&\n (typeof currentId === 'string' || typeof currentId === 'number')\n ) {\n setIsLoading(true)\n try {\n const response = await fetch(\n formatAdminURL({\n apiRoute: config.routes.api,\n path: `/${hierarchyCollectionSlug}/${currentId}`,\n serverURL: config.serverURL,\n }),\n { credentials: 'include' },\n )\n\n if (response.ok) {\n const itemData = await response.json()\n const title = itemData?.[useAsTitle] || itemData?.name || itemData?.id\n\n setDisplayName(String(title))\n } else {\n setDisplayName(t('general:none'))\n }\n } catch {\n setDisplayName(t('general:none'))\n } finally {\n setIsLoading(false)\n }\n } else {\n setDisplayName(t('general:none'))\n setIsLoading(false)\n }\n }\n\n void fetchItemName()\n }, [currentId, hierarchyCollectionSlug, config.routes.api, config.serverURL, useAsTitle, t])\n\n const handleModalSave = useCallback(\n ({\n closeModal,\n selections,\n }: {\n closeModal: () => void\n selections: Map<number | string, SelectionWithPath>\n }) => {\n const ids = Array.from(selections.keys())\n const newValue = hasMany ? ids : (ids[0] ?? null)\n\n if (currentFieldValue?.value !== newValue) {\n dispatchField({\n type: 'UPDATE',\n path: fieldName,\n value: newValue,\n })\n setModified(true)\n }\n closeModal()\n },\n [currentFieldValue?.value, dispatchField, fieldName, hasMany, setModified],\n )\n\n const handleClick = useCallback(() => {\n if (!readOnly) {\n openModal()\n }\n }, [openModal, readOnly])\n\n const label = isLoading ? `${t('general:loading')}...` : displayName\n const hasSingleSelection =\n !hasMany && (typeof currentId === 'number' || typeof currentId === 'string')\n const hierarchyLabel =\n getTranslation(collectionConfig?.labels?.singular || hierarchyCollectionSlug, i18n) ||\n hierarchyCollectionSlug\n\n const handleRemove = useCallback(() => {\n dispatchField({\n type: 'UPDATE',\n path: fieldName,\n value: null,\n })\n setModified(true)\n }, [dispatchField, fieldName, setModified])\n\n const goTo = useMemo(\n () =>\n hasSingleSelection\n ? {\n name: displayName,\n href: getHierarchyListURL({\n adminRoute: config.routes.admin,\n collectionSlug: hierarchyCollectionSlug,\n parentFieldName: hierarchyConfig?.parentFieldName,\n parentID: currentId,\n }),\n }\n : undefined,\n [\n config.routes.admin,\n currentId,\n displayName,\n hasSingleSelection,\n hierarchyCollectionSlug,\n hierarchyConfig?.parentFieldName,\n ],\n )\n\n const buttonClassName = [baseClass, readOnly && `${baseClass}--read-only`]\n .filter(Boolean)\n .join(' ')\n\n return (\n <>\n <HierarchyActionsMenu\n goTo={goTo}\n hasActions={hasSingleSelection && !readOnly}\n hierarchyLabel={hierarchyLabel}\n onMove={openModal}\n onRemove={handleRemove}\n renderTrigger={(triggerProps) => (\n <Button\n aria-label={triggerProps ? label : undefined}\n buttonStyle=\"secondary\"\n className={buttonClassName}\n disabled={readOnly}\n extraButtonProps={triggerProps?.extraButtonProps}\n icon={SmallIcon ?? Icon}\n iconPosition=\"left\"\n margin={false}\n onClick={triggerProps?.onClick ?? handleClick}\n selected={triggerProps?.selected}\n tooltip={triggerProps ? displayName : undefined}\n >\n {triggerProps ? <span className={`${baseClass}__truncate`}>{label}</span> : label}\n </Button>\n )}\n />\n <HierarchyModal\n confirmLabel={t('general:confirm')}\n hasMany={hasMany}\n initialSelections={currentSelections}\n onSave={handleModalSave}\n />\n </>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
@layer payload-default {
|
|
2
|
+
.hierarchy-modal-footer__info,
|
|
3
|
+
.hierarchy-modal-footer__actions {
|
|
4
|
+
display: flex;
|
|
5
|
+
align-items: center;
|
|
6
|
+
gap: var(--spacer-2);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.hierarchy-modal-footer__info {
|
|
10
|
+
min-inline-size: 0;
|
|
11
|
+
margin-inline-end: auto;
|
|
12
|
+
overflow: hidden;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.hierarchy-modal-footer__actions,
|
|
16
|
+
.hierarchy-modal-footer__arrow {
|
|
17
|
+
flex-shrink: 0;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.hierarchy-modal-footer__secondary,
|
|
21
|
+
.hierarchy-modal-footer__arrow {
|
|
22
|
+
color: var(--color-text-secondary);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.hierarchy-modal-footer__path {
|
|
26
|
+
min-inline-size: 0;
|
|
27
|
+
max-inline-size: calc(var(--spacer-6) * 7);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.hierarchy-modal-footer__path .chip__label {
|
|
31
|
+
min-inline-size: 0;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { PathSegment } from '../../ColumnBrowser/types.js';
|
|
3
|
+
import './index.css';
|
|
4
|
+
export type HierarchyModalFooterProps = {
|
|
5
|
+
confirmLabel: string;
|
|
6
|
+
destinationPath?: PathSegment[];
|
|
7
|
+
Icon?: React.ReactNode;
|
|
8
|
+
isBusy?: boolean;
|
|
9
|
+
isConfirmDisabled: boolean;
|
|
10
|
+
isMultiSelect: boolean;
|
|
11
|
+
onClear: () => void;
|
|
12
|
+
onConfirm: () => void;
|
|
13
|
+
onMoveToRoot?: () => void;
|
|
14
|
+
placeholderLabel: string;
|
|
15
|
+
previousPath?: PathSegment[];
|
|
16
|
+
selectionCount: number;
|
|
17
|
+
selectionCountLabel: string;
|
|
18
|
+
showMoveToRoot?: boolean;
|
|
19
|
+
};
|
|
20
|
+
export declare const HierarchyModalFooter: React.FC<HierarchyModalFooterProps>;
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/Hierarchy/Modal/Footer/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAQ/D,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,yBAAyB,GAAG;IACtC,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,WAAW,EAAE,CAAA;IAC/B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,aAAa,EAAE,OAAO,CAAA;IACtB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,gBAAgB,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAeD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA6EpE,CAAA"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { c as _c } from "react/compiler-runtime";
|
|
4
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import { FolderIcon } from '../../../../icons/Folder/index.js';
|
|
7
|
+
import { ReplaceIcon } from '../../../../icons/Replace/index.js';
|
|
8
|
+
import { useTranslation } from '../../../../providers/Translation/index.js';
|
|
9
|
+
import { Button } from '../../../Button/index.js';
|
|
10
|
+
import { Chip } from '../../../Chip/index.js';
|
|
11
|
+
import { DialogFooter } from '../../../Dialog/index.js';
|
|
12
|
+
import './index.css';
|
|
13
|
+
const baseClass = 'hierarchy-modal-footer';
|
|
14
|
+
const HierarchyPath = ({
|
|
15
|
+
Icon,
|
|
16
|
+
path
|
|
17
|
+
}) => {
|
|
18
|
+
const label = path.map(segment => segment.title).join(' / ');
|
|
19
|
+
return /*#__PURE__*/_jsx(Chip, {
|
|
20
|
+
"aria-label": label,
|
|
21
|
+
className: `${baseClass}__path`,
|
|
22
|
+
icon: Icon ?? /*#__PURE__*/_jsx(FolderIcon, {}),
|
|
23
|
+
children: label
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
export const HierarchyModalFooter = t0 => {
|
|
27
|
+
const $ = _c(16);
|
|
28
|
+
const {
|
|
29
|
+
confirmLabel,
|
|
30
|
+
destinationPath,
|
|
31
|
+
Icon,
|
|
32
|
+
isBusy: t1,
|
|
33
|
+
isConfirmDisabled,
|
|
34
|
+
isMultiSelect,
|
|
35
|
+
onClear,
|
|
36
|
+
onConfirm,
|
|
37
|
+
onMoveToRoot,
|
|
38
|
+
placeholderLabel,
|
|
39
|
+
previousPath,
|
|
40
|
+
selectionCount,
|
|
41
|
+
selectionCountLabel,
|
|
42
|
+
showMoveToRoot
|
|
43
|
+
} = t0;
|
|
44
|
+
const isBusy = t1 === undefined ? false : t1;
|
|
45
|
+
const {
|
|
46
|
+
t
|
|
47
|
+
} = useTranslation();
|
|
48
|
+
let t2;
|
|
49
|
+
if ($[0] !== Icon || $[1] !== confirmLabel || $[2] !== destinationPath || $[3] !== isBusy || $[4] !== isConfirmDisabled || $[5] !== isMultiSelect || $[6] !== onClear || $[7] !== onConfirm || $[8] !== onMoveToRoot || $[9] !== placeholderLabel || $[10] !== previousPath || $[11] !== selectionCount || $[12] !== selectionCountLabel || $[13] !== showMoveToRoot || $[14] !== t) {
|
|
50
|
+
t2 = _jsxs(DialogFooter, {
|
|
51
|
+
children: [_jsx("div", {
|
|
52
|
+
className: `${baseClass}__info`,
|
|
53
|
+
children: isMultiSelect ? _jsxs(React.Fragment, {
|
|
54
|
+
children: [_jsx("span", {
|
|
55
|
+
className: `${baseClass}__secondary`,
|
|
56
|
+
children: selectionCountLabel
|
|
57
|
+
}), selectionCount > 0 ? _jsx(Button, {
|
|
58
|
+
buttonStyle: "primary-ghost",
|
|
59
|
+
className: `${baseClass}__clear`,
|
|
60
|
+
margin: false,
|
|
61
|
+
onClick: onClear,
|
|
62
|
+
size: "medium",
|
|
63
|
+
children: t("general:clear")
|
|
64
|
+
}) : null]
|
|
65
|
+
}) : _jsxs(React.Fragment, {
|
|
66
|
+
children: [previousPath?.length ? _jsxs(React.Fragment, {
|
|
67
|
+
children: [_jsx(HierarchyPath, {
|
|
68
|
+
Icon,
|
|
69
|
+
path: previousPath
|
|
70
|
+
}), _jsx("span", {
|
|
71
|
+
"aria-hidden": true,
|
|
72
|
+
className: `${baseClass}__arrow`,
|
|
73
|
+
children: _jsx(ReplaceIcon, {})
|
|
74
|
+
})]
|
|
75
|
+
}) : null, destinationPath?.length ? _jsx(HierarchyPath, {
|
|
76
|
+
Icon,
|
|
77
|
+
path: destinationPath
|
|
78
|
+
}) : _jsx("span", {
|
|
79
|
+
className: `${baseClass}__secondary`,
|
|
80
|
+
children: placeholderLabel
|
|
81
|
+
})]
|
|
82
|
+
})
|
|
83
|
+
}), _jsxs("div", {
|
|
84
|
+
className: `${baseClass}__actions`,
|
|
85
|
+
children: [showMoveToRoot && onMoveToRoot ? _jsx(Button, {
|
|
86
|
+
buttonStyle: "secondary",
|
|
87
|
+
disabled: isBusy,
|
|
88
|
+
margin: false,
|
|
89
|
+
onClick: onMoveToRoot,
|
|
90
|
+
size: "medium",
|
|
91
|
+
children: t("hierarchy:moveToRoot")
|
|
92
|
+
}) : null, _jsx(Button, {
|
|
93
|
+
disabled: isBusy || isConfirmDisabled,
|
|
94
|
+
margin: false,
|
|
95
|
+
onClick: onConfirm,
|
|
96
|
+
size: "medium",
|
|
97
|
+
children: confirmLabel
|
|
98
|
+
})]
|
|
99
|
+
})]
|
|
100
|
+
});
|
|
101
|
+
$[0] = Icon;
|
|
102
|
+
$[1] = confirmLabel;
|
|
103
|
+
$[2] = destinationPath;
|
|
104
|
+
$[3] = isBusy;
|
|
105
|
+
$[4] = isConfirmDisabled;
|
|
106
|
+
$[5] = isMultiSelect;
|
|
107
|
+
$[6] = onClear;
|
|
108
|
+
$[7] = onConfirm;
|
|
109
|
+
$[8] = onMoveToRoot;
|
|
110
|
+
$[9] = placeholderLabel;
|
|
111
|
+
$[10] = previousPath;
|
|
112
|
+
$[11] = selectionCount;
|
|
113
|
+
$[12] = selectionCountLabel;
|
|
114
|
+
$[13] = showMoveToRoot;
|
|
115
|
+
$[14] = t;
|
|
116
|
+
$[15] = t2;
|
|
117
|
+
} else {
|
|
118
|
+
t2 = $[15];
|
|
119
|
+
}
|
|
120
|
+
return t2;
|
|
121
|
+
};
|
|
122
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","React","FolderIcon","ReplaceIcon","useTranslation","Button","Chip","DialogFooter","baseClass","HierarchyPath","Icon","path","label","map","segment","title","join","_jsx","className","icon","HierarchyModalFooter","t0","$","confirmLabel","destinationPath","isBusy","t1","isConfirmDisabled","isMultiSelect","onClear","onConfirm","onMoveToRoot","placeholderLabel","previousPath","selectionCount","selectionCountLabel","showMoveToRoot","undefined","t","t2","_jsxs","children","Fragment","buttonStyle","margin","onClick","size","length","disabled"],"sources":["../../../../../src/elements/Hierarchy/Modal/Footer/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport type { PathSegment } from '../../ColumnBrowser/types.js'\n\nimport { FolderIcon } from '../../../../icons/Folder/index.js'\nimport { ReplaceIcon } from '../../../../icons/Replace/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { Button } from '../../../Button/index.js'\nimport { Chip } from '../../../Chip/index.js'\nimport { DialogFooter } from '../../../Dialog/index.js'\nimport './index.css'\n\nconst baseClass = 'hierarchy-modal-footer'\n\nexport type HierarchyModalFooterProps = {\n confirmLabel: string\n destinationPath?: PathSegment[]\n Icon?: React.ReactNode\n isBusy?: boolean\n isConfirmDisabled: boolean\n isMultiSelect: boolean\n onClear: () => void\n onConfirm: () => void\n onMoveToRoot?: () => void\n placeholderLabel: string\n previousPath?: PathSegment[]\n selectionCount: number\n selectionCountLabel: string\n showMoveToRoot?: boolean\n}\n\nconst HierarchyPath: React.FC<{\n Icon?: React.ReactNode\n path: PathSegment[]\n}> = ({ Icon, path }) => {\n const label = path.map((segment) => segment.title).join(' / ')\n\n return (\n <Chip aria-label={label} className={`${baseClass}__path`} icon={Icon ?? <FolderIcon />}>\n {label}\n </Chip>\n )\n}\n\nexport const HierarchyModalFooter: React.FC<HierarchyModalFooterProps> = ({\n confirmLabel,\n destinationPath,\n Icon,\n isBusy = false,\n isConfirmDisabled,\n isMultiSelect,\n onClear,\n onConfirm,\n onMoveToRoot,\n placeholderLabel,\n previousPath,\n selectionCount,\n selectionCountLabel,\n showMoveToRoot,\n}) => {\n const { t } = useTranslation()\n\n return (\n <DialogFooter>\n <div className={`${baseClass}__info`}>\n {isMultiSelect ? (\n <React.Fragment>\n <span className={`${baseClass}__secondary`}>{selectionCountLabel}</span>\n {selectionCount > 0 ? (\n <Button\n buttonStyle=\"primary-ghost\"\n className={`${baseClass}__clear`}\n margin={false}\n onClick={onClear}\n size=\"medium\"\n >\n {t('general:clear')}\n </Button>\n ) : null}\n </React.Fragment>\n ) : (\n <React.Fragment>\n {previousPath?.length ? (\n <React.Fragment>\n <HierarchyPath Icon={Icon} path={previousPath} />\n <span aria-hidden className={`${baseClass}__arrow`}>\n <ReplaceIcon />\n </span>\n </React.Fragment>\n ) : null}\n {destinationPath?.length ? (\n <HierarchyPath Icon={Icon} path={destinationPath} />\n ) : (\n <span className={`${baseClass}__secondary`}>{placeholderLabel}</span>\n )}\n </React.Fragment>\n )}\n </div>\n <div className={`${baseClass}__actions`}>\n {showMoveToRoot && onMoveToRoot ? (\n <Button\n buttonStyle=\"secondary\"\n disabled={isBusy}\n margin={false}\n onClick={onMoveToRoot}\n size=\"medium\"\n >\n {t('hierarchy:moveToRoot')}\n </Button>\n ) : null}\n <Button\n disabled={isBusy || isConfirmDisabled}\n margin={false}\n onClick={onConfirm}\n size=\"medium\"\n >\n {confirmLabel}\n </Button>\n </div>\n </DialogFooter>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,15 +1,20 @@
|
|
|
1
|
+
import type { PathSegment } from '../ColumnBrowser/types.js';
|
|
1
2
|
type FetchAncestorPathArgs = {
|
|
2
3
|
api: string;
|
|
3
4
|
collectionSlug: string;
|
|
4
5
|
itemId: number | string;
|
|
5
6
|
parentFieldName: string;
|
|
6
7
|
serverURL: string;
|
|
8
|
+
useAsTitle: string;
|
|
9
|
+
};
|
|
10
|
+
export type AncestorPathResult = {
|
|
11
|
+
ancestorIds: (number | string)[];
|
|
12
|
+
path: PathSegment[];
|
|
7
13
|
};
|
|
8
14
|
/**
|
|
9
15
|
* Fetches the ancestor path for an item using a single API call with depth.
|
|
10
|
-
* Returns
|
|
11
|
-
* Example: item at level 3 returns [grandparentId, parentId]
|
|
16
|
+
* Returns the ancestor IDs used to expand the browser and a titled path for the footer.
|
|
12
17
|
*/
|
|
13
|
-
export declare function fetchAncestorPath({ api, collectionSlug, itemId, parentFieldName, serverURL, }: FetchAncestorPathArgs): Promise<
|
|
18
|
+
export declare function fetchAncestorPath({ api, collectionSlug, itemId, parentFieldName, serverURL, useAsTitle, }: FetchAncestorPathArgs): Promise<AncestorPathResult>;
|
|
14
19
|
export {};
|
|
15
20
|
//# sourceMappingURL=fetchAncestorPath.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchAncestorPath.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Modal/fetchAncestorPath.ts"],"names":[],"mappings":"AAGA,KAAK,qBAAqB,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"fetchAncestorPath.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Modal/fetchAncestorPath.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAE5D,KAAK,qBAAqB,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IAChC,IAAI,EAAE,WAAW,EAAE,CAAA;CACpB,CAAA;AAID;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,GAAG,EACH,cAAc,EACd,MAAM,EACN,eAAe,EACf,SAAS,EACT,UAAU,GACX,EAAE,qBAAqB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAwDrD"}
|