@payloadcms/ui 4.0.0-internal.567a487 → 4.0.0-internal.5a4aa81
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 -4
- package/dist/elements/AppHeader/index.d.ts.map +1 -1
- package/dist/elements/AppHeader/index.js +1 -4
- 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 +2 -6
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/BulkUpload/AddFilesView/index.css +10 -4
- package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/AddFilesView/index.js +71 -51
- package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +4 -9
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/Button/index.d.ts.map +1 -1
- package/dist/elements/Button/index.js +2 -0
- package/dist/elements/Button/index.js.map +1 -1
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +10 -3
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js +345 -1
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.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 -84
- package/dist/elements/Combobox/index.d.ts +0 -21
- package/dist/elements/Combobox/index.d.ts.map +1 -1
- package/dist/elements/Combobox/index.js +21 -66
- package/dist/elements/Combobox/index.js.map +1 -1
- package/dist/elements/CopyLocaleData/index.d.ts.map +1 -1
- package/dist/elements/CopyLocaleData/index.js +8 -9
- package/dist/elements/CopyLocaleData/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 +3 -7
- package/dist/elements/DeleteMany/index.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/index.css +3 -5
- package/dist/elements/DocumentHeader/Tabs/tabs/index.d.ts.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/tabs/index.js +1 -32
- package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
- package/dist/elements/Dropzone/index.css +10 -4
- package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
- package/dist/elements/DuplicateDocument/index.js +3 -9
- 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 +3 -7
- package/dist/elements/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/FileManager/index.css +0 -30
- package/dist/elements/FileManager/index.d.ts.map +1 -1
- package/dist/elements/FileManager/index.js +379 -287
- package/dist/elements/FileManager/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 +3 -7
- 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 +2 -6
- 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/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +4 -9
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
- package/dist/elements/LivePreview/Window/index.js +1 -1
- package/dist/elements/LivePreview/Window/index.js.map +1 -1
- package/dist/elements/Localizer/index.js +1 -1
- package/dist/elements/Localizer/index.js.map +1 -1
- package/dist/elements/Nav/context.js +2 -2
- package/dist/elements/Nav/context.js.map +1 -1
- package/dist/elements/Nav/getNavPrefs.d.ts +0 -6
- package/dist/elements/Nav/getNavPrefs.d.ts.map +1 -1
- package/dist/elements/Nav/getNavPrefs.js +46 -14
- package/dist/elements/Nav/getNavPrefs.js.map +1 -1
- package/dist/elements/NavGroup/index.js +1 -1
- package/dist/elements/NavGroup/index.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/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.js +8 -30
- package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/types.d.ts +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/types.d.ts.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/types.js.map +1 -1
- package/dist/elements/PublishButton/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/index.js +7 -12
- 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 +3 -7
- package/dist/elements/PublishMany/DrawerContent.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 +2 -6
- package/dist/elements/RestoreMany/index.js.map +1 -1
- package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
- package/dist/elements/SaveDraftButton/index.js +4 -18
- package/dist/elements/SaveDraftButton/index.js.map +1 -1
- package/dist/elements/SchedulePublishButton/index.d.ts.map +1 -1
- package/dist/elements/SchedulePublishButton/index.js +1 -7
- package/dist/elements/SchedulePublishButton/index.js.map +1 -1
- package/dist/elements/Status/index.d.ts.map +1 -1
- package/dist/elements/Status/index.js +5 -19
- package/dist/elements/Status/index.js.map +1 -1
- package/dist/elements/StepNav/index.css +0 -7
- package/dist/elements/StepNav/index.d.ts.map +1 -1
- package/dist/elements/StepNav/index.js +24 -16
- package/dist/elements/StepNav/index.js.map +1 -1
- package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
- package/dist/elements/Table/OrderableTable.js +3 -6
- 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 +25 -32
- 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 +4 -8
- 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 +3 -7
- package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/Upload/UploadFromURLModal/index.d.ts +1 -1
- package/dist/elements/Upload/UploadFromURLModal/index.d.ts.map +1 -1
- package/dist/elements/Upload/UploadFromURLModal/index.js.map +1 -1
- package/dist/elements/Upload/index.css +39 -32
- package/dist/elements/Upload/index.d.ts.map +1 -1
- package/dist/elements/Upload/index.js +37 -99
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/elements/Upload/usePasteFromClipboard.d.ts +14 -0
- package/dist/elements/Upload/usePasteFromClipboard.d.ts.map +1 -0
- package/dist/elements/Upload/usePasteFromClipboard.js +93 -0
- package/dist/elements/Upload/usePasteFromClipboard.js.map +1 -0
- package/dist/elements/Upload/useUploadFromUrl.d.ts +20 -0
- package/dist/elements/Upload/useUploadFromUrl.d.ts.map +1 -0
- package/dist/elements/Upload/useUploadFromUrl.js +201 -0
- package/dist/elements/Upload/useUploadFromUrl.js.map +1 -0
- package/dist/elements/UploadDropzoneContent/index.css +31 -0
- package/dist/elements/UploadDropzoneContent/index.d.ts +17 -0
- package/dist/elements/UploadDropzoneContent/index.d.ts.map +1 -0
- package/dist/elements/UploadDropzoneContent/index.js +62 -0
- package/dist/elements/UploadDropzoneContent/index.js.map +1 -0
- package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js +1 -4
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
- package/dist/elements/WhereBuilder/conditionValue.d.ts +32 -0
- package/dist/elements/WhereBuilder/conditionValue.d.ts.map +1 -0
- package/dist/elements/WhereBuilder/conditionValue.js +32 -0
- package/dist/elements/WhereBuilder/conditionValue.js.map +1 -0
- package/dist/elements/WhereBuilder/conditionValue.spec.js +65 -0
- package/dist/elements/WhereBuilder/conditionValue.spec.js.map +1 -0
- package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/index.js +15 -4
- package/dist/elements/WhereBuilder/index.js.map +1 -1
- package/dist/exports/client/index.d.ts +0 -17
- 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/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js +2 -3
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +2 -3
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/FieldLabel/index.d.ts.map +1 -1
- package/dist/fields/FieldLabel/index.js +4 -5
- package/dist/fields/FieldLabel/index.js.map +1 -1
- package/dist/fields/Relationship/Input.d.ts.map +1 -1
- package/dist/fields/Relationship/Input.js +3 -8
- package/dist/fields/Relationship/Input.js.map +1 -1
- package/dist/fields/Slug/index.d.ts.map +1 -1
- package/dist/fields/Slug/index.js +2 -3
- package/dist/fields/Slug/index.js.map +1 -1
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +47 -23
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/fields/Upload/Input.spec.js +242 -0
- package/dist/fields/Upload/Input.spec.js.map +1 -0
- package/dist/fields/shared/index.d.ts +1 -1
- package/dist/fields/shared/index.d.ts.map +1 -1
- package/dist/fields/shared/index.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +2 -3
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/NullifyField/index.d.ts.map +1 -1
- package/dist/forms/NullifyField/index.js +2 -3
- package/dist/forms/NullifyField/index.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -0
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
- package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
- package/dist/hooks/usePayloadAPI.js +42 -47
- package/dist/hooks/usePayloadAPI.js.map +1 -1
- package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/index.js +3 -8
- 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/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 +1 -5
- package/dist/providers/Locale/index.d.ts.map +1 -1
- package/dist/providers/Locale/index.js +61 -139
- package/dist/providers/Locale/index.js.map +1 -1
- package/dist/providers/Preferences/index.d.ts +1 -3
- package/dist/providers/Preferences/index.d.ts.map +1 -1
- package/dist/providers/Preferences/index.js +3 -9
- package/dist/providers/Preferences/index.js.map +1 -1
- package/dist/providers/Selection/index.d.ts.map +1 -1
- package/dist/providers/Selection/index.js +2 -3
- package/dist/providers/Selection/index.js.map +1 -1
- package/dist/providers/ServerFunctions/index.d.ts +5 -1
- package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
- package/dist/providers/ServerFunctions/index.js +15 -0
- package/dist/providers/ServerFunctions/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/templates/Default/index.d.ts.map +1 -1
- package/dist/templates/Default/index.js +37 -43
- package/dist/templates/Default/index.js.map +1 -1
- package/dist/utilities/formatMetadata.d.ts.map +1 -1
- package/dist/utilities/formatMetadata.js +0 -5
- package/dist/utilities/formatMetadata.js.map +1 -1
- package/dist/utilities/getFilesFromClipboard.d.ts +10 -0
- package/dist/utilities/getFilesFromClipboard.d.ts.map +1 -0
- package/dist/utilities/getFilesFromClipboard.js +49 -0
- package/dist/utilities/getFilesFromClipboard.js.map +1 -0
- package/dist/utilities/getHasScheduledPublish.d.ts +2 -3
- package/dist/utilities/getHasScheduledPublish.d.ts.map +1 -1
- package/dist/utilities/getHasScheduledPublish.js +2 -5
- package/dist/utilities/getHasScheduledPublish.js.map +1 -1
- package/dist/utilities/getVersions.d.ts +1 -6
- package/dist/utilities/getVersions.d.ts.map +1 -1
- package/dist/utilities/getVersions.js +0 -5
- package/dist/utilities/getVersions.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/utilities/schedulePublishHandler.d.ts +8 -1
- package/dist/utilities/schedulePublishHandler.d.ts.map +1 -1
- package/dist/utilities/schedulePublishHandler.js +68 -14
- package/dist/utilities/schedulePublishHandler.js.map +1 -1
- package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
- package/dist/utilities/serverFunctionRegistry.js +2 -7
- package/dist/utilities/serverFunctionRegistry.js.map +1 -1
- package/dist/utilities/slugify.d.ts.map +1 -1
- package/dist/utilities/slugify.js +3 -0
- package/dist/utilities/slugify.js.map +1 -1
- package/dist/views/API/index.client.d.ts.map +1 -1
- package/dist/views/API/index.client.js +4 -13
- package/dist/views/API/index.client.js.map +1 -1
- package/dist/views/Document/getDocumentView.d.ts.map +1 -1
- package/dist/views/Document/getDocumentView.js +2 -21
- package/dist/views/Document/getDocumentView.js.map +1 -1
- package/dist/views/Document/getMetaBySegment.d.ts.map +1 -1
- package/dist/views/Document/getMetaBySegment.js +0 -9
- package/dist/views/Document/getMetaBySegment.js.map +1 -1
- package/dist/views/Document/index.d.ts +1 -3
- package/dist/views/Document/index.d.ts.map +1 -1
- package/dist/views/Document/index.js +2 -10
- package/dist/views/Document/index.js.map +1 -1
- package/dist/views/Edit/SetDocumentTitle/index.d.ts.map +1 -1
- package/dist/views/Edit/SetDocumentTitle/index.js +4 -1
- package/dist/views/Edit/SetDocumentTitle/index.js.map +1 -1
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +3 -2
- package/dist/views/Edit/index.js.map +1 -1
- 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/Root/getRouteData.d.ts.map +1 -1
- package/dist/views/Root/getRouteData.js +4 -12
- package/dist/views/Root/getRouteData.js.map +1 -1
- package/dist/views/Version/Default/SetStepNav.d.ts.map +1 -1
- package/dist/views/Version/Default/SetStepNav.js +10 -13
- package/dist/views/Version/Default/SetStepNav.js.map +1 -1
- package/dist/views/Version/Default/index.css +2 -26
- package/dist/views/Version/Default/index.d.ts.map +1 -1
- package/dist/views/Version/Default/index.js +18 -31
- package/dist/views/Version/Default/index.js.map +1 -1
- package/dist/views/Version/Default/types.d.ts +0 -9
- package/dist/views/Version/Default/types.d.ts.map +1 -1
- package/dist/views/Version/Default/types.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +0 -8
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.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/dist/views/Version/generateVersionViewMetadata.js.map +1 -1
- package/dist/views/Version/index.d.ts.map +1 -1
- package/dist/views/Version/index.js +0 -4
- package/dist/views/Version/index.js.map +1 -1
- package/dist/views/Versions/VersionPillLabel/VersionPillLabel.d.ts.map +1 -1
- package/dist/views/Versions/VersionPillLabel/VersionPillLabel.js +2 -3
- package/dist/views/Versions/VersionPillLabel/VersionPillLabel.js.map +1 -1
- package/dist/views/Versions/buildColumns.d.ts +1 -2
- package/dist/views/Versions/buildColumns.d.ts.map +1 -1
- package/dist/views/Versions/buildColumns.js +1 -21
- package/dist/views/Versions/buildColumns.js.map +1 -1
- package/dist/views/Versions/generateVersionsViewMetadata.js.map +1 -1
- package/dist/views/Versions/index.client.d.ts +1 -0
- package/dist/views/Versions/index.client.d.ts.map +1 -1
- package/dist/views/Versions/index.client.js.map +1 -1
- package/dist/views/Versions/index.d.ts.map +1 -1
- package/dist/views/Versions/index.js +14 -2
- package/dist/views/Versions/index.js.map +1 -1
- package/package.json +6 -5
- package/dist/elements/BranchSelector/NewBranchModal/index.css +0 -46
- package/dist/elements/BranchSelector/NewBranchModal/index.d.ts +0 -12
- package/dist/elements/BranchSelector/NewBranchModal/index.d.ts.map +0 -1
- package/dist/elements/BranchSelector/NewBranchModal/index.js +0 -174
- package/dist/elements/BranchSelector/NewBranchModal/index.js.map +0 -1
- package/dist/elements/BranchSelector/index.css +0 -172
- package/dist/elements/BranchSelector/index.d.ts +0 -13
- package/dist/elements/BranchSelector/index.d.ts.map +0 -1
- package/dist/elements/BranchSelector/index.js +0 -255
- package/dist/elements/BranchSelector/index.js.map +0 -1
- package/dist/elements/ChangeSummary/index.css +0 -18
- package/dist/elements/ChangeSummary/index.d.ts +0 -28
- package/dist/elements/ChangeSummary/index.d.ts.map +0 -1
- package/dist/elements/ChangeSummary/index.js +0 -147
- package/dist/elements/ChangeSummary/index.js.map +0 -1
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.css +0 -12
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.d.ts +0 -12
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.d.ts.map +0 -1
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.js +0 -83
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.js.map +0 -1
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.d.ts +0 -14
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.d.ts.map +0 -1
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.js +0 -28
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.js.map +0 -1
- package/dist/elements/MergeBranch/context.d.ts +0 -67
- package/dist/elements/MergeBranch/context.d.ts.map +0 -1
- package/dist/elements/MergeBranch/context.js +0 -47
- package/dist/elements/MergeBranch/context.js.map +0 -1
- package/dist/elements/MergeBranch/index.css +0 -136
- package/dist/elements/MergeBranch/index.d.ts +0 -15
- package/dist/elements/MergeBranch/index.d.ts.map +0 -1
- package/dist/elements/MergeBranch/index.js +0 -545
- package/dist/elements/MergeBranch/index.js.map +0 -1
- package/dist/elements/MergeBranch/provider.d.ts +0 -12
- package/dist/elements/MergeBranch/provider.d.ts.map +0 -1
- package/dist/elements/MergeBranch/provider.js +0 -19
- package/dist/elements/MergeBranch/provider.js.map +0 -1
- package/dist/elements/MergeBranch/slug.d.ts +0 -9
- package/dist/elements/MergeBranch/slug.d.ts.map +0 -1
- package/dist/elements/MergeBranch/slug.js +0 -8
- package/dist/elements/MergeBranch/slug.js.map +0 -1
- package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.css +0 -34
- package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.d.ts +0 -13
- package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.d.ts.map +0 -1
- package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.js +0 -51
- package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.js.map +0 -1
- package/dist/icons/Branch/index.css +0 -5
- package/dist/icons/Branch/index.d.ts +0 -7
- package/dist/icons/Branch/index.d.ts.map +0 -1
- package/dist/icons/Branch/index.js +0 -25
- package/dist/icons/Branch/index.js.map +0 -1
- package/dist/providers/Branch/index.d.ts +0 -68
- package/dist/providers/Branch/index.d.ts.map +0 -1
- package/dist/providers/Branch/index.js +0 -193
- 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 -125
- package/dist/providers/Branch/index.server.js.map +0 -1
- package/dist/utilities/getAdminPreferences.d.ts +0 -14
- package/dist/utilities/getAdminPreferences.d.ts.map +0 -1
- package/dist/utilities/getAdminPreferences.js +0 -22
- package/dist/utilities/getAdminPreferences.js.map +0 -1
- package/dist/utilities/getRequestBranch.d.ts +0 -20
- package/dist/utilities/getRequestBranch.d.ts.map +0 -1
- package/dist/utilities/getRequestBranch.js +0 -35
- 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
- package/dist/utilities/scheduleMergeHandler.d.ts +0 -33
- package/dist/utilities/scheduleMergeHandler.d.ts.map +0 -1
- package/dist/utilities/scheduleMergeHandler.js +0 -119
- package/dist/utilities/scheduleMergeHandler.js.map +0 -1
- package/dist/views/Branch/BranchChanges/index.d.ts +0 -23
- package/dist/views/Branch/BranchChanges/index.d.ts.map +0 -1
- package/dist/views/Branch/BranchChanges/index.js +0 -150
- package/dist/views/Branch/BranchChanges/index.js.map +0 -1
- package/dist/views/Branch/ChangedDocuments/index.css +0 -118
- package/dist/views/Branch/ChangedDocuments/index.d.ts +0 -34
- package/dist/views/Branch/ChangedDocuments/index.d.ts.map +0 -1
- package/dist/views/Branch/ChangedDocuments/index.js +0 -233
- package/dist/views/Branch/ChangedDocuments/index.js.map +0 -1
- package/dist/views/Branch/DiscardChangesButton/index.d.ts +0 -16
- package/dist/views/Branch/DiscardChangesButton/index.d.ts.map +0 -1
- package/dist/views/Branch/DiscardChangesButton/index.js +0 -106
- package/dist/views/Branch/DiscardChangesButton/index.js.map +0 -1
- package/dist/views/Branch/Manage/index.d.ts +0 -11
- package/dist/views/Branch/Manage/index.d.ts.map +0 -1
- package/dist/views/Branch/Manage/index.js +0 -71
- package/dist/views/Branch/Manage/index.js.map +0 -1
- package/dist/views/Branch/MergeChangesButton/index.d.ts +0 -14
- package/dist/views/Branch/MergeChangesButton/index.d.ts.map +0 -1
- package/dist/views/Branch/MergeChangesButton/index.js +0 -55
- package/dist/views/Branch/MergeChangesButton/index.js.map +0 -1
- package/dist/views/Branch/MergeLedger/index.css +0 -137
- package/dist/views/Branch/MergeLedger/index.d.ts +0 -31
- package/dist/views/Branch/MergeLedger/index.d.ts.map +0 -1
- package/dist/views/Branch/MergeLedger/index.js +0 -211
- package/dist/views/Branch/MergeLedger/index.js.map +0 -1
- package/dist/views/Branch/ScheduledMerges/index.css +0 -83
- package/dist/views/Branch/ScheduledMerges/index.d.ts +0 -32
- package/dist/views/Branch/ScheduledMerges/index.d.ts.map +0 -1
- package/dist/views/Branch/ScheduledMerges/index.js +0 -183
- package/dist/views/Branch/ScheduledMerges/index.js.map +0 -1
- package/dist/views/Branch/index.css +0 -77
- package/dist/views/Branch/index.d.ts +0 -17
- package/dist/views/Branch/index.d.ts.map +0 -1
- package/dist/views/Branch/index.js +0 -188
- package/dist/views/Branch/index.js.map +0 -1
- package/dist/views/Branch/renderBranchDiff.d.ts +0 -29
- package/dist/views/Branch/renderBranchDiff.d.ts.map +0 -1
- package/dist/views/Branch/renderBranchDiff.js +0 -151
- package/dist/views/Branch/renderBranchDiff.js.map +0 -1
- package/dist/views/Branch/renderMergeDiff.d.ts +0 -24
- package/dist/views/Branch/renderMergeDiff.d.ts.map +0 -1
- package/dist/views/Branch/renderMergeDiff.js +0 -94
- package/dist/views/Branch/renderMergeDiff.js.map +0 -1
- package/dist/views/Branches/index.d.ts +0 -16
- package/dist/views/Branches/index.d.ts.map +0 -1
- package/dist/views/Branches/index.js +0 -54
- package/dist/views/Branches/index.js.map +0 -1
- package/dist/views/Versions/cells/Branch/index.d.ts +0 -12
- package/dist/views/Versions/cells/Branch/index.d.ts.map +0 -1
- package/dist/views/Versions/cells/Branch/index.js +0 -27
- package/dist/views/Versions/cells/Branch/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useCallback","useLayoutEffect","useMemo","useRef","useState","SearchIcon","useTranslation","matchesSearchQuery","Popup","PopupList","baseClass","Combobox","props","ariaLabel","entries","footer","header","minEntriesForSearch","onSelect","onToggleClose","onToggleOpen","searchPlaceholder","showEmptyMessage","popupProps","t","searchValue","setSearchValue","isOpenRef","searchInputRef","contentRef","filteredEntries","filter","entry","label","name","query","showSearch","length","hasResults","lockedWidth","setLockedWidth","current","offsetWidth","handleToggleOpen","active","setTimeout","focus","handleToggleClose","_jsx","className","render","close","_jsxs","undefined","ref","style","size","onChange","e","target","value","placeholder","type","ButtonGroup","role","map","index","handleClick","onClick","onKeyDown","key","preventDefault","tabIndex","Component"],"sources":["../../../src/elements/Combobox/index.tsx"],"sourcesContent":["'use client'\nimport React, { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react'\n\nimport type { PopupProps } from '../Popup/index.js'\n\nimport { SearchIcon } from '../../icons/Search/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { matchesSearchQuery } from '../../utilities/matchesSearchQuery.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport './index.css'\n\nconst baseClass = 'combobox'\n\n/**\n * @internal\n * @experimental\n */\nexport type ComboboxEntry = {\n Component: React.ReactNode\n name: string\n}\n\n/**\n * @internal\n * @experimental\n */\nexport type ComboboxProps = {\n /** Accessible label for the list of entries */\n 'aria-label'?: string\n entries: ComboboxEntry[]\n /**\n * Pinned below the entries, outside the scroll area and unaffected by search.\n * For actions that belong to the list as a whole, such as \"create new\".\n */\n footer?: (args: { close: () => void }) => React.ReactNode\n /**\n * Pinned above the search, outside the scroll area and unaffected by it. For\n * the one entry the list is about, such as the item already selected.\n */\n header?: (args: { close: () => void }) => React.ReactNode\n /** Minimum number of entries required to show search */\n minEntriesForSearch?: number\n onSelect?: (entry: ComboboxEntry) => void\n searchPlaceholder?: string\n /**\n * Whether to say so when a search matches nothing.\n *\n * Off for a list that is empty to begin with: there is no search to have failed,\n * so the message describes something that did not happen.\n */\n showEmptyMessage?: boolean\n} & Omit<PopupProps, 'children' | 'render'>\n\n/**\n * A wrapper on top of Popup + PopupList.ButtonGroup that adds search functionality.\n *\n * @internal - this component may be removed or receive breaking changes in minor releases.\n * @experimental\n */\nexport const Combobox: React.FC<ComboboxProps> = (props) => {\n const {\n 'aria-label': ariaLabel,\n entries,\n footer,\n header,\n minEntriesForSearch = 8,\n onSelect,\n onToggleClose,\n onToggleOpen,\n searchPlaceholder = 'Search...',\n showEmptyMessage = true,\n ...popupProps\n } = props\n\n const { t } = useTranslation()\n const [searchValue, setSearchValue] = useState('')\n const isOpenRef = useRef(false)\n const searchInputRef = useRef<HTMLInputElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n\n const filteredEntries = useMemo(\n () => entries.filter((entry) => matchesSearchQuery({ label: entry.name, query: searchValue })),\n [entries, searchValue],\n )\n\n const showSearch = entries.length >= minEntriesForSearch\n const hasResults = filteredEntries.length > 0\n\n // Locking the width the moment searching begins keeps the popup from\n // resizing around the cursor as entries filter out from under it.\n const [lockedWidth, setLockedWidth] = useState<null | number>(null)\n\n useLayoutEffect(() => {\n if (!contentRef.current) {\n return\n }\n\n if (searchValue && lockedWidth === null) {\n setLockedWidth(contentRef.current.offsetWidth)\n } else if (!searchValue && lockedWidth !== null) {\n setLockedWidth(null)\n }\n }, [searchValue, lockedWidth])\n\n const handleToggleOpen = useCallback(\n (active: boolean) => {\n isOpenRef.current = active\n if (active && showSearch) {\n setTimeout(() => {\n searchInputRef.current?.focus()\n }, 100)\n }\n onToggleOpen?.(active)\n },\n [showSearch, onToggleOpen],\n )\n\n const handleToggleClose = useCallback(() => {\n isOpenRef.current = false\n setSearchValue('')\n setLockedWidth(null)\n onToggleClose?.()\n }, [onToggleClose])\n\n return (\n <Popup\n {...popupProps}\n className={`${baseClass} ${popupProps.className || ''}`}\n onToggleClose={handleToggleClose}\n onToggleOpen={handleToggleOpen}\n render={({ close }) => (\n <div\n className={`${baseClass}__content`}\n data-width-locked={lockedWidth ? 'true' : undefined}\n ref={contentRef}\n style={\n lockedWidth\n ? ({ '--combobox-locked-width': `${lockedWidth}px` } as React.CSSProperties)\n : undefined\n }\n >\n {header && <div className={`${baseClass}__header`}>{header({ close })}</div>}\n {showSearch && (\n <div className={`${baseClass}__search`}>\n <div className={`${baseClass}__search-bar`}>\n <SearchIcon size={24} />\n <input\n aria-label={searchPlaceholder}\n className={`${baseClass}__search-input`}\n onChange={(e) => setSearchValue(e.target.value)}\n placeholder={searchPlaceholder}\n ref={searchInputRef}\n type=\"text\"\n value={searchValue}\n />\n </div>\n </div>\n )}\n {hasResults ? (\n <PopupList.ButtonGroup className={`${baseClass}__entries`}>\n <div aria-label={ariaLabel} role=\"menu\">\n {filteredEntries.map((entry, index) => {\n const handleClick = () => {\n if (onSelect) {\n onSelect(entry)\n }\n close()\n }\n\n return (\n <div\n className={`${baseClass}__entry`}\n data-popup-prevent-close\n key={`${entry.name}-${index}`}\n onClick={handleClick}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n handleClick()\n }\n }}\n role=\"menuitem\"\n tabIndex={0}\n >\n {entry.Component}\n </div>\n )\n })}\n </div>\n </PopupList.ButtonGroup>\n ) : (\n showEmptyMessage && (\n <div className={`${baseClass}__no-results`}>{t('general:noMatchesFound')}</div>\n )\n )}\n {footer && <div className={`${baseClass}__footer`}>{footer({ close })}</div>}\n </div>\n )}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useMemo","useRef","useState","Popup","PopupList","baseClass","Combobox","props","ariaLabel","entries","minEntriesForSearch","onSelect","onToggleClose","onToggleOpen","searchPlaceholder","popupProps","searchValue","setSearchValue","isOpenRef","searchInputRef","filteredEntries","search","toLowerCase","filter","entry","name","includes","showSearch","length","hasResults","handleToggleOpen","useCallback","active","current","setTimeout","focus","handleToggleClose","_jsx","className","render","close","_jsxs","onChange","e","target","value","placeholder","ref","type","ButtonGroup","role","map","index","handleClick","onClick","onKeyDown","key","preventDefault","tabIndex","Component"],"sources":["../../../src/elements/Combobox/index.tsx"],"sourcesContent":["'use client'\nimport React, { useMemo, useRef, useState } from 'react'\n\nimport type { PopupProps } from '../Popup/index.js'\n\nimport { Popup, PopupList } from '../Popup/index.js'\nimport './index.css'\n\nconst baseClass = 'combobox'\n\n/**\n * @internal\n * @experimental\n */\nexport type ComboboxEntry = {\n Component: React.ReactNode\n name: string\n}\n\n/**\n * @internal\n * @experimental\n */\nexport type ComboboxProps = {\n /** Accessible label for the list of entries */\n 'aria-label'?: string\n entries: ComboboxEntry[]\n /** Minimum number of entries required to show search */\n minEntriesForSearch?: number\n onSelect?: (entry: ComboboxEntry) => void\n searchPlaceholder?: string\n} & Omit<PopupProps, 'children' | 'render'>\n\n/**\n * A wrapper on top of Popup + PopupList.ButtonGroup that adds search functionality.\n *\n * @internal - this component may be removed or receive breaking changes in minor releases.\n * @experimental\n */\nexport const Combobox: React.FC<ComboboxProps> = (props) => {\n const {\n 'aria-label': ariaLabel,\n entries,\n minEntriesForSearch = 8,\n onSelect,\n onToggleClose,\n onToggleOpen,\n searchPlaceholder = 'Search...',\n ...popupProps\n } = props\n const [searchValue, setSearchValue] = useState('')\n const isOpenRef = useRef(false)\n const searchInputRef = useRef<HTMLInputElement>(null)\n\n const filteredEntries = useMemo(() => {\n if (!searchValue) {\n return entries\n }\n const search = searchValue.toLowerCase()\n return entries.filter((entry) => entry.name.toLowerCase().includes(search))\n }, [entries, searchValue])\n\n const showSearch = entries.length >= minEntriesForSearch\n const hasResults = filteredEntries.length > 0\n\n const handleToggleOpen = React.useCallback(\n (active: boolean) => {\n isOpenRef.current = active\n if (active && showSearch) {\n setTimeout(() => {\n searchInputRef.current?.focus()\n }, 100)\n }\n onToggleOpen?.(active)\n },\n [showSearch, onToggleOpen],\n )\n\n const handleToggleClose = React.useCallback(() => {\n isOpenRef.current = false\n setSearchValue('')\n onToggleClose?.()\n }, [onToggleClose])\n\n return (\n <Popup\n {...popupProps}\n className={`${baseClass} ${popupProps.className || ''}`}\n onToggleClose={handleToggleClose}\n onToggleOpen={handleToggleOpen}\n render={({ close }) => (\n <div className={`${baseClass}__content`}>\n {showSearch && (\n <div\n className={`${baseClass}__search-wrapper${!hasResults ? ` ${baseClass}__search-wrapper--no-results` : ''}`}\n >\n <input\n aria-label={searchPlaceholder}\n className={`${baseClass}__search-input`}\n onChange={(e) => setSearchValue(e.target.value)}\n placeholder={searchPlaceholder}\n ref={searchInputRef}\n type=\"text\"\n value={searchValue}\n />\n </div>\n )}\n <PopupList.ButtonGroup>\n <div aria-label={ariaLabel} role=\"menu\">\n {filteredEntries.map((entry, index) => {\n const handleClick = () => {\n if (onSelect) {\n onSelect(entry)\n }\n close()\n }\n\n return (\n <div\n className={`${baseClass}__entry`}\n data-popup-prevent-close\n key={`${entry.name}-${index}`}\n onClick={handleClick}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n handleClick()\n }\n }}\n role=\"menuitem\"\n tabIndex={0}\n >\n {entry.Component}\n </div>\n )\n })}\n </div>\n </PopupList.ButtonGroup>\n </div>\n )}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/CopyLocaleData/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAiB1C,OAAO,aAAa,CAAA;AAKpB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/CopyLocaleData/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAiB1C,OAAO,aAAa,CAAA;AAKpB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAiMlC,CAAA"}
|
|
@@ -36,9 +36,8 @@ export const CopyLocaleData = () => {
|
|
|
36
36
|
const {
|
|
37
37
|
admin
|
|
38
38
|
} = t1;
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
} = useLocale();
|
|
39
|
+
const locale = useLocale();
|
|
40
|
+
const code = locale?.code;
|
|
42
41
|
const {
|
|
43
42
|
id,
|
|
44
43
|
collectionSlug,
|
|
@@ -62,7 +61,7 @@ export const CopyLocaleData = () => {
|
|
|
62
61
|
const localeOptions = localization && localization.locales.map(_temp) || [];
|
|
63
62
|
let t2;
|
|
64
63
|
if ($[0] !== code) {
|
|
65
|
-
t2 =
|
|
64
|
+
t2 = locale_1 => locale_1.value !== code;
|
|
66
65
|
$[0] = code;
|
|
67
66
|
$[1] = t2;
|
|
68
67
|
} else {
|
|
@@ -72,8 +71,8 @@ export const CopyLocaleData = () => {
|
|
|
72
71
|
let t3;
|
|
73
72
|
if ($[2] !== i18n || $[3] !== localization) {
|
|
74
73
|
t3 = code_0 => {
|
|
75
|
-
const
|
|
76
|
-
return
|
|
74
|
+
const locale_2 = localization && localization.locales.find(l => l.code === code_0);
|
|
75
|
+
return locale_2 && locale_2.label ? getTranslation(locale_2.label, i18n) : code_0;
|
|
77
76
|
};
|
|
78
77
|
$[2] = i18n;
|
|
79
78
|
$[3] = localization;
|
|
@@ -292,10 +291,10 @@ export const CopyLocaleData = () => {
|
|
|
292
291
|
})]
|
|
293
292
|
});
|
|
294
293
|
};
|
|
295
|
-
function _temp(
|
|
294
|
+
function _temp(locale_0) {
|
|
296
295
|
return {
|
|
297
|
-
label:
|
|
298
|
-
value:
|
|
296
|
+
label: locale_0.label,
|
|
297
|
+
value: locale_0.code
|
|
299
298
|
};
|
|
300
299
|
}
|
|
301
300
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useModal","getTranslation","formatAdminURL","React","useCallback","toast","CheckboxField","SelectInput","useFormModified","useConfig","useDocumentInfo","useLocale","useRouter","useRouteTransition","useServerFunctions","useTranslation","Button","Drawer","DrawerHeader","PopupList","baseClass","drawerSlug","CopyLocaleData","$","config","t0","localization","routes","t1","admin","code","id","collectionSlug","globalSlug","i18n","t","modified","toggleModal","copyDataFromLocale","router","startRouteTransition","localeOptions","locales","map","_temp","t2","locale_0","locale","value","localeOptionsWithoutCurrent","filter","t3","code_0","locale_1","find","l","label","getLocaleLabel","copying","setCopying","useState","toLocale","setToLocale","fromLocale","setFromLocale","overwriteExisting","setOverwriteExisting","t4","t5","useEffect","t6","t7","from","to","docID","overrideData","push","adminRoute","path","t8","error","errorMessage","message","translatedMessage","startsWith","copyLocaleData","info","t9","t10","Symbol","for","selectedOption","t11","selectedOption_0","t12","_jsxs","Fragment","children","_jsx","onClick","className","Header","onClose","title","buttonStyle","disabled","iconPosition","size","name","onChange","options","readOnly","checked","field"],"sources":["../../../src/elements/CopyLocaleData/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport { CheckboxField } from '../../fields/Checkbox/index.js'\nimport { SelectInput } from '../../fields/Select/index.js'\nimport { useFormModified } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useRouter } from '../../providers/RouterAdapter/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { DrawerHeader } from '../DrawerHeader/index.js'\nimport { PopupList } from '../Popup/index.js'\nimport './index.css'\n\nconst baseClass = 'copy-locale-data'\n\nconst drawerSlug = 'copy-locale'\nexport const CopyLocaleData: React.FC = () => {\n const {\n config: {\n localization,\n routes: { admin },\n },\n } = useConfig()\n const { code } = useLocale()\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n const { i18n, t } = useTranslation()\n const modified = useFormModified()\n const { toggleModal } = useModal()\n const { copyDataFromLocale } = useServerFunctions()\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n\n const localeOptions =\n (localization &&\n localization.locales.map((locale) => ({ label: locale.label, value: locale.code }))) ||\n []\n\n const localeOptionsWithoutCurrent = localeOptions.filter((locale) => locale.value !== code)\n\n const getLocaleLabel = (code: string) => {\n const locale = localization && localization.locales.find((l) => l.code === code)\n return locale && locale.label ? getTranslation(locale.label, i18n) : code\n }\n\n const [copying, setCopying] = React.useState(false)\n const [toLocale, setToLocale] = React.useState<null | string>(null)\n const [fromLocale, setFromLocale] = React.useState<null | string>(code)\n const [overwriteExisting, setOverwriteExisting] = React.useState(false)\n\n React.useEffect(() => {\n if (fromLocale !== code) {\n setFromLocale(code)\n }\n }, [code, fromLocale])\n\n const copyLocaleData = useCallback(\n async ({ from, to }) => {\n setCopying(true)\n\n try {\n await copyDataFromLocale({\n collectionSlug,\n docID: id,\n fromLocale: from,\n globalSlug,\n overrideData: overwriteExisting,\n toLocale: to,\n })\n\n setCopying(false)\n\n startRouteTransition(() =>\n router.push(\n formatAdminURL({\n adminRoute: admin,\n path: `/${collectionSlug ? `collections/${collectionSlug}/${id}` : `globals/${globalSlug}`}`,\n }) + `?locale=${to}`,\n ),\n )\n\n toggleModal(drawerSlug)\n } catch (error) {\n setCopying(false)\n const errorMessage = (error as Error).message || 'error:unknown'\n const translatedMessage = errorMessage.startsWith('error:')\n ? t(errorMessage as any)\n : errorMessage\n toast.error(translatedMessage)\n }\n },\n [\n copyDataFromLocale,\n collectionSlug,\n id,\n globalSlug,\n overwriteExisting,\n toggleModal,\n router,\n admin,\n startRouteTransition,\n t,\n ],\n )\n\n if (!id && !globalSlug) {\n return null\n }\n\n return (\n <React.Fragment>\n <PopupList.Button\n id={`${baseClass}__button`}\n onClick={() => {\n if (modified) {\n toast.info(t('general:unsavedChanges'))\n } else {\n toggleModal(drawerSlug)\n }\n }}\n >\n {t('localization:copyToLocale')}\n </PopupList.Button>\n <Drawer\n className={baseClass}\n Header={\n <DrawerHeader\n onClose={() => {\n toggleModal(drawerSlug)\n }}\n title={t('localization:copyToLocale')}\n />\n }\n slug={drawerSlug}\n >\n <div className={`${baseClass}__sub-header`}>\n <span>\n {fromLocale && toLocale ? (\n <div>\n {t('localization:copyFromTo', {\n from: getLocaleLabel(fromLocale),\n to: getLocaleLabel(toLocale),\n })}\n </div>\n ) : (\n t('localization:selectLocaleToCopy')\n )}\n </span>\n <Button\n buttonStyle=\"primary\"\n disabled={!fromLocale || !toLocale}\n iconPosition=\"left\"\n onClick={async () => {\n if (fromLocale === toLocale) {\n toast.error(t('localization:cannotCopySameLocale'))\n return\n }\n if (!copying) {\n await copyLocaleData({\n from: fromLocale,\n to: toLocale,\n })\n }\n }}\n size=\"medium\"\n >\n {copying ? t('general:copying') + '...' : t('general:copy')}\n </Button>\n </div>\n\n <div className={`${baseClass}__content`}>\n <SelectInput\n label={t('localization:copyFrom')}\n name={'fromLocale'}\n onChange={(selectedOption: { value: string }) => {\n if (selectedOption?.value) {\n setFromLocale(selectedOption.value)\n }\n }}\n options={localeOptions}\n path=\"fromLocale\"\n readOnly\n value={fromLocale}\n />\n <SelectInput\n label={t('localization:copyTo')}\n name=\"toLocale\"\n onChange={(selectedOption: { value: string }) => {\n if (selectedOption?.value) {\n setToLocale(selectedOption.value)\n }\n }}\n options={localeOptionsWithoutCurrent}\n path=\"toLocale\"\n value={toLocale}\n />\n <CheckboxField\n checked={overwriteExisting}\n field={{\n name: 'overwriteExisting',\n label: t('general:overwriteExistingData'),\n }}\n onChange={() => setOverwriteExisting(!overwriteExisting)}\n path={'overwriteExisting'}\n />\n </div>\n </Drawer>\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useModal","getTranslation","formatAdminURL","React","useCallback","toast","CheckboxField","SelectInput","useFormModified","useConfig","useDocumentInfo","useLocale","useRouter","useRouteTransition","useServerFunctions","useTranslation","Button","Drawer","DrawerHeader","PopupList","baseClass","drawerSlug","CopyLocaleData","$","config","t0","localization","routes","t1","admin","locale","code","id","collectionSlug","globalSlug","i18n","t","modified","toggleModal","copyDataFromLocale","router","startRouteTransition","localeOptions","locales","map","_temp","t2","locale_1","value","localeOptionsWithoutCurrent","filter","t3","code_0","locale_2","find","l","label","getLocaleLabel","copying","setCopying","useState","toLocale","setToLocale","fromLocale","setFromLocale","overwriteExisting","setOverwriteExisting","t4","t5","useEffect","t6","t7","from","to","docID","overrideData","push","adminRoute","path","t8","error","errorMessage","message","translatedMessage","startsWith","copyLocaleData","info","t9","t10","Symbol","for","selectedOption","t11","selectedOption_0","t12","_jsxs","Fragment","children","_jsx","onClick","className","Header","onClose","title","buttonStyle","disabled","iconPosition","size","name","onChange","options","readOnly","checked","field","locale_0"],"sources":["../../../src/elements/CopyLocaleData/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport { CheckboxField } from '../../fields/Checkbox/index.js'\nimport { SelectInput } from '../../fields/Select/index.js'\nimport { useFormModified } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useRouter } from '../../providers/RouterAdapter/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { DrawerHeader } from '../DrawerHeader/index.js'\nimport { PopupList } from '../Popup/index.js'\nimport './index.css'\n\nconst baseClass = 'copy-locale-data'\n\nconst drawerSlug = 'copy-locale'\nexport const CopyLocaleData: React.FC = () => {\n const {\n config: {\n localization,\n routes: { admin },\n },\n } = useConfig()\n const locale = useLocale()\n const code = locale?.code\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n const { i18n, t } = useTranslation()\n const modified = useFormModified()\n const { toggleModal } = useModal()\n const { copyDataFromLocale } = useServerFunctions()\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n\n const localeOptions =\n (localization &&\n localization.locales.map((locale) => ({ label: locale.label, value: locale.code }))) ||\n []\n\n const localeOptionsWithoutCurrent = localeOptions.filter((locale) => locale.value !== code)\n\n const getLocaleLabel = (code: string) => {\n const locale = localization && localization.locales.find((l) => l.code === code)\n return locale && locale.label ? getTranslation(locale.label, i18n) : code\n }\n\n const [copying, setCopying] = React.useState(false)\n const [toLocale, setToLocale] = React.useState<null | string>(null)\n const [fromLocale, setFromLocale] = React.useState<null | string>(code)\n const [overwriteExisting, setOverwriteExisting] = React.useState(false)\n\n React.useEffect(() => {\n if (fromLocale !== code) {\n setFromLocale(code)\n }\n }, [code, fromLocale])\n\n const copyLocaleData = useCallback(\n async ({ from, to }) => {\n setCopying(true)\n\n try {\n await copyDataFromLocale({\n collectionSlug,\n docID: id,\n fromLocale: from,\n globalSlug,\n overrideData: overwriteExisting,\n toLocale: to,\n })\n\n setCopying(false)\n\n startRouteTransition(() =>\n router.push(\n formatAdminURL({\n adminRoute: admin,\n path: `/${collectionSlug ? `collections/${collectionSlug}/${id}` : `globals/${globalSlug}`}`,\n }) + `?locale=${to}`,\n ),\n )\n\n toggleModal(drawerSlug)\n } catch (error) {\n setCopying(false)\n const errorMessage = (error as Error).message || 'error:unknown'\n const translatedMessage = errorMessage.startsWith('error:')\n ? t(errorMessage as any)\n : errorMessage\n toast.error(translatedMessage)\n }\n },\n [\n copyDataFromLocale,\n collectionSlug,\n id,\n globalSlug,\n overwriteExisting,\n toggleModal,\n router,\n admin,\n startRouteTransition,\n t,\n ],\n )\n\n if (!id && !globalSlug) {\n return null\n }\n\n return (\n <React.Fragment>\n <PopupList.Button\n id={`${baseClass}__button`}\n onClick={() => {\n if (modified) {\n toast.info(t('general:unsavedChanges'))\n } else {\n toggleModal(drawerSlug)\n }\n }}\n >\n {t('localization:copyToLocale')}\n </PopupList.Button>\n <Drawer\n className={baseClass}\n Header={\n <DrawerHeader\n onClose={() => {\n toggleModal(drawerSlug)\n }}\n title={t('localization:copyToLocale')}\n />\n }\n slug={drawerSlug}\n >\n <div className={`${baseClass}__sub-header`}>\n <span>\n {fromLocale && toLocale ? (\n <div>\n {t('localization:copyFromTo', {\n from: getLocaleLabel(fromLocale),\n to: getLocaleLabel(toLocale),\n })}\n </div>\n ) : (\n t('localization:selectLocaleToCopy')\n )}\n </span>\n <Button\n buttonStyle=\"primary\"\n disabled={!fromLocale || !toLocale}\n iconPosition=\"left\"\n onClick={async () => {\n if (fromLocale === toLocale) {\n toast.error(t('localization:cannotCopySameLocale'))\n return\n }\n if (!copying) {\n await copyLocaleData({\n from: fromLocale,\n to: toLocale,\n })\n }\n }}\n size=\"medium\"\n >\n {copying ? t('general:copying') + '...' : t('general:copy')}\n </Button>\n </div>\n\n <div className={`${baseClass}__content`}>\n <SelectInput\n label={t('localization:copyFrom')}\n name={'fromLocale'}\n onChange={(selectedOption: { value: string }) => {\n if (selectedOption?.value) {\n setFromLocale(selectedOption.value)\n }\n }}\n options={localeOptions}\n path=\"fromLocale\"\n readOnly\n value={fromLocale}\n />\n <SelectInput\n label={t('localization:copyTo')}\n name=\"toLocale\"\n onChange={(selectedOption: { value: string }) => {\n if (selectedOption?.value) {\n setToLocale(selectedOption.value)\n }\n }}\n options={localeOptionsWithoutCurrent}\n path=\"toLocale\"\n value={toLocale}\n />\n <CheckboxField\n checked={overwriteExisting}\n field={{\n name: 'overwriteExisting',\n label: t('general:overwriteExistingData'),\n }}\n onChange={() => setOverwriteExisting(!overwriteExisting)}\n path={'overwriteExisting'}\n />\n </div>\n </Drawer>\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/DeleteDocument/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DeleteDocument/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAKxD,OAAO,KAA0C,MAAM,OAAO,CAAA;AAG9D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAmB9E,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;IACvB,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;CACtE,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA4L1C,CAAA"}
|
|
@@ -4,12 +4,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
4
4
|
import { useModal } from '@faceless-ui/modal';
|
|
5
5
|
import { getTranslation } from '@payloadcms/translations';
|
|
6
6
|
import { formatAdminURL } from 'payload/shared';
|
|
7
|
-
import * as qs from 'qs-esm';
|
|
8
7
|
import React, { Fragment, useCallback, useState } from 'react';
|
|
9
8
|
import { toast } from 'sonner';
|
|
10
9
|
import { CheckboxInput } from '../../fields/Checkbox/Input.js';
|
|
11
10
|
import { useForm } from '../../forms/Form/context.js';
|
|
12
|
-
import { useBranchParam } from '../../providers/Branch/index.js';
|
|
13
11
|
import { useConfig } from '../../providers/Config/index.js';
|
|
14
12
|
import { useDocumentEvents } from '../../providers/DocumentEvents/index.js';
|
|
15
13
|
import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
|
|
@@ -57,7 +55,6 @@ export const DeleteDocument = props => {
|
|
|
57
55
|
i18n,
|
|
58
56
|
t
|
|
59
57
|
} = useTranslation();
|
|
60
|
-
const branch = useBranchParam();
|
|
61
58
|
const {
|
|
62
59
|
title
|
|
63
60
|
} = useDocumentTitle();
|
|
@@ -87,11 +84,7 @@ export const DeleteDocument = props => {
|
|
|
87
84
|
try {
|
|
88
85
|
const url = formatAdminURL({
|
|
89
86
|
apiRoute: api,
|
|
90
|
-
path: `/${collectionSlug}/${id}
|
|
91
|
-
branch
|
|
92
|
-
}, {
|
|
93
|
-
addQueryPrefix: true
|
|
94
|
-
})}`
|
|
87
|
+
path: `/${collectionSlug}/${id}`
|
|
95
88
|
});
|
|
96
89
|
const res = permanentlyDelete ? await requests.delete(url, {
|
|
97
90
|
headers: {
|
|
@@ -147,7 +140,7 @@ export const DeleteDocument = props => {
|
|
|
147
140
|
} catch (_err) {
|
|
148
141
|
return addDefaultError();
|
|
149
142
|
}
|
|
150
|
-
}, [
|
|
143
|
+
}, [deletePermanently, setModified, hasDeletePermission, hasTrashPermission, api, collectionSlug, id, t, singularLabel, addDefaultError, i18n, title, router, adminRoute, redirectAfterDelete, onDelete, collectionConfig, startRouteTransition, reportUpdate]);
|
|
151
144
|
if (id) {
|
|
152
145
|
return /*#__PURE__*/_jsxs(Fragment, {
|
|
153
146
|
children: [/*#__PURE__*/_jsx(PopupList.Button, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useModal","getTranslation","formatAdminURL","qs","React","Fragment","useCallback","useState","toast","CheckboxInput","useForm","useBranchParam","useConfig","useDocumentEvents","useDocumentInfo","useDocumentTitle","useRouter","useRouteTransition","useTranslation","requests","shouldPermanentlyDelete","ConfirmationModal","PopupList","Translation","baseClass","DeleteDocument","props","id","buttonId","collectionSlug","onDelete","redirectAfterDelete","singularLabel","title","titleFromProps","config","routes","admin","adminRoute","api","getEntityConfig","collectionConfig","hasDeletePermission","hasTrashPermission","setModified","router","i18n","t","branch","startRouteTransition","openModal","reportUpdate","modalSlug","deletePermanently","setDeletePermanently","addDefaultError","error","handleDelete","permanentlyDelete","url","apiRoute","path","stringify","addQueryPrefix","res","delete","headers","language","patch","body","JSON","deletedAt","Date","toISOString","json","status","success","label","message","deleteEvent","entitySlug","operation","updatedAt","push","errors","forEach","_err","_jsxs","_jsx","Button","onClick","elements","1","children","i18nKey","trash","variables","checked","name","onToggle","e","target","className","confirmingLabel","heading","onConfirm"],"sources":["../../../src/elements/DeleteDocument/index.tsx"],"sourcesContent":["'use client'\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, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { CheckboxInput } from '../../fields/Checkbox/Input.js'\nimport { useForm } from '../../forms/Form/context.js'\nimport { useBranchParam } from '../../providers/Branch/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/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 { shouldPermanentlyDelete } from '../../utilities/shouldPermanentlyDelete.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { PopupList } from '../Popup/index.js'\nimport { Translation } from '../Translation/index.js'\n\nconst baseClass = 'delete-document'\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 readonly useAsTitle: SanitizedCollectionConfig['admin']['useAsTitle']\n}\n\nexport const DeleteDocument: 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 },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const { hasDeletePermission, hasTrashPermission } = useDocumentInfo()\n const { setModified } = useForm()\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const branch = useBranchParam()\n const { title } = useDocumentTitle()\n const { startRouteTransition } = useRouteTransition()\n const { openModal } = useModal()\n const { reportUpdate } = useDocumentEvents()\n\n const modalSlug = `delete-${id}`\n\n const [deletePermanently, setDeletePermanently] = useState(false)\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:deletingTitle', { title }))\n }, [t, title])\n\n const handleDelete = useCallback(async () => {\n setModified(false)\n\n const permanentlyDelete = shouldPermanentlyDelete({\n deletePermanently,\n hasDeletePermission,\n hasTrashPermission,\n })\n\n try {\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}/${id}${qs.stringify({ branch }, { addQueryPrefix: true })}`,\n })\n const res = permanentlyDelete\n ? await requests.delete(url, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n : await requests.patch(url, {\n body: JSON.stringify({\n deletedAt: new Date().toISOString(),\n }),\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(permanentlyDelete ? 'general:titleDeleted' : 'general:titleTrashed', {\n label: getTranslation(singularLabel, i18n),\n title,\n }) || json.message,\n )\n\n // A trashed document also disappears from default queries, so both permanent\n // deletes and trashing report as a `delete` event.\n const deleteEvent = {\n id,\n entitySlug: collectionSlug,\n operation: 'delete' as const,\n updatedAt: new Date().toISOString(),\n }\n\n if (redirectAfterDelete) {\n // Navigating away tears this surface down, so just notify other surfaces.\n reportUpdate(deleteEvent)\n\n return startRouteTransition(() =>\n router.push(formatAdminURL({ adminRoute, path: `/collections/${collectionSlug}` })),\n )\n }\n\n if (typeof onDelete === 'function') {\n await onDelete({ id, collectionConfig })\n }\n\n reportUpdate(deleteEvent)\n\n return\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n\n return\n } catch (_err) {\n return addDefaultError()\n }\n }, [\n branch,\n deletePermanently,\n setModified,\n hasDeletePermission,\n hasTrashPermission,\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 reportUpdate,\n ])\n\n if (id) {\n return (\n <Fragment>\n <PopupList.Button\n id={buttonId}\n onClick={() => {\n openModal(modalSlug)\n }}\n >\n {t('general:delete')}\n </PopupList.Button>\n <ConfirmationModal\n body={\n <Fragment>\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey={\n collectionConfig.trash && hasTrashPermission\n ? 'general:aboutToTrash'\n : 'general:aboutToDelete'\n }\n t={t}\n variables={{\n label: getTranslation(singularLabel, i18n),\n title: titleFromProps || title || id,\n }}\n />\n {collectionConfig.trash && hasTrashPermission && hasDeletePermission && (\n <CheckboxInput\n checked={deletePermanently}\n id=\"delete-forever\"\n label={t('general:deletePermanently')}\n name=\"delete-forever\"\n onToggle={(e) => setDeletePermanently(e.target.checked)}\n />\n )}\n </Fragment>\n }\n className={baseClass}\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":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useModal","getTranslation","formatAdminURL","React","Fragment","useCallback","useState","toast","CheckboxInput","useForm","useConfig","useDocumentEvents","useDocumentInfo","useDocumentTitle","useRouter","useRouteTransition","useTranslation","requests","shouldPermanentlyDelete","ConfirmationModal","PopupList","Translation","baseClass","DeleteDocument","props","id","buttonId","collectionSlug","onDelete","redirectAfterDelete","singularLabel","title","titleFromProps","config","routes","admin","adminRoute","api","getEntityConfig","collectionConfig","hasDeletePermission","hasTrashPermission","setModified","router","i18n","t","startRouteTransition","openModal","reportUpdate","modalSlug","deletePermanently","setDeletePermanently","addDefaultError","error","handleDelete","permanentlyDelete","url","apiRoute","path","res","delete","headers","language","patch","body","JSON","stringify","deletedAt","Date","toISOString","json","status","success","label","message","deleteEvent","entitySlug","operation","updatedAt","push","errors","forEach","_err","_jsxs","_jsx","Button","onClick","elements","1","children","i18nKey","trash","variables","checked","name","onToggle","e","target","className","confirmingLabel","heading","onConfirm"],"sources":["../../../src/elements/DeleteDocument/index.tsx"],"sourcesContent":["'use client'\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { Fragment, useCallback, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { CheckboxInput } from '../../fields/Checkbox/Input.js'\nimport { useForm } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/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 { shouldPermanentlyDelete } from '../../utilities/shouldPermanentlyDelete.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { PopupList } from '../Popup/index.js'\nimport { Translation } from '../Translation/index.js'\n\nconst baseClass = 'delete-document'\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 readonly useAsTitle: SanitizedCollectionConfig['admin']['useAsTitle']\n}\n\nexport const DeleteDocument: 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 },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const { hasDeletePermission, hasTrashPermission } = useDocumentInfo()\n const { setModified } = useForm()\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const { title } = useDocumentTitle()\n const { startRouteTransition } = useRouteTransition()\n const { openModal } = useModal()\n const { reportUpdate } = useDocumentEvents()\n\n const modalSlug = `delete-${id}`\n\n const [deletePermanently, setDeletePermanently] = useState(false)\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:deletingTitle', { title }))\n }, [t, title])\n\n const handleDelete = useCallback(async () => {\n setModified(false)\n\n const permanentlyDelete = shouldPermanentlyDelete({\n deletePermanently,\n hasDeletePermission,\n hasTrashPermission,\n })\n\n try {\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}/${id}`,\n })\n const res = permanentlyDelete\n ? await requests.delete(url, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n : await requests.patch(url, {\n body: JSON.stringify({\n deletedAt: new Date().toISOString(),\n }),\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(permanentlyDelete ? 'general:titleDeleted' : 'general:titleTrashed', {\n label: getTranslation(singularLabel, i18n),\n title,\n }) || json.message,\n )\n\n // A trashed document also disappears from default queries, so both permanent\n // deletes and trashing report as a `delete` event.\n const deleteEvent = {\n id,\n entitySlug: collectionSlug,\n operation: 'delete' as const,\n updatedAt: new Date().toISOString(),\n }\n\n if (redirectAfterDelete) {\n // Navigating away tears this surface down, so just notify other surfaces.\n reportUpdate(deleteEvent)\n\n return startRouteTransition(() =>\n router.push(formatAdminURL({ adminRoute, path: `/collections/${collectionSlug}` })),\n )\n }\n\n if (typeof onDelete === 'function') {\n await onDelete({ id, collectionConfig })\n }\n\n reportUpdate(deleteEvent)\n\n return\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n\n return\n } catch (_err) {\n return addDefaultError()\n }\n }, [\n deletePermanently,\n setModified,\n hasDeletePermission,\n hasTrashPermission,\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 reportUpdate,\n ])\n\n if (id) {\n return (\n <Fragment>\n <PopupList.Button\n id={buttonId}\n onClick={() => {\n openModal(modalSlug)\n }}\n >\n {t('general:delete')}\n </PopupList.Button>\n <ConfirmationModal\n body={\n <Fragment>\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey={\n collectionConfig.trash && hasTrashPermission\n ? 'general:aboutToTrash'\n : 'general:aboutToDelete'\n }\n t={t}\n variables={{\n label: getTranslation(singularLabel, i18n),\n title: titleFromProps || title || id,\n }}\n />\n {collectionConfig.trash && hasTrashPermission && hasDeletePermission && (\n <CheckboxInput\n checked={deletePermanently}\n id=\"delete-forever\"\n label={t('general:deletePermanently')}\n name=\"delete-forever\"\n onToggle={(e) => setDeletePermanently(e.target.checked)}\n />\n )}\n </Fragment>\n }\n className={baseClass}\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":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DeleteMany/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAM/C,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DeleteMany/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAM/C,OAAO,KAAK,MAAM,OAAO,CAAA;AAazB,KAAK,iBAAiB,GAAG;IACvB,CAAC,UAAU,EAAE,MAAM,GAAG;QACpB,YAAY,EAAE,MAAM,CAAA;QACpB,MAAM,EAAE,OAAO,EAAE,CAAA;QACjB,GAAG,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;QACxB,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;CACF,CAAA;AACD,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACjD;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;OAKG;IACH,UAAU,EAAE;QACV,CAAC,UAAU,EAAE,MAAM,GAAG;YACpB,GAAG,CAAC,EAAE,OAAO,CAAA;YACb,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;YACzB,UAAU,CAAC,EAAE,MAAM,CAAA;SACpB,CAAA;KACF,CAAA;IACD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EACzB,WAAW,EACX,mBAA2B,EAC3B,kBAA0B,EAC1B,WAAW,EACX,MAAM,EACN,UAAU,EACV,KAAK,EACL,QAAQ,EACR,KAAK,GACN,EAAE,eAAe,qBA6QjB"}
|
|
@@ -8,7 +8,6 @@ import * as qs from 'qs-esm';
|
|
|
8
8
|
import React from 'react';
|
|
9
9
|
import { toast } from 'sonner';
|
|
10
10
|
import { CheckboxInput } from '../../fields/Checkbox/Input.js';
|
|
11
|
-
import { useBranchParam } from '../../providers/Branch/index.js';
|
|
12
11
|
import { useConfig } from '../../providers/Config/index.js';
|
|
13
12
|
import { useLocale } from '../../providers/Locale/index.js';
|
|
14
13
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
@@ -44,10 +43,8 @@ export function DeleteMany({
|
|
|
44
43
|
}
|
|
45
44
|
}
|
|
46
45
|
} = useConfig();
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
} = useLocale();
|
|
50
|
-
const branch = useBranchParam();
|
|
46
|
+
const currentLocale = useLocale();
|
|
47
|
+
const locale = currentLocale?.code;
|
|
51
48
|
const {
|
|
52
49
|
i18n
|
|
53
50
|
} = useTranslation();
|
|
@@ -112,7 +109,6 @@ export function DeleteMany({
|
|
|
112
109
|
const url = formatAdminURL({
|
|
113
110
|
apiRoute: api,
|
|
114
111
|
path: `/${relationTo}${qs.stringify({
|
|
115
|
-
branch,
|
|
116
112
|
limit: 0,
|
|
117
113
|
locale,
|
|
118
114
|
select: {},
|
|
@@ -201,7 +197,7 @@ export function DeleteMany({
|
|
|
201
197
|
if (typeof afterDelete === 'function') {
|
|
202
198
|
afterDelete(result);
|
|
203
199
|
}
|
|
204
|
-
}, [
|
|
200
|
+
}, [selections, afterDelete, collections, deletePermanently, hasDeletePermission, hasTrashPermission, locale, search, api, i18n, viewType, where, t]);
|
|
205
201
|
const {
|
|
206
202
|
label: labelString,
|
|
207
203
|
labelCount: labelCount_0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useModal","getTranslation","formatAdminURL","mergeListSearchAndWhere","qs","React","toast","CheckboxInput","useBranchParam","useConfig","useLocale","useTranslation","requests","shouldPermanentlyDelete","ConfirmationModal","ListSelectionButton","Translation","DeleteMany","afterDelete","hasDeletePermission","hasTrashPermission","modalPrefix","search","selections","trash","viewType","where","t","config","collections","routes","api","code","locale","branch","i18n","openModal","deletePermanently","setDeletePermanently","useState","confirmManyDeleteDrawerSlug","handleDelete","useCallback","deletingOneCollection","Object","keys","length","result","relationTo","all","ids","entries","collectionConfig","find","slug","whereConstraint","and","Array","isArray","deletedAt","exists","id","not_equals","in","url","apiRoute","path","stringify","limit","select","addQueryPrefix","permanentlyDelete","Boolean","isTrashView","deleteManyResponse","delete","headers","language","patch","body","JSON","Date","toISOString","plural","singular","labels","json","deletedDocs","docs","successLabel","status","successKey","success","count","label","errors","error","message","description","map","join","deletedCount","doc","totalCount","totalDocs","_err","labelString","labelCount","reduce","acc","key","value","index","array","undefined","collectionLabel","newLabel","_jsxs","Fragment","_jsx","className","onClick","elements","0","children","1","i18nKey","variables","checked","name","onToggle","e","target","confirmingLabel","heading","modalSlug","onConfirm"],"sources":["../../../src/elements/DeleteMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ViewTypes, Where } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL, mergeListSearchAndWhere } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { CheckboxInput } from '../../fields/Checkbox/Input.js'\nimport { useBranchParam } from '../../providers/Branch/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { shouldPermanentlyDelete } from '../../utilities/shouldPermanentlyDelete.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { ListSelectionButton } from '../ListSelection/index.js'\nimport { Translation } from '../Translation/index.js'\n\ntype AfterDeleteResult = {\n [relationTo: string]: {\n deletedCount: number\n errors: unknown[]\n ids: (number | string)[]\n totalCount: number\n }\n}\nexport type DeleteManyProps = {\n /**\n * A callback function to be called after the delete request is completed.\n */\n afterDelete?: (result: AfterDeleteResult) => void\n /**\n * Whether the user has permission to permanently delete documents.\n * When false, the \"delete permanently\" checkbox will be hidden.\n */\n hasDeletePermission?: boolean\n /**\n * Whether the user has permission to trash (soft delete) documents.\n * When false and hasDeletePermission is true, only permanent delete is available.\n */\n hasTrashPermission?: boolean\n /**\n * When multiple DeleteMany components are rendered on the page, this will differentiate them.\n */\n modalPrefix?: string\n /**\n * Optionally pass a search string to filter the documents to be deleted.\n *\n * This is intentionally passed as a prop so modals could pass in their own\n * search string that may not be stored in the URL.\n */\n search?: string\n /**\n * An object containing the relationTo as the key and an object with the following properties:\n * - all: boolean\n * - totalCount: number\n * - ids: (string | number)[]\n */\n selections: {\n [relationTo: string]: {\n all?: boolean\n ids?: (number | string)[]\n totalCount?: number\n }\n }\n trash?: boolean\n viewType?: ViewTypes\n /**\n * Optionally pass a where clause to filter the documents to be deleted.\n * This will be ignored if multiple relations are selected.\n *\n * This is intentionally passed as a prop so modals could pass in their own\n * where clause that may not be stored in the URL.\n */\n where?: Where\n}\n\n/**\n * Handles polymorphic document delete operations.\n *\n * If you are deleting monomorphic documents, shape your `selections` to match the polymorphic structure.\n */\nexport function DeleteMany({\n afterDelete,\n hasDeletePermission = false,\n hasTrashPermission = false,\n modalPrefix,\n search,\n selections,\n trash,\n viewType,\n where,\n}: DeleteManyProps) {\n const { t } = useTranslation()\n\n const {\n config: {\n collections,\n routes: { api },\n },\n } = useConfig()\n\n const { code: locale } = useLocale()\n const branch = useBranchParam()\n const { i18n } = useTranslation()\n const { openModal } = useModal()\n\n const [deletePermanently, setDeletePermanently] = React.useState(false)\n const confirmManyDeleteDrawerSlug = `${modalPrefix ? `${modalPrefix}-` : ''}confirm-delete-many-docs`\n\n const handleDelete = React.useCallback(async () => {\n const deletingOneCollection = Object.keys(selections).length === 1\n const result: AfterDeleteResult = {}\n\n for (const [relationTo, { all, ids = [] }] of Object.entries(selections)) {\n const collectionConfig = collections.find(({ slug }) => slug === relationTo)\n\n if (collectionConfig) {\n let whereConstraint: Where\n\n if (all) {\n // selecting all documents with optional where filter\n if (deletingOneCollection && where) {\n whereConstraint =\n viewType === 'trash'\n ? {\n and: [\n ...(Array.isArray(where.and) ? where.and : [where]),\n { deletedAt: { exists: true } },\n ],\n }\n : where\n } else {\n whereConstraint =\n viewType === 'trash'\n ? {\n and: [{ id: { not_equals: '' } }, { deletedAt: { exists: true } }],\n }\n : {\n id: { not_equals: '' },\n }\n }\n } else {\n // selecting specific documents\n whereConstraint = {\n and: [\n { id: { in: ids } },\n ...(viewType === 'trash' ? [{ deletedAt: { exists: true } }] : []),\n ],\n }\n }\n\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${relationTo}${qs.stringify(\n {\n branch,\n limit: 0,\n locale,\n select: {},\n where: mergeListSearchAndWhere({\n collectionConfig,\n search,\n where: whereConstraint,\n }),\n ...(viewType === 'trash' ? { trash: true } : {}),\n },\n { addQueryPrefix: true },\n )}`,\n })\n\n const permanentlyDelete = shouldPermanentlyDelete({\n deletePermanently,\n hasDeletePermission,\n hasTrashPermission: Boolean(collectionConfig.trash) && hasTrashPermission,\n isTrashView: viewType === 'trash',\n })\n\n const deleteManyResponse = permanentlyDelete\n ? await requests.delete(url, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n : await requests.patch(url, {\n body: JSON.stringify({\n deletedAt: new Date().toISOString(),\n }),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n try {\n const { plural, singular } = collectionConfig.labels\n const json = await deleteManyResponse.json()\n\n const deletedDocs = json?.docs.length || 0\n const successLabel = deletedDocs > 1 ? plural : singular\n\n if (deleteManyResponse.status < 400 || deletedDocs > 0) {\n let successKey:\n | 'general:deletedCountSuccessfully'\n | 'general:permanentlyDeletedCountSuccessfully'\n | 'general:trashedCountSuccessfully'\n\n if (!permanentlyDelete) {\n successKey = 'general:trashedCountSuccessfully'\n } else if (viewType === 'trash' || (hasDeletePermission && deletePermanently)) {\n successKey = 'general:permanentlyDeletedCountSuccessfully'\n } else {\n successKey = 'general:deletedCountSuccessfully'\n }\n\n toast.success(\n t(successKey, {\n count: deletedDocs,\n label: getTranslation(successLabel, i18n),\n }),\n )\n }\n\n if (json?.errors.length > 0) {\n toast.error(json.message, {\n description: json.errors.map((error) => error.message).join('\\n'),\n })\n }\n\n result[relationTo] = {\n deletedCount: deletedDocs,\n errors: json?.errors || null,\n ids: json?.docs.map((doc) => doc.id) || [],\n totalCount: json.totalDocs,\n }\n\n if (deleteManyResponse.status > 400 && json?.errors.length === 0) {\n toast.error(t('error:unknown'))\n result[relationTo].errors = [t('error:unknown')]\n }\n\n continue\n } catch (_err) {\n toast.error(t('error:unknown'))\n result[relationTo] = {\n deletedCount: 0,\n errors: [_err],\n ids: [],\n totalCount: 0,\n }\n continue\n }\n }\n }\n\n if (typeof afterDelete === 'function') {\n afterDelete(result)\n }\n }, [\n branch,\n selections,\n afterDelete,\n collections,\n deletePermanently,\n hasDeletePermission,\n hasTrashPermission,\n locale,\n search,\n api,\n i18n,\n viewType,\n where,\n t,\n ])\n\n const { label: labelString, labelCount } = Object.entries(selections).reduce(\n (acc, [key, value], index, array) => {\n const collectionConfig = collections.find(({ slug }) => slug === key)\n if (collectionConfig) {\n const labelCount = acc.labelCount === undefined ? value.totalCount : acc.labelCount\n const collectionLabel = `${acc.labelCount !== undefined ? `${value.totalCount} ` : ''}${getTranslation(\n value.totalCount > 1 ? collectionConfig.labels.plural : collectionConfig.labels.singular,\n i18n,\n )}`\n\n let newLabel\n\n if (index === array.length - 1 && index !== 0) {\n newLabel = `${acc.label} and ${collectionLabel}`\n } else if (index > 0) {\n newLabel = `${acc.label}, ${collectionLabel}`\n } else {\n newLabel = collectionLabel\n }\n\n return {\n label: newLabel,\n labelCount,\n }\n }\n return acc\n },\n {\n label: '',\n labelCount: undefined,\n },\n )\n\n return (\n <React.Fragment>\n <ListSelectionButton\n aria-label={t('general:delete')}\n className=\"delete-documents__toggle\"\n onClick={() => {\n openModal(confirmManyDeleteDrawerSlug)\n }}\n >\n {t('general:delete')}\n </ListSelectionButton>\n <ConfirmationModal\n body={\n <React.Fragment>\n <p>\n {trash && hasTrashPermission ? (\n viewType === 'trash' ? (\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: labelCount ?? 0,\n label: labelString,\n }}\n />\n ) : (\n t('general:aboutToTrashCount', { count: labelCount, label: labelString })\n )\n ) : (\n t('general:aboutToDeleteCount', { count: labelCount, label: labelString })\n )}\n </p>\n {trash && hasTrashPermission && hasDeletePermission && viewType !== 'trash' && (\n <CheckboxInput\n checked={deletePermanently}\n id=\"delete-forever\"\n label={t('general:deletePermanently')}\n name=\"delete-forever\"\n onToggle={(e) => setDeletePermanently(e.target.checked)}\n />\n )}\n </React.Fragment>\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={confirmManyDeleteDrawerSlug}\n onConfirm={handleDelete}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useModal","getTranslation","formatAdminURL","mergeListSearchAndWhere","qs","React","toast","CheckboxInput","useConfig","useLocale","useTranslation","requests","shouldPermanentlyDelete","ConfirmationModal","ListSelectionButton","Translation","DeleteMany","afterDelete","hasDeletePermission","hasTrashPermission","modalPrefix","search","selections","trash","viewType","where","t","config","collections","routes","api","currentLocale","locale","code","i18n","openModal","deletePermanently","setDeletePermanently","useState","confirmManyDeleteDrawerSlug","handleDelete","useCallback","deletingOneCollection","Object","keys","length","result","relationTo","all","ids","entries","collectionConfig","find","slug","whereConstraint","and","Array","isArray","deletedAt","exists","id","not_equals","in","url","apiRoute","path","stringify","limit","select","addQueryPrefix","permanentlyDelete","Boolean","isTrashView","deleteManyResponse","delete","headers","language","patch","body","JSON","Date","toISOString","plural","singular","labels","json","deletedDocs","docs","successLabel","status","successKey","success","count","label","errors","error","message","description","map","join","deletedCount","doc","totalCount","totalDocs","_err","labelString","labelCount","reduce","acc","key","value","index","array","undefined","collectionLabel","newLabel","_jsxs","Fragment","_jsx","className","onClick","elements","0","children","1","i18nKey","variables","checked","name","onToggle","e","target","confirmingLabel","heading","modalSlug","onConfirm"],"sources":["../../../src/elements/DeleteMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ViewTypes, Where } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL, mergeListSearchAndWhere } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { CheckboxInput } from '../../fields/Checkbox/Input.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { shouldPermanentlyDelete } from '../../utilities/shouldPermanentlyDelete.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { ListSelectionButton } from '../ListSelection/index.js'\nimport { Translation } from '../Translation/index.js'\n\ntype AfterDeleteResult = {\n [relationTo: string]: {\n deletedCount: number\n errors: unknown[]\n ids: (number | string)[]\n totalCount: number\n }\n}\nexport type DeleteManyProps = {\n /**\n * A callback function to be called after the delete request is completed.\n */\n afterDelete?: (result: AfterDeleteResult) => void\n /**\n * Whether the user has permission to permanently delete documents.\n * When false, the \"delete permanently\" checkbox will be hidden.\n */\n hasDeletePermission?: boolean\n /**\n * Whether the user has permission to trash (soft delete) documents.\n * When false and hasDeletePermission is true, only permanent delete is available.\n */\n hasTrashPermission?: boolean\n /**\n * When multiple DeleteMany components are rendered on the page, this will differentiate them.\n */\n modalPrefix?: string\n /**\n * Optionally pass a search string to filter the documents to be deleted.\n *\n * This is intentionally passed as a prop so modals could pass in their own\n * search string that may not be stored in the URL.\n */\n search?: string\n /**\n * An object containing the relationTo as the key and an object with the following properties:\n * - all: boolean\n * - totalCount: number\n * - ids: (string | number)[]\n */\n selections: {\n [relationTo: string]: {\n all?: boolean\n ids?: (number | string)[]\n totalCount?: number\n }\n }\n trash?: boolean\n viewType?: ViewTypes\n /**\n * Optionally pass a where clause to filter the documents to be deleted.\n * This will be ignored if multiple relations are selected.\n *\n * This is intentionally passed as a prop so modals could pass in their own\n * where clause that may not be stored in the URL.\n */\n where?: Where\n}\n\n/**\n * Handles polymorphic document delete operations.\n *\n * If you are deleting monomorphic documents, shape your `selections` to match the polymorphic structure.\n */\nexport function DeleteMany({\n afterDelete,\n hasDeletePermission = false,\n hasTrashPermission = false,\n modalPrefix,\n search,\n selections,\n trash,\n viewType,\n where,\n}: DeleteManyProps) {\n const { t } = useTranslation()\n\n const {\n config: {\n collections,\n routes: { api },\n },\n } = useConfig()\n\n const currentLocale = useLocale()\n const locale = currentLocale?.code\n const { i18n } = useTranslation()\n const { openModal } = useModal()\n\n const [deletePermanently, setDeletePermanently] = React.useState(false)\n const confirmManyDeleteDrawerSlug = `${modalPrefix ? `${modalPrefix}-` : ''}confirm-delete-many-docs`\n\n const handleDelete = React.useCallback(async () => {\n const deletingOneCollection = Object.keys(selections).length === 1\n const result: AfterDeleteResult = {}\n\n for (const [relationTo, { all, ids = [] }] of Object.entries(selections)) {\n const collectionConfig = collections.find(({ slug }) => slug === relationTo)\n\n if (collectionConfig) {\n let whereConstraint: Where\n\n if (all) {\n // selecting all documents with optional where filter\n if (deletingOneCollection && where) {\n whereConstraint =\n viewType === 'trash'\n ? {\n and: [\n ...(Array.isArray(where.and) ? where.and : [where]),\n { deletedAt: { exists: true } },\n ],\n }\n : where\n } else {\n whereConstraint =\n viewType === 'trash'\n ? {\n and: [{ id: { not_equals: '' } }, { deletedAt: { exists: true } }],\n }\n : {\n id: { not_equals: '' },\n }\n }\n } else {\n // selecting specific documents\n whereConstraint = {\n and: [\n { id: { in: ids } },\n ...(viewType === 'trash' ? [{ deletedAt: { exists: true } }] : []),\n ],\n }\n }\n\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${relationTo}${qs.stringify(\n {\n limit: 0,\n locale,\n select: {},\n where: mergeListSearchAndWhere({\n collectionConfig,\n search,\n where: whereConstraint,\n }),\n ...(viewType === 'trash' ? { trash: true } : {}),\n },\n { addQueryPrefix: true },\n )}`,\n })\n\n const permanentlyDelete = shouldPermanentlyDelete({\n deletePermanently,\n hasDeletePermission,\n hasTrashPermission: Boolean(collectionConfig.trash) && hasTrashPermission,\n isTrashView: viewType === 'trash',\n })\n\n const deleteManyResponse = permanentlyDelete\n ? await requests.delete(url, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n : await requests.patch(url, {\n body: JSON.stringify({\n deletedAt: new Date().toISOString(),\n }),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n try {\n const { plural, singular } = collectionConfig.labels\n const json = await deleteManyResponse.json()\n\n const deletedDocs = json?.docs.length || 0\n const successLabel = deletedDocs > 1 ? plural : singular\n\n if (deleteManyResponse.status < 400 || deletedDocs > 0) {\n let successKey:\n | 'general:deletedCountSuccessfully'\n | 'general:permanentlyDeletedCountSuccessfully'\n | 'general:trashedCountSuccessfully'\n\n if (!permanentlyDelete) {\n successKey = 'general:trashedCountSuccessfully'\n } else if (viewType === 'trash' || (hasDeletePermission && deletePermanently)) {\n successKey = 'general:permanentlyDeletedCountSuccessfully'\n } else {\n successKey = 'general:deletedCountSuccessfully'\n }\n\n toast.success(\n t(successKey, {\n count: deletedDocs,\n label: getTranslation(successLabel, i18n),\n }),\n )\n }\n\n if (json?.errors.length > 0) {\n toast.error(json.message, {\n description: json.errors.map((error) => error.message).join('\\n'),\n })\n }\n\n result[relationTo] = {\n deletedCount: deletedDocs,\n errors: json?.errors || null,\n ids: json?.docs.map((doc) => doc.id) || [],\n totalCount: json.totalDocs,\n }\n\n if (deleteManyResponse.status > 400 && json?.errors.length === 0) {\n toast.error(t('error:unknown'))\n result[relationTo].errors = [t('error:unknown')]\n }\n\n continue\n } catch (_err) {\n toast.error(t('error:unknown'))\n result[relationTo] = {\n deletedCount: 0,\n errors: [_err],\n ids: [],\n totalCount: 0,\n }\n continue\n }\n }\n }\n\n if (typeof afterDelete === 'function') {\n afterDelete(result)\n }\n }, [\n selections,\n afterDelete,\n collections,\n deletePermanently,\n hasDeletePermission,\n hasTrashPermission,\n locale,\n search,\n api,\n i18n,\n viewType,\n where,\n t,\n ])\n\n const { label: labelString, labelCount } = Object.entries(selections).reduce(\n (acc, [key, value], index, array) => {\n const collectionConfig = collections.find(({ slug }) => slug === key)\n if (collectionConfig) {\n const labelCount = acc.labelCount === undefined ? value.totalCount : acc.labelCount\n const collectionLabel = `${acc.labelCount !== undefined ? `${value.totalCount} ` : ''}${getTranslation(\n value.totalCount > 1 ? collectionConfig.labels.plural : collectionConfig.labels.singular,\n i18n,\n )}`\n\n let newLabel\n\n if (index === array.length - 1 && index !== 0) {\n newLabel = `${acc.label} and ${collectionLabel}`\n } else if (index > 0) {\n newLabel = `${acc.label}, ${collectionLabel}`\n } else {\n newLabel = collectionLabel\n }\n\n return {\n label: newLabel,\n labelCount,\n }\n }\n return acc\n },\n {\n label: '',\n labelCount: undefined,\n },\n )\n\n return (\n <React.Fragment>\n <ListSelectionButton\n aria-label={t('general:delete')}\n className=\"delete-documents__toggle\"\n onClick={() => {\n openModal(confirmManyDeleteDrawerSlug)\n }}\n >\n {t('general:delete')}\n </ListSelectionButton>\n <ConfirmationModal\n body={\n <React.Fragment>\n <p>\n {trash && hasTrashPermission ? (\n viewType === 'trash' ? (\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: labelCount ?? 0,\n label: labelString,\n }}\n />\n ) : (\n t('general:aboutToTrashCount', { count: labelCount, label: labelString })\n )\n ) : (\n t('general:aboutToDeleteCount', { count: labelCount, label: labelString })\n )}\n </p>\n {trash && hasTrashPermission && hasDeletePermission && viewType !== 'trash' && (\n <CheckboxInput\n checked={deletePermanently}\n id=\"delete-forever\"\n label={t('general:deletePermanently')}\n name=\"delete-forever\"\n onToggle={(e) => setDeletePermanently(e.target.checked)}\n />\n )}\n </React.Fragment>\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={confirmManyDeleteDrawerSlug}\n onConfirm={handleDelete}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -11,9 +11,7 @@
|
|
|
11
11
|
color: var(--color-text);
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
rather than sitting flat against the tab it lives in. */
|
|
16
|
-
.doc-tab:hover :is(.pill-version-count, .pill-branch-changes) {
|
|
14
|
+
.doc-tab:hover .pill-version-count {
|
|
17
15
|
background-color: var(--color-bg-tertiary);
|
|
18
16
|
color: var(--color-text);
|
|
19
17
|
}
|
|
@@ -22,12 +20,12 @@
|
|
|
22
20
|
color: var(--color-text);
|
|
23
21
|
}
|
|
24
22
|
|
|
25
|
-
.doc-tab--active
|
|
23
|
+
.doc-tab--active .pill-version-count {
|
|
26
24
|
background-color: var(--color-bg-tertiary);
|
|
27
25
|
color: var(--color-text);
|
|
28
26
|
}
|
|
29
27
|
|
|
30
|
-
.doc-tab--active:hover
|
|
28
|
+
.doc-tab--active:hover .pill-version-count {
|
|
31
29
|
background-color: var(--color-bg-tertiary);
|
|
32
30
|
color: var(--color-text);
|
|
33
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/DocumentHeader/Tabs/tabs/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/DocumentHeader/Tabs/tabs/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAKlG,eAAO,MAAM,gBAAgB,UAAgD,CAAA;AAE7E,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE/D,eAAO,MAAM,OAAO,wCAGjB;IACD,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,YAAY,CAAC,EAAE,qBAAqB,CAAA;CACrC,KAAG;IAAE,GAAG,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAqE/C,CAAA"}
|
|
@@ -1,42 +1,11 @@
|
|
|
1
|
-
import { branchesCollectionSlug } from 'payload/shared';
|
|
2
1
|
// eslint-disable-next-line payload/no-imports-from-exports-dir -- Server component must reference exports dir for proper client boundary
|
|
3
|
-
import {
|
|
4
|
-
import { BranchSettingsTab } from './BranchSettingsTab/index.js';
|
|
2
|
+
import { VersionsPill } from '../../../../exports/client/index.js';
|
|
5
3
|
export const documentViewKeys = ['api', 'default', 'livePreview', 'versions'];
|
|
6
4
|
export const getTabs = ({
|
|
7
5
|
collectionConfig,
|
|
8
6
|
globalConfig
|
|
9
7
|
}) => {
|
|
10
8
|
const customViews = collectionConfig?.admin?.components?.views?.edit || globalConfig?.admin?.components?.views?.edit || {};
|
|
11
|
-
// A branch gets its own two: what it changed, and its own fields behind a gear.
|
|
12
|
-
// No API tab and no versions — a branch record is bookkeeping, and its history
|
|
13
|
-
// is noise (the collection sets `versions: false`).
|
|
14
|
-
if (collectionConfig?.slug === branchesCollectionSlug) {
|
|
15
|
-
return [{
|
|
16
|
-
// `Pill_Component` is read by `DefaultDocumentTab` but absent from
|
|
17
|
-
// `DocumentTabConfig`; the versions tab relies on the same thing, and only
|
|
18
|
-
// gets away with it because `.concat` below erases the excess-property check.
|
|
19
|
-
tab: {
|
|
20
|
-
href: '',
|
|
21
|
-
label: ({
|
|
22
|
-
t
|
|
23
|
-
}) => t('branching:changedDocuments'),
|
|
24
|
-
order: 100,
|
|
25
|
-
Pill_Component: BranchChangesPill
|
|
26
|
-
},
|
|
27
|
-
viewPath: '/'
|
|
28
|
-
}, {
|
|
29
|
-
tab: {
|
|
30
|
-
// Typed as a component *path* because config-supplied tabs are resolved
|
|
31
|
-
// through the import map. `RenderServerComponent` takes a real component
|
|
32
|
-
// just as happily, which is what keeps this out of the import map.
|
|
33
|
-
Component: BranchSettingsTab,
|
|
34
|
-
href: '/manage',
|
|
35
|
-
order: 200
|
|
36
|
-
},
|
|
37
|
-
viewPath: '/manage'
|
|
38
|
-
}];
|
|
39
|
-
}
|
|
40
9
|
return [{
|
|
41
10
|
tab: {
|
|
42
11
|
href: '',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["
|
|
1
|
+
{"version":3,"file":"index.js","names":["VersionsPill","documentViewKeys","getTabs","collectionConfig","globalConfig","customViews","admin","components","views","edit","tab","href","label","t","order","viewPath","condition","permissions","Boolean","versions","collections","slug","readVersions","globals","Pill_Component","concat","Object","entries","reduce","acc","key","value","includes","push","path","sort","a","b","undefined"],"sources":["../../../../../src/elements/DocumentHeader/Tabs/tabs/index.tsx"],"sourcesContent":["import type { DocumentTabConfig, SanitizedCollectionConfig, SanitizedGlobalConfig } from 'payload'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir -- Server component must reference exports dir for proper client boundary\nimport { VersionsPill } from '../../../../exports/client/index.js'\n\nexport const documentViewKeys = ['api', 'default', 'livePreview', 'versions']\n\nexport type DocumentViewKey = (typeof documentViewKeys)[number]\n\nexport const getTabs = ({\n collectionConfig,\n globalConfig,\n}: {\n collectionConfig?: SanitizedCollectionConfig\n globalConfig?: SanitizedGlobalConfig\n}): { tab: DocumentTabConfig; viewPath: string }[] => {\n const customViews =\n collectionConfig?.admin?.components?.views?.edit ||\n globalConfig?.admin?.components?.views?.edit ||\n {}\n\n return [\n {\n tab: {\n href: '',\n label: ({ t }) => t('general:edit'),\n order: 100,\n ...(customViews?.['default']?.tab || {}),\n },\n viewPath: '/',\n },\n {\n tab: {\n condition: ({ collectionConfig, globalConfig, permissions }) =>\n Boolean(\n (collectionConfig?.versions &&\n permissions?.collections?.[collectionConfig?.slug]?.readVersions) ||\n (globalConfig?.versions && permissions?.globals?.[globalConfig?.slug]?.readVersions),\n ),\n href: '/versions',\n label: ({ t }) => t('version:versions'),\n order: 300,\n Pill_Component: VersionsPill,\n ...(customViews?.['versions']?.tab || {}),\n },\n viewPath: '/versions',\n },\n {\n tab: {\n href: '/api',\n label: 'API',\n order: 400,\n ...(customViews?.['api']?.tab || {}),\n },\n viewPath: '/api',\n },\n ]\n .concat(\n Object.entries(customViews).reduce((acc, [key, value]) => {\n if (documentViewKeys.includes(key)) {\n return acc\n }\n\n if (value?.tab) {\n acc.push({\n tab: value.tab,\n viewPath: 'path' in value ? value.path : '',\n })\n }\n\n return acc\n }, []),\n )\n ?.sort(({ tab: a }, { tab: b }) => {\n if (a.order === undefined && b.order === undefined) {\n return 0\n } else if (a.order === undefined) {\n return 1\n } else if (b.order === undefined) {\n return -1\n }\n\n return a.order - b.order\n })\n}\n"],"mappings":"AAEA;AACA,SAASA,YAAY,QAAQ;AAE7B,OAAO,MAAMC,gBAAA,GAAmB,CAAC,OAAO,WAAW,eAAe,WAAW;AAI7E,OAAO,MAAMC,OAAA,GAAUA,CAAC;EACtBC,gBAAgB;EAChBC;AAAY,CAIb;EACC,MAAMC,WAAA,GACJF,gBAAA,EAAkBG,KAAA,EAAOC,UAAA,EAAYC,KAAA,EAAOC,IAAA,IAC5CL,YAAA,EAAcE,KAAA,EAAOC,UAAA,EAAYC,KAAA,EAAOC,IAAA,IACxC,CAAC;EAEH,OAAO,CACL;IACEC,GAAA,EAAK;MACHC,IAAA,EAAM;MACNC,KAAA,EAAOA,CAAC;QAAEC;MAAC,CAAE,KAAKA,CAAA,CAAE;MACpBC,KAAA,EAAO;MACP,IAAIT,WAAA,GAAc,UAAU,EAAEK,GAAA,IAAO,CAAC,CAAC;IACzC;IACAK,QAAA,EAAU;EACZ,GACA;IACEL,GAAA,EAAK;MACHM,SAAA,EAAWA,CAAC;QAAEb,gBAAgB;QAAEC,YAAY;QAAEa;MAAW,CAAE,KACzDC,OAAA,CACEf,gBAAC,EAAkBgB,QAAA,IACjBF,WAAA,EAAaG,WAAA,GAAcjB,gBAAA,EAAkBkB,IAAA,CAAK,EAAEC,YAAA,IACnDlB,YAAA,EAAce,QAAA,IAAYF,WAAA,EAAaM,OAAA,GAAUnB,YAAA,EAAciB,IAAA,CAAK,EAAEC,YAAA;MAE7EX,IAAA,EAAM;MACNC,KAAA,EAAOA,CAAC;QAAEC;MAAC,CAAE,KAAKA,CAAA,CAAE;MACpBC,KAAA,EAAO;MACPU,cAAA,EAAgBxB,YAAA;MAChB,IAAIK,WAAA,GAAc,WAAW,EAAEK,GAAA,IAAO,CAAC,CAAC;IAC1C;IACAK,QAAA,EAAU;EACZ,GACA;IACEL,GAAA,EAAK;MACHC,IAAA,EAAM;MACNC,KAAA,EAAO;MACPE,KAAA,EAAO;MACP,IAAIT,WAAA,GAAc,MAAM,EAAEK,GAAA,IAAO,CAAC,CAAC;IACrC;IACAK,QAAA,EAAU;EACZ,EACD,CACEU,MAAM,CACLC,MAAA,CAAOC,OAAO,CAACtB,WAAA,EAAauB,MAAM,CAAC,CAACC,GAAA,EAAK,CAACC,GAAA,EAAKC,KAAA,CAAM;IACnD,IAAI9B,gBAAA,CAAiB+B,QAAQ,CAACF,GAAA,GAAM;MAClC,OAAOD,GAAA;IACT;IAEA,IAAIE,KAAA,EAAOrB,GAAA,EAAK;MACdmB,GAAA,CAAII,IAAI,CAAC;QACPvB,GAAA,EAAKqB,KAAA,CAAMrB,GAAG;QACdK,QAAA,EAAU,UAAUgB,KAAA,GAAQA,KAAA,CAAMG,IAAI,GAAG;MAC3C;IACF;IAEA,OAAOL,GAAA;EACT,GAAG,EAAE,IAELM,IAAA,CAAK,CAAC;IAAEzB,GAAA,EAAK0B;EAAC,CAAE,EAAE;IAAE1B,GAAA,EAAK2B;EAAC,CAAE;IAC5B,IAAID,CAAA,CAAEtB,KAAK,KAAKwB,SAAA,IAAaD,CAAA,CAAEvB,KAAK,KAAKwB,SAAA,EAAW;MAClD,OAAO;IACT,OAAO,IAAIF,CAAA,CAAEtB,KAAK,KAAKwB,SAAA,EAAW;MAChC,OAAO;IACT,OAAO,IAAID,CAAA,CAAEvB,KAAK,KAAKwB,SAAA,EAAW;MAChC,OAAO,CAAC;IACV;IAEA,OAAOF,CAAA,CAAEtB,KAAK,GAAGuB,CAAA,CAAEvB,KAAK;EAC1B;AACJ","ignoreList":[]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
@layer payload-default {
|
|
2
2
|
.dropzone {
|
|
3
3
|
position: relative;
|
|
4
|
-
display:
|
|
4
|
+
display: block;
|
|
5
|
+
text-align: center;
|
|
5
6
|
align-items: flex-start;
|
|
6
7
|
background-color: var(--color-bg-secondary);
|
|
7
8
|
border: var(--stroke-width-small) dashed var(--special-border-translucent);
|
|
@@ -17,6 +18,11 @@
|
|
|
17
18
|
background: var(--color-bg-hover);
|
|
18
19
|
}
|
|
19
20
|
|
|
21
|
+
&:focus {
|
|
22
|
+
outline: var(--accessibility-outline);
|
|
23
|
+
outline-offset: calc(-2 * var(--accessibility-outline-offset));
|
|
24
|
+
}
|
|
25
|
+
|
|
20
26
|
&.dragging {
|
|
21
27
|
background: var(--color-bg-brand-tertiary);
|
|
22
28
|
|
|
@@ -25,9 +31,9 @@
|
|
|
25
31
|
}
|
|
26
32
|
}
|
|
27
33
|
|
|
28
|
-
@media (
|
|
29
|
-
display:
|
|
30
|
-
text-align:
|
|
34
|
+
@media (min-width: 768px) {
|
|
35
|
+
display: flex;
|
|
36
|
+
text-align: start;
|
|
31
37
|
}
|
|
32
38
|
|
|
33
39
|
&.dropzone--style-default {
|