@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,136 +0,0 @@
|
|
|
1
|
-
@layer payload-default {
|
|
2
|
-
/* Wraps the summary and its optional link so the gap to the mode options is the
|
|
3
|
-
wrapper's, and does not depend on which of the two is last. */
|
|
4
|
-
.merge-branch-modal__intro {
|
|
5
|
-
display: flex;
|
|
6
|
-
flex-direction: column;
|
|
7
|
-
align-items: flex-start;
|
|
8
|
-
gap: var(--spacer-1);
|
|
9
|
-
margin-block-end: var(--spacer-3);
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
.merge-branch-modal__summary {
|
|
13
|
-
margin-block: 0;
|
|
14
|
-
color: var(--color-text-secondary);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/* The way out of "all of it" — sits directly under the sentence it qualifies. */
|
|
18
|
-
.merge-branch-modal__review {
|
|
19
|
-
color: var(--color-text-brand);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
.merge-branch-modal__modes {
|
|
23
|
-
display: flex;
|
|
24
|
-
flex-direction: column;
|
|
25
|
-
gap: var(--spacer-2);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/* Separated from the mode radios by a rule: this is a second, independent
|
|
29
|
-
decision, not a third option in the first one. */
|
|
30
|
-
.merge-branch-modal__close-branch {
|
|
31
|
-
margin-block-start: var(--spacer-3);
|
|
32
|
-
padding-block-start: var(--spacer-3);
|
|
33
|
-
border-block-start: var(--stroke-width-small) solid var(--color-border);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
.merge-branch-modal__close-branch-help {
|
|
37
|
-
margin-block: var(--spacer-1) 0;
|
|
38
|
-
padding-inline-start: var(--spacer-4);
|
|
39
|
-
color: var(--color-text-secondary);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/* Indented to the radio label above it, so the date reads as part of choosing
|
|
43
|
-
"schedule" rather than as the next question down the modal. */
|
|
44
|
-
.merge-branch-modal__schedule {
|
|
45
|
-
display: flex;
|
|
46
|
-
flex-direction: column;
|
|
47
|
-
gap: var(--spacer-2);
|
|
48
|
-
margin-block-start: var(--spacer-2);
|
|
49
|
-
padding-inline-start: var(--spacer-4);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
.merge-branch-modal__schedule-field {
|
|
53
|
-
display: flex;
|
|
54
|
-
flex-direction: column;
|
|
55
|
-
gap: var(--spacer-1);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/* The picker sizes itself to its container, which in a modal is the full width —
|
|
59
|
-
a date needs nothing like that much room. */
|
|
60
|
-
.merge-branch-modal__schedule-field .date-time-picker {
|
|
61
|
-
max-width: calc(var(--spacer-6) * 6);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
.merge-branch-modal__schedule-help {
|
|
65
|
-
margin: 0;
|
|
66
|
-
color: var(--color-text-secondary);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
.merge-branch-modal__upcoming {
|
|
70
|
-
display: flex;
|
|
71
|
-
flex-direction: column;
|
|
72
|
-
gap: var(--spacer-1);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
.merge-branch-modal__upcoming-title {
|
|
76
|
-
margin: 0;
|
|
77
|
-
font-family: var(--text-body-small-font-family);
|
|
78
|
-
font-size: var(--text-body-small-font-size);
|
|
79
|
-
color: var(--color-text-secondary);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
.merge-branch-modal__upcoming-list {
|
|
83
|
-
margin: 0;
|
|
84
|
-
padding: 0;
|
|
85
|
-
list-style: none;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
.merge-branch-modal__upcoming-row {
|
|
89
|
-
display: flex;
|
|
90
|
-
align-items: center;
|
|
91
|
-
justify-content: space-between;
|
|
92
|
-
gap: var(--spacer-3);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
.merge-branch-modal__unavailable {
|
|
96
|
-
margin: 0;
|
|
97
|
-
color: var(--color-text-secondary);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
.merge-branch-modal__progress {
|
|
101
|
-
display: flex;
|
|
102
|
-
flex-direction: column;
|
|
103
|
-
gap: var(--spacer-2);
|
|
104
|
-
margin-block-start: var(--spacer-4);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
.merge-branch-modal__progress-bar {
|
|
108
|
-
height: var(--spacer-1);
|
|
109
|
-
border-radius: var(--radius-full);
|
|
110
|
-
background: var(--color-bg-secondary);
|
|
111
|
-
overflow: hidden;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
.merge-branch-modal__progress-fill {
|
|
115
|
-
height: 100%;
|
|
116
|
-
border-radius: inherit;
|
|
117
|
-
background: var(--color-text-brand);
|
|
118
|
-
/* Each document lands as a discrete step, so ease between them rather than
|
|
119
|
-
letting the bar snap on every event. */
|
|
120
|
-
transition: width 200ms ease-out;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
.merge-branch-modal__progress-fill--complete {
|
|
124
|
-
background: var(--color-bg-success);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
.merge-branch-modal__blocked {
|
|
128
|
-
margin-block: var(--spacer-3) 0;
|
|
129
|
-
padding-inline-start: var(--spacer-3);
|
|
130
|
-
color: var(--color-text-danger);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
.merge-branch-modal__progress-label {
|
|
134
|
-
color: var(--color-text-secondary);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import './index.css';
|
|
3
|
-
/**
|
|
4
|
-
* The modal every merge entry point opens.
|
|
5
|
-
*
|
|
6
|
-
* Merging is a decision — what to take, and when — so it happens in a modal from
|
|
7
|
-
* wherever the branch is on screen, rather than by routing somewhere first.
|
|
8
|
-
*
|
|
9
|
-
* The merge itself streams. A branch can hold hundreds of documents and each one
|
|
10
|
-
* is a full write with hooks and validation, so "merging 34 of 230" is real
|
|
11
|
-
* information rather than a spinner's decoration; see `endpoints/merge.ts` for
|
|
12
|
-
* why that is a streamed response rather than a job and a polling loop.
|
|
13
|
-
*/
|
|
14
|
-
export declare const MergeBranchModal: React.FC;
|
|
15
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/MergeBranch/index.tsx"],"names":[],"mappings":"AAUA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAuB/D,OAAO,aAAa,CAAA;AAmBpB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAkiBpC,CAAA"}
|
|
@@ -1,545 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
-
import { branchChangesCollectionSlug, branchesCollectionSlug, formatAdminURL, MAIN_BRANCH } from 'payload/shared';
|
|
5
|
-
import React, { useCallback, useEffect, useState } from 'react';
|
|
6
|
-
import { toast } from 'sonner';
|
|
7
|
-
import { CheckboxInput } from '../../fields/Checkbox/Input.js';
|
|
8
|
-
import { FieldLabel } from '../../fields/FieldLabel/index.js';
|
|
9
|
-
import { Radio } from '../../fields/RadioGroup/Radio/index.js';
|
|
10
|
-
import { useConfig } from '../../providers/Config/index.js';
|
|
11
|
-
import { useRouter } from '../../providers/RouterAdapter/index.js';
|
|
12
|
-
import { useRouteTransition } from '../../providers/RouteTransition/index.js';
|
|
13
|
-
import { useServerFunctions } from '../../providers/ServerFunctions/index.js';
|
|
14
|
-
import { useTranslation } from '../../providers/Translation/index.js';
|
|
15
|
-
import { requests } from '../../utilities/api.js';
|
|
16
|
-
import { buildUpcomingMergeWhere } from '../../utilities/scheduleMergeHandler.js';
|
|
17
|
-
import { Button } from '../Button/index.js';
|
|
18
|
-
import { ChangeSummary } from '../ChangeSummary/index.js';
|
|
19
|
-
import { DatePickerField } from '../DatePicker/index.js';
|
|
20
|
-
import { DialogBody, DialogFooter, DialogHeader, DialogModal } from '../Dialog/index.js';
|
|
21
|
-
import { Link } from '../Link/index.js';
|
|
22
|
-
import { useModal } from '../Modal/index.js';
|
|
23
|
-
import { useMergeBranch } from './context.js';
|
|
24
|
-
import { mergeBranchModalSlug } from './slug.js';
|
|
25
|
-
import './index.css';
|
|
26
|
-
const baseClass = 'merge-branch-modal';
|
|
27
|
-
/**
|
|
28
|
-
* How many changes the modal will read to describe the merge.
|
|
29
|
-
*
|
|
30
|
-
* High enough to cover any branch a person is reviewing by hand, low enough that a
|
|
31
|
-
* runaway branch does not turn opening this modal into a bulk read.
|
|
32
|
-
*/
|
|
33
|
-
const SUMMARY_SAMPLE_LIMIT = 200;
|
|
34
|
-
/**
|
|
35
|
-
* The modal every merge entry point opens.
|
|
36
|
-
*
|
|
37
|
-
* Merging is a decision — what to take, and when — so it happens in a modal from
|
|
38
|
-
* wherever the branch is on screen, rather than by routing somewhere first.
|
|
39
|
-
*
|
|
40
|
-
* The merge itself streams. A branch can hold hundreds of documents and each one
|
|
41
|
-
* is a full write with hooks and validation, so "merging 34 of 230" is real
|
|
42
|
-
* information rather than a spinner's decoration; see `endpoints/merge.ts` for
|
|
43
|
-
* why that is a streamed response rather than a job and a polling loop.
|
|
44
|
-
*/
|
|
45
|
-
export const MergeBranchModal = () => {
|
|
46
|
-
const {
|
|
47
|
-
closeMerge,
|
|
48
|
-
target
|
|
49
|
-
} = useMergeBranch();
|
|
50
|
-
const {
|
|
51
|
-
t
|
|
52
|
-
} = useTranslation();
|
|
53
|
-
const {
|
|
54
|
-
isModalOpen
|
|
55
|
-
} = useModal();
|
|
56
|
-
const router = useRouter();
|
|
57
|
-
const {
|
|
58
|
-
startRouteTransition
|
|
59
|
-
} = useRouteTransition();
|
|
60
|
-
const {
|
|
61
|
-
serverFunction
|
|
62
|
-
} = useServerFunctions();
|
|
63
|
-
const {
|
|
64
|
-
config: {
|
|
65
|
-
routes: {
|
|
66
|
-
api
|
|
67
|
-
},
|
|
68
|
-
serverURL
|
|
69
|
-
}
|
|
70
|
-
} = useConfig();
|
|
71
|
-
const [mode, setMode] = useState('now');
|
|
72
|
-
const [scheduledFor, setScheduledFor] = useState();
|
|
73
|
-
const [isMerging, setIsMerging] = useState(false);
|
|
74
|
-
const [progress, setProgress] = useState(null);
|
|
75
|
-
const [countedChanges, setCountedChanges] = useState(null);
|
|
76
|
-
/** The branch's changes, read here when the opener did not already know them. */
|
|
77
|
-
const [sampledChanges, setSampledChanges] = useState(null);
|
|
78
|
-
/** Set once the merge has finished, which switches the modal to its receipt. */
|
|
79
|
-
const [outcome, setOutcome] = useState(null);
|
|
80
|
-
const [closeBranch, setCloseBranch] = useState(false);
|
|
81
|
-
const [isScheduling, setIsScheduling] = useState(false);
|
|
82
|
-
const [upcoming, setUpcoming] = useState([]);
|
|
83
|
-
const isOpen = isModalOpen(mergeBranchModalSlug);
|
|
84
|
-
const branchSlug = target?.branchSlug;
|
|
85
|
-
const knownChanges = target?.changes;
|
|
86
|
-
// Offered only when nothing is left behind. Merging a subset means there is still
|
|
87
|
-
// work on the branch by definition, so closing it would abandon that work — a
|
|
88
|
-
// destructive act wearing a convenience checkbox. Computed up here because
|
|
89
|
-
// `handleMergeNow` depends on it.
|
|
90
|
-
const canCloseBranch = target?.selectedChangeIDs === undefined;
|
|
91
|
-
// Read on open rather than with the screen behind it: the switcher can be opened
|
|
92
|
-
// from anywhere, and a summary nobody has asked to see is a query on every page
|
|
93
|
-
// load. Skipped entirely when the opener already knows what it is merging.
|
|
94
|
-
useEffect(() => {
|
|
95
|
-
if (!isOpen || !branchSlug || knownChanges) {
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
const controller = new AbortController();
|
|
99
|
-
const readChanges = async () => {
|
|
100
|
-
try {
|
|
101
|
-
const response = await requests.get(formatAdminURL({
|
|
102
|
-
apiRoute: api,
|
|
103
|
-
path: `/${branchChangesCollectionSlug}`,
|
|
104
|
-
serverURL
|
|
105
|
-
}), {
|
|
106
|
-
params: {
|
|
107
|
-
depth: 0,
|
|
108
|
-
limit: SUMMARY_SAMPLE_LIMIT,
|
|
109
|
-
select: {
|
|
110
|
-
collectionSlug: true,
|
|
111
|
-
operation: true
|
|
112
|
-
},
|
|
113
|
-
where: {
|
|
114
|
-
branch: {
|
|
115
|
-
equals: branchSlug
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
},
|
|
119
|
-
signal: controller.signal
|
|
120
|
-
});
|
|
121
|
-
const json = await response.json();
|
|
122
|
-
if (typeof json?.totalDocs === 'number') {
|
|
123
|
-
setCountedChanges(json.totalDocs);
|
|
124
|
-
// Only when the sample is the whole set. A breakdown of the first 200 of
|
|
125
|
-
// 900 changes would read as a description of the merge and be wrong about
|
|
126
|
-
// it, so past that point the count says it on its own.
|
|
127
|
-
setSampledChanges(json.docs?.length === json.totalDocs ? json.docs ?? null : null);
|
|
128
|
-
}
|
|
129
|
-
} catch (_err) {
|
|
130
|
-
// A missing summary degrades the copy, not the action — the merge still
|
|
131
|
-
// knows what it is applying.
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
void readChanges();
|
|
135
|
-
return () => controller.abort();
|
|
136
|
-
}, [api, branchSlug, isOpen, knownChanges, serverURL]);
|
|
137
|
-
// Upcoming schedules for this branch, loaded when the schedule option is chosen
|
|
138
|
-
// rather than with the modal — most merges are immediate and never ask.
|
|
139
|
-
const loadUpcoming = useCallback(async () => {
|
|
140
|
-
if (!branchSlug) {
|
|
141
|
-
return;
|
|
142
|
-
}
|
|
143
|
-
try {
|
|
144
|
-
const response_0 = await requests.get(formatAdminURL({
|
|
145
|
-
apiRoute: api,
|
|
146
|
-
path: '/payload-jobs',
|
|
147
|
-
serverURL
|
|
148
|
-
}), {
|
|
149
|
-
params: {
|
|
150
|
-
depth: 0,
|
|
151
|
-
limit: 10,
|
|
152
|
-
sort: 'waitUntil',
|
|
153
|
-
where: buildUpcomingMergeWhere({
|
|
154
|
-
branchSlug
|
|
155
|
-
})
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
const json_0 = await response_0.json();
|
|
159
|
-
setUpcoming((json_0.docs ?? []).filter(doc => Boolean(doc.waitUntil)).map(doc_0 => ({
|
|
160
|
-
id: doc_0.id,
|
|
161
|
-
waitUntil: String(doc_0.waitUntil)
|
|
162
|
-
})));
|
|
163
|
-
} catch (_err_0) {
|
|
164
|
-
// A missing list costs the reader context, not the action.
|
|
165
|
-
}
|
|
166
|
-
}, [api, branchSlug, serverURL]);
|
|
167
|
-
useEffect(() => {
|
|
168
|
-
if (isOpen && mode === 'schedule') {
|
|
169
|
-
void loadUpcoming();
|
|
170
|
-
}
|
|
171
|
-
}, [isOpen, loadUpcoming, mode]);
|
|
172
|
-
const reset = useCallback(() => {
|
|
173
|
-
setMode('now');
|
|
174
|
-
setScheduledFor(undefined);
|
|
175
|
-
setProgress(null);
|
|
176
|
-
setOutcome(null);
|
|
177
|
-
setCloseBranch(false);
|
|
178
|
-
setUpcoming([]);
|
|
179
|
-
}, []);
|
|
180
|
-
const dismiss = useCallback(() => {
|
|
181
|
-
closeMerge();
|
|
182
|
-
reset();
|
|
183
|
-
}, [closeMerge, reset]);
|
|
184
|
-
const reportResult = useCallback(result => {
|
|
185
|
-
if (result.merged.length) {
|
|
186
|
-
toast.success(t('branching:mergedCount', {
|
|
187
|
-
count: result.merged.length
|
|
188
|
-
}));
|
|
189
|
-
}
|
|
190
|
-
// Blocked entries are per-document refusals, not a failed merge: the rest
|
|
191
|
-
// was applied and the branch stays open for what was not.
|
|
192
|
-
result.blocked.forEach(({
|
|
193
|
-
message
|
|
194
|
-
}) => toast.error(message));
|
|
195
|
-
if (!result.merged.length && !result.blocked.length) {
|
|
196
|
-
toast.info(t('branching:noChangesYet'));
|
|
197
|
-
}
|
|
198
|
-
}, [t]);
|
|
199
|
-
const handleSchedule = useCallback(async () => {
|
|
200
|
-
if (!target || !scheduledFor || isScheduling) {
|
|
201
|
-
return;
|
|
202
|
-
}
|
|
203
|
-
setIsScheduling(true);
|
|
204
|
-
try {
|
|
205
|
-
const result_0 = await serverFunction({
|
|
206
|
-
name: 'schedule-merge',
|
|
207
|
-
args: {
|
|
208
|
-
branchID: target.branchID,
|
|
209
|
-
changes: target.selectedChangeIDs,
|
|
210
|
-
closeBranch: canCloseBranch && closeBranch,
|
|
211
|
-
date: scheduledFor
|
|
212
|
-
}
|
|
213
|
-
});
|
|
214
|
-
if (result_0?.error) {
|
|
215
|
-
toast.error(result_0.error);
|
|
216
|
-
return;
|
|
217
|
-
}
|
|
218
|
-
toast.success(t('branching:mergeScheduledFor', {
|
|
219
|
-
date: scheduledFor.toLocaleString(undefined, {
|
|
220
|
-
dateStyle: 'medium',
|
|
221
|
-
timeStyle: 'short'
|
|
222
|
-
})
|
|
223
|
-
}));
|
|
224
|
-
dismiss();
|
|
225
|
-
// The branch page shows nothing about a queued merge yet, but the jobs list
|
|
226
|
-
// does — and the branch's own state may have been read before this.
|
|
227
|
-
startRouteTransition(() => router.refresh());
|
|
228
|
-
} catch (_err_1) {
|
|
229
|
-
toast.error(t('error:unknown'));
|
|
230
|
-
} finally {
|
|
231
|
-
setIsScheduling(false);
|
|
232
|
-
}
|
|
233
|
-
}, [canCloseBranch, closeBranch, dismiss, isScheduling, router, scheduledFor, serverFunction, startRouteTransition, t, target]);
|
|
234
|
-
const handleCancel = useCallback(async deleteID => {
|
|
235
|
-
setIsScheduling(true);
|
|
236
|
-
try {
|
|
237
|
-
await serverFunction({
|
|
238
|
-
name: 'schedule-merge',
|
|
239
|
-
args: {
|
|
240
|
-
deleteID
|
|
241
|
-
}
|
|
242
|
-
});
|
|
243
|
-
await loadUpcoming();
|
|
244
|
-
toast.success(t('general:deletedSuccessfully'));
|
|
245
|
-
} catch (_err_2) {
|
|
246
|
-
toast.error(t('error:unknown'));
|
|
247
|
-
} finally {
|
|
248
|
-
setIsScheduling(false);
|
|
249
|
-
}
|
|
250
|
-
}, [loadUpcoming, serverFunction, t]);
|
|
251
|
-
const handleMergeNow = useCallback(async () => {
|
|
252
|
-
if (!target || isMerging) {
|
|
253
|
-
return;
|
|
254
|
-
}
|
|
255
|
-
setIsMerging(true);
|
|
256
|
-
setProgress(null);
|
|
257
|
-
try {
|
|
258
|
-
const response_1 = await fetch(formatAdminURL({
|
|
259
|
-
apiRoute: api,
|
|
260
|
-
path: `/${branchesCollectionSlug}/${target.branchID}/merge`,
|
|
261
|
-
serverURL
|
|
262
|
-
}), {
|
|
263
|
-
body: JSON.stringify({
|
|
264
|
-
changes: target.selectedChangeIDs,
|
|
265
|
-
// Ignored server-side when changes are left behind, but not sent at all
|
|
266
|
-
// when a subset is selected: the checkbox is not offered then either.
|
|
267
|
-
closeBranch: canCloseBranch && closeBranch,
|
|
268
|
-
stream: true
|
|
269
|
-
}),
|
|
270
|
-
credentials: 'include',
|
|
271
|
-
headers: {
|
|
272
|
-
'Content-Type': 'application/json'
|
|
273
|
-
},
|
|
274
|
-
method: 'POST'
|
|
275
|
-
});
|
|
276
|
-
if (!response_1.ok || !response_1.body) {
|
|
277
|
-
// A non-streaming failure still returns JSON — a 403 carrying `blocked`,
|
|
278
|
-
// most usefully — so read it as the result rather than a bare error.
|
|
279
|
-
const json_1 = await response_1.json().catch(() => null);
|
|
280
|
-
if (json_1?.blocked?.length) {
|
|
281
|
-
reportResult(json_1);
|
|
282
|
-
} else {
|
|
283
|
-
toast.error(t('error:unknown'));
|
|
284
|
-
}
|
|
285
|
-
return;
|
|
286
|
-
}
|
|
287
|
-
const result_1 = await readMergeStream({
|
|
288
|
-
body: response_1.body,
|
|
289
|
-
onProgress: setProgress
|
|
290
|
-
});
|
|
291
|
-
if (!result_1) {
|
|
292
|
-
// The stream ended without a terminal event, which means the connection
|
|
293
|
-
// dropped mid-merge. The transaction rolls back with it, so nothing was
|
|
294
|
-
// applied — but say so rather than implying success.
|
|
295
|
-
toast.error(t('branching:mergeInterrupted'));
|
|
296
|
-
return;
|
|
297
|
-
}
|
|
298
|
-
if (result_1.type === 'error') {
|
|
299
|
-
toast.error(result_1.message);
|
|
300
|
-
return;
|
|
301
|
-
}
|
|
302
|
-
reportResult(result_1.result);
|
|
303
|
-
// Held open rather than dismissed. A small branch merges faster than the
|
|
304
|
-
// progress bar can be read, so closing on success would make the whole
|
|
305
|
-
// operation a flicker — the reader is left guessing whether it ran. The
|
|
306
|
-
// completed state is the receipt, and it is dismissed deliberately.
|
|
307
|
-
setOutcome(result_1.result);
|
|
308
|
-
// The changed-documents list and the branch's status both moved. Refreshed
|
|
309
|
-
// behind the modal so the page is already correct when it is dismissed.
|
|
310
|
-
startRouteTransition(() => router.refresh());
|
|
311
|
-
} catch (_err_3) {
|
|
312
|
-
toast.error(t('error:unknown'));
|
|
313
|
-
} finally {
|
|
314
|
-
setIsMerging(false);
|
|
315
|
-
}
|
|
316
|
-
}, [api, canCloseBranch, closeBranch, isMerging, reportResult, router, serverURL, startRouteTransition, t, target]);
|
|
317
|
-
if (!target) {
|
|
318
|
-
return null;
|
|
319
|
-
}
|
|
320
|
-
const modeOptions = [{
|
|
321
|
-
label: t('branching:mergeNow'),
|
|
322
|
-
value: 'now'
|
|
323
|
-
}, {
|
|
324
|
-
label: t('branching:scheduleMerge'),
|
|
325
|
-
value: 'schedule'
|
|
326
|
-
}];
|
|
327
|
-
const total = target.totalChanges ?? countedChanges ?? undefined;
|
|
328
|
-
const selectedCount = target.selectedChangeIDs?.length;
|
|
329
|
-
const summaryChanges = target.changes ?? sampledChanges;
|
|
330
|
-
// Three cases, in order of how much is known: a subset chosen, the whole branch
|
|
331
|
-
// with a count, and the whole branch before the count lands.
|
|
332
|
-
const summary = selectedCount !== undefined && total !== undefined ? t('branching:mergeSelectedOfTotal', {
|
|
333
|
-
selected: selectedCount,
|
|
334
|
-
total
|
|
335
|
-
}) : total !== undefined ? t('branching:mergeAllCount', {
|
|
336
|
-
count: total
|
|
337
|
-
}) : t('branching:mergeAllChanges');
|
|
338
|
-
const mergedCount = outcome?.merged.length ?? 0;
|
|
339
|
-
const isDone = Boolean(outcome);
|
|
340
|
-
// Completed bar rather than a residual fraction: the last progress event fires
|
|
341
|
-
// *before* the last document is applied, so it never reaches 100% on its own.
|
|
342
|
-
const percentComplete = isDone ? 100 : progress?.total ? Math.round(progress.current / progress.total * 100) : 0;
|
|
343
|
-
return /*#__PURE__*/_jsxs(DialogModal, {
|
|
344
|
-
className: baseClass,
|
|
345
|
-
closeOnBlur: !isMerging,
|
|
346
|
-
slug: mergeBranchModalSlug,
|
|
347
|
-
children: [/*#__PURE__*/_jsx(DialogHeader, {
|
|
348
|
-
showClose: !isMerging,
|
|
349
|
-
title: isDone ? t('branching:mergeComplete') : t('branching:mergeBranchInto', {
|
|
350
|
-
branch: target.branchName,
|
|
351
|
-
target: MAIN_BRANCH
|
|
352
|
-
})
|
|
353
|
-
}), /*#__PURE__*/_jsxs(DialogBody, {
|
|
354
|
-
children: [!isDone && /*#__PURE__*/_jsxs(React.Fragment, {
|
|
355
|
-
children: [/*#__PURE__*/_jsxs("div", {
|
|
356
|
-
className: `${baseClass}__intro`,
|
|
357
|
-
children: [/*#__PURE__*/_jsx("p", {
|
|
358
|
-
className: `${baseClass}__summary`,
|
|
359
|
-
children: summary
|
|
360
|
-
}), summaryChanges && /*#__PURE__*/_jsx(ChangeSummary, {
|
|
361
|
-
changes: summaryChanges,
|
|
362
|
-
showOperations: true
|
|
363
|
-
}), target.reviewURL && !isMerging && /*#__PURE__*/_jsx(Link, {
|
|
364
|
-
className: `${baseClass}__review`,
|
|
365
|
-
href: target.reviewURL,
|
|
366
|
-
onClick: dismiss,
|
|
367
|
-
children: t('branching:mergeOnlySelected')
|
|
368
|
-
})]
|
|
369
|
-
}), /*#__PURE__*/_jsx("div", {
|
|
370
|
-
className: `${baseClass}__modes`,
|
|
371
|
-
children: modeOptions.map(option => /*#__PURE__*/_jsx(Radio, {
|
|
372
|
-
id: `merge-mode-${option.value}`,
|
|
373
|
-
isSelected: mode === option.value,
|
|
374
|
-
onChange: () => setMode(option.value),
|
|
375
|
-
option: option,
|
|
376
|
-
path: "merge-mode",
|
|
377
|
-
readOnly: isMerging
|
|
378
|
-
}, option.value))
|
|
379
|
-
}), mode === 'schedule' && /*#__PURE__*/_jsxs("div", {
|
|
380
|
-
className: `${baseClass}__schedule`,
|
|
381
|
-
children: [/*#__PURE__*/_jsxs("div", {
|
|
382
|
-
className: `${baseClass}__schedule-field`,
|
|
383
|
-
children: [/*#__PURE__*/_jsx(FieldLabel, {
|
|
384
|
-
label: t('general:time'),
|
|
385
|
-
path: "merge-scheduled-for",
|
|
386
|
-
required: true
|
|
387
|
-
}), /*#__PURE__*/_jsx(DatePickerField, {
|
|
388
|
-
id: "merge-scheduled-for",
|
|
389
|
-
minDate: new Date(),
|
|
390
|
-
onChange: value => setScheduledFor(value ?? undefined),
|
|
391
|
-
pickerAppearance: "dayAndTime",
|
|
392
|
-
readOnly: isScheduling,
|
|
393
|
-
value: scheduledFor
|
|
394
|
-
})]
|
|
395
|
-
}), /*#__PURE__*/_jsx("p", {
|
|
396
|
-
className: `${baseClass}__schedule-help`,
|
|
397
|
-
children: t('branching:scheduleMergeHelp')
|
|
398
|
-
}), upcoming.length > 0 && /*#__PURE__*/_jsxs("div", {
|
|
399
|
-
className: `${baseClass}__upcoming`,
|
|
400
|
-
children: [/*#__PURE__*/_jsx("h4", {
|
|
401
|
-
className: `${baseClass}__upcoming-title`,
|
|
402
|
-
children: t('branching:scheduledMerges')
|
|
403
|
-
}), /*#__PURE__*/_jsx("ul", {
|
|
404
|
-
className: `${baseClass}__upcoming-list`,
|
|
405
|
-
children: upcoming.map(event => /*#__PURE__*/_jsxs("li", {
|
|
406
|
-
className: `${baseClass}__upcoming-row`,
|
|
407
|
-
children: [/*#__PURE__*/_jsx("span", {
|
|
408
|
-
children: new Date(event.waitUntil).toLocaleString(undefined, {
|
|
409
|
-
dateStyle: 'medium',
|
|
410
|
-
timeStyle: 'short'
|
|
411
|
-
})
|
|
412
|
-
}), /*#__PURE__*/_jsx(Button, {
|
|
413
|
-
buttonStyle: "ghost",
|
|
414
|
-
className: `${baseClass}__upcoming-cancel`,
|
|
415
|
-
disabled: isScheduling,
|
|
416
|
-
onClick: () => void handleCancel(event.id),
|
|
417
|
-
children: t('general:cancel')
|
|
418
|
-
})]
|
|
419
|
-
}, String(event.id)))
|
|
420
|
-
})]
|
|
421
|
-
})]
|
|
422
|
-
}), canCloseBranch && /*#__PURE__*/_jsxs("div", {
|
|
423
|
-
className: `${baseClass}__close-branch`,
|
|
424
|
-
children: [/*#__PURE__*/_jsx(CheckboxInput, {
|
|
425
|
-
checked: closeBranch,
|
|
426
|
-
id: "merge-close-branch",
|
|
427
|
-
label: t('branching:closeBranchAfterMerge'),
|
|
428
|
-
onToggle: () => setCloseBranch(prev => !prev),
|
|
429
|
-
readOnly: isMerging
|
|
430
|
-
}), /*#__PURE__*/_jsx("p", {
|
|
431
|
-
className: `${baseClass}__close-branch-help`,
|
|
432
|
-
children: closeBranch ? t('branching:closeBranchHelpOn') : t('branching:closeBranchHelpOff')
|
|
433
|
-
})]
|
|
434
|
-
})]
|
|
435
|
-
}), (isMerging || isDone) && /*#__PURE__*/_jsxs("div", {
|
|
436
|
-
className: `${baseClass}__progress`,
|
|
437
|
-
children: [/*#__PURE__*/_jsx("div", {
|
|
438
|
-
className: `${baseClass}__progress-bar`,
|
|
439
|
-
children: /*#__PURE__*/_jsx("div", {
|
|
440
|
-
className: [`${baseClass}__progress-fill`, isDone && `${baseClass}__progress-fill--complete`].filter(Boolean).join(' '),
|
|
441
|
-
style: {
|
|
442
|
-
width: `${percentComplete}%`
|
|
443
|
-
}
|
|
444
|
-
})
|
|
445
|
-
}), /*#__PURE__*/_jsx("span", {
|
|
446
|
-
className: `${baseClass}__progress-label`,
|
|
447
|
-
children: isDone ? t('branching:mergedOfTotal', {
|
|
448
|
-
current: mergedCount,
|
|
449
|
-
total: mergedCount
|
|
450
|
-
}) : progress ? t('branching:mergingProgress', {
|
|
451
|
-
current: progress.current,
|
|
452
|
-
total: progress.total
|
|
453
|
-
}) : t('branching:mergeStarting')
|
|
454
|
-
})]
|
|
455
|
-
}), outcome && outcome.blocked.length > 0 && /*#__PURE__*/_jsx("ul", {
|
|
456
|
-
className: `${baseClass}__blocked`,
|
|
457
|
-
children: outcome.blocked.map(each => /*#__PURE__*/_jsx("li", {
|
|
458
|
-
children: each.message
|
|
459
|
-
}, String(each.changeID)))
|
|
460
|
-
})]
|
|
461
|
-
}), /*#__PURE__*/_jsx(DialogFooter, {
|
|
462
|
-
children: isDone ? /*#__PURE__*/_jsx(Button, {
|
|
463
|
-
buttonStyle: "primary",
|
|
464
|
-
onClick: dismiss,
|
|
465
|
-
size: "medium",
|
|
466
|
-
children: t('general:close')
|
|
467
|
-
}) : /*#__PURE__*/_jsxs(React.Fragment, {
|
|
468
|
-
children: [/*#__PURE__*/_jsx(Button, {
|
|
469
|
-
buttonStyle: "secondary",
|
|
470
|
-
disabled: isMerging,
|
|
471
|
-
onClick: dismiss,
|
|
472
|
-
size: "medium",
|
|
473
|
-
children: t('general:cancel')
|
|
474
|
-
}), /*#__PURE__*/_jsx(Button, {
|
|
475
|
-
buttonStyle: "primary",
|
|
476
|
-
disabled: isMerging || isScheduling ||
|
|
477
|
-
// A schedule with no date is not a decision yet.
|
|
478
|
-
mode === 'schedule' && !scheduledFor,
|
|
479
|
-
onClick: () => void (mode === 'schedule' ? handleSchedule() : handleMergeNow()),
|
|
480
|
-
size: "medium",
|
|
481
|
-
children: mode === 'schedule' ? isScheduling ? t('branching:scheduling') : t('branching:scheduleMerge') : isMerging ? t('branching:merging') : t('branching:merge')
|
|
482
|
-
})]
|
|
483
|
-
})
|
|
484
|
-
})]
|
|
485
|
-
});
|
|
486
|
-
};
|
|
487
|
-
/**
|
|
488
|
-
* Reads the NDJSON merge stream, returning the terminal event.
|
|
489
|
-
*
|
|
490
|
-
* Returns null when the stream ends without one, which is how a dropped
|
|
491
|
-
* connection presents — indistinguishable from the server never finishing, and
|
|
492
|
-
* treated the same way, because in both cases the transaction did not commit.
|
|
493
|
-
*/
|
|
494
|
-
const readMergeStream = async ({
|
|
495
|
-
body,
|
|
496
|
-
onProgress
|
|
497
|
-
}) => {
|
|
498
|
-
const reader = body.getReader();
|
|
499
|
-
const decoder = new TextDecoder();
|
|
500
|
-
let buffered = '';
|
|
501
|
-
const handleLine = line => {
|
|
502
|
-
const trimmed = line.trim();
|
|
503
|
-
if (!trimmed) {
|
|
504
|
-
return null;
|
|
505
|
-
}
|
|
506
|
-
let event;
|
|
507
|
-
try {
|
|
508
|
-
event = JSON.parse(trimmed);
|
|
509
|
-
} catch (_err) {
|
|
510
|
-
return null;
|
|
511
|
-
}
|
|
512
|
-
if (event.type === 'progress') {
|
|
513
|
-
onProgress({
|
|
514
|
-
current: Number(event.current),
|
|
515
|
-
total: Number(event.total)
|
|
516
|
-
});
|
|
517
|
-
return null;
|
|
518
|
-
}
|
|
519
|
-
return event;
|
|
520
|
-
};
|
|
521
|
-
while (true) {
|
|
522
|
-
const {
|
|
523
|
-
done,
|
|
524
|
-
value
|
|
525
|
-
} = await reader.read();
|
|
526
|
-
if (done) {
|
|
527
|
-
break;
|
|
528
|
-
}
|
|
529
|
-
buffered += decoder.decode(value, {
|
|
530
|
-
stream: true
|
|
531
|
-
});
|
|
532
|
-
// A chunk can split a line anywhere, so only whole lines are parsed and the
|
|
533
|
-
// remainder is carried forward.
|
|
534
|
-
const lines = buffered.split('\n');
|
|
535
|
-
buffered = lines.pop() ?? '';
|
|
536
|
-
for (const line of lines) {
|
|
537
|
-
const terminal = handleLine(line);
|
|
538
|
-
if (terminal) {
|
|
539
|
-
return terminal;
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
|
-
return handleLine(buffered);
|
|
544
|
-
};
|
|
545
|
-
//# sourceMappingURL=index.js.map
|