Skip to content

Commit 35e2fc9

Browse files
Merge pull request #3922 from nextcloud/fix/3921/missing-href
Bring back correct href for router-link links
2 parents 05badfb + ddbeca7 commit 35e2fc9

2 files changed

Lines changed: 19 additions & 10 deletions

File tree

src/components/NcAppNavigationItem/NcAppNavigationItem.vue

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ Just set the `pinned` prop.
210210
}"
211211
class="app-navigation-entry-wrapper">
212212
<component :is="isRouterLink ? 'router-link' : 'NcVNodes'"
213-
v-slot="{ navigate, isActive }"
213+
v-slot="{ href: routerLinkHref, navigate, isActive }"
214214
:custom="isRouterLink ? true : false"
215215
:to="to"
216216
:exact="isRouterLink ? exact : null">
@@ -226,11 +226,11 @@ Just set the `pinned` prop.
226226
class="app-navigation-entry-link"
227227
:aria-description="ariaDescription"
228228
:aria-expanded="opened.toString()"
229-
:href="href || '#'"
229+
:href="href || routerLinkHref || '#'"
230230
:target="isExternal(href) ? '_blank' : ''"
231231
:title="title || nameTitleFallback"
232232
@blur="handleBlur"
233-
@click="(event) => onClick(event, navigate)"
233+
@click="onClick($event, navigate, routerLinkHref)"
234234
@focus="handleFocus"
235235
@keydown.tab.exact="handleTab">
236236

@@ -643,10 +643,14 @@ export default {
643643
},
644644
645645
// forward click event
646-
onClick(event, navigate) {
646+
onClick(event, navigate, routerLinkHref) {
647647
// Navigate is only defined if it is a router-link
648648
navigate?.(event)
649649
this.$emit('click', event)
650+
// Prevent default link behaviour if it's a router-link
651+
if (routerLinkHref) {
652+
event.preventDefault()
653+
}
650654
},
651655
652656
// Edition methods

src/components/NcListItem/NcListItem.vue

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -200,16 +200,15 @@
200200
<template>
201201
<!-- This wrapper can be either a router link or a `<li>` -->
202202
<component :is="to ? 'router-link' : 'NcVNodes'"
203-
v-slot="{ navigate, isActive }"
203+
v-slot="{ href: routerLinkHref, navigate, isActive }"
204204
:custom="to ? true : null"
205205
:to="to"
206-
:exact="to ? exact : null"
207-
@click="to ? navigate : null">
206+
:exact="to ? exact : null">
208207
<li class="list-item__wrapper"
209208
:class="{ 'list-item__wrapper--active' : isActive }">
210209
<a :id="anchorId"
211210
ref="list-item"
212-
:href="href"
211+
:href="routerLinkHref || href"
213212
:target="href === '#' ? undefined : '_blank'"
214213
:rel="href === '#' ? undefined : 'noopener noreferrer'"
215214
class="list-item"
@@ -219,7 +218,7 @@
219218
@focus="handleFocus"
220219
@blur="handleBlur"
221220
@keydown.tab.exact="handleTab"
222-
@click="onClick"
221+
@click="onClick($event, navigate, routerLinkHref)"
223222
@keydown.esc="hideActions">
224223

225224
<div class="list-item-content__wrapper"
@@ -497,8 +496,14 @@ export default {
497496
methods: {
498497
499498
// forward click event
500-
onClick(event) {
499+
onClick(event, navigate, routerLinkHref) {
500+
// Navigate is only defined if it is a router-link
501+
navigate?.(event)
501502
this.$emit('click', event)
503+
// Prevent default link behaviour if it's a router-link
504+
if (routerLinkHref) {
505+
event.preventDefault()
506+
}
502507
},
503508
504509
handleMouseover() {

0 commit comments

Comments
 (0)