Commit 617458873f76e6b65ff62b89a3ccfc55ca9c05d6
1 parent
467e2cf9
Update link mixin to resolve url from router if possible
Showing
1 changed file
with
20 additions
and
2 deletions
Show diff stats
src/mixins/link.js
@@ -15,12 +15,30 @@ export default { | @@ -15,12 +15,30 @@ export default { | ||
15 | return oneOf(value, ['_blank', '_self', '_parent', '_top']); | 15 | return oneOf(value, ['_blank', '_self', '_parent', '_top']); |
16 | }, | 16 | }, |
17 | default: '_self' | 17 | default: '_self' |
18 | - } | 18 | + }, |
19 | + append: { | ||
20 | + type: Boolean, | ||
21 | + required: false, | ||
22 | + default: false, | ||
23 | + }, | ||
19 | }, | 24 | }, |
20 | computed: { | 25 | computed: { |
21 | linkUrl () { | 26 | linkUrl () { |
22 | const type = typeof this.to; | 27 | const type = typeof this.to; |
23 | - return type === 'string' ? this.to : null; | 28 | + if (type !== 'string') { |
29 | + return null; | ||
30 | + } | ||
31 | + if (this.to.includes('//')) { | ||
32 | + /* Absolute URL, we do not need to route this */ | ||
33 | + return this.to; | ||
34 | + } | ||
35 | + const router = this.$router; | ||
36 | + if (router) { | ||
37 | + const current = this.$route; | ||
38 | + const route = router.resolve(this.to, current, this.append); | ||
39 | + return route ? route.href : null; | ||
40 | + } | ||
41 | + return this.to; | ||
24 | } | 42 | } |
25 | }, | 43 | }, |
26 | methods: { | 44 | methods: { |