From 40ca8afbaa97883d97b028334841890e1c392d3f Mon Sep 17 00:00:00 2001 From: Julia Miocene Date: Wed, 12 Feb 2025 20:09:11 +0100 Subject: [PATCH 1/4] Add hash url for the first two steps to the new project creation form --- .../projects/new_v2/components/app.vue | 28 ++++++++++++++- .../new_v2/components/form_breadcrumb.vue | 12 +++++++ .../new_v2/components/form_breadcrumb_spec.js | 36 ++++++++++++++++--- 3 files changed, 71 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/projects/new_v2/components/app.vue b/app/assets/javascripts/projects/new_v2/components/app.vue index a446c3cdcbb9f7..f5f9b7fde35d4f 100644 --- a/app/assets/javascripts/projects/new_v2/components/app.vue +++ b/app/assets/javascripts/projects/new_v2/components/app.vue @@ -149,6 +149,21 @@ export default { step2Component() { return this.selectedProjectOption.component; }, + additionalBreadcrumb() { + return this.currentStep === 2 ? this.selectedProjectOption : null; + }, + }, + + created() { + this.handleLocationHashChange(); + + window.addEventListener('hashchange', () => { + this.handleLocationHashChange(); + }); + }, + + beforeDestroy() { + window.removeEventListener('hashchange', window); }, methods: { @@ -163,9 +178,20 @@ export default { }, onBack() { this.currentStep -= 1; + window.location.hash = ''; }, onNext() { this.currentStep += 1; + window.location.hash = `#${this.selectedProjectType}`; + }, + handleLocationHashChange() { + const hash = window.location.hash.substring(1); + if (this.availableProjectTypes.some((type) => type.value === hash)) { + this.selectedProjectType = hash; + this.currentStep = 2; + } else { + this.currentStep = 1; + } }, }, }; @@ -173,7 +199,7 @@ export default {