@payloadcms/ui 4.0.0-internal.532221d → 4.0.0-internal.567a487
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 +5 -0
- package/dist/elements/AppHeader/index.d.ts.map +1 -1
- package/dist/elements/AppHeader/index.js +3 -0
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/ArrayAction/index.d.ts +1 -0
- package/dist/elements/ArrayAction/index.d.ts.map +1 -1
- package/dist/elements/ArrayAction/index.js +45 -32
- package/dist/elements/ArrayAction/index.js.map +1 -1
- package/dist/elements/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +3 -0
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/BranchSelector/NewBranchModal/index.css +46 -0
- package/dist/elements/BranchSelector/NewBranchModal/index.d.ts +12 -0
- package/dist/elements/BranchSelector/NewBranchModal/index.d.ts.map +1 -0
- package/dist/elements/BranchSelector/NewBranchModal/index.js +174 -0
- package/dist/elements/BranchSelector/NewBranchModal/index.js.map +1 -0
- package/dist/elements/BranchSelector/index.css +172 -0
- package/dist/elements/BranchSelector/index.d.ts +13 -0
- package/dist/elements/BranchSelector/index.d.ts.map +1 -0
- package/dist/elements/BranchSelector/index.js +255 -0
- package/dist/elements/BranchSelector/index.js.map +1 -0
- package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +6 -2
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/Button/index.css +2 -2
- package/dist/elements/ChangeSummary/index.css +18 -0
- package/dist/elements/ChangeSummary/index.d.ts +28 -0
- package/dist/elements/ChangeSummary/index.d.ts.map +1 -0
- package/dist/elements/ChangeSummary/index.js +147 -0
- package/dist/elements/ChangeSummary/index.js.map +1 -0
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts +10 -0
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +55 -0
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
- package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -1
- package/dist/elements/ColumnSelection/Popup.js +3 -3
- package/dist/elements/ColumnSelection/Popup.js.map +1 -1
- package/dist/elements/Combobox/index.css +84 -23
- package/dist/elements/Combobox/index.d.ts +21 -0
- package/dist/elements/Combobox/index.d.ts.map +1 -1
- package/dist/elements/Combobox/index.js +66 -21
- package/dist/elements/Combobox/index.js.map +1 -1
- package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
- package/dist/elements/DeleteDocument/index.js +9 -2
- 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 +4 -1
- package/dist/elements/DeleteMany/index.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/index.css +5 -3
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.css +12 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.d.ts +12 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.d.ts.map +1 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.js +83 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.js.map +1 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.d.ts +14 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.d.ts.map +1 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.js +28 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.js.map +1 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/index.d.ts.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/tabs/index.js +32 -1
- package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
- package/dist/elements/Drawer/index.css +10 -4
- package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +3 -2
- package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
- package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
- package/dist/elements/DuplicateDocument/index.js +6 -1
- 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 +4 -1
- package/dist/elements/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/index.js +4 -1
- 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 +4 -1
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +1 -1
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts +2 -1
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js +2 -0
- 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 +3 -0
- 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 +4 -1
- 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 +3 -0
- 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 +4 -1
- package/dist/elements/Hierarchy/Tree/useChildren.js.map +1 -1
- package/dist/elements/IDLabel/index.css +6 -0
- package/dist/elements/IDLabel/index.d.ts +1 -1
- package/dist/elements/IDLabel/index.d.ts.map +1 -1
- package/dist/elements/IDLabel/index.js +16 -21
- package/dist/elements/IDLabel/index.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts +1 -7
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +26 -32
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +6 -2
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
- package/dist/elements/MergeBranch/context.d.ts +67 -0
- package/dist/elements/MergeBranch/context.d.ts.map +1 -0
- package/dist/elements/MergeBranch/context.js +47 -0
- package/dist/elements/MergeBranch/context.js.map +1 -0
- package/dist/elements/MergeBranch/index.css +136 -0
- package/dist/elements/MergeBranch/index.d.ts +15 -0
- package/dist/elements/MergeBranch/index.d.ts.map +1 -0
- package/dist/elements/MergeBranch/index.js +545 -0
- package/dist/elements/MergeBranch/index.js.map +1 -0
- package/dist/elements/MergeBranch/provider.d.ts +12 -0
- package/dist/elements/MergeBranch/provider.d.ts.map +1 -0
- package/dist/elements/MergeBranch/provider.js +19 -0
- package/dist/elements/MergeBranch/provider.js.map +1 -0
- package/dist/elements/MergeBranch/slug.d.ts +9 -0
- package/dist/elements/MergeBranch/slug.d.ts.map +1 -0
- package/dist/elements/MergeBranch/slug.js +8 -0
- package/dist/elements/MergeBranch/slug.js.map +1 -0
- package/dist/elements/Nav/context.js +2 -2
- package/dist/elements/Nav/context.js.map +1 -1
- package/dist/elements/Nav/getNavPrefs.d.ts +6 -0
- package/dist/elements/Nav/getNavPrefs.d.ts.map +1 -1
- package/dist/elements/Nav/getNavPrefs.js +14 -46
- 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 +4 -1
- package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -1
- package/dist/elements/Popup/PopupButtonList/index.css +1 -1
- package/dist/elements/Popup/index.js +1 -1
- package/dist/elements/Popup/index.js.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.js +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
- package/dist/elements/PublishButton/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/index.js +6 -2
- 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 +4 -1
- package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/QueryPresets/QueryPresetBar/index.js +1 -3
- package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
- package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/index.js +5 -2
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/RestoreButton/index.d.ts.map +1 -1
- package/dist/elements/RestoreButton/index.js +4 -1
- 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 +3 -0
- 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 +15 -2
- 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 +7 -1
- package/dist/elements/SchedulePublishButton/index.js.map +1 -1
- package/dist/elements/SortHeader/index.d.ts.map +1 -1
- package/dist/elements/SortHeader/index.js +29 -26
- package/dist/elements/SortHeader/index.js.map +1 -1
- package/dist/elements/Status/index.d.ts.map +1 -1
- package/dist/elements/Status/index.js +16 -3
- package/dist/elements/Status/index.js.map +1 -1
- package/dist/elements/StepNav/index.css +71 -14
- package/dist/elements/StepNav/index.d.ts.map +1 -1
- package/dist/elements/StepNav/index.js +135 -69
- package/dist/elements/StepNav/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.css +34 -0
- package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.d.ts +13 -0
- package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.d.ts.map +1 -0
- package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.js +51 -0
- package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.js.map +1 -0
- package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js +3 -11
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
- package/dist/elements/Table/OrderableTable.js +3 -1
- 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 +29 -23
- 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 -1
- 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 +4 -1
- package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js +3 -0
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
- package/dist/exports/client/index.d.ts +19 -1
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +1 -1
- package/dist/exports/client/index.js.map +3 -3
- package/dist/fields/Array/ArrayRow.d.ts +1 -0
- package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
- package/dist/fields/Array/ArrayRow.js +2 -0
- package/dist/fields/Array/ArrayRow.js.map +1 -1
- package/dist/fields/Array/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js +38 -10
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Blocks/BlockRow.d.ts +1 -0
- package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
- package/dist/fields/Blocks/BlockRow.js +2 -0
- package/dist/fields/Blocks/BlockRow.js.map +1 -1
- package/dist/fields/Blocks/RowActions.d.ts +1 -0
- package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
- package/dist/fields/Blocks/RowActions.js +22 -19
- package/dist/fields/Blocks/RowActions.js.map +1 -1
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +35 -7
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Relationship/Input.d.ts.map +1 -1
- package/dist/fields/Relationship/Input.js +5 -1
- package/dist/fields/Relationship/Input.js.map +1 -1
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +4 -1
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +4 -1
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
- package/dist/hooks/usePayloadAPI.js +44 -40
- package/dist/hooks/usePayloadAPI.js.map +1 -1
- package/dist/icons/Branch/index.css +5 -0
- package/dist/icons/Branch/index.d.ts +7 -0
- package/dist/icons/Branch/index.d.ts.map +1 -0
- package/dist/icons/Branch/index.js +25 -0
- package/dist/icons/Branch/index.js.map +1 -0
- package/dist/icons/Edit/index.d.ts +0 -1
- package/dist/icons/Edit/index.d.ts.map +1 -1
- package/dist/icons/Edit/index.js +4 -4
- package/dist/icons/Edit/index.js.map +1 -1
- package/dist/providers/Actions/index.d.ts +1 -0
- package/dist/providers/Actions/index.d.ts.map +1 -1
- package/dist/providers/Actions/index.js +43 -11
- package/dist/providers/Actions/index.js.map +1 -1
- package/dist/providers/Auth/AuthSessionDebug/index.css +48 -0
- package/dist/providers/Auth/AuthSessionDebug/index.d.ts +13 -0
- package/dist/providers/Auth/AuthSessionDebug/index.d.ts.map +1 -0
- package/dist/providers/Auth/AuthSessionDebug/index.js +93 -0
- package/dist/providers/Auth/AuthSessionDebug/index.js.map +1 -0
- package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts +21 -0
- package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts.map +1 -0
- package/dist/providers/Auth/AuthSessionDebug/utilities.js +53 -0
- package/dist/providers/Auth/AuthSessionDebug/utilities.js.map +1 -0
- package/dist/providers/Auth/authSessionRequests.d.ts +27 -0
- package/dist/providers/Auth/authSessionRequests.d.ts.map +1 -0
- package/dist/providers/Auth/authSessionRequests.js +119 -0
- package/dist/providers/Auth/authSessionRequests.js.map +1 -0
- package/dist/providers/Auth/authSessionRequests.spec.js +121 -0
- package/dist/providers/Auth/authSessionRequests.spec.js.map +1 -0
- package/dist/providers/Auth/index.d.ts +2 -56
- package/dist/providers/Auth/index.d.ts.map +1 -1
- package/dist/providers/Auth/index.js +283 -135
- package/dist/providers/Auth/index.js.map +1 -1
- package/dist/providers/Auth/sessionActivity.d.ts +23 -0
- package/dist/providers/Auth/sessionActivity.d.ts.map +1 -0
- package/dist/providers/Auth/sessionActivity.js +49 -0
- package/dist/providers/Auth/sessionActivity.js.map +1 -0
- package/dist/providers/Auth/sessionActivity.spec.js +44 -0
- package/dist/providers/Auth/sessionActivity.spec.js.map +1 -0
- package/dist/providers/Auth/sessionTiming.d.ts +11 -0
- package/dist/providers/Auth/sessionTiming.d.ts.map +1 -0
- package/dist/providers/Auth/sessionTiming.js +18 -0
- package/dist/providers/Auth/sessionTiming.js.map +1 -0
- package/dist/providers/Auth/tabSessionSync/index.d.ts +17 -0
- package/dist/providers/Auth/tabSessionSync/index.d.ts.map +1 -0
- package/dist/providers/Auth/tabSessionSync/index.js +263 -0
- package/dist/providers/Auth/tabSessionSync/index.js.map +1 -0
- package/dist/providers/Auth/tabSessionSync/index.spec.js +463 -0
- package/dist/providers/Auth/tabSessionSync/index.spec.js.map +1 -0
- package/dist/providers/Auth/tabSessionSync/types.d.ts +107 -0
- package/dist/providers/Auth/tabSessionSync/types.d.ts.map +1 -0
- package/dist/providers/Auth/tabSessionSync/types.js +6 -0
- package/dist/providers/Auth/tabSessionSync/types.js.map +1 -0
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts +11 -0
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts.map +1 -0
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js +90 -0
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +1 -0
- package/dist/providers/Auth/tabSessionSync/utilities.d.ts +26 -0
- package/dist/providers/Auth/tabSessionSync/utilities.d.ts.map +1 -0
- package/dist/providers/Auth/tabSessionSync/utilities.js +159 -0
- package/dist/providers/Auth/tabSessionSync/utilities.js.map +1 -0
- package/dist/providers/Auth/types.d.ts +65 -0
- package/dist/providers/Auth/types.d.ts.map +1 -0
- package/dist/providers/Auth/types.js +2 -0
- package/dist/providers/Auth/types.js.map +1 -0
- package/dist/providers/Auth/useAuthSessionTimers.d.ts +26 -0
- package/dist/providers/Auth/useAuthSessionTimers.d.ts.map +1 -0
- package/dist/providers/Auth/useAuthSessionTimers.js +203 -0
- package/dist/providers/Auth/useAuthSessionTimers.js.map +1 -0
- package/dist/providers/Auth/useAuthSessionTimers.spec.js +311 -0
- package/dist/providers/Auth/useAuthSessionTimers.spec.js.map +1 -0
- package/dist/providers/Branch/index.d.ts +68 -0
- package/dist/providers/Branch/index.d.ts.map +1 -0
- package/dist/providers/Branch/index.js +193 -0
- package/dist/providers/Branch/index.js.map +1 -0
- package/dist/providers/Branch/index.server.d.ts +14 -0
- package/dist/providers/Branch/index.server.d.ts.map +1 -0
- package/dist/providers/Branch/index.server.js +125 -0
- package/dist/providers/Branch/index.server.js.map +1 -0
- package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/index.js +5 -1
- package/dist/providers/DocumentInfo/index.js.map +1 -1
- package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts +2 -1
- package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/useGetDocPermissions.js +3 -1
- package/dist/providers/DocumentInfo/useGetDocPermissions.js.map +1 -1
- package/dist/providers/FormErrorHandler/index.d.ts +5 -1
- package/dist/providers/FormErrorHandler/index.d.ts.map +1 -1
- package/dist/providers/FormErrorHandler/index.js.map +1 -1
- package/dist/providers/Hierarchy/index.d.ts.map +1 -1
- package/dist/providers/Hierarchy/index.js +4 -1
- package/dist/providers/Hierarchy/index.js.map +1 -1
- package/dist/providers/Locale/index.d.ts.map +1 -1
- package/dist/providers/Locale/index.js +41 -36
- package/dist/providers/Locale/index.js.map +1 -1
- package/dist/providers/Preferences/index.d.ts +3 -1
- package/dist/providers/Preferences/index.d.ts.map +1 -1
- package/dist/providers/Preferences/index.js +9 -3
- package/dist/providers/Preferences/index.js.map +1 -1
- package/dist/providers/Root/index.js +4 -4
- package/dist/providers/Root/index.js.map +1 -1
- package/dist/providers/RouteTransition/ProgressBar/index.js +4 -1
- package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
- package/dist/providers/RouteTransition/ProgressBar/index.spec.js +44 -0
- package/dist/providers/RouteTransition/ProgressBar/index.spec.js.map +1 -0
- package/dist/providers/RouteTransition/index.d.ts +2 -0
- package/dist/providers/RouteTransition/index.d.ts.map +1 -1
- package/dist/providers/RouteTransition/index.js +42 -14
- package/dist/providers/RouteTransition/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/templates/Default/index.d.ts +1 -0
- package/dist/templates/Default/index.d.ts.map +1 -1
- package/dist/templates/Default/index.js +44 -36
- package/dist/templates/Default/index.js.map +1 -1
- package/dist/utilities/getAdminPreferences.d.ts +14 -0
- package/dist/utilities/getAdminPreferences.d.ts.map +1 -0
- package/dist/utilities/getAdminPreferences.js +22 -0
- package/dist/utilities/getAdminPreferences.js.map +1 -0
- package/dist/utilities/getRequestBranch.d.ts +20 -0
- package/dist/utilities/getRequestBranch.d.ts.map +1 -0
- package/dist/utilities/getRequestBranch.js +35 -0
- package/dist/utilities/getRequestBranch.js.map +1 -0
- package/dist/utilities/getVersions.d.ts +6 -1
- package/dist/utilities/getVersions.d.ts.map +1 -1
- package/dist/utilities/getVersions.js +5 -0
- package/dist/utilities/getVersions.js.map +1 -1
- package/dist/utilities/initReq.d.ts.map +1 -1
- package/dist/utilities/initReq.js +8 -0
- package/dist/utilities/initReq.js.map +1 -1
- package/dist/utilities/matchesSearchQuery.d.ts +12 -0
- package/dist/utilities/matchesSearchQuery.d.ts.map +1 -0
- package/dist/utilities/matchesSearchQuery.js +23 -0
- package/dist/utilities/matchesSearchQuery.js.map +1 -0
- package/dist/{elements/ColumnSelection/matchesColumnSearch.spec.js → utilities/matchesSearchQuery.spec.js} +29 -29
- package/dist/utilities/matchesSearchQuery.spec.js.map +1 -0
- package/dist/utilities/scheduleMergeHandler.d.ts +33 -0
- package/dist/utilities/scheduleMergeHandler.d.ts.map +1 -0
- package/dist/utilities/scheduleMergeHandler.js +119 -0
- package/dist/utilities/scheduleMergeHandler.js.map +1 -0
- package/dist/utilities/schedulePublishHandler.d.ts.map +1 -1
- package/dist/utilities/schedulePublishHandler.js +10 -0
- package/dist/utilities/schedulePublishHandler.js.map +1 -1
- package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
- package/dist/utilities/serverFunctionRegistry.js +6 -0
- package/dist/utilities/serverFunctionRegistry.js.map +1 -1
- package/dist/views/API/index.client.d.ts.map +1 -1
- package/dist/views/API/index.client.js +10 -2
- package/dist/views/API/index.client.js.map +1 -1
- package/dist/views/Branch/BranchChanges/index.d.ts +23 -0
- package/dist/views/Branch/BranchChanges/index.d.ts.map +1 -0
- package/dist/views/Branch/BranchChanges/index.js +150 -0
- package/dist/views/Branch/BranchChanges/index.js.map +1 -0
- package/dist/views/Branch/ChangedDocuments/index.css +118 -0
- package/dist/views/Branch/ChangedDocuments/index.d.ts +34 -0
- package/dist/views/Branch/ChangedDocuments/index.d.ts.map +1 -0
- package/dist/views/Branch/ChangedDocuments/index.js +233 -0
- package/dist/views/Branch/ChangedDocuments/index.js.map +1 -0
- package/dist/views/Branch/DiscardChangesButton/index.d.ts +16 -0
- package/dist/views/Branch/DiscardChangesButton/index.d.ts.map +1 -0
- package/dist/views/Branch/DiscardChangesButton/index.js +106 -0
- package/dist/views/Branch/DiscardChangesButton/index.js.map +1 -0
- package/dist/views/Branch/Manage/index.d.ts +11 -0
- package/dist/views/Branch/Manage/index.d.ts.map +1 -0
- package/dist/views/Branch/Manage/index.js +71 -0
- package/dist/views/Branch/Manage/index.js.map +1 -0
- package/dist/views/Branch/MergeChangesButton/index.d.ts +14 -0
- package/dist/views/Branch/MergeChangesButton/index.d.ts.map +1 -0
- package/dist/views/Branch/MergeChangesButton/index.js +55 -0
- package/dist/views/Branch/MergeChangesButton/index.js.map +1 -0
- package/dist/views/Branch/MergeLedger/index.css +137 -0
- package/dist/views/Branch/MergeLedger/index.d.ts +31 -0
- package/dist/views/Branch/MergeLedger/index.d.ts.map +1 -0
- package/dist/views/Branch/MergeLedger/index.js +211 -0
- package/dist/views/Branch/MergeLedger/index.js.map +1 -0
- package/dist/views/Branch/ScheduledMerges/index.css +83 -0
- package/dist/views/Branch/ScheduledMerges/index.d.ts +32 -0
- package/dist/views/Branch/ScheduledMerges/index.d.ts.map +1 -0
- package/dist/views/Branch/ScheduledMerges/index.js +183 -0
- package/dist/views/Branch/ScheduledMerges/index.js.map +1 -0
- package/dist/views/Branch/index.css +77 -0
- package/dist/views/Branch/index.d.ts +17 -0
- package/dist/views/Branch/index.d.ts.map +1 -0
- package/dist/views/Branch/index.js +188 -0
- package/dist/views/Branch/index.js.map +1 -0
- package/dist/views/Branch/renderBranchDiff.d.ts +29 -0
- package/dist/views/Branch/renderBranchDiff.d.ts.map +1 -0
- package/dist/views/Branch/renderBranchDiff.js +151 -0
- package/dist/views/Branch/renderBranchDiff.js.map +1 -0
- package/dist/views/Branch/renderMergeDiff.d.ts +24 -0
- package/dist/views/Branch/renderMergeDiff.d.ts.map +1 -0
- package/dist/views/Branch/renderMergeDiff.js +94 -0
- package/dist/views/Branch/renderMergeDiff.js.map +1 -0
- package/dist/views/Branches/index.d.ts +16 -0
- package/dist/views/Branches/index.d.ts.map +1 -0
- package/dist/views/Branches/index.js +54 -0
- package/dist/views/Branches/index.js.map +1 -0
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +3 -2
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +7 -7
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +104 -66
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.css +33 -140
- package/dist/views/Document/getDocumentView.d.ts.map +1 -1
- package/dist/views/Document/getDocumentView.js +21 -2
- 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 +9 -0
- package/dist/views/Document/getMetaBySegment.js.map +1 -1
- package/dist/views/Document/index.d.ts +3 -1
- package/dist/views/Document/index.d.ts.map +1 -1
- package/dist/views/Document/index.js +8 -1
- package/dist/views/Document/index.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/index.js +6 -2
- package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
- package/dist/views/List/ListHeader/index.d.ts +1 -10
- package/dist/views/List/ListHeader/index.d.ts.map +1 -1
- package/dist/views/List/ListHeader/index.js +1 -3
- package/dist/views/List/ListHeader/index.js.map +1 -1
- package/dist/views/List/index.client.d.ts.map +1 -1
- package/dist/views/List/index.client.js +0 -14
- package/dist/views/List/index.client.js.map +1 -1
- package/dist/views/List/index.css +5 -0
- package/dist/views/Root/getCustomCollectionViewByRoute.d.ts.map +1 -1
- package/dist/views/Root/getCustomCollectionViewByRoute.js.map +1 -1
- package/dist/views/Root/getCustomGlobalViewByRoute.d.ts.map +1 -1
- package/dist/views/Root/getCustomGlobalViewByRoute.js.map +1 -1
- package/dist/views/Root/getCustomViewByKey.d.ts.map +1 -1
- package/dist/views/Root/getCustomViewByKey.js.map +1 -1
- package/dist/views/Root/getRouteData.d.ts.map +1 -1
- package/dist/views/Root/getRouteData.js +12 -4
- package/dist/views/Root/getRouteData.js.map +1 -1
- package/dist/views/Root/index.d.ts.map +1 -1
- package/dist/views/Root/index.js +1 -0
- package/dist/views/Root/index.js.map +1 -1
- package/dist/views/Version/Default/index.css +26 -2
- package/dist/views/Version/Default/index.d.ts.map +1 -1
- package/dist/views/Version/Default/index.js +18 -6
- package/dist/views/Version/Default/index.js.map +1 -1
- package/dist/views/Version/Default/types.d.ts +9 -0
- 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 +8 -0
- 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 +6 -3
- package/dist/views/Version/Restore/index.js.map +1 -1
- package/dist/views/Version/index.d.ts.map +1 -1
- package/dist/views/Version/index.js +4 -0
- package/dist/views/Version/index.js.map +1 -1
- package/dist/views/Versions/buildColumns.d.ts +2 -1
- package/dist/views/Versions/buildColumns.d.ts.map +1 -1
- package/dist/views/Versions/buildColumns.js +21 -1
- package/dist/views/Versions/buildColumns.js.map +1 -1
- package/dist/views/Versions/cells/Branch/index.d.ts +12 -0
- package/dist/views/Versions/cells/Branch/index.d.ts.map +1 -0
- package/dist/views/Versions/cells/Branch/index.js +27 -0
- package/dist/views/Versions/cells/Branch/index.js.map +1 -0
- package/dist/views/Versions/index.client.d.ts +0 -1
- 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 +2 -14
- package/dist/views/Versions/index.js.map +1 -1
- package/package.json +5 -5
- package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts +0 -10
- package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts.map +0 -1
- package/dist/elements/ColumnSelection/matchesColumnSearch.js +0 -21
- package/dist/elements/ColumnSelection/matchesColumnSearch.js.map +0 -1
- package/dist/elements/ColumnSelection/matchesColumnSearch.spec.js.map +0 -1
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { branchesCollectionSlug, formatAdminURL, MAIN_BRANCH } from 'payload/shared';
|
|
5
|
+
import React, { useCallback, useState } from 'react';
|
|
6
|
+
import { toast } from 'sonner';
|
|
7
|
+
import { TextInput } from '../../../fields/Text/Input.js';
|
|
8
|
+
import { BranchIcon } from '../../../icons/Branch/index.js';
|
|
9
|
+
import { useBranch } from '../../../providers/Branch/index.js';
|
|
10
|
+
import { useConfig } from '../../../providers/Config/index.js';
|
|
11
|
+
import { useTranslation } from '../../../providers/Translation/index.js';
|
|
12
|
+
import { requests } from '../../../utilities/api.js';
|
|
13
|
+
import { Button } from '../../Button/index.js';
|
|
14
|
+
import { DialogBody, DialogFooter, DialogHeader, DialogModal } from '../../Dialog/index.js';
|
|
15
|
+
import { useModal } from '../../Modal/index.js';
|
|
16
|
+
import { Pill } from '../../Pill/index.js';
|
|
17
|
+
import './index.css';
|
|
18
|
+
export const newBranchModalSlug = 'new-branch';
|
|
19
|
+
const baseClass = 'new-branch-modal';
|
|
20
|
+
/**
|
|
21
|
+
* Creates a branch without leaving the current view.
|
|
22
|
+
*
|
|
23
|
+
* The slug is derived from the name server-side rather than asked for, so the
|
|
24
|
+
* only thing required here is a name — which is why this is a modal rather than
|
|
25
|
+
* a trip to the collection's create view.
|
|
26
|
+
*/
|
|
27
|
+
export const NewBranchModal = () => {
|
|
28
|
+
const {
|
|
29
|
+
t
|
|
30
|
+
} = useTranslation();
|
|
31
|
+
const {
|
|
32
|
+
closeModal
|
|
33
|
+
} = useModal();
|
|
34
|
+
const {
|
|
35
|
+
setBranch
|
|
36
|
+
} = useBranch();
|
|
37
|
+
const {
|
|
38
|
+
config: {
|
|
39
|
+
routes: {
|
|
40
|
+
api
|
|
41
|
+
},
|
|
42
|
+
serverURL
|
|
43
|
+
}
|
|
44
|
+
} = useConfig();
|
|
45
|
+
const [name, setName] = useState('');
|
|
46
|
+
const [description, setDescription] = useState('');
|
|
47
|
+
const [isCreating, setIsCreating] = useState(false);
|
|
48
|
+
const trimmedName = name.trim();
|
|
49
|
+
const reset = useCallback(() => {
|
|
50
|
+
setName('');
|
|
51
|
+
setDescription('');
|
|
52
|
+
}, []);
|
|
53
|
+
const handleCreate = useCallback(async () => {
|
|
54
|
+
if (!trimmedName || isCreating) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
setIsCreating(true);
|
|
58
|
+
try {
|
|
59
|
+
const trimmedDescription = description.trim();
|
|
60
|
+
const response = await requests.post(formatAdminURL({
|
|
61
|
+
apiRoute: api,
|
|
62
|
+
path: `/${branchesCollectionSlug}`,
|
|
63
|
+
serverURL
|
|
64
|
+
}), {
|
|
65
|
+
body: JSON.stringify({
|
|
66
|
+
name: trimmedName,
|
|
67
|
+
...(trimmedDescription ? {
|
|
68
|
+
description: trimmedDescription
|
|
69
|
+
} : {})
|
|
70
|
+
}),
|
|
71
|
+
headers: {
|
|
72
|
+
'Content-Type': 'application/json'
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
const json = await response.json();
|
|
76
|
+
if (!response.ok) {
|
|
77
|
+
const fieldErrors = json?.errors?.flatMap(({
|
|
78
|
+
data
|
|
79
|
+
}) => data?.errors ?? []) ?? [];
|
|
80
|
+
// Field errors are reported against `slug`, which is derived rather than
|
|
81
|
+
// typed — naming it would point the editor at a field they never saw. The
|
|
82
|
+
// name is what they control, so that is what the message names.
|
|
83
|
+
const messages = fieldErrors.length ? fieldErrors.map(({
|
|
84
|
+
message,
|
|
85
|
+
path
|
|
86
|
+
}) => path === 'slug' ? `${t('branching:branchName')}: ${message}` : message) : json?.errors?.map(({
|
|
87
|
+
message: message_0
|
|
88
|
+
}) => message_0) ?? [];
|
|
89
|
+
if (messages.length) {
|
|
90
|
+
messages.forEach(message_1 => toast.error(message_1));
|
|
91
|
+
} else {
|
|
92
|
+
toast.error(t('error:unknown'));
|
|
93
|
+
}
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
closeModal(newBranchModalSlug);
|
|
97
|
+
reset();
|
|
98
|
+
// Creating a branch is a declaration of intent to work on it, so the
|
|
99
|
+
// switch follows the save.
|
|
100
|
+
if (json?.doc?.slug) {
|
|
101
|
+
setBranch(json.doc.slug);
|
|
102
|
+
}
|
|
103
|
+
} catch (_err) {
|
|
104
|
+
toast.error(t('error:unknown'));
|
|
105
|
+
} finally {
|
|
106
|
+
setIsCreating(false);
|
|
107
|
+
}
|
|
108
|
+
}, [api, closeModal, description, isCreating, reset, serverURL, setBranch, t, trimmedName]);
|
|
109
|
+
return /*#__PURE__*/_jsxs(DialogModal, {
|
|
110
|
+
className: baseClass,
|
|
111
|
+
closeOnBlur: true,
|
|
112
|
+
slug: newBranchModalSlug,
|
|
113
|
+
children: [/*#__PURE__*/_jsx(DialogHeader, {
|
|
114
|
+
showClose: true,
|
|
115
|
+
title: t('branching:createNewBranch')
|
|
116
|
+
}), /*#__PURE__*/_jsx(DialogBody, {
|
|
117
|
+
children: /*#__PURE__*/_jsxs("form", {
|
|
118
|
+
className: `${baseClass}__form`,
|
|
119
|
+
onSubmit: e => {
|
|
120
|
+
e.preventDefault();
|
|
121
|
+
void handleCreate();
|
|
122
|
+
},
|
|
123
|
+
children: [/*#__PURE__*/_jsx(TextInput, {
|
|
124
|
+
label: t('branching:branchName'),
|
|
125
|
+
onChange: e_0 => setName(e_0.target.value),
|
|
126
|
+
path: "name",
|
|
127
|
+
required: true,
|
|
128
|
+
value: name
|
|
129
|
+
}), /*#__PURE__*/_jsx(TextInput, {
|
|
130
|
+
label: t('branching:branchDescription'),
|
|
131
|
+
onChange: e_1 => setDescription(e_1.target.value),
|
|
132
|
+
path: "description",
|
|
133
|
+
value: description
|
|
134
|
+
}), /*#__PURE__*/_jsxs("div", {
|
|
135
|
+
className: `${baseClass}__source`,
|
|
136
|
+
children: [/*#__PURE__*/_jsx("span", {
|
|
137
|
+
className: `${baseClass}__source-label`,
|
|
138
|
+
children: t('branching:branchedFrom')
|
|
139
|
+
}), /*#__PURE__*/_jsxs("div", {
|
|
140
|
+
className: `${baseClass}__source-value`,
|
|
141
|
+
children: [/*#__PURE__*/_jsx(BranchIcon, {
|
|
142
|
+
size: 24
|
|
143
|
+
}), /*#__PURE__*/_jsx("span", {
|
|
144
|
+
className: `${baseClass}__source-name`,
|
|
145
|
+
children: MAIN_BRANCH
|
|
146
|
+
}), /*#__PURE__*/_jsx(Pill, {
|
|
147
|
+
pillStyle: "light-gray",
|
|
148
|
+
size: "small",
|
|
149
|
+
children: t('branching:defaultBranch')
|
|
150
|
+
})]
|
|
151
|
+
})]
|
|
152
|
+
})]
|
|
153
|
+
})
|
|
154
|
+
}), /*#__PURE__*/_jsxs(DialogFooter, {
|
|
155
|
+
children: [/*#__PURE__*/_jsx(Button, {
|
|
156
|
+
buttonStyle: "secondary",
|
|
157
|
+
disabled: isCreating,
|
|
158
|
+
onClick: () => {
|
|
159
|
+
closeModal(newBranchModalSlug);
|
|
160
|
+
reset();
|
|
161
|
+
},
|
|
162
|
+
size: "medium",
|
|
163
|
+
children: t('general:cancel')
|
|
164
|
+
}), /*#__PURE__*/_jsx(Button, {
|
|
165
|
+
buttonStyle: "primary",
|
|
166
|
+
disabled: !trimmedName || isCreating,
|
|
167
|
+
onClick: () => void handleCreate(),
|
|
168
|
+
size: "medium",
|
|
169
|
+
children: isCreating ? t('general:creating') : t('branching:createAndSwitch')
|
|
170
|
+
})]
|
|
171
|
+
})]
|
|
172
|
+
});
|
|
173
|
+
};
|
|
174
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["branchesCollectionSlug","formatAdminURL","MAIN_BRANCH","React","useCallback","useState","toast","TextInput","BranchIcon","useBranch","useConfig","useTranslation","requests","Button","DialogBody","DialogFooter","DialogHeader","DialogModal","useModal","Pill","newBranchModalSlug","baseClass","NewBranchModal","t","closeModal","setBranch","config","routes","api","serverURL","name","setName","description","setDescription","isCreating","setIsCreating","trimmedName","trim","reset","handleCreate","trimmedDescription","response","post","apiRoute","path","body","JSON","stringify","headers","json","ok","fieldErrors","errors","flatMap","data","messages","length","map","message","forEach","error","doc","slug","_err","_jsxs","className","closeOnBlur","_jsx","showClose","title","onSubmit","e","preventDefault","label","onChange","target","value","required","size","pillStyle","buttonStyle","disabled","onClick"],"sources":["../../../../src/elements/BranchSelector/NewBranchModal/index.tsx"],"sourcesContent":["'use client'\n\nimport { branchesCollectionSlug, formatAdminURL, MAIN_BRANCH } from 'payload/shared'\nimport React, { useCallback, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { TextInput } from '../../../fields/Text/Input.js'\nimport { BranchIcon } from '../../../icons/Branch/index.js'\nimport { useBranch } from '../../../providers/Branch/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { requests } from '../../../utilities/api.js'\nimport { Button } from '../../Button/index.js'\nimport { DialogBody, DialogFooter, DialogHeader, DialogModal } from '../../Dialog/index.js'\nimport { useModal } from '../../Modal/index.js'\nimport { Pill } from '../../Pill/index.js'\nimport './index.css'\n\nexport const newBranchModalSlug = 'new-branch'\n\nconst baseClass = 'new-branch-modal'\n\n/**\n * Creates a branch without leaving the current view.\n *\n * The slug is derived from the name server-side rather than asked for, so the\n * only thing required here is a name — which is why this is a modal rather than\n * a trip to the collection's create view.\n */\nexport const NewBranchModal: React.FC = () => {\n const { t } = useTranslation()\n const { closeModal } = useModal()\n const { setBranch } = useBranch()\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const [name, setName] = useState('')\n const [description, setDescription] = useState('')\n const [isCreating, setIsCreating] = useState(false)\n\n const trimmedName = name.trim()\n\n const reset = useCallback(() => {\n setName('')\n setDescription('')\n }, [])\n\n const handleCreate = useCallback(async () => {\n if (!trimmedName || isCreating) {\n return\n }\n\n setIsCreating(true)\n\n try {\n const trimmedDescription = description.trim()\n\n const response = await requests.post(\n formatAdminURL({ apiRoute: api, path: `/${branchesCollectionSlug}`, serverURL }),\n {\n body: JSON.stringify({\n name: trimmedName,\n ...(trimmedDescription ? { description: trimmedDescription } : {}),\n }),\n headers: { 'Content-Type': 'application/json' },\n },\n )\n\n const json = (await response.json()) as {\n doc?: { slug?: string }\n errors?: {\n data?: { errors?: { message: string; path: string }[] }\n message: string\n }[]\n }\n\n if (!response.ok) {\n const fieldErrors = json?.errors?.flatMap(({ data }) => data?.errors ?? []) ?? []\n\n // Field errors are reported against `slug`, which is derived rather than\n // typed — naming it would point the editor at a field they never saw. The\n // name is what they control, so that is what the message names.\n const messages = fieldErrors.length\n ? fieldErrors.map(({ message, path }) =>\n path === 'slug' ? `${t('branching:branchName')}: ${message}` : message,\n )\n : (json?.errors?.map(({ message }) => message) ?? [])\n\n if (messages.length) {\n messages.forEach((message) => toast.error(message))\n } else {\n toast.error(t('error:unknown'))\n }\n\n return\n }\n\n closeModal(newBranchModalSlug)\n reset()\n\n // Creating a branch is a declaration of intent to work on it, so the\n // switch follows the save.\n if (json?.doc?.slug) {\n setBranch(json.doc.slug)\n }\n } catch (_err) {\n toast.error(t('error:unknown'))\n } finally {\n setIsCreating(false)\n }\n }, [api, closeModal, description, isCreating, reset, serverURL, setBranch, t, trimmedName])\n\n return (\n <DialogModal className={baseClass} closeOnBlur slug={newBranchModalSlug}>\n <DialogHeader showClose title={t('branching:createNewBranch')} />\n <DialogBody>\n <form\n className={`${baseClass}__form`}\n onSubmit={(e) => {\n e.preventDefault()\n void handleCreate()\n }}\n >\n <TextInput\n label={t('branching:branchName')}\n onChange={(e) => setName(e.target.value)}\n path=\"name\"\n required\n value={name}\n />\n <TextInput\n label={t('branching:branchDescription')}\n onChange={(e) => setDescription(e.target.value)}\n path=\"description\"\n value={description}\n />\n {/* Display-only: branching from a branch is not supported, so `main` is\n the only possible source and there is nothing here to choose. */}\n <div className={`${baseClass}__source`}>\n <span className={`${baseClass}__source-label`}>{t('branching:branchedFrom')}</span>\n <div className={`${baseClass}__source-value`}>\n <BranchIcon size={24} />\n <span className={`${baseClass}__source-name`}>{MAIN_BRANCH}</span>\n <Pill pillStyle=\"light-gray\" size=\"small\">\n {t('branching:defaultBranch')}\n </Pill>\n </div>\n </div>\n </form>\n </DialogBody>\n <DialogFooter>\n <Button\n buttonStyle=\"secondary\"\n disabled={isCreating}\n onClick={() => {\n closeModal(newBranchModalSlug)\n reset()\n }}\n size=\"medium\"\n >\n {t('general:cancel')}\n </Button>\n <Button\n buttonStyle=\"primary\"\n disabled={!trimmedName || isCreating}\n onClick={() => void handleCreate()}\n size=\"medium\"\n >\n {isCreating ? t('general:creating') : t('branching:createAndSwitch')}\n </Button>\n </DialogFooter>\n </DialogModal>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
@layer payload-default {
|
|
2
|
+
.branch-selector {
|
|
3
|
+
flex-shrink: 0;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
/* The chevron lives inside the label rather than in the button's own icon
|
|
7
|
+
slot, which is taken by the branch icon, so close the end padding by hand. */
|
|
8
|
+
.branch-selector__trigger.btn--size-medium {
|
|
9
|
+
padding-inline-end: var(--spacer-1);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.branch-selector__trigger .btn__label {
|
|
13
|
+
min-width: 0;
|
|
14
|
+
overflow: hidden;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.branch-selector__trigger-label {
|
|
18
|
+
display: flex;
|
|
19
|
+
align-items: center;
|
|
20
|
+
gap: var(--spacer-1);
|
|
21
|
+
min-width: 0;
|
|
22
|
+
/* Matches `.step-nav__item`: a branch name gets the same room as a crumb
|
|
23
|
+
before it starts costing the trail beside it. */
|
|
24
|
+
max-width: calc(var(--spacer-6) * 4);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.branch-selector__trigger-name {
|
|
28
|
+
text-overflow: ellipsis;
|
|
29
|
+
overflow: hidden;
|
|
30
|
+
white-space: nowrap;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.branch-selector__popup .combobox__entry {
|
|
34
|
+
flex-direction: column;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.branch-selector__option {
|
|
38
|
+
display: flex;
|
|
39
|
+
align-items: center;
|
|
40
|
+
justify-content: space-between;
|
|
41
|
+
gap: var(--spacer-3);
|
|
42
|
+
width: 100%;
|
|
43
|
+
padding-inline: var(--spacer-3);
|
|
44
|
+
padding-block: var(--spacer-1);
|
|
45
|
+
font-family: var(--text-body-medium-font-family);
|
|
46
|
+
font-size: var(--text-body-medium-font-size);
|
|
47
|
+
font-weight: var(--text-body-medium-font-weight);
|
|
48
|
+
line-height: var(--text-body-medium-line-height);
|
|
49
|
+
color: var(--color-text);
|
|
50
|
+
|
|
51
|
+
&:hover {
|
|
52
|
+
background: var(--color-bg-secondary);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.branch-selector__option svg {
|
|
57
|
+
flex-shrink: 0;
|
|
58
|
+
color: var(--color-icon);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.branch-selector__option-labels {
|
|
62
|
+
display: flex;
|
|
63
|
+
align-items: baseline;
|
|
64
|
+
gap: var(--spacer-2);
|
|
65
|
+
min-width: 0;
|
|
66
|
+
white-space: nowrap;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.branch-selector__option-name {
|
|
70
|
+
text-overflow: ellipsis;
|
|
71
|
+
overflow: hidden;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/* The branch you are on, pinned above the list of the ones you are not. */
|
|
75
|
+
.branch-selector__current {
|
|
76
|
+
display: flex;
|
|
77
|
+
align-items: center;
|
|
78
|
+
justify-content: space-between;
|
|
79
|
+
gap: var(--spacer-3);
|
|
80
|
+
padding-inline: var(--spacer-3);
|
|
81
|
+
padding-block: var(--spacer-1);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.branch-selector__current-name {
|
|
85
|
+
min-width: 0;
|
|
86
|
+
overflow: hidden;
|
|
87
|
+
text-overflow: ellipsis;
|
|
88
|
+
white-space: nowrap;
|
|
89
|
+
font-family: var(--text-body-medium-strong-font-family);
|
|
90
|
+
font-weight: var(--text-body-medium-strong-font-weight);
|
|
91
|
+
color: var(--color-text);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/* On a branch the name is the way into its manage view. The icon is the standing
|
|
95
|
+
affordance, so the underline is held back for hover — a permanently underlined
|
|
96
|
+
name reads as decoration on what is otherwise the row's heading. */
|
|
97
|
+
.branch-selector__current-link {
|
|
98
|
+
display: inline-flex;
|
|
99
|
+
align-items: center;
|
|
100
|
+
gap: var(--spacer-1);
|
|
101
|
+
min-width: 0;
|
|
102
|
+
text-decoration: none;
|
|
103
|
+
|
|
104
|
+
&:hover {
|
|
105
|
+
color: var(--color-text-brand);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
&:hover .branch-selector__current-text {
|
|
109
|
+
text-decoration: underline;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.branch-selector__current-text {
|
|
114
|
+
min-width: 0;
|
|
115
|
+
overflow: hidden;
|
|
116
|
+
text-overflow: ellipsis;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.branch-selector__current-icon {
|
|
120
|
+
flex-shrink: 0;
|
|
121
|
+
color: var(--color-icon);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.branch-selector__current-link:hover .branch-selector__current-icon {
|
|
125
|
+
color: var(--color-text-brand);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/* Reads as a state to notice rather than a footnote, so it takes the same green
|
|
129
|
+
the banner on the branch page does. */
|
|
130
|
+
.branch-selector__option-scheduled {
|
|
131
|
+
flex-shrink: 0;
|
|
132
|
+
font-family: var(--text-body-small-font-family);
|
|
133
|
+
font-size: var(--text-body-small-font-size);
|
|
134
|
+
color: var(--color-text-success);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/* Muted and small: it qualifies the name rather than competing with it. */
|
|
138
|
+
.branch-selector__option-merged {
|
|
139
|
+
flex-shrink: 0;
|
|
140
|
+
font-family: var(--text-body-small-font-family);
|
|
141
|
+
font-size: var(--text-body-small-font-size);
|
|
142
|
+
color: var(--color-text-secondary);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/* Shared by the pinned footer rows, which are a link and a button rather than
|
|
146
|
+
combobox entries and so arrive with their own user-agent styling. */
|
|
147
|
+
.branch-selector__action {
|
|
148
|
+
background: none;
|
|
149
|
+
border: none;
|
|
150
|
+
font: inherit;
|
|
151
|
+
text-align: start;
|
|
152
|
+
text-decoration: none;
|
|
153
|
+
color: var(--color-text);
|
|
154
|
+
cursor: pointer;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.branch-selector__action .branch-selector__option-labels {
|
|
158
|
+
align-items: center;
|
|
159
|
+
gap: var(--spacer-1);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.branch-selector__footer-divider {
|
|
163
|
+
height: var(--stroke-width-small);
|
|
164
|
+
margin-block: var(--spacer-2);
|
|
165
|
+
background: var(--color-border);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.branch-selector__option--active .branch-selector__option-name {
|
|
169
|
+
font-family: var(--text-body-medium-strong-font-family);
|
|
170
|
+
font-weight: var(--text-body-medium-strong-font-weight);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './index.css';
|
|
3
|
+
/**
|
|
4
|
+
* Switcher for the active content branch, sitting to the left of the breadcrumb
|
|
5
|
+
* trail — everything after it is scoped to the branch it names.
|
|
6
|
+
*
|
|
7
|
+
* Renders nothing when branching is off, and nothing while `main` is the only
|
|
8
|
+
* branch there is — until a branch exists there is nothing to switch to.
|
|
9
|
+
*/
|
|
10
|
+
export declare const BranchSelector: React.FC<{
|
|
11
|
+
className?: string;
|
|
12
|
+
}>;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/BranchSelector/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAkBhD,OAAO,aAAa,CAAA;AAIpB;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CA+M3D,CAAA"}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { branchesCollectionSlug, formatAdminURL, MAIN_BRANCH } from 'payload/shared';
|
|
5
|
+
import React, { Fragment, useMemo } from 'react';
|
|
6
|
+
import { BranchIcon } from '../../icons/Branch/index.js';
|
|
7
|
+
import { ChevronIcon } from '../../icons/Chevron/index.js';
|
|
8
|
+
import { NewTabIcon } from '../../icons/NewTab/index.js';
|
|
9
|
+
import { PlusIcon } from '../../icons/Plus/index.js';
|
|
10
|
+
import { useBranch, useShowBranchSelector } from '../../providers/Branch/index.js';
|
|
11
|
+
import { useConfig } from '../../providers/Config/index.js';
|
|
12
|
+
import { useTranslation } from '../../providers/Translation/index.js';
|
|
13
|
+
import { Button } from '../Button/index.js';
|
|
14
|
+
import { Combobox } from '../Combobox/index.js';
|
|
15
|
+
import { Link } from '../Link/index.js';
|
|
16
|
+
import { useMergeBranch } from '../MergeBranch/context.js';
|
|
17
|
+
import { useModal } from '../Modal/index.js';
|
|
18
|
+
import { NewBranchModal, newBranchModalSlug } from './NewBranchModal/index.js';
|
|
19
|
+
import './index.css';
|
|
20
|
+
const baseClass = 'branch-selector';
|
|
21
|
+
/**
|
|
22
|
+
* Switcher for the active content branch, sitting to the left of the breadcrumb
|
|
23
|
+
* trail — everything after it is scoped to the branch it names.
|
|
24
|
+
*
|
|
25
|
+
* Renders nothing when branching is off, and nothing while `main` is the only
|
|
26
|
+
* branch there is — until a branch exists there is nothing to switch to.
|
|
27
|
+
*/
|
|
28
|
+
export const BranchSelector = ({
|
|
29
|
+
className
|
|
30
|
+
}) => {
|
|
31
|
+
const {
|
|
32
|
+
activeBranch,
|
|
33
|
+
branches,
|
|
34
|
+
setBranch
|
|
35
|
+
} = useBranch();
|
|
36
|
+
const showSelector = useShowBranchSelector();
|
|
37
|
+
const {
|
|
38
|
+
t
|
|
39
|
+
} = useTranslation();
|
|
40
|
+
const {
|
|
41
|
+
openModal
|
|
42
|
+
} = useModal();
|
|
43
|
+
const {
|
|
44
|
+
openMerge
|
|
45
|
+
} = useMergeBranch();
|
|
46
|
+
const {
|
|
47
|
+
config: {
|
|
48
|
+
routes: {
|
|
49
|
+
admin: adminRoute
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
} = useConfig();
|
|
53
|
+
const manageBranchesURL = formatAdminURL({
|
|
54
|
+
adminRoute,
|
|
55
|
+
path: `/collections/${branchesCollectionSlug}`
|
|
56
|
+
});
|
|
57
|
+
// A branch that was merged, closed or made unreadable while it was still
|
|
58
|
+
// selected is no longer in the list. It is still what the request resolved to,
|
|
59
|
+
// so the switcher names it — and pinning it at the top is also the way out.
|
|
60
|
+
const activeOption = activeBranch === MAIN_BRANCH ? {
|
|
61
|
+
name: MAIN_BRANCH,
|
|
62
|
+
slug: MAIN_BRANCH
|
|
63
|
+
} : branches.find(({
|
|
64
|
+
slug
|
|
65
|
+
}) => slug === activeBranch) ?? {
|
|
66
|
+
name: activeBranch,
|
|
67
|
+
slug: activeBranch
|
|
68
|
+
};
|
|
69
|
+
const {
|
|
70
|
+
entries: entries_0,
|
|
71
|
+
slugByEntry: slugByEntry_0
|
|
72
|
+
} = useMemo(() => {
|
|
73
|
+
// Everything except where you already are: the active branch is pinned above
|
|
74
|
+
// the search, so listing it again would offer switching to it.
|
|
75
|
+
const options = [{
|
|
76
|
+
name: MAIN_BRANCH,
|
|
77
|
+
slug: MAIN_BRANCH
|
|
78
|
+
}, ...branches].filter(({
|
|
79
|
+
slug: slug_0
|
|
80
|
+
}) => slug_0 !== activeBranch);
|
|
81
|
+
const slugByEntry = new Map();
|
|
82
|
+
const entries = options.map(option => {
|
|
83
|
+
const hasDistinctName = option.name !== option.slug;
|
|
84
|
+
const entry = {
|
|
85
|
+
Component: /*#__PURE__*/_jsx("span", {
|
|
86
|
+
className: `${baseClass}__option`,
|
|
87
|
+
children: /*#__PURE__*/_jsxs("span", {
|
|
88
|
+
className: `${baseClass}__option-labels`,
|
|
89
|
+
children: [/*#__PURE__*/_jsx("span", {
|
|
90
|
+
className: `${baseClass}__option-name`,
|
|
91
|
+
children: option.name
|
|
92
|
+
}), option.isScheduled ? /*#__PURE__*/_jsx("span", {
|
|
93
|
+
className: `${baseClass}__option-scheduled`,
|
|
94
|
+
children: t('branching:scheduledToMerge')
|
|
95
|
+
}) : option.isMerged && /*#__PURE__*/_jsx("span", {
|
|
96
|
+
className: `${baseClass}__option-merged`,
|
|
97
|
+
children: t('branching:status_merged')
|
|
98
|
+
})]
|
|
99
|
+
})
|
|
100
|
+
}),
|
|
101
|
+
// The slug is not rendered — editors name branches, the slug is derived —
|
|
102
|
+
// but it stays searchable, since it is what URLs and the API expose.
|
|
103
|
+
name: hasDistinctName ? `${option.name} ${option.slug}` : option.name
|
|
104
|
+
};
|
|
105
|
+
slugByEntry.set(entry, option.slug);
|
|
106
|
+
return entry;
|
|
107
|
+
});
|
|
108
|
+
return {
|
|
109
|
+
entries,
|
|
110
|
+
slugByEntry
|
|
111
|
+
};
|
|
112
|
+
}, [activeBranch, branches, t]);
|
|
113
|
+
if (!showSelector) {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
const activeLabel = branches.find(({
|
|
117
|
+
slug: slug_1
|
|
118
|
+
}) => slug_1 === activeBranch)?.name ?? activeBranch ?? MAIN_BRANCH;
|
|
119
|
+
return /*#__PURE__*/_jsxs(Fragment, {
|
|
120
|
+
children: [/*#__PURE__*/_jsx(Combobox, {
|
|
121
|
+
"aria-label": t('branching:branches'),
|
|
122
|
+
className: [baseClass, className].filter(Boolean).join(' '),
|
|
123
|
+
entries: entries_0,
|
|
124
|
+
// Pinned rather than listed, so both stay reachable no matter what the
|
|
125
|
+
// search has filtered the list down to.
|
|
126
|
+
footer: ({
|
|
127
|
+
close
|
|
128
|
+
}) => /*#__PURE__*/_jsxs(Fragment, {
|
|
129
|
+
children: [/*#__PURE__*/_jsx(Link, {
|
|
130
|
+
className: `${baseClass}__option ${baseClass}__action ${baseClass}__manage`,
|
|
131
|
+
href: manageBranchesURL,
|
|
132
|
+
onClick: close,
|
|
133
|
+
children: /*#__PURE__*/_jsx("span", {
|
|
134
|
+
className: `${baseClass}__option-labels`,
|
|
135
|
+
children: t('branching:manageBranches')
|
|
136
|
+
})
|
|
137
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
138
|
+
className: `${baseClass}__footer-divider`
|
|
139
|
+
}), /*#__PURE__*/_jsx("button", {
|
|
140
|
+
className: `${baseClass}__option ${baseClass}__action ${baseClass}__create`,
|
|
141
|
+
onClick: () => {
|
|
142
|
+
close();
|
|
143
|
+
openModal(newBranchModalSlug);
|
|
144
|
+
},
|
|
145
|
+
type: "button",
|
|
146
|
+
children: /*#__PURE__*/_jsxs("span", {
|
|
147
|
+
className: `${baseClass}__option-labels`,
|
|
148
|
+
children: [/*#__PURE__*/_jsx(PlusIcon, {
|
|
149
|
+
size: 16
|
|
150
|
+
}), t('branching:createNewBranch')]
|
|
151
|
+
})
|
|
152
|
+
})]
|
|
153
|
+
}),
|
|
154
|
+
// Where you are, before what you could switch to. On a branch the name
|
|
155
|
+
// itself is the way to manage it, so the row carries only the name and the
|
|
156
|
+
// one action that is not reachable from anywhere else.
|
|
157
|
+
header: ({
|
|
158
|
+
close: close_0
|
|
159
|
+
}) => /*#__PURE__*/_jsxs("div", {
|
|
160
|
+
className: `${baseClass}__current`,
|
|
161
|
+
children: [activeOption.id === undefined ? /*#__PURE__*/_jsx("span", {
|
|
162
|
+
className: `${baseClass}__current-name`,
|
|
163
|
+
children: activeOption.name
|
|
164
|
+
}) :
|
|
165
|
+
// Opens in a new tab, which is what the icon promises. Reviewing a
|
|
166
|
+
// branch is a detour from whatever you were editing when you opened
|
|
167
|
+
// the switcher, so it should not cost you that place.
|
|
168
|
+
/*#__PURE__*/
|
|
169
|
+
_jsxs(Link, {
|
|
170
|
+
className: `${baseClass}__current-name ${baseClass}__current-link`,
|
|
171
|
+
href: formatAdminURL({
|
|
172
|
+
adminRoute,
|
|
173
|
+
path: `/collections/${branchesCollectionSlug}/${activeOption.id}`
|
|
174
|
+
}),
|
|
175
|
+
onClick: close_0,
|
|
176
|
+
rel: "noopener noreferrer",
|
|
177
|
+
target: "_blank",
|
|
178
|
+
children: [/*#__PURE__*/_jsx("span", {
|
|
179
|
+
className: `${baseClass}__current-text`,
|
|
180
|
+
children: activeOption.name
|
|
181
|
+
}), /*#__PURE__*/_jsx(NewTabIcon, {
|
|
182
|
+
className: `${baseClass}__current-icon`,
|
|
183
|
+
size: 16
|
|
184
|
+
})]
|
|
185
|
+
}), activeOption.id !== undefined && /*#__PURE__*/_jsx(Button, {
|
|
186
|
+
buttonStyle: "primary",
|
|
187
|
+
onClick: () => {
|
|
188
|
+
close_0();
|
|
189
|
+
// No selection to pass: from the switcher, merging means the whole
|
|
190
|
+
// branch — so it hands over the way to narrow that instead, and
|
|
191
|
+
// lets the modal count what is pending.
|
|
192
|
+
openMerge({
|
|
193
|
+
branchID: activeOption.id,
|
|
194
|
+
branchName: activeOption.name,
|
|
195
|
+
branchSlug: activeOption.slug,
|
|
196
|
+
reviewURL: formatAdminURL({
|
|
197
|
+
adminRoute,
|
|
198
|
+
path: `/collections/${branchesCollectionSlug}/${activeOption.id}`
|
|
199
|
+
})
|
|
200
|
+
});
|
|
201
|
+
},
|
|
202
|
+
size: "medium",
|
|
203
|
+
children: t('branching:merge')
|
|
204
|
+
})]
|
|
205
|
+
}),
|
|
206
|
+
horizontalAlign: "left",
|
|
207
|
+
// Searchable as soon as there is anything to search. With nothing to switch
|
|
208
|
+
// to, a search box and a "no matches" message describe a search nobody ran —
|
|
209
|
+
// the popup is then only its two actions.
|
|
210
|
+
minEntriesForSearch: entries_0.length ? 0 : 1,
|
|
211
|
+
onSelect: entry_0 => {
|
|
212
|
+
const slug_2 = slugByEntry_0.get(entry_0);
|
|
213
|
+
if (slug_2) {
|
|
214
|
+
setBranch(slug_2);
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
portalClassName: `${baseClass}__popup`,
|
|
218
|
+
renderButton: ({
|
|
219
|
+
active,
|
|
220
|
+
onClick,
|
|
221
|
+
onKeyDown,
|
|
222
|
+
...ariaProps
|
|
223
|
+
}) => /*#__PURE__*/_jsx(Button, {
|
|
224
|
+
"aria-label": t('branching:selectBranch'),
|
|
225
|
+
buttonStyle: "secondary",
|
|
226
|
+
className: `${baseClass}__trigger`,
|
|
227
|
+
extraButtonProps: {
|
|
228
|
+
onKeyDown
|
|
229
|
+
},
|
|
230
|
+
icon: /*#__PURE__*/_jsx(BranchIcon, {}),
|
|
231
|
+
iconPosition: "left",
|
|
232
|
+
onClick: onClick,
|
|
233
|
+
selected: active,
|
|
234
|
+
size: "medium",
|
|
235
|
+
...ariaProps,
|
|
236
|
+
children: /*#__PURE__*/_jsxs("span", {
|
|
237
|
+
className: `${baseClass}__trigger-label`,
|
|
238
|
+
children: [/*#__PURE__*/_jsx("span", {
|
|
239
|
+
className: `${baseClass}__trigger-name`,
|
|
240
|
+
children: activeLabel
|
|
241
|
+
}), /*#__PURE__*/_jsx(ChevronIcon, {
|
|
242
|
+
direction: active ? 'up' : 'down',
|
|
243
|
+
size: 16
|
|
244
|
+
})]
|
|
245
|
+
})
|
|
246
|
+
}),
|
|
247
|
+
searchPlaceholder: t('branching:searchBranches'),
|
|
248
|
+
// Suppressed only when there is nothing to match against in the first place;
|
|
249
|
+
// a search that filters everything out still says so.
|
|
250
|
+
showEmptyMessage: entries_0.length > 0,
|
|
251
|
+
size: "fit-content"
|
|
252
|
+
}), /*#__PURE__*/_jsx(NewBranchModal, {})]
|
|
253
|
+
});
|
|
254
|
+
};
|
|
255
|
+
//# sourceMappingURL=index.js.map
|