@payloadcms/ui 4.0.0-internal.f05c47f → 4.0.0-internal.f715c6e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements/AppHeader/index.css +0 -1
- package/dist/elements/ArrayAction/index.d.ts +0 -1
- package/dist/elements/ArrayAction/index.d.ts.map +1 -1
- package/dist/elements/ArrayAction/index.js +32 -45
- package/dist/elements/ArrayAction/index.js.map +1 -1
- package/dist/elements/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +0 -3
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +2 -6
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/Button/index.css +2 -2
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts +0 -10
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +0 -55
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
- package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -1
- package/dist/elements/ColumnSelection/Popup.js +3 -3
- package/dist/elements/ColumnSelection/Popup.js.map +1 -1
- package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts +10 -0
- package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts.map +1 -0
- package/dist/elements/ColumnSelection/matchesColumnSearch.js +21 -0
- package/dist/elements/ColumnSelection/matchesColumnSearch.js.map +1 -0
- package/dist/{utilities/matchesSearchQuery.spec.js → elements/ColumnSelection/matchesColumnSearch.spec.js} +29 -29
- package/dist/elements/ColumnSelection/matchesColumnSearch.spec.js.map +1 -0
- package/dist/elements/Combobox/index.css +23 -76
- package/dist/elements/Combobox/index.d.ts +0 -7
- package/dist/elements/Combobox/index.d.ts.map +1 -1
- package/dist/elements/Combobox/index.js +20 -58
- package/dist/elements/Combobox/index.js.map +1 -1
- package/dist/elements/CopyToClipboard/index.d.ts +0 -1
- package/dist/elements/CopyToClipboard/index.d.ts.map +1 -1
- package/dist/elements/CopyToClipboard/index.js +8 -10
- package/dist/elements/CopyToClipboard/index.js.map +1 -1
- package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
- package/dist/elements/DeleteDocument/index.js +2 -9
- package/dist/elements/DeleteDocument/index.js.map +1 -1
- package/dist/elements/DeleteMany/index.d.ts.map +1 -1
- package/dist/elements/DeleteMany/index.js +1 -4
- package/dist/elements/DeleteMany/index.js.map +1 -1
- package/dist/elements/Drawer/index.css +4 -10
- package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +2 -3
- package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
- package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
- package/dist/elements/DuplicateDocument/index.js +1 -6
- package/dist/elements/DuplicateDocument/index.js.map +1 -1
- package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/EditMany/DrawerContent.js +1 -4
- package/dist/elements/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/FileManager/FileToolbar/index.d.ts.map +1 -1
- package/dist/elements/FileManager/FileToolbar/index.js +0 -3
- package/dist/elements/FileManager/FileToolbar/index.js.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/index.js +1 -4
- package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -1
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.js +1 -4
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +1 -1
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts +1 -2
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js +0 -2
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js.map +1 -1
- package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Modal/index.js +0 -3
- package/dist/elements/Hierarchy/Modal/index.js.map +1 -1
- package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/MoveMany/index.js +1 -4
- package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
- package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Search/useHierarchySearch.js +0 -3
- package/dist/elements/Hierarchy/Search/useHierarchySearch.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/useChildren.js +1 -4
- package/dist/elements/Hierarchy/Tree/useChildren.js.map +1 -1
- package/dist/elements/IDLabel/index.css +0 -6
- package/dist/elements/IDLabel/index.d.ts +1 -1
- package/dist/elements/IDLabel/index.d.ts.map +1 -1
- package/dist/elements/IDLabel/index.js +21 -16
- package/dist/elements/IDLabel/index.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts +7 -1
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +32 -26
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +2 -6
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
- package/dist/elements/PermanentlyDeleteButton/index.d.ts.map +1 -1
- package/dist/elements/PermanentlyDeleteButton/index.js +1 -4
- package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -1
- package/dist/elements/Popup/PopupButtonList/index.css +1 -1
- package/dist/elements/Popup/index.js +1 -1
- package/dist/elements/Popup/index.js.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.js +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
- package/dist/elements/PublishButton/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/index.js +2 -6
- package/dist/elements/PublishButton/index.js.map +1 -1
- package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/PublishMany/DrawerContent.js +1 -4
- package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/QueryPresets/QueryPresetBar/index.js +3 -1
- package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
- package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/index.js +2 -5
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/RestoreButton/index.d.ts.map +1 -1
- package/dist/elements/RestoreButton/index.js +1 -4
- package/dist/elements/RestoreButton/index.js.map +1 -1
- package/dist/elements/RestoreMany/index.d.ts.map +1 -1
- package/dist/elements/RestoreMany/index.js +0 -3
- package/dist/elements/RestoreMany/index.js.map +1 -1
- package/dist/elements/SortHeader/index.d.ts.map +1 -1
- package/dist/elements/SortHeader/index.js +26 -29
- package/dist/elements/SortHeader/index.js.map +1 -1
- package/dist/elements/StepNav/index.css +14 -64
- package/dist/elements/StepNav/index.d.ts.map +1 -1
- package/dist/elements/StepNav/index.js +69 -145
- package/dist/elements/StepNav/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js +11 -3
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
- package/dist/elements/Table/OrderableTable.js +1 -3
- package/dist/elements/Table/OrderableTable.js.map +1 -1
- package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
- package/dist/elements/Table/RelationshipProvider/index.js +23 -29
- package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
- package/dist/elements/UnpublishButton/index.d.ts.map +1 -1
- package/dist/elements/UnpublishButton/index.js +1 -4
- package/dist/elements/UnpublishButton/index.js.map +1 -1
- package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/UnpublishMany/DrawerContent.js +1 -4
- package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js +0 -3
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
- package/dist/exports/client/index.d.ts +1 -5
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +1 -1
- package/dist/exports/client/index.js.map +3 -3
- package/dist/fields/Array/ArrayRow.d.ts +0 -1
- package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
- package/dist/fields/Array/ArrayRow.js +0 -2
- package/dist/fields/Array/ArrayRow.js.map +1 -1
- package/dist/fields/Array/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js +10 -38
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Blocks/BlockRow.d.ts +0 -1
- package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
- package/dist/fields/Blocks/BlockRow.js +0 -2
- package/dist/fields/Blocks/BlockRow.js.map +1 -1
- package/dist/fields/Blocks/RowActions.d.ts +0 -1
- package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
- package/dist/fields/Blocks/RowActions.js +19 -22
- package/dist/fields/Blocks/RowActions.js.map +1 -1
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +7 -35
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Relationship/Input.d.ts.map +1 -1
- package/dist/fields/Relationship/Input.js +1 -5
- package/dist/fields/Relationship/Input.js.map +1 -1
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +1 -4
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +1 -4
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
- package/dist/hooks/usePayloadAPI.js +40 -44
- package/dist/hooks/usePayloadAPI.js.map +1 -1
- package/dist/icons/Edit/index.d.ts +1 -0
- package/dist/icons/Edit/index.d.ts.map +1 -1
- package/dist/icons/Edit/index.js +4 -4
- package/dist/icons/Edit/index.js.map +1 -1
- package/dist/providers/Actions/index.d.ts +0 -1
- package/dist/providers/Actions/index.d.ts.map +1 -1
- package/dist/providers/Actions/index.js +11 -43
- package/dist/providers/Actions/index.js.map +1 -1
- package/dist/providers/Auth/index.d.ts +56 -2
- package/dist/providers/Auth/index.d.ts.map +1 -1
- package/dist/providers/Auth/index.js +135 -283
- package/dist/providers/Auth/index.js.map +1 -1
- package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/index.js +1 -5
- package/dist/providers/DocumentInfo/index.js.map +1 -1
- package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts +1 -2
- package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/useGetDocPermissions.js +1 -3
- package/dist/providers/DocumentInfo/useGetDocPermissions.js.map +1 -1
- package/dist/providers/FormErrorHandler/index.d.ts +1 -5
- package/dist/providers/FormErrorHandler/index.d.ts.map +1 -1
- package/dist/providers/FormErrorHandler/index.js.map +1 -1
- package/dist/providers/Hierarchy/index.d.ts.map +1 -1
- package/dist/providers/Hierarchy/index.js +1 -4
- package/dist/providers/Hierarchy/index.js.map +1 -1
- package/dist/providers/Locale/index.d.ts.map +1 -1
- package/dist/providers/Locale/index.js +36 -41
- package/dist/providers/Locale/index.js.map +1 -1
- package/dist/providers/Root/index.js +4 -4
- package/dist/providers/Root/index.js.map +1 -1
- package/dist/providers/RouteTransition/ProgressBar/index.js +1 -4
- package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
- package/dist/providers/RouteTransition/index.d.ts +0 -2
- package/dist/providers/RouteTransition/index.d.ts.map +1 -1
- package/dist/providers/RouteTransition/index.js +14 -42
- package/dist/providers/RouteTransition/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/templates/Default/index.d.ts +0 -1
- package/dist/templates/Default/index.d.ts.map +1 -1
- package/dist/templates/Default/index.js +39 -45
- package/dist/templates/Default/index.js.map +1 -1
- package/dist/utilities/filterOutUploadFields.d.ts.map +1 -1
- package/dist/utilities/filterOutUploadFields.js +1 -1
- package/dist/utilities/filterOutUploadFields.js.map +1 -1
- package/dist/utilities/initReq.d.ts.map +1 -1
- package/dist/utilities/initReq.js +0 -8
- package/dist/utilities/initReq.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +2 -3
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +7 -7
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +66 -104
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.css +140 -33
- package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/index.js +2 -6
- package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
- package/dist/views/List/ListHeader/index.d.ts +10 -1
- package/dist/views/List/ListHeader/index.d.ts.map +1 -1
- package/dist/views/List/ListHeader/index.js +3 -1
- package/dist/views/List/ListHeader/index.js.map +1 -1
- package/dist/views/List/index.client.d.ts.map +1 -1
- package/dist/views/List/index.client.js +14 -0
- package/dist/views/List/index.client.js.map +1 -1
- package/dist/views/List/index.css +0 -5
- package/dist/views/Root/getCustomCollectionViewByRoute.d.ts.map +1 -1
- package/dist/views/Root/getCustomCollectionViewByRoute.js.map +1 -1
- package/dist/views/Root/getCustomGlobalViewByRoute.d.ts.map +1 -1
- package/dist/views/Root/getCustomGlobalViewByRoute.js.map +1 -1
- package/dist/views/Root/getCustomViewByKey.d.ts.map +1 -1
- package/dist/views/Root/getCustomViewByKey.js.map +1 -1
- package/dist/views/Root/index.d.ts.map +1 -1
- package/dist/views/Root/index.js +0 -1
- package/dist/views/Root/index.js.map +1 -1
- package/dist/views/Version/Restore/index.d.ts.map +1 -1
- package/dist/views/Version/Restore/index.js +3 -6
- package/dist/views/Version/Restore/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/elements/BranchSelector/index.css +0 -83
- package/dist/elements/BranchSelector/index.d.ts +0 -12
- package/dist/elements/BranchSelector/index.d.ts.map +0 -1
- package/dist/elements/BranchSelector/index.js +0 -160
- package/dist/elements/BranchSelector/index.js.map +0 -1
- package/dist/providers/Auth/AuthSessionDebug/index.css +0 -48
- package/dist/providers/Auth/AuthSessionDebug/index.d.ts +0 -13
- package/dist/providers/Auth/AuthSessionDebug/index.d.ts.map +0 -1
- package/dist/providers/Auth/AuthSessionDebug/index.js +0 -93
- package/dist/providers/Auth/AuthSessionDebug/index.js.map +0 -1
- package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts +0 -21
- package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts.map +0 -1
- package/dist/providers/Auth/AuthSessionDebug/utilities.js +0 -53
- package/dist/providers/Auth/AuthSessionDebug/utilities.js.map +0 -1
- package/dist/providers/Auth/authSessionRequests.d.ts +0 -27
- package/dist/providers/Auth/authSessionRequests.d.ts.map +0 -1
- package/dist/providers/Auth/authSessionRequests.js +0 -119
- package/dist/providers/Auth/authSessionRequests.js.map +0 -1
- package/dist/providers/Auth/authSessionRequests.spec.js +0 -121
- package/dist/providers/Auth/authSessionRequests.spec.js.map +0 -1
- package/dist/providers/Auth/sessionActivity.d.ts +0 -23
- package/dist/providers/Auth/sessionActivity.d.ts.map +0 -1
- package/dist/providers/Auth/sessionActivity.js +0 -49
- package/dist/providers/Auth/sessionActivity.js.map +0 -1
- package/dist/providers/Auth/sessionActivity.spec.js +0 -44
- package/dist/providers/Auth/sessionActivity.spec.js.map +0 -1
- package/dist/providers/Auth/sessionTiming.d.ts +0 -11
- package/dist/providers/Auth/sessionTiming.d.ts.map +0 -1
- package/dist/providers/Auth/sessionTiming.js +0 -18
- package/dist/providers/Auth/sessionTiming.js.map +0 -1
- package/dist/providers/Auth/tabSessionSync/index.d.ts +0 -17
- package/dist/providers/Auth/tabSessionSync/index.d.ts.map +0 -1
- package/dist/providers/Auth/tabSessionSync/index.js +0 -263
- package/dist/providers/Auth/tabSessionSync/index.js.map +0 -1
- package/dist/providers/Auth/tabSessionSync/index.spec.js +0 -463
- package/dist/providers/Auth/tabSessionSync/index.spec.js.map +0 -1
- package/dist/providers/Auth/tabSessionSync/types.d.ts +0 -107
- package/dist/providers/Auth/tabSessionSync/types.d.ts.map +0 -1
- package/dist/providers/Auth/tabSessionSync/types.js +0 -6
- package/dist/providers/Auth/tabSessionSync/types.js.map +0 -1
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts +0 -11
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts.map +0 -1
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js +0 -90
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +0 -1
- package/dist/providers/Auth/tabSessionSync/utilities.d.ts +0 -26
- package/dist/providers/Auth/tabSessionSync/utilities.d.ts.map +0 -1
- package/dist/providers/Auth/tabSessionSync/utilities.js +0 -159
- package/dist/providers/Auth/tabSessionSync/utilities.js.map +0 -1
- package/dist/providers/Auth/types.d.ts +0 -65
- package/dist/providers/Auth/types.d.ts.map +0 -1
- package/dist/providers/Auth/types.js +0 -2
- package/dist/providers/Auth/types.js.map +0 -1
- package/dist/providers/Auth/useAuthSessionTimers.d.ts +0 -26
- package/dist/providers/Auth/useAuthSessionTimers.d.ts.map +0 -1
- package/dist/providers/Auth/useAuthSessionTimers.js +0 -203
- package/dist/providers/Auth/useAuthSessionTimers.js.map +0 -1
- package/dist/providers/Auth/useAuthSessionTimers.spec.js +0 -311
- package/dist/providers/Auth/useAuthSessionTimers.spec.js.map +0 -1
- package/dist/providers/Branch/index.d.ts +0 -62
- package/dist/providers/Branch/index.d.ts.map +0 -1
- package/dist/providers/Branch/index.js +0 -192
- package/dist/providers/Branch/index.js.map +0 -1
- package/dist/providers/Branch/index.server.d.ts +0 -14
- package/dist/providers/Branch/index.server.d.ts.map +0 -1
- package/dist/providers/Branch/index.server.js +0 -80
- package/dist/providers/Branch/index.server.js.map +0 -1
- package/dist/providers/RouteTransition/ProgressBar/index.spec.js +0 -44
- package/dist/providers/RouteTransition/ProgressBar/index.spec.js.map +0 -1
- package/dist/utilities/getRequestBranch.d.ts +0 -18
- package/dist/utilities/getRequestBranch.d.ts.map +0 -1
- package/dist/utilities/getRequestBranch.js +0 -32
- package/dist/utilities/getRequestBranch.js.map +0 -1
- package/dist/utilities/matchesSearchQuery.d.ts +0 -12
- package/dist/utilities/matchesSearchQuery.d.ts.map +0 -1
- package/dist/utilities/matchesSearchQuery.js +0 -23
- package/dist/utilities/matchesSearchQuery.js.map +0 -1
- package/dist/utilities/matchesSearchQuery.spec.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChildren.js","names":["combineWhereConstraints","formatAdminURL","qs","useCallback","useEffect","useRef","useState","useBranchParam","useConfig","isSuperset","useChildren","allPossibleTypeValues","baseFilter","cache","cacheKey","cacheKeyProp","collectionSlug","enabled","filterByCollections","initialData","limit","parentFieldName","parentId","typeFieldName","useAsTitle","filterKey","length","slice","sort","join","baseFilterKey","JSON","stringify","String","cachedData","current","get","parentKey","parentMeta","loadedParents","hasInitialData","initialDocsForParent","docs","filter","doc","docParent","children","setChildren","isLoading","setIsLoading","page","setPage","totalDocs","setTotalDocs","hasMore","setHasMore","initializedRef","childrenRef","isLoadingRef","config","routes","api","serverURL","branch","fetchPage","pageToFetch","currentChildren","parentCondition","or","exists","equals","filterCondition","in","not_in","undefined","where","queryParams","queryString","addQueryPrefix","url","apiRoute","path","response","fetch","credentials","ok","Error","data","json","allDocs","newDocs","newChildren","hasNextPage","set","emptyChildren","prevFilterKeyRef","load","currentCachedData","loadMore","shouldRefetchPage1","refresh","delete","effectiveChildren"],"sources":["../../../../src/elements/Hierarchy/Tree/useChildren.tsx"],"sourcesContent":["import type { Where } from 'payload'\n\nimport { combineWhereConstraints, formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { TreeCache, TreeDocument, TreeInitialData } from './types.js'\n\nimport { useBranchParam } from '../../../providers/Branch/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { isSuperset } from '../../../utilities/isSuperset.js'\n\ntype UseChildrenArgs = {\n allPossibleTypeValues?: string[]\n /** Base filter to apply to all queries (e.g., tenant filter) */\n baseFilter?: null | Where\n cache?: TreeCache\n /** Pre-computed cache key to ensure consistency with cache population */\n cacheKey?: string\n collectionSlug: string\n enabled?: boolean\n filterByCollections?: string[]\n initialData?: null | TreeInitialData\n limit?: number\n parentFieldName: string\n parentId: number | string\n typeFieldName?: null | string\n useAsTitle?: string\n}\n\ntype UseChildrenReturn = {\n children: null | TreeDocument[]\n hasMore: boolean\n isLoading: boolean\n /** Explicitly load children. Safe to call multiple times — no-ops if already loaded. */\n load: () => Promise<TreeDocument[]>\n loadMore: () => Promise<TreeDocument[]>\n refresh: () => Promise<TreeDocument[]>\n totalDocs: number\n}\n\nexport const useChildren = ({\n allPossibleTypeValues,\n baseFilter,\n cache,\n cacheKey: cacheKeyProp,\n collectionSlug,\n enabled = true,\n filterByCollections,\n initialData,\n limit = 2,\n parentFieldName,\n parentId,\n typeFieldName,\n useAsTitle,\n}: UseChildrenArgs): UseChildrenReturn => {\n const filterKey = filterByCollections?.length ? filterByCollections.slice().sort().join(',') : ''\n const baseFilterKey = baseFilter ? JSON.stringify(baseFilter) : ''\n // Use provided cacheKey for consistency with cache population, or compute if not provided\n const cacheKey =\n cacheKeyProp ?? `${collectionSlug}-${String(parentId)}-${filterKey}-${baseFilterKey}`\n const cachedData = cache?.current.get(cacheKey)\n\n // Check if we have initial data for this specific parent\n const parentKey = parentId === 'null' ? 'null' : String(parentId)\n const parentMeta = initialData?.loadedParents?.[parentKey]\n const hasInitialData = !!parentMeta\n\n // Extract docs for this parent from initialData if available\n // Apply same superset filter as fetchPage for consistency\n const initialDocsForParent = hasInitialData\n ? initialData.docs.filter((doc) => {\n const docParent = doc[parentFieldName] || 'null'\n if (String(docParent) !== parentKey) {\n return false\n }\n if (filterByCollections?.length && typeFieldName) {\n return isSuperset(doc[typeFieldName] as string[] | undefined, filterByCollections)\n }\n return true\n })\n : null\n\n const [children, setChildren] = useState<null | TreeDocument[]>(\n initialDocsForParent || cachedData?.children || null,\n )\n const [isLoading, setIsLoading] = useState(false)\n const [page, setPage] = useState(cachedData?.page || 1)\n const [totalDocs, setTotalDocs] = useState(parentMeta?.totalDocs || cachedData?.totalDocs || 0)\n const [hasMore, setHasMore] = useState(parentMeta?.hasMore || cachedData?.hasMore || false)\n const initializedRef = useRef(!!hasInitialData)\n // Refs for stable access inside load() without adding state to its dep array\n const childrenRef = useRef(children)\n childrenRef.current = children\n const isLoadingRef = useRef(isLoading)\n isLoadingRef.current = isLoading\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const branch = useBranchParam()\n\n const fetchPage = useCallback(\n async (\n pageToFetch: number,\n currentChildren: null | TreeDocument[],\n ): Promise<TreeDocument[]> => {\n setIsLoading(true)\n\n try {\n const parentCondition =\n parentId === 'null' || parentId === null\n ? {\n or: [\n { [parentFieldName]: { exists: false } },\n { [parentFieldName]: { equals: null } },\n ],\n }\n : { [parentFieldName]: { equals: parentId } }\n\n // Build filter condition for collection type filtering\n // Matches items that:\n // - allow ANY of the selected collections, OR\n // - are unrestricted (type field doesn't exist), OR\n // - have empty allowedTypes array (unrestricted)\n const filterCondition: undefined | Where =\n filterByCollections?.length && typeFieldName\n ? {\n or: [\n { [typeFieldName]: { in: filterByCollections } },\n { [typeFieldName]: { exists: false } },\n // Using not_in with all possible values matches empty arrays in both MongoDB and Postgres\n ...(allPossibleTypeValues?.length\n ? [{ [typeFieldName]: { not_in: allPossibleTypeValues } }]\n : []),\n ],\n }\n : undefined\n\n // Combine conditions: parent + filter + baseFilter\n const where = combineWhereConstraints([parentCondition, filterCondition, baseFilter])\n\n const queryParams: Record<string, unknown> = {\n branch,\n limit,\n page: pageToFetch,\n sort: useAsTitle ?? 'id',\n where,\n }\n\n const queryString = qs.stringify(queryParams, { addQueryPrefix: true })\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${queryString}`,\n serverURL,\n })\n const response = await fetch(url, {\n credentials: 'include',\n })\n\n if (!response.ok) {\n throw new Error('Failed to fetch children')\n }\n\n const data = await response.json()\n const allDocs: TreeDocument[] = data.docs || []\n\n // Client-side filter: only show items that are a superset of required collections\n // Server query uses ANY (due to PG limitations), but we want ALL (superset)\n const newDocs =\n filterByCollections?.length && typeFieldName\n ? allDocs.filter((doc) =>\n isSuperset(doc[typeFieldName] as string[] | undefined, filterByCollections),\n )\n : allDocs\n\n const newChildren = pageToFetch === 1 ? newDocs : [...(currentChildren || []), ...newDocs]\n\n setChildren(newChildren)\n setTotalDocs(data.totalDocs || 0)\n setHasMore(data.hasNextPage || false)\n setPage(pageToFetch)\n\n if (cache) {\n cache.current.set(cacheKey, {\n children: newChildren,\n hasMore: data.hasNextPage || false,\n page: pageToFetch,\n totalDocs: data.totalDocs || 0,\n })\n }\n\n return newDocs\n } catch {\n if (pageToFetch === 1) {\n const emptyChildren: TreeDocument[] = []\n setChildren(emptyChildren)\n setHasMore(false)\n\n if (cache) {\n cache.current.set(cacheKey, {\n children: emptyChildren,\n hasMore: false,\n page: 1,\n totalDocs: 0,\n })\n }\n }\n\n return []\n } finally {\n setIsLoading(false)\n }\n },\n [\n branch,\n allPossibleTypeValues,\n baseFilter,\n parentId,\n parentFieldName,\n filterByCollections,\n typeFieldName,\n limit,\n useAsTitle,\n api,\n collectionSlug,\n serverURL,\n cache,\n cacheKey,\n ],\n )\n\n // Reset state and reload when filter changes\n const prevFilterKeyRef = useRef(filterKey)\n useEffect(() => {\n if (prevFilterKeyRef.current !== filterKey) {\n prevFilterKeyRef.current = filterKey\n setChildren(null)\n setPage(1)\n setTotalDocs(0)\n setHasMore(false)\n // If the node is currently expanded, immediately reload with the new filter\n if (enabled) {\n void fetchPage(1, null)\n }\n }\n }, [filterKey, enabled, fetchPage])\n\n // Load children explicitly. Safe to call multiple times — no-ops if already loaded or loading.\n const load = useCallback(async (): Promise<TreeDocument[]> => {\n // Consume initialData on first call without re-fetching\n if (initializedRef.current && childrenRef.current !== null) {\n initializedRef.current = false\n return childrenRef.current\n }\n\n // Already loaded\n if (childrenRef.current !== null) {\n return childrenRef.current\n }\n\n // Guard against concurrent calls\n if (isLoadingRef.current) {\n return []\n }\n\n // Restore from cache when available (e.g., after a filter reset)\n const currentCachedData = cache?.current.get(cacheKey)\n if (currentCachedData) {\n setChildren(currentCachedData.children)\n setPage(currentCachedData.page)\n setTotalDocs(currentCachedData.totalDocs)\n setHasMore(currentCachedData.hasMore)\n return currentCachedData.children\n }\n\n return fetchPage(1, null)\n }, [cache, cacheKey, fetchPage])\n\n const loadMore = useCallback(async (): Promise<TreeDocument[]> => {\n if (isLoading || !hasMore) {\n return []\n }\n\n // If we have fewer items than our limit, the cached data was fetched with a smaller limit\n // We need to re-fetch page 1 with our limit to get the full first page\n const shouldRefetchPage1 = children && children.length < limit\n\n return fetchPage(shouldRefetchPage1 ? 1 : page + 1, children)\n }, [isLoading, hasMore, page, children, fetchPage, limit])\n\n const refresh = useCallback(async (): Promise<TreeDocument[]> => {\n if (cache) {\n cache.current.delete(cacheKey)\n }\n setChildren(null)\n setPage(1)\n return fetchPage(1, null)\n }, [cache, cacheKey, fetchPage])\n // If state hasn't been loaded yet, read directly from cache as a synchronous fallback.\n // Tree's useMemo pre-populates the cache before child TreeNodes render, so this eliminates\n // the brief null-children flash that occurs when a node becomes expanded after context updates.\n const effectiveChildren = children ?? cache?.current.get(cacheKey)?.children ?? null\n\n return { children: effectiveChildren, hasMore, isLoading, load, loadMore, refresh, totalDocs }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useChildren.js","names":["combineWhereConstraints","formatAdminURL","qs","useCallback","useEffect","useRef","useState","useConfig","isSuperset","useChildren","allPossibleTypeValues","baseFilter","cache","cacheKey","cacheKeyProp","collectionSlug","enabled","filterByCollections","initialData","limit","parentFieldName","parentId","typeFieldName","useAsTitle","filterKey","length","slice","sort","join","baseFilterKey","JSON","stringify","String","cachedData","current","get","parentKey","parentMeta","loadedParents","hasInitialData","initialDocsForParent","docs","filter","doc","docParent","children","setChildren","isLoading","setIsLoading","page","setPage","totalDocs","setTotalDocs","hasMore","setHasMore","initializedRef","childrenRef","isLoadingRef","config","routes","api","serverURL","fetchPage","pageToFetch","currentChildren","parentCondition","or","exists","equals","filterCondition","in","not_in","undefined","where","queryParams","queryString","addQueryPrefix","url","apiRoute","path","response","fetch","credentials","ok","Error","data","json","allDocs","newDocs","newChildren","hasNextPage","set","emptyChildren","prevFilterKeyRef","load","currentCachedData","loadMore","shouldRefetchPage1","refresh","delete","effectiveChildren"],"sources":["../../../../src/elements/Hierarchy/Tree/useChildren.tsx"],"sourcesContent":["import type { Where } from 'payload'\n\nimport { combineWhereConstraints, formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { TreeCache, TreeDocument, TreeInitialData } from './types.js'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { isSuperset } from '../../../utilities/isSuperset.js'\n\ntype UseChildrenArgs = {\n allPossibleTypeValues?: string[]\n /** Base filter to apply to all queries (e.g., tenant filter) */\n baseFilter?: null | Where\n cache?: TreeCache\n /** Pre-computed cache key to ensure consistency with cache population */\n cacheKey?: string\n collectionSlug: string\n enabled?: boolean\n filterByCollections?: string[]\n initialData?: null | TreeInitialData\n limit?: number\n parentFieldName: string\n parentId: number | string\n typeFieldName?: null | string\n useAsTitle?: string\n}\n\ntype UseChildrenReturn = {\n children: null | TreeDocument[]\n hasMore: boolean\n isLoading: boolean\n /** Explicitly load children. Safe to call multiple times — no-ops if already loaded. */\n load: () => Promise<TreeDocument[]>\n loadMore: () => Promise<TreeDocument[]>\n refresh: () => Promise<TreeDocument[]>\n totalDocs: number\n}\n\nexport const useChildren = ({\n allPossibleTypeValues,\n baseFilter,\n cache,\n cacheKey: cacheKeyProp,\n collectionSlug,\n enabled = true,\n filterByCollections,\n initialData,\n limit = 2,\n parentFieldName,\n parentId,\n typeFieldName,\n useAsTitle,\n}: UseChildrenArgs): UseChildrenReturn => {\n const filterKey = filterByCollections?.length ? filterByCollections.slice().sort().join(',') : ''\n const baseFilterKey = baseFilter ? JSON.stringify(baseFilter) : ''\n // Use provided cacheKey for consistency with cache population, or compute if not provided\n const cacheKey =\n cacheKeyProp ?? `${collectionSlug}-${String(parentId)}-${filterKey}-${baseFilterKey}`\n const cachedData = cache?.current.get(cacheKey)\n\n // Check if we have initial data for this specific parent\n const parentKey = parentId === 'null' ? 'null' : String(parentId)\n const parentMeta = initialData?.loadedParents?.[parentKey]\n const hasInitialData = !!parentMeta\n\n // Extract docs for this parent from initialData if available\n // Apply same superset filter as fetchPage for consistency\n const initialDocsForParent = hasInitialData\n ? initialData.docs.filter((doc) => {\n const docParent = doc[parentFieldName] || 'null'\n if (String(docParent) !== parentKey) {\n return false\n }\n if (filterByCollections?.length && typeFieldName) {\n return isSuperset(doc[typeFieldName] as string[] | undefined, filterByCollections)\n }\n return true\n })\n : null\n\n const [children, setChildren] = useState<null | TreeDocument[]>(\n initialDocsForParent || cachedData?.children || null,\n )\n const [isLoading, setIsLoading] = useState(false)\n const [page, setPage] = useState(cachedData?.page || 1)\n const [totalDocs, setTotalDocs] = useState(parentMeta?.totalDocs || cachedData?.totalDocs || 0)\n const [hasMore, setHasMore] = useState(parentMeta?.hasMore || cachedData?.hasMore || false)\n const initializedRef = useRef(!!hasInitialData)\n // Refs for stable access inside load() without adding state to its dep array\n const childrenRef = useRef(children)\n childrenRef.current = children\n const isLoadingRef = useRef(isLoading)\n isLoadingRef.current = isLoading\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const fetchPage = useCallback(\n async (\n pageToFetch: number,\n currentChildren: null | TreeDocument[],\n ): Promise<TreeDocument[]> => {\n setIsLoading(true)\n\n try {\n const parentCondition =\n parentId === 'null' || parentId === null\n ? {\n or: [\n { [parentFieldName]: { exists: false } },\n { [parentFieldName]: { equals: null } },\n ],\n }\n : { [parentFieldName]: { equals: parentId } }\n\n // Build filter condition for collection type filtering\n // Matches items that:\n // - allow ANY of the selected collections, OR\n // - are unrestricted (type field doesn't exist), OR\n // - have empty allowedTypes array (unrestricted)\n const filterCondition: undefined | Where =\n filterByCollections?.length && typeFieldName\n ? {\n or: [\n { [typeFieldName]: { in: filterByCollections } },\n { [typeFieldName]: { exists: false } },\n // Using not_in with all possible values matches empty arrays in both MongoDB and Postgres\n ...(allPossibleTypeValues?.length\n ? [{ [typeFieldName]: { not_in: allPossibleTypeValues } }]\n : []),\n ],\n }\n : undefined\n\n // Combine conditions: parent + filter + baseFilter\n const where = combineWhereConstraints([parentCondition, filterCondition, baseFilter])\n\n const queryParams: Record<string, unknown> = {\n limit,\n page: pageToFetch,\n sort: useAsTitle ?? 'id',\n where,\n }\n\n const queryString = qs.stringify(queryParams, { addQueryPrefix: true })\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${queryString}`,\n serverURL,\n })\n const response = await fetch(url, {\n credentials: 'include',\n })\n\n if (!response.ok) {\n throw new Error('Failed to fetch children')\n }\n\n const data = await response.json()\n const allDocs: TreeDocument[] = data.docs || []\n\n // Client-side filter: only show items that are a superset of required collections\n // Server query uses ANY (due to PG limitations), but we want ALL (superset)\n const newDocs =\n filterByCollections?.length && typeFieldName\n ? allDocs.filter((doc) =>\n isSuperset(doc[typeFieldName] as string[] | undefined, filterByCollections),\n )\n : allDocs\n\n const newChildren = pageToFetch === 1 ? newDocs : [...(currentChildren || []), ...newDocs]\n\n setChildren(newChildren)\n setTotalDocs(data.totalDocs || 0)\n setHasMore(data.hasNextPage || false)\n setPage(pageToFetch)\n\n if (cache) {\n cache.current.set(cacheKey, {\n children: newChildren,\n hasMore: data.hasNextPage || false,\n page: pageToFetch,\n totalDocs: data.totalDocs || 0,\n })\n }\n\n return newDocs\n } catch {\n if (pageToFetch === 1) {\n const emptyChildren: TreeDocument[] = []\n setChildren(emptyChildren)\n setHasMore(false)\n\n if (cache) {\n cache.current.set(cacheKey, {\n children: emptyChildren,\n hasMore: false,\n page: 1,\n totalDocs: 0,\n })\n }\n }\n\n return []\n } finally {\n setIsLoading(false)\n }\n },\n [\n allPossibleTypeValues,\n baseFilter,\n parentId,\n parentFieldName,\n filterByCollections,\n typeFieldName,\n limit,\n useAsTitle,\n api,\n collectionSlug,\n serverURL,\n cache,\n cacheKey,\n ],\n )\n\n // Reset state and reload when filter changes\n const prevFilterKeyRef = useRef(filterKey)\n useEffect(() => {\n if (prevFilterKeyRef.current !== filterKey) {\n prevFilterKeyRef.current = filterKey\n setChildren(null)\n setPage(1)\n setTotalDocs(0)\n setHasMore(false)\n // If the node is currently expanded, immediately reload with the new filter\n if (enabled) {\n void fetchPage(1, null)\n }\n }\n }, [filterKey, enabled, fetchPage])\n\n // Load children explicitly. Safe to call multiple times — no-ops if already loaded or loading.\n const load = useCallback(async (): Promise<TreeDocument[]> => {\n // Consume initialData on first call without re-fetching\n if (initializedRef.current && childrenRef.current !== null) {\n initializedRef.current = false\n return childrenRef.current\n }\n\n // Already loaded\n if (childrenRef.current !== null) {\n return childrenRef.current\n }\n\n // Guard against concurrent calls\n if (isLoadingRef.current) {\n return []\n }\n\n // Restore from cache when available (e.g., after a filter reset)\n const currentCachedData = cache?.current.get(cacheKey)\n if (currentCachedData) {\n setChildren(currentCachedData.children)\n setPage(currentCachedData.page)\n setTotalDocs(currentCachedData.totalDocs)\n setHasMore(currentCachedData.hasMore)\n return currentCachedData.children\n }\n\n return fetchPage(1, null)\n }, [cache, cacheKey, fetchPage])\n\n const loadMore = useCallback(async (): Promise<TreeDocument[]> => {\n if (isLoading || !hasMore) {\n return []\n }\n\n // If we have fewer items than our limit, the cached data was fetched with a smaller limit\n // We need to re-fetch page 1 with our limit to get the full first page\n const shouldRefetchPage1 = children && children.length < limit\n\n return fetchPage(shouldRefetchPage1 ? 1 : page + 1, children)\n }, [isLoading, hasMore, page, children, fetchPage, limit])\n\n const refresh = useCallback(async (): Promise<TreeDocument[]> => {\n if (cache) {\n cache.current.delete(cacheKey)\n }\n setChildren(null)\n setPage(1)\n return fetchPage(1, null)\n }, [cache, cacheKey, fetchPage])\n // If state hasn't been loaded yet, read directly from cache as a synchronous fallback.\n // Tree's useMemo pre-populates the cache before child TreeNodes render, so this eliminates\n // the brief null-children flash that occurs when a node becomes expanded after context updates.\n const effectiveChildren = children ?? cache?.current.get(cacheKey)?.children ?? null\n\n return { children: effectiveChildren, hasMore, isLoading, load, loadMore, refresh, totalDocs }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -18,12 +18,6 @@
|
|
|
18
18
|
white-space: nowrap;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
.id-label--is-link:hover,
|
|
22
|
-
a:not([aria-disabled='true']):hover > .id-label,
|
|
23
|
-
button:not(:disabled):hover > .id-label {
|
|
24
|
-
background: var(--color-bg-secondary-hover);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
21
|
.id-label__prefix {
|
|
28
22
|
color: var(--color-text-secondary);
|
|
29
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/IDLabel/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/IDLabel/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAyCjF,CAAA"}
|
|
@@ -12,7 +12,7 @@ import { useDrawerDepth } from '../Drawer/index.js';
|
|
|
12
12
|
import './index.css';
|
|
13
13
|
const baseClass = 'id-label';
|
|
14
14
|
export const IDLabel = t0 => {
|
|
15
|
-
const $ = _c(
|
|
15
|
+
const $ = _c(13);
|
|
16
16
|
const {
|
|
17
17
|
id,
|
|
18
18
|
className,
|
|
@@ -40,25 +40,22 @@ export const IDLabel = t0 => {
|
|
|
40
40
|
bb0: {
|
|
41
41
|
const sanitizedID = sanitizeID(id);
|
|
42
42
|
const shouldRenderLink = drawerDepth > 0 && (collectionSlug || globalSlug);
|
|
43
|
-
const t6 = shouldRenderLink && `${baseClass}--is-link`;
|
|
44
|
-
let t7;
|
|
45
|
-
if ($[9] !== className || $[10] !== t6) {
|
|
46
|
-
t7 = [baseClass, t6, className].filter(Boolean);
|
|
47
|
-
$[9] = className;
|
|
48
|
-
$[10] = t6;
|
|
49
|
-
$[11] = t7;
|
|
50
|
-
} else {
|
|
51
|
-
t7 = $[11];
|
|
52
|
-
}
|
|
53
|
-
const classes = t7.join(" ");
|
|
54
43
|
if (shouldRenderLink) {
|
|
55
44
|
const docPath = formatAdminURL({
|
|
56
45
|
adminRoute,
|
|
57
46
|
path: `/${collectionSlug ? `collections/${collectionSlug}` : `globals/${globalSlug}`}/${id}`
|
|
58
47
|
});
|
|
48
|
+
let t6;
|
|
49
|
+
if ($[9] !== className) {
|
|
50
|
+
t6 = [baseClass, className].filter(Boolean);
|
|
51
|
+
$[9] = className;
|
|
52
|
+
$[10] = t6;
|
|
53
|
+
} else {
|
|
54
|
+
t6 = $[10];
|
|
55
|
+
}
|
|
59
56
|
t5 = _jsxs("div", {
|
|
60
|
-
className:
|
|
61
|
-
title:
|
|
57
|
+
className: t6.join(" "),
|
|
58
|
+
title: id,
|
|
62
59
|
children: [_jsx("span", {
|
|
63
60
|
className: `${baseClass}__prefix`,
|
|
64
61
|
children: prefix
|
|
@@ -70,9 +67,17 @@ export const IDLabel = t0 => {
|
|
|
70
67
|
});
|
|
71
68
|
break bb0;
|
|
72
69
|
}
|
|
70
|
+
let t6;
|
|
71
|
+
if ($[11] !== className) {
|
|
72
|
+
t6 = [baseClass, className].filter(Boolean);
|
|
73
|
+
$[11] = className;
|
|
74
|
+
$[12] = t6;
|
|
75
|
+
} else {
|
|
76
|
+
t6 = $[12];
|
|
77
|
+
}
|
|
73
78
|
t4 = _jsxs("div", {
|
|
74
|
-
className:
|
|
75
|
-
title:
|
|
79
|
+
className: t6.join(" "),
|
|
80
|
+
title: id,
|
|
76
81
|
children: [_jsx("span", {
|
|
77
82
|
className: `${baseClass}__prefix`,
|
|
78
83
|
children: prefix
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","formatAdminURL","React","Link","useConfig","useDocumentInfo","sanitizeID","useDrawerDepth","baseClass","IDLabel","t0","$","id","className","prefix","t1","undefined","config","t2","routes","t3","admin","adminRoute","collectionSlug","globalSlug","drawerDepth","t4","t5","Symbol","for","sanitizedID","shouldRenderLink","
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","formatAdminURL","React","Link","useConfig","useDocumentInfo","sanitizeID","useDrawerDepth","baseClass","IDLabel","t0","$","id","className","prefix","t1","undefined","config","t2","routes","t3","admin","adminRoute","collectionSlug","globalSlug","drawerDepth","t4","t5","Symbol","for","sanitizedID","shouldRenderLink","docPath","path","t6","filter","Boolean","_jsxs","join","title","children","_jsx","href"],"sources":["../../../src/elements/IDLabel/index.tsx"],"sourcesContent":["'use client'\nimport { formatAdminURL } from 'payload/shared'\nimport React from 'react'\n\nimport { Link } from '../../elements/Link/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { sanitizeID } from '../../utilities/sanitizeID.js'\nimport { useDrawerDepth } from '../Drawer/index.js'\nimport './index.css'\n\nconst baseClass = 'id-label'\n\nexport const IDLabel: React.FC<{ className?: string; id: string; prefix?: string }> = ({\n id,\n className,\n prefix = 'ID',\n}) => {\n const {\n config: {\n routes: { admin: adminRoute },\n },\n } = useConfig()\n\n const { collectionSlug, globalSlug } = useDocumentInfo()\n const drawerDepth = useDrawerDepth()\n\n const sanitizedID = sanitizeID(id)\n\n // Only render as link if we're inside a drawer and have document context\n const shouldRenderLink = drawerDepth > 0 && (collectionSlug || globalSlug)\n\n if (shouldRenderLink) {\n const docPath = formatAdminURL({\n adminRoute,\n path: `/${collectionSlug ? `collections/${collectionSlug}` : `globals/${globalSlug}`}/${id}`,\n })\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')} title={id}>\n <span className={`${baseClass}__prefix`}>{prefix}</span>\n <Link className={`${baseClass}__link`} href={docPath}>\n {sanitizedID}\n </Link>\n </div>\n )\n }\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')} title={id}>\n <span className={`${baseClass}__prefix`}>{prefix}</span>\n <span className={`${baseClass}__value`}>{sanitizedID}</span>\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,MAAW;AAElB,SAASC,IAAI,QAAQ;AACrB,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,UAAU,QAAQ;AAC3B,SAASC,cAAc,QAAQ;AAC/B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,OAAA,GAAyEC,EAAA;EAAA,MAAAC,CAAA,GAAAX,EAAA;EAAC;IAAAY,EAAA;IAAAC,SAAA;IAAAC,MAAA,EAAAC;EAAA,IAAAL,EAItF;EADC,MAAAI,MAAA,GAAAC,EAAa,KAAAC,SAAA,GAAJ,IAAI,GAAbD,EAAa;EAEb;IAAAE,MAAA,EAAAC;EAAA,IAIId,SAAA;EAHM;IAAAe,MAAA,EAAAC;EAAA,IAAAF,EAEP;EADS;IAAAG,KAAA,EAAAC;EAAA,IAAAF,EAAqB;EAIjC;IAAAG,cAAA;IAAAC;EAAA,IAAuCnB,eAAA;EACvC,MAAAoB,WAAA,GAAoBlB,cAAA;EAAA,IAAAmB,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAhB,CAAA,QAAAW,UAAA,IAAAX,CAAA,QAAAE,SAAA,IAAAF,CAAA,QAAAY,cAAA,IAAAZ,CAAA,QAAAc,WAAA,IAAAd,CAAA,QAAAa,UAAA,IAAAb,CAAA,QAAAC,EAAA,IAAAD,CAAA,QAAAG,MAAA;IAchBa,EAAA,GAAAC,MAAA,CAAAC,GAAA,8B;;MAZJ,MAAAC,WAAA,GAAoBxB,UAAA,CAAWM,EAAA;MAG/B,MAAAmB,gBAAA,GAAyBN,WAAA,IAAc,KAAMF,cAAA,IAAkBC,UAAS;MAAA,IAEpEO,gBAAA;QACF,MAAAC,OAAA,GAAgB/B,cAAA;UAAAqB,UAAA;UAAAW,IAAA,EAER,IAAIV,cAAA,GAAiB,eAAeA,cAAA,EAAgB,GAAG,WAAWC,UAAA,EAAY,IAAIZ,EAAA;QAAI,CAC9F;QAAA,IAAAsB,EAAA;QAAA,IAAAvB,CAAA,QAAAE,SAAA;UAGkBqB,EAAA,IAAA1B,SAAA,EAAYK,SAAA,EAAAsB,MAAA,CAAAC,OAAkB;UAAAzB,CAAA,MAAAE,SAAA;UAAAF,CAAA,OAAAuB,EAAA;QAAA;UAAAA,EAAA,GAAAvB,CAAA;QAAA;QAA9CgB,EAAA,GAAAU,KAAA,CAAC;UAAAxB,SAAA,EAAeqB,EAA8B,CAAAI,IAAA,CAAc;UAAAC,KAAA,EAAa3B,EAAA;UAAA4B,QAAA,GACvEC,IAAA,CAAC;YAAA5B,SAAA,EAAgB,GAAAL,SAAA,UAAsB;YAAAgC,QAAA,EAAG1B;UAAA,C,GAC1C2B,IAAA,CAAAtC,IAAA;YAAAU,SAAA,EAAiB,GAAAL,SAAA,QAAoB;YAAAkC,IAAA,EAAQV,OAAA;YAAAQ,QAAA,EAC1CV;UAAA,C;;;;;;QAOSI,EAAA,IAAA1B,SAAA,EAAYK,SAAA,EAAAsB,MAAA,CAAAC,OAAkB;QAAAzB,CAAA,OAAAE,SAAA;QAAAF,CAAA,OAAAuB,EAAA;MAAA;QAAAA,EAAA,GAAAvB,CAAA;MAAA;MAA9Ce,EAAA,GAAAW,KAAA,CAAC;QAAAxB,SAAA,EAAeqB,EAA8B,CAAAI,IAAA,CAAc;QAAAC,KAAA,EAAa3B,EAAA;QAAA4B,QAAA,GACvEC,IAAA,CAAC;UAAA5B,SAAA,EAAgB,GAAAL,SAAA,UAAsB;UAAAgC,QAAA,EAAG1B;QAAA,C,GAC1C2B,IAAA,CAAC;UAAA5B,SAAA,EAAgB,GAAAL,SAAA,SAAqB;UAAAgC,QAAA,EAAGV;QAAA,C;;;;;;;;;;;;;;;;;;;SAF3CJ,E;CAKJ","ignoreList":[]}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import type { CollectionSlug } from 'payload';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
export declare function ListBulkUploadButton({ collectionSlug, hasCreatePermission, isBulkUploadEnabled, onBulkUploadSuccess, }: {
|
|
3
|
+
export declare function ListBulkUploadButton({ collectionSlug, hasCreatePermission, isBulkUploadEnabled, onBulkUploadSuccess, openBulkUpload: openBulkUploadFromProps, }: {
|
|
4
4
|
collectionSlug: CollectionSlug;
|
|
5
5
|
hasCreatePermission: boolean;
|
|
6
6
|
isBulkUploadEnabled: boolean;
|
|
7
7
|
onBulkUploadSuccess?: () => void;
|
|
8
|
+
/**
|
|
9
|
+
* @deprecated This prop will be removed in the next major version.
|
|
10
|
+
*
|
|
11
|
+
* Prefer using `onBulkUploadSuccess`
|
|
12
|
+
*/
|
|
13
|
+
openBulkUpload?: () => void;
|
|
8
14
|
}): React.JSX.Element;
|
|
9
15
|
//# sourceMappingURL=ListBulkUploadButton.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListBulkUploadButton.d.ts","sourceRoot":"","sources":["../../../../src/elements/ListHeader/TitleActions/ListBulkUploadButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAG7C,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,wBAAgB,oBAAoB,CAAC,EACnC,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"ListBulkUploadButton.d.ts","sourceRoot":"","sources":["../../../../src/elements/ListHeader/TitleActions/ListBulkUploadButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAG7C,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,wBAAgB,oBAAoB,CAAC,EACnC,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EAAE,uBAAuB,GACxC,EAAE;IACD,cAAc,EAAE,cAAc,CAAA;IAC9B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAA;IAChC;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;CAC5B,qBAuDA"}
|
|
@@ -10,12 +10,13 @@ import { useRouter } from '../../../providers/RouterAdapter/index.js';
|
|
|
10
10
|
import { useTranslation } from '../../../providers/Translation/index.js';
|
|
11
11
|
import { Button } from '../../Button/index.js';
|
|
12
12
|
export function ListBulkUploadButton(t0) {
|
|
13
|
-
const $ = _c(
|
|
13
|
+
const $ = _c(14);
|
|
14
14
|
const {
|
|
15
15
|
collectionSlug,
|
|
16
16
|
hasCreatePermission,
|
|
17
17
|
isBulkUploadEnabled,
|
|
18
|
-
onBulkUploadSuccess
|
|
18
|
+
onBulkUploadSuccess,
|
|
19
|
+
openBulkUpload: openBulkUploadFromProps
|
|
19
20
|
} = t0;
|
|
20
21
|
const {
|
|
21
22
|
modalSlug: bulkUploadModalSlug,
|
|
@@ -34,38 +35,43 @@ export function ListBulkUploadButton(t0) {
|
|
|
34
35
|
} = useModal();
|
|
35
36
|
const router = useRouter();
|
|
36
37
|
let t1;
|
|
37
|
-
if ($[0] !== bulkUploadModalSlug || $[1] !== collectionSlug || $[2] !== onBulkUploadSuccess || $[3] !==
|
|
38
|
+
if ($[0] !== bulkUploadModalSlug || $[1] !== collectionSlug || $[2] !== onBulkUploadSuccess || $[3] !== openBulkUploadFromProps || $[4] !== openModal || $[5] !== parent?.id || $[6] !== router || $[7] !== setCollectionSlug || $[8] !== setOnSuccess || $[9] !== setParentID) {
|
|
38
39
|
t1 = () => {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
40
|
+
if (typeof openBulkUploadFromProps === "function") {
|
|
41
|
+
openBulkUploadFromProps();
|
|
42
|
+
} else {
|
|
43
|
+
setCollectionSlug(collectionSlug);
|
|
44
|
+
setParentID(parent?.id);
|
|
45
|
+
openModal(bulkUploadModalSlug);
|
|
46
|
+
setOnSuccess(() => {
|
|
47
|
+
if (typeof onBulkUploadSuccess === "function") {
|
|
48
|
+
onBulkUploadSuccess();
|
|
49
|
+
} else {
|
|
50
|
+
router.refresh();
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
49
54
|
};
|
|
50
55
|
$[0] = bulkUploadModalSlug;
|
|
51
56
|
$[1] = collectionSlug;
|
|
52
57
|
$[2] = onBulkUploadSuccess;
|
|
53
|
-
$[3] =
|
|
54
|
-
$[4] =
|
|
55
|
-
$[5] =
|
|
56
|
-
$[6] =
|
|
57
|
-
$[7] =
|
|
58
|
-
$[8] =
|
|
59
|
-
$[9] =
|
|
58
|
+
$[3] = openBulkUploadFromProps;
|
|
59
|
+
$[4] = openModal;
|
|
60
|
+
$[5] = parent?.id;
|
|
61
|
+
$[6] = router;
|
|
62
|
+
$[7] = setCollectionSlug;
|
|
63
|
+
$[8] = setOnSuccess;
|
|
64
|
+
$[9] = setParentID;
|
|
65
|
+
$[10] = t1;
|
|
60
66
|
} else {
|
|
61
|
-
t1 = $[
|
|
67
|
+
t1 = $[10];
|
|
62
68
|
}
|
|
63
69
|
const openBulkUpload = t1;
|
|
64
70
|
if (!hasCreatePermission || !isBulkUploadEnabled) {
|
|
65
71
|
return null;
|
|
66
72
|
}
|
|
67
73
|
let t2;
|
|
68
|
-
if ($[
|
|
74
|
+
if ($[11] !== openBulkUpload || $[12] !== t) {
|
|
69
75
|
t2 = _jsx(Button, {
|
|
70
76
|
"aria-label": t("upload:bulkUpload"),
|
|
71
77
|
buttonStyle: "pill",
|
|
@@ -73,11 +79,11 @@ export function ListBulkUploadButton(t0) {
|
|
|
73
79
|
size: "medium",
|
|
74
80
|
children: t("upload:bulkUpload")
|
|
75
81
|
}, "bulk-upload-button");
|
|
76
|
-
$[
|
|
77
|
-
$[
|
|
78
|
-
$[
|
|
82
|
+
$[11] = openBulkUpload;
|
|
83
|
+
$[12] = t;
|
|
84
|
+
$[13] = t2;
|
|
79
85
|
} else {
|
|
80
|
-
t2 = $[
|
|
86
|
+
t2 = $[13];
|
|
81
87
|
}
|
|
82
88
|
return t2;
|
|
83
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListBulkUploadButton.js","names":["c","_c","useModal","React","useBulkUpload","useHierarchy","useRouter","useTranslation","Button","ListBulkUploadButton","t0","$","collectionSlug","hasCreatePermission","isBulkUploadEnabled","onBulkUploadSuccess","modalSlug","bulkUploadModalSlug","setCollectionSlug","setOnSuccess","setParentID","parent","t","openModal","router","t1","id","refresh","
|
|
1
|
+
{"version":3,"file":"ListBulkUploadButton.js","names":["c","_c","useModal","React","useBulkUpload","useHierarchy","useRouter","useTranslation","Button","ListBulkUploadButton","t0","$","collectionSlug","hasCreatePermission","isBulkUploadEnabled","onBulkUploadSuccess","openBulkUpload","openBulkUploadFromProps","modalSlug","bulkUploadModalSlug","setCollectionSlug","setOnSuccess","setParentID","parent","t","openModal","router","t1","id","refresh","t2","_jsx","buttonStyle","onClick","size","children"],"sources":["../../../../src/elements/ListHeader/TitleActions/ListBulkUploadButton.tsx"],"sourcesContent":["'use client'\nimport type { CollectionSlug } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React from 'react'\n\nimport { useBulkUpload } from '../../../elements/BulkUpload/index.js'\nimport { useHierarchy } from '../../../providers/Hierarchy/index.js'\nimport { useRouter } from '../../../providers/RouterAdapter/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\n\nexport function ListBulkUploadButton({\n collectionSlug,\n hasCreatePermission,\n isBulkUploadEnabled,\n onBulkUploadSuccess,\n openBulkUpload: openBulkUploadFromProps,\n}: {\n collectionSlug: CollectionSlug\n hasCreatePermission: boolean\n isBulkUploadEnabled: boolean\n onBulkUploadSuccess?: () => void\n /**\n * @deprecated This prop will be removed in the next major version.\n *\n * Prefer using `onBulkUploadSuccess`\n */\n openBulkUpload?: () => void\n}) {\n const {\n modalSlug: bulkUploadModalSlug,\n setCollectionSlug,\n setOnSuccess,\n setParentID,\n } = useBulkUpload()\n const { parent } = useHierarchy()\n const { t } = useTranslation()\n const { openModal } = useModal()\n const router = useRouter()\n\n const openBulkUpload = React.useCallback(() => {\n if (typeof openBulkUploadFromProps === 'function') {\n openBulkUploadFromProps()\n } else {\n setCollectionSlug(collectionSlug)\n setParentID(parent?.id)\n openModal(bulkUploadModalSlug)\n setOnSuccess(() => {\n if (typeof onBulkUploadSuccess === 'function') {\n onBulkUploadSuccess()\n } else {\n router.refresh()\n }\n })\n }\n }, [\n router,\n collectionSlug,\n bulkUploadModalSlug,\n parent,\n openModal,\n setCollectionSlug,\n setParentID,\n setOnSuccess,\n onBulkUploadSuccess,\n openBulkUploadFromProps,\n ])\n\n if (!hasCreatePermission || !isBulkUploadEnabled) {\n return null\n }\n\n return (\n <Button\n aria-label={t('upload:bulkUpload')}\n buttonStyle=\"pill\"\n key=\"bulk-upload-button\"\n onClick={openBulkUpload}\n size=\"medium\"\n >\n {t('upload:bulkUpload')}\n </Button>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,QAAQ,QAAQ;AACzB,OAAOC,KAAA,MAAW;AAElB,SAASC,aAAa,QAAQ;AAC9B,SAASC,YAAY,QAAQ;AAC7B,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AAEvB,OAAO,SAAAC,qBAAAC,EAAA;EAAA,MAAAC,CAAA,GAAAV,EAAA;EAA8B;IAAAW,cAAA;IAAAC,mBAAA;IAAAC,mBAAA;IAAAC,mBAAA;IAAAC,cAAA,EAAAC;EAAA,IAAAP,EAiBpC;EACC;IAAAQ,SAAA,EAAAC,mBAAA;IAAAC,iBAAA;IAAAC,YAAA;IAAAC;EAAA,IAKIlB,aAAA;EACJ;IAAAmB;EAAA,IAAmBlB,YAAA;EACnB;IAAAmB;EAAA,IAAcjB,cAAA;EACd;IAAAkB;EAAA,IAAsBvB,QAAA;EACtB,MAAAwB,MAAA,GAAepB,SAAA;EAAA,IAAAqB,EAAA;EAAA,IAAAhB,CAAA,QAAAQ,mBAAA,IAAAR,CAAA,QAAAC,cAAA,IAAAD,CAAA,QAAAI,mBAAA,IAAAJ,CAAA,QAAAM,uBAAA,IAAAN,CAAA,QAAAc,SAAA,IAAAd,CAAA,QAAAY,MAAA,EAAAK,EAAA,IAAAjB,CAAA,QAAAe,MAAA,IAAAf,CAAA,QAAAS,iBAAA,IAAAT,CAAA,QAAAU,YAAA,IAAAV,CAAA,QAAAW,WAAA;IAE0BK,EAAA,GAAAA,CAAA;MAAA,IACnC,OAAOV,uBAAA,KAA4B;QACrCA,uBAAA;MAAA;QAEAG,iBAAA,CAAkBR,cAAA;QAClBU,WAAA,CAAYC,MAAA,EAAAK,EAAQ;QACpBH,SAAA,CAAUN,mBAAA;QACVE,YAAA;UAAA,IACM,OAAON,mBAAA,KAAwB;YACjCA,mBAAA;UAAA;YAEAW,MAAA,CAAAG,OAAA,CAAc;UAAA;QAAA,CAElB;MAAA;IAAA;IAEJlB,CAAA,MAAAQ,mBAAA;IAAAR,CAAA,MAAAC,cAAA;IAAAD,CAAA,MAAAI,mBAAA;IAAAJ,CAAA,MAAAM,uBAAA;IAAAN,CAAA,MAAAc,SAAA;IAAAd,CAAA,MAAAY,MAAA,EAAAK,EAAA;IAAAjB,CAAA,MAAAe,MAAA;IAAAf,CAAA,MAAAS,iBAAA;IAAAT,CAAA,MAAAU,YAAA;IAAAV,CAAA,MAAAW,WAAA;IAAAX,CAAA,OAAAgB,EAAA;EAAA;IAAAA,EAAA,GAAAhB,CAAA;EAAA;EAfA,MAAAK,cAAA,GAAuBW,EA0BtB;EAAA,IAEG,CAACd,mBAAA,KAAwBC,mBAAA;IAAA;EAAA;EAAA,IAAAgB,EAAA;EAAA,IAAAnB,CAAA,SAAAK,cAAA,IAAAL,CAAA,SAAAa,CAAA;IAK3BM,EAAA,GAAAC,IAAA,CAAAvB,MAAA;MAAA,cACcgB,CAAA,CAAE;MAAAQ,WAAA,EACF;MAAAC,OAAA,EAEHjB,cAAA;MAAAkB,IAAA,EACJ;MAAAC,QAAA,EAEJX,CAAA,CAAE;IAAA,GAJC;IAAAb,CAAA,OAAAK,cAAA;IAAAL,CAAA,OAAAa,CAAA;IAAAb,CAAA,OAAAmB,EAAA;EAAA;IAAAA,EAAA,GAAAnB,CAAA;EAAA;EAAA,OAHNmB,EAGM;AAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListEmptyTrashButton.d.ts","sourceRoot":"","sources":["../../../../src/elements/ListHeader/TitleActions/ListEmptyTrashButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAMrD,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ListEmptyTrashButton.d.ts","sourceRoot":"","sources":["../../../../src/elements/ListHeader/TitleActions/ListEmptyTrashButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAMrD,OAAO,KAAK,MAAM,OAAO,CAAA;AAezB,wBAAgB,oBAAoB,CAAC,EACnC,gBAAgB,EAChB,mBAAmB,GACpB,EAAE;IACD,gBAAgB,EAAE,sBAAsB,CAAA;IACxC,mBAAmB,EAAE,OAAO,CAAA;CAC7B,qBA+KA"}
|
|
@@ -7,7 +7,6 @@ import { formatAdminURL } from 'payload/shared';
|
|
|
7
7
|
import * as qs from 'qs-esm';
|
|
8
8
|
import React from 'react';
|
|
9
9
|
import { toast } from 'sonner';
|
|
10
|
-
import { useBranchParam } from '../../../providers/Branch/index.js';
|
|
11
10
|
import { useConfig } from '../../../providers/Config/index.js';
|
|
12
11
|
import { useLocale } from '../../../providers/Locale/index.js';
|
|
13
12
|
import { useRouteCache } from '../../../providers/RouteCache/index.js';
|
|
@@ -29,7 +28,6 @@ export function ListEmptyTrashButton({
|
|
|
29
28
|
const {
|
|
30
29
|
code: locale
|
|
31
30
|
} = useLocale();
|
|
32
|
-
const branch = useBranchParam();
|
|
33
31
|
const {
|
|
34
32
|
config
|
|
35
33
|
} = useConfig();
|
|
@@ -45,7 +43,6 @@ export function ListEmptyTrashButton({
|
|
|
45
43
|
React.useEffect(() => {
|
|
46
44
|
const fetchTrashCount = async () => {
|
|
47
45
|
const queryString = qs.stringify({
|
|
48
|
-
branch,
|
|
49
46
|
depth: 0,
|
|
50
47
|
limit: 0,
|
|
51
48
|
locale,
|
|
@@ -75,7 +72,7 @@ export function ListEmptyTrashButton({
|
|
|
75
72
|
}
|
|
76
73
|
};
|
|
77
74
|
void fetchTrashCount();
|
|
78
|
-
}, [
|
|
75
|
+
}, [collectionConfig.slug, config, i18n.language, locale]);
|
|
79
76
|
const handleEmptyTrash = React.useCallback(async () => {
|
|
80
77
|
if (!hasDeletePermission) {
|
|
81
78
|
return;
|
|
@@ -85,7 +82,6 @@ export function ListEmptyTrashButton({
|
|
|
85
82
|
labels
|
|
86
83
|
} = collectionConfig;
|
|
87
84
|
const queryString_0 = qs.stringify({
|
|
88
|
-
branch,
|
|
89
85
|
limit: 0,
|
|
90
86
|
locale,
|
|
91
87
|
trash: true,
|
|
@@ -130,7 +126,7 @@ export function ListEmptyTrashButton({
|
|
|
130
126
|
} catch {
|
|
131
127
|
toast.error(t('error:unknown'));
|
|
132
128
|
}
|
|
133
|
-
}, [
|
|
129
|
+
}, [collectionConfig, config, hasDeletePermission, i18n, t, locale, searchParams, router, clearRouteCache]);
|
|
134
130
|
return /*#__PURE__*/_jsxs(React.Fragment, {
|
|
135
131
|
children: [/*#__PURE__*/_jsx(Button, {
|
|
136
132
|
"aria-label": t('general:emptyTrashLabel', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListEmptyTrashButton.js","names":["useModal","getTranslation","formatAdminURL","qs","React","toast","useBranchParam","useConfig","useLocale","useRouteCache","useRouter","useSearchParams","useTranslation","requests","Button","ConfirmationModal","Translation","confirmEmptyTrashSlug","ListEmptyTrashButton","collectionConfig","hasDeletePermission","i18n","t","code","locale","branch","config","openModal","router","searchParams","clearRouteCache","trashCount","setTrashCount","useState","useEffect","fetchTrashCount","queryString","stringify","depth","limit","trash","where","deletedAt","exists","addQueryPrefix","res","get","apiRoute","routes","api","path","slug","headers","language","json","totalDocs","handleEmptyTrash","useCallback","labels","delete","deletedCount","docs","length","status","success","count","label","plural","errors","error","message","description","map","err","join","replace","Object","fromEntries","entries","page","_jsxs","Fragment","_jsx","buttonStyle","disabled","id","onClick","size","body","elements","0","children","1","i18nKey","variables","singular","confirmingLabel","heading","modalSlug","onConfirm"],"sources":["../../../../src/elements/ListHeader/TitleActions/ListEmptyTrashButton.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { useBranchParam } from '../../../providers/Branch/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useRouteCache } from '../../../providers/RouteCache/index.js'\nimport { useRouter, useSearchParams } from '../../../providers/RouterAdapter/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { requests } from '../../../utilities/api.js'\nimport { Button } from '../../Button/index.js'\nimport { ConfirmationModal } from '../../ConfirmationModal/index.js'\nimport { Translation } from '../../Translation/index.js'\n\nconst confirmEmptyTrashSlug = 'confirm-empty-trash'\n\nexport function ListEmptyTrashButton({\n collectionConfig,\n hasDeletePermission,\n}: {\n collectionConfig: ClientCollectionConfig\n hasDeletePermission: boolean\n}) {\n const { i18n, t } = useTranslation()\n const { code: locale } = useLocale()\n const branch = useBranchParam()\n const { config } = useConfig()\n const { openModal } = useModal()\n const router = useRouter()\n const searchParams = useSearchParams()\n const { clearRouteCache } = useRouteCache()\n\n const [trashCount, setTrashCount] = React.useState<null | number>(null)\n\n React.useEffect(() => {\n const fetchTrashCount = async () => {\n const queryString = qs.stringify(\n {\n branch,\n depth: 0,\n limit: 0,\n locale,\n trash: true,\n where: {\n deletedAt: {\n exists: true,\n },\n },\n },\n { addQueryPrefix: true },\n )\n\n try {\n const res = await requests.get(\n formatAdminURL({\n apiRoute: config.routes.api,\n path: `/${collectionConfig.slug}${queryString}`,\n }),\n {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n },\n )\n\n const json = await res.json()\n setTrashCount(json?.totalDocs ?? 0)\n } catch {\n setTrashCount(0)\n }\n }\n\n void fetchTrashCount()\n }, [branch, collectionConfig.slug, config, i18n.language, locale])\n\n const handleEmptyTrash = React.useCallback(async () => {\n if (!hasDeletePermission) {\n return\n }\n\n const { slug, labels } = collectionConfig\n\n const queryString = qs.stringify(\n {\n branch,\n limit: 0,\n locale,\n trash: true,\n where: {\n deletedAt: {\n exists: true,\n },\n },\n },\n { addQueryPrefix: true },\n )\n\n const res = await requests.delete(\n formatAdminURL({\n apiRoute: config.routes.api,\n path: `/${slug}${queryString}`,\n }),\n {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n },\n )\n\n try {\n const json = await res.json()\n const deletedCount = json?.docs?.length || 0\n\n if (res.status < 400) {\n toast.success(\n t('general:permanentlyDeletedCountSuccessfully', {\n count: deletedCount,\n label: getTranslation(labels?.plural, i18n),\n }),\n )\n }\n\n if (json?.errors?.length > 0) {\n toast.error(json.message, {\n description: json.errors.map((err) => err.message).join('\\n'),\n })\n }\n\n router.replace(\n qs.stringify(\n {\n ...Object.fromEntries(searchParams.entries()),\n page: '1',\n },\n { addQueryPrefix: true },\n ),\n )\n\n clearRouteCache()\n } catch {\n toast.error(t('error:unknown'))\n }\n }, [\n branch,\n collectionConfig,\n config,\n hasDeletePermission,\n i18n,\n t,\n locale,\n searchParams,\n router,\n clearRouteCache,\n ])\n\n return (\n <React.Fragment>\n <Button\n aria-label={t('general:emptyTrashLabel', {\n label: getTranslation(collectionConfig?.labels?.plural, i18n),\n })}\n buttonStyle=\"pill\"\n disabled={trashCount === 0}\n id=\"empty-trash-button\"\n key=\"empty-trash-button\"\n onClick={() => {\n openModal(confirmEmptyTrashSlug)\n }}\n size=\"medium\"\n >\n {t('general:emptyTrash')}\n </Button>\n <ConfirmationModal\n body={\n <Translation\n elements={{\n '0': ({ children }) => <strong>{children}</strong>,\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToPermanentlyDeleteTrash\"\n t={t}\n variables={{\n count: trashCount ?? 0,\n label: getTranslation(\n trashCount === 1\n ? collectionConfig.labels?.singular\n : collectionConfig.labels?.plural,\n i18n,\n ),\n }}\n />\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={confirmEmptyTrashSlug}\n onConfirm={handleEmptyTrash}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ListEmptyTrashButton.js","names":["useModal","getTranslation","formatAdminURL","qs","React","toast","useConfig","useLocale","useRouteCache","useRouter","useSearchParams","useTranslation","requests","Button","ConfirmationModal","Translation","confirmEmptyTrashSlug","ListEmptyTrashButton","collectionConfig","hasDeletePermission","i18n","t","code","locale","config","openModal","router","searchParams","clearRouteCache","trashCount","setTrashCount","useState","useEffect","fetchTrashCount","queryString","stringify","depth","limit","trash","where","deletedAt","exists","addQueryPrefix","res","get","apiRoute","routes","api","path","slug","headers","language","json","totalDocs","handleEmptyTrash","useCallback","labels","delete","deletedCount","docs","length","status","success","count","label","plural","errors","error","message","description","map","err","join","replace","Object","fromEntries","entries","page","_jsxs","Fragment","_jsx","buttonStyle","disabled","id","onClick","size","body","elements","0","children","1","i18nKey","variables","singular","confirmingLabel","heading","modalSlug","onConfirm"],"sources":["../../../../src/elements/ListHeader/TitleActions/ListEmptyTrashButton.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useRouteCache } from '../../../providers/RouteCache/index.js'\nimport { useRouter, useSearchParams } from '../../../providers/RouterAdapter/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { requests } from '../../../utilities/api.js'\nimport { Button } from '../../Button/index.js'\nimport { ConfirmationModal } from '../../ConfirmationModal/index.js'\nimport { Translation } from '../../Translation/index.js'\n\nconst confirmEmptyTrashSlug = 'confirm-empty-trash'\n\nexport function ListEmptyTrashButton({\n collectionConfig,\n hasDeletePermission,\n}: {\n collectionConfig: ClientCollectionConfig\n hasDeletePermission: boolean\n}) {\n const { i18n, t } = useTranslation()\n const { code: locale } = useLocale()\n const { config } = useConfig()\n const { openModal } = useModal()\n const router = useRouter()\n const searchParams = useSearchParams()\n const { clearRouteCache } = useRouteCache()\n\n const [trashCount, setTrashCount] = React.useState<null | number>(null)\n\n React.useEffect(() => {\n const fetchTrashCount = async () => {\n const queryString = qs.stringify(\n {\n depth: 0,\n limit: 0,\n locale,\n trash: true,\n where: {\n deletedAt: {\n exists: true,\n },\n },\n },\n { addQueryPrefix: true },\n )\n\n try {\n const res = await requests.get(\n formatAdminURL({\n apiRoute: config.routes.api,\n path: `/${collectionConfig.slug}${queryString}`,\n }),\n {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n },\n )\n\n const json = await res.json()\n setTrashCount(json?.totalDocs ?? 0)\n } catch {\n setTrashCount(0)\n }\n }\n\n void fetchTrashCount()\n }, [collectionConfig.slug, config, i18n.language, locale])\n\n const handleEmptyTrash = React.useCallback(async () => {\n if (!hasDeletePermission) {\n return\n }\n\n const { slug, labels } = collectionConfig\n\n const queryString = qs.stringify(\n {\n limit: 0,\n locale,\n trash: true,\n where: {\n deletedAt: {\n exists: true,\n },\n },\n },\n { addQueryPrefix: true },\n )\n\n const res = await requests.delete(\n formatAdminURL({\n apiRoute: config.routes.api,\n path: `/${slug}${queryString}`,\n }),\n {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n },\n )\n\n try {\n const json = await res.json()\n const deletedCount = json?.docs?.length || 0\n\n if (res.status < 400) {\n toast.success(\n t('general:permanentlyDeletedCountSuccessfully', {\n count: deletedCount,\n label: getTranslation(labels?.plural, i18n),\n }),\n )\n }\n\n if (json?.errors?.length > 0) {\n toast.error(json.message, {\n description: json.errors.map((err) => err.message).join('\\n'),\n })\n }\n\n router.replace(\n qs.stringify(\n {\n ...Object.fromEntries(searchParams.entries()),\n page: '1',\n },\n { addQueryPrefix: true },\n ),\n )\n\n clearRouteCache()\n } catch {\n toast.error(t('error:unknown'))\n }\n }, [\n collectionConfig,\n config,\n hasDeletePermission,\n i18n,\n t,\n locale,\n searchParams,\n router,\n clearRouteCache,\n ])\n\n return (\n <React.Fragment>\n <Button\n aria-label={t('general:emptyTrashLabel', {\n label: getTranslation(collectionConfig?.labels?.plural, i18n),\n })}\n buttonStyle=\"pill\"\n disabled={trashCount === 0}\n id=\"empty-trash-button\"\n key=\"empty-trash-button\"\n onClick={() => {\n openModal(confirmEmptyTrashSlug)\n }}\n size=\"medium\"\n >\n {t('general:emptyTrash')}\n </Button>\n <ConfirmationModal\n body={\n <Translation\n elements={{\n '0': ({ children }) => <strong>{children}</strong>,\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToPermanentlyDeleteTrash\"\n t={t}\n variables={{\n count: trashCount ?? 0,\n label: getTranslation(\n trashCount === 1\n ? collectionConfig.labels?.singular\n : collectionConfig.labels?.plural,\n i18n,\n ),\n }}\n />\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={confirmEmptyTrashSlug}\n onConfirm={handleEmptyTrash}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/PermanentlyDeleteButton/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAMxD,OAAO,KAAgC,MAAM,OAAO,CAAA;AAGpD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/PermanentlyDeleteButton/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAMxD,OAAO,KAAgC,MAAM,OAAO,CAAA;AAGpD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAY9E,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAC1D,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAC,UAAU,CAAC,CAAA;IACzD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,aAAa,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAA;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAmJnD,CAAA"}
|
|
@@ -7,7 +7,6 @@ import { formatAdminURL } from 'payload/shared';
|
|
|
7
7
|
import * as qs from 'qs-esm';
|
|
8
8
|
import React, { Fragment, useCallback } from 'react';
|
|
9
9
|
import { toast } from 'sonner';
|
|
10
|
-
import { useBranchParam } from '../../providers/Branch/index.js';
|
|
11
10
|
import { useConfig } from '../../providers/Config/index.js';
|
|
12
11
|
import { useDocumentTitle } from '../../providers/DocumentTitle/index.js';
|
|
13
12
|
import { useRouter } from '../../providers/RouterAdapter/index.js';
|
|
@@ -45,7 +44,6 @@ export const PermanentlyDeleteButton = props => {
|
|
|
45
44
|
i18n,
|
|
46
45
|
t
|
|
47
46
|
} = useTranslation();
|
|
48
|
-
const branch = useBranchParam();
|
|
49
47
|
const {
|
|
50
48
|
title
|
|
51
49
|
} = useDocumentTitle();
|
|
@@ -66,7 +64,6 @@ export const PermanentlyDeleteButton = props => {
|
|
|
66
64
|
const url = formatAdminURL({
|
|
67
65
|
apiRoute: api,
|
|
68
66
|
path: `/${collectionSlug}${qs.stringify({
|
|
69
|
-
branch,
|
|
70
67
|
trash: true,
|
|
71
68
|
where: {
|
|
72
69
|
and: [{
|
|
@@ -118,7 +115,7 @@ export const PermanentlyDeleteButton = props => {
|
|
|
118
115
|
} catch (_err) {
|
|
119
116
|
addDefaultError();
|
|
120
117
|
}
|
|
121
|
-
}, [
|
|
118
|
+
}, [serverURL, api, collectionSlug, id, t, singularLabel, addDefaultError, i18n, title, router, adminRoute, redirectAfterDelete, onDelete, collectionConfig, startRouteTransition]);
|
|
122
119
|
if (id) {
|
|
123
120
|
return /*#__PURE__*/_jsxs(Fragment, {
|
|
124
121
|
children: [/*#__PURE__*/_jsx(Button, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useModal","getTranslation","formatAdminURL","qs","React","Fragment","useCallback","toast","
|
|
1
|
+
{"version":3,"file":"index.js","names":["useModal","getTranslation","formatAdminURL","qs","React","Fragment","useCallback","toast","useConfig","useDocumentTitle","useRouter","useRouteTransition","useTranslation","requests","Button","ConfirmationModal","Translation","PermanentlyDeleteButton","props","id","buttonId","collectionSlug","onDelete","redirectAfterDelete","singularLabel","title","titleFromProps","config","routes","admin","adminRoute","api","serverURL","getEntityConfig","collectionConfig","router","i18n","t","startRouteTransition","openModal","modalSlug","addDefaultError","error","handleDelete","url","apiRoute","path","stringify","trash","where","and","equals","deletedAt","exists","addQueryPrefix","res","delete","headers","language","json","status","success","label","message","push","errors","forEach","_err","_jsxs","_jsx","buttonStyle","onClick","body","elements","1","children","i18nKey","variables","confirmingLabel","heading","onConfirm"],"sources":["../../../src/elements/PermanentlyDeleteButton/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { Fragment, useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentTitle } from '../../providers/DocumentTitle/index.js'\nimport { useRouter } from '../../providers/RouterAdapter/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { Translation } from '../Translation/index.js'\n\nexport type Props = {\n readonly buttonId?: string\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n readonly id?: string\n readonly onDelete?: DocumentDrawerContextType['onDelete']\n readonly redirectAfterDelete?: boolean\n readonly singularLabel: SanitizedCollectionConfig['labels']['singular']\n readonly title?: string\n}\n\nexport const PermanentlyDeleteButton: React.FC<Props> = (props) => {\n const {\n id,\n buttonId,\n collectionSlug,\n onDelete,\n redirectAfterDelete = true,\n singularLabel,\n title: titleFromProps,\n } = props\n\n const {\n config: {\n routes: { admin: adminRoute, api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const { title } = useDocumentTitle()\n const { startRouteTransition } = useRouteTransition()\n const { openModal } = useModal()\n\n const modalSlug = `perma-delete-${id}`\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:deletingTitle', { title }))\n }, [t, title])\n\n const handleDelete = useCallback(async () => {\n try {\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${qs.stringify(\n {\n trash: true,\n where: {\n and: [{ id: { equals: id } }, { deletedAt: { exists: true } }],\n },\n },\n {\n addQueryPrefix: true,\n },\n )}`,\n })\n\n const res = await requests.delete(url, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n const json = await res.json()\n\n if (res.status < 400) {\n toast.success(\n t('general:titleDeleted', {\n label: getTranslation(singularLabel, i18n),\n title,\n }) || json.message,\n )\n\n if (redirectAfterDelete) {\n return startRouteTransition(() =>\n router.push(\n formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/trash`,\n serverURL,\n }),\n ),\n )\n }\n\n if (typeof onDelete === 'function') {\n await onDelete({ id, collectionConfig })\n }\n\n return\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n } catch (_err) {\n addDefaultError()\n }\n }, [\n serverURL,\n api,\n collectionSlug,\n id,\n t,\n singularLabel,\n addDefaultError,\n i18n,\n title,\n router,\n adminRoute,\n redirectAfterDelete,\n onDelete,\n collectionConfig,\n startRouteTransition,\n ])\n\n if (id) {\n return (\n <Fragment>\n <Button\n buttonStyle=\"secondary\"\n id={buttonId}\n onClick={() => {\n openModal(modalSlug)\n }}\n >\n {t('general:permanentlyDelete')}\n </Button>\n <ConfirmationModal\n body={\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToPermanentlyDelete\"\n t={t}\n variables={{\n label: getTranslation(singularLabel, i18n),\n title: titleFromProps || title || id,\n }}\n />\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={modalSlug}\n onConfirm={handleDelete}\n />\n </Fragment>\n )\n }\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
font-weight: var(--text-body-medium-font-weight);
|
|
52
52
|
letter-spacing: var(--text-body-medium-letter-spacing);
|
|
53
53
|
line-height: var(--text-body-medium-line-height);
|
|
54
|
-
padding: var(--spacer-1) var(--spacer-2);
|
|
54
|
+
padding: var(--spacer-1) var(--spacer-2) var(--spacer-1) var(--spacer-1);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
.popup-button-list__button:focus-visible {
|
|
@@ -113,7 +113,7 @@ export const Popup = props => {
|
|
|
113
113
|
const scrollY = useFixed ? 0 : window.scrollY;
|
|
114
114
|
const scrollX = useFixed ? 0 : window.scrollX;
|
|
115
115
|
// Gap between the popup and the trigger/viewport edges (in pixels)
|
|
116
|
-
const offset =
|
|
116
|
+
const offset = 10;
|
|
117
117
|
// Additional gap used in side mode so the child popup has breathing room from its parent
|
|
118
118
|
const sideOffset = 4;
|
|
119
119
|
let top;
|