From 068e9ead91c0ad6484ea6bbc0fecfae14dab26b5 Mon Sep 17 00:00:00 2001 From: nscuro Date: Tue, 9 Jun 2026 12:57:07 +0200 Subject: [PATCH] Fix getTabFromRoute erroneously considering URL query params Some views "persist" search parameters in the URL query, while simultaneously watching the URL for which tab to show. The latter erroneously considered URL query params, such that typing in a search field would cause `getTabFromRoute` to yield no existing tab, which then caused the view to "snap" back to the default tab. Signed-off-by: nscuro --- src/views/globalAudit/VulnerabilityAudit.vue | 2 +- src/views/policy/PolicyManagement.vue | 2 +- src/views/portfolio/licenses/License.vue | 2 +- src/views/portfolio/projects/Component.vue | 2 +- src/views/portfolio/projects/Project.vue | 2 +- src/views/portfolio/vulnerabilities/Vulnerability.vue | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/views/globalAudit/VulnerabilityAudit.vue b/src/views/globalAudit/VulnerabilityAudit.vue index 8de10af22..1da56f001 100644 --- a/src/views/globalAudit/VulnerabilityAudit.vue +++ b/src/views/globalAudit/VulnerabilityAudit.vue @@ -67,7 +67,7 @@ export default { } }, getTabFromRoute: function () { - let pattern = new RegExp('/vulnerabilityAudit\\/([^\\/]*)', 'gi'); + let pattern = new RegExp('/vulnerabilityAudit\\/([^\\/?#]*)', 'gi'); let tab = pattern.exec(this.$route.fullPath.toLowerCase()); tab && tab[1] && tab[1].toLowerCase() === 'grouped' ? (this.tabIndex = 1) diff --git a/src/views/policy/PolicyManagement.vue b/src/views/policy/PolicyManagement.vue index 536ceff4e..3d41a3343 100644 --- a/src/views/policy/PolicyManagement.vue +++ b/src/views/policy/PolicyManagement.vue @@ -93,7 +93,7 @@ export default { } }, getTabFromRoute: function () { - let pattern = new RegExp('/policy\/([^\\/]*)', 'gi'); + let pattern = new RegExp('/policy\/([^\\/?#]*)', 'gi'); let tab = pattern.exec(this.$route.fullPath.toLowerCase()); return this.$refs[tab && tab[1] ? tab[1].toLowerCase() : 'policies']; }, diff --git a/src/views/portfolio/licenses/License.vue b/src/views/portfolio/licenses/License.vue index a1bfefcb8..7f27ac390 100644 --- a/src/views/portfolio/licenses/License.vue +++ b/src/views/portfolio/licenses/License.vue @@ -165,7 +165,7 @@ export default { }, getTabFromRoute: function () { let pattern = new RegExp( - '/licenses\\/' + this.licenseId + '\\/([^\\/]*)', + '/licenses\\/' + this.licenseId + '\\/([^\\/?#]*)', 'gi', ); let tab = pattern.exec(this.$route.fullPath.toLowerCase()); diff --git a/src/views/portfolio/projects/Component.vue b/src/views/portfolio/projects/Component.vue index e27f0e2aa..c347ece0f 100644 --- a/src/views/portfolio/projects/Component.vue +++ b/src/views/portfolio/projects/Component.vue @@ -280,7 +280,7 @@ export default { }, getTabFromRoute: function () { let pattern = new RegExp( - '/components\\/' + this.uuid + '\\/([^\\/]*)', + '/components\\/' + this.uuid + '\\/([^\\/?#]*)', 'gi', ); let tab = pattern.exec(this.$route.fullPath.toLowerCase()); diff --git a/src/views/portfolio/projects/Project.vue b/src/views/portfolio/projects/Project.vue index f11d4c350..e8dff38eb 100644 --- a/src/views/portfolio/projects/Project.vue +++ b/src/views/portfolio/projects/Project.vue @@ -640,7 +640,7 @@ export default { }, getTabFromRoute: function () { let pattern = new RegExp( - '/projects\\/' + this.uuid + '\\/([^\\/]*)', + '/projects\\/' + this.uuid + '\\/([^\\/?#]*)', 'gi', ); let tab = pattern.exec(this.$route.fullPath.toLowerCase()); diff --git a/src/views/portfolio/vulnerabilities/Vulnerability.vue b/src/views/portfolio/vulnerabilities/Vulnerability.vue index 2c647e50d..51700d7b5 100644 --- a/src/views/portfolio/vulnerabilities/Vulnerability.vue +++ b/src/views/portfolio/vulnerabilities/Vulnerability.vue @@ -544,7 +544,7 @@ export default { this.source + '\\/' + encodeURIComponent(this.vulnId) + - '\\/([^\\/]*)', + '\\/([^\\/?#]*)', 'gi', ); let tab = pattern.exec(this.$route.fullPath.toLowerCase());