Skip to content

Commit ba09fa7

Browse files
authored
Merge pull request #3393 from CVEProject/rl-2273-fix-ghost-submenus
Resolves #2273 - Prevent "ghost" submenus in primary navigation menu (int)
2 parents f08dd6c + 17ed97c commit ba09fa7

2 files changed

Lines changed: 22 additions & 6 deletions

File tree

src/assets/data/navigation.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"label": "About",
55
"path": "About",
66
"primaryNavPath": "/About/Overview",
7+
"primarySubmenu": true,
78
"submenu": {
89
"Overview": {
910
"id": "1.0",
@@ -107,6 +108,7 @@
107108
"label": "Partner Information",
108109
"path": "PartnerInformation",
109110
"primaryNavPath": "/PartnerInformation/Partner",
111+
"primarySubmenu": true,
110112
"submenu": {
111113
"Partner": {
112114
"id": "2.0",
@@ -147,6 +149,7 @@
147149
"label": "Program Organization",
148150
"path": "ProgramOrganization",
149151
"primaryNavPath": "/ProgramOrganization/Structure",
152+
"primarySubmenu": true,
150153
"submenu": {
151154
"Structure": {
152155
"id": "3.0",
@@ -264,6 +267,7 @@
264267
"label": "CVE List Downloads",
265268
"path": "Downloads",
266269
"primaryNavPath": "/Downloads",
270+
"primarySubmenu": false,
267271
"submenu": {
268272
"Downloads": {
269273
"submenu": {
@@ -286,6 +290,7 @@
286290
"label": "Resources & Support",
287291
"path": "ResourcesSupport",
288292
"primaryNavPath": "/ResourcesSupport/Resources",
293+
"primarySubmenu": true,
289294
"submenu": {
290295
"Resources": {
291296
"id": "5.0",
@@ -505,6 +510,7 @@
505510
"label": "Report/Request",
506511
"path": "ReportRequest",
507512
"primaryNavPath": "/ReportRequest/ReportRequestForNonCNAs",
513+
"primarySubmenu": true,
508514
"submenu": {
509515
"CNAs": {
510516
"id": "8.0",
@@ -531,4 +537,4 @@
531537
}
532538
}
533539
}
534-
}
540+
}

src/components/PrimaryNavigation.vue

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,15 @@
3434
<span
3535
class="is-flex cve-touch-devices-menu-toggle-button"
3636
style="justify-content: space-between; width: inherit"
37-
v-if="menuItemLabel !== 'Report/Request' && menuObj.hasOwnProperty('primaryNavPath') && menuObj.hasOwnProperty('submenu')"
37+
v-if="isPrimaryMenuItem(menuObj)"
3838
>
3939
<a
4040
:href="menuObj.primaryNavPath"
4141
class="navbar-link is-arrowless"
4242
>
4343
{{menuItemLabel}}
4444
</a>
45-
<button v-if="menuItemLabel != 'Downloads'"
45+
<button v-if="hasSubmenu(menuObj)"
4646
class="is-hidden-desktop button is-text cve-button-submenu-toggle" @click="selectedTouchScreenMenu = menuItemLabel">
4747
<span class="icon is-small">
4848
<font-awesome-icon class="icon cve-icon-xxs" :icon="selectedTouchScreenMenu === menuItemLabel ? 'minus' : 'plus'"/>
@@ -54,7 +54,7 @@
5454
<div
5555
class="navbar-dropdown"
5656
:class="{'is-hidden-touch': !(selectedTouchScreenMenu === menuItemLabel) }"
57-
v-if="menuItemLabel !== 'Report/Request' && menuItemLabel != 'Downloads' && menuObj.hasOwnProperty('submenu')">
57+
v-if="hasSubmenu(menuObj)">
5858
<router-link
5959
@click="isOpen = false; isSubmenuActive[menuItemLabel] = false"
6060
:to="`/${menuObj.path}/${submenuObj.path}`" v-slot="{ href, isActive }"
@@ -76,7 +76,7 @@
7676
<span
7777
class="is-flex"
7878
style="justify-content: space-between; width: inherit"
79-
v-if="menuObj.hasOwnProperty('primaryNavPath') && menuObj.hasOwnProperty('submenu')"
79+
v-if="isPrimaryMenuItem(menuObj) && hasSubmenu(menuObj)"
8080
>
8181
<a
8282
:href="menuObj.primaryNavPath"
@@ -93,7 +93,7 @@
9393
<div
9494
class="navbar-dropdown has-dropdown is-right"
9595
:class="{'is-hidden-touch': !(selectedTouchScreenMenu === menuItemLabel)}"
96-
v-if="menuItemLabel != 'Downloads' && menuObj.hasOwnProperty('submenu')"
96+
v-if="hasSubmenu(menuObj)"
9797
>
9898
<router-link
9999
@click="isOpen = false; isSubmenuActive[menuItemLabel] = false"
@@ -204,6 +204,16 @@ export default {
204204
});
205205
},
206206
methods: {
207+
hasSubmenu(menuObject) {
208+
209+
return this.isPrimaryMenuItem(menuObject)
210+
&& menuObject.hasOwnProperty('primarySubmenu')
211+
&& menuObject.primarySubmenu;
212+
},
213+
isPrimaryMenuItem(menuObject) {
214+
215+
return menuObject.hasOwnProperty('primaryNavPath');
216+
},
207217
toggleTouchScreenMenuDropdown(menuOption) {
208218
// This is only used for touch
209219
if (this.selectedTouchScreenMenu.includes(menuOption)) {

0 commit comments

Comments
 (0)