From a238cce65d9d2f1b3b8cfbc5d54a3d587634034e Mon Sep 17 00:00:00 2001 From: Chad Lavimoniere Date: Tue, 13 May 2025 15:23:35 -0400 Subject: [PATCH] Migrate workspace breadcrumbs to single nav option Changelog: changed EE: true --- .../user/components/workspaces_breadcrumbs.vue | 11 ++++++++++- .../workspaces/user/init_user_workspaces_app.js | 11 ++++++++++- .../user/components/workspaces_breadcrumbs_spec.js | 13 +++++++++++-- .../user/init_user_workspaces_app_spec.js | 6 ++++++ 4 files changed, 37 insertions(+), 4 deletions(-) diff --git a/ee/app/assets/javascripts/workspaces/user/components/workspaces_breadcrumbs.vue b/ee/app/assets/javascripts/workspaces/user/components/workspaces_breadcrumbs.vue index 4638b22a6caa17..b4621177640ee7 100644 --- a/ee/app/assets/javascripts/workspaces/user/components/workspaces_breadcrumbs.vue +++ b/ee/app/assets/javascripts/workspaces/user/components/workspaces_breadcrumbs.vue @@ -12,6 +12,13 @@ export default { components: { GlBreadcrumb, }, + props: { + staticBreadcrumbs: { + type: Object, + default: () => ({ items: [] }), + required: false, + }, + }, computed: { crumbs() { const crumbs = [ @@ -28,7 +35,9 @@ export default { }); } - return crumbs; + const staticCrumbs = this.staticBreadcrumbs.items; + + return [...staticCrumbs, ...crumbs]; }, }, }; diff --git a/ee/app/assets/javascripts/workspaces/user/init_user_workspaces_app.js b/ee/app/assets/javascripts/workspaces/user/init_user_workspaces_app.js index 9443ab2258883b..1cdc1301343cf6 100644 --- a/ee/app/assets/javascripts/workspaces/user/init_user_workspaces_app.js +++ b/ee/app/assets/javascripts/workspaces/user/init_user_workspaces_app.js @@ -31,7 +31,16 @@ const initUserWorkspacesApp = () => { const router = createRouter({ base: workspacesListPath, }); - injectVueAppBreadcrumbs(router, WorkspacesBreadcrumbs); + injectVueAppBreadcrumbs( + router, + WorkspacesBreadcrumbs, + null, + {}, + { + // cf. https://gitlab.com/gitlab-org/gitlab/-/merge_requests/186906 + singleNavOptIn: true, + }, + ); return new Vue({ el, name: 'WorkspacesRoot', diff --git a/ee/spec/frontend/workspaces/user/components/workspaces_breadcrumbs_spec.js b/ee/spec/frontend/workspaces/user/components/workspaces_breadcrumbs_spec.js index 93e61ba43eb609..fa2d93ae02e74a 100644 --- a/ee/spec/frontend/workspaces/user/components/workspaces_breadcrumbs_spec.js +++ b/ee/spec/frontend/workspaces/user/components/workspaces_breadcrumbs_spec.js @@ -21,12 +21,12 @@ describe('workspaces/user/components/workspaces_breadcrumbs', () => { const findBreadcrumbs = () => wrapper.findComponent(GlBreadcrumb); - const createWrapper = () => { + const createWrapper = (props = {}) => { // noinspection JSCheckFunctionSignatures - TODO: Address in https://gitlab.com/gitlab-org/gitlab/-/issues/437600 router = createRouter(base); // noinspection JSValidateTypes - TODO: Address in https://gitlab.com/gitlab-org/gitlab/-/issues/437600 - wrapper = shallowMount(WorkspacesBreadcrumbs, { router }); + wrapper = shallowMount(WorkspacesBreadcrumbs, { router, propsData: props }); }; describe('when mounted', () => { @@ -79,5 +79,14 @@ describe('workspaces/user/components/workspaces_breadcrumbs', () => { it('should disable auto-resize behavior', () => { expect(findBreadcrumbs().props('autoResize')).toEqual(false); }); + + it('should render static breadcrumbs', () => { + const staticBreadcrumb = { text: 'Static', href: '/static' }; + + createWrapper({ + staticBreadcrumbs: { items: [staticBreadcrumb] }, + }); + expect(findBreadcrumbs().props('items')).toStrictEqual([staticBreadcrumb, rootBreadcrumb]); + }); }); }); diff --git a/ee/spec/frontend/workspaces/user/init_user_workspaces_app_spec.js b/ee/spec/frontend/workspaces/user/init_user_workspaces_app_spec.js index 4a9508cb7ad37a..842373a05fed80 100644 --- a/ee/spec/frontend/workspaces/user/init_user_workspaces_app_spec.js +++ b/ee/spec/frontend/workspaces/user/init_user_workspaces_app_spec.js @@ -47,6 +47,12 @@ describe('ee/workspaces/init_user_workspaces_app', () => { expect(injectVueAppBreadcrumbs).toHaveBeenCalledWith( expect.any(Object), WorkspacesBreadcrumbs, + null, + {}, + { + // cf. https://gitlab.com/gitlab-org/gitlab/-/merge_requests/186906 + singleNavOptIn: true, + }, ); }); }); -- GitLab