| <!-- |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| |
| --> |
| |
| <template> |
| <!-- eslint-disable vue/require-component-is--> |
| <component v-bind="linkProps(to)"> |
| <slot/> |
| </component> |
| </template> |
| |
| <script> |
| import { isExternal } from '@/utils' |
| |
| export default { |
| props: { |
| to: { |
| type: String, |
| required: true |
| } |
| }, |
| methods: { |
| isExternalLink(routePath) { |
| return isExternal(routePath) |
| }, |
| linkProps(url) { |
| if (this.isExternalLink(url)) { |
| return { |
| is: 'a', |
| href: url, |
| target: '_blank', |
| rel: 'noopener' |
| } |
| } |
| return { |
| is: 'router-link', |
| to: url |
| } |
| } |
| } |
| } |
| </script> |