37 lines
		
	
	
		
			567 B
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			567 B
		
	
	
	
		
			Plaintext
		
	
	
| 
 | |
| <template>
 | |
|   <!-- eslint-disable vue/require-component-is -->
 | |
|   <component v-bind="linkProps(to)">
 | |
|     <slot />
 | |
|   </component>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
| import { isExternal } from '@/utils/validate'
 | |
| 
 | |
| export default {
 | |
|   props: {
 | |
|     to: {
 | |
|       type: String,
 | |
|       required: true
 | |
|     }
 | |
|   },
 | |
|   methods: {
 | |
|     linkProps(url) {
 | |
|       if (isExternal(url)) {
 | |
|         return {
 | |
|           is: 'a',
 | |
|           href: url,
 | |
|           target: '_blank',
 | |
|           rel: 'noopener'
 | |
|         }
 | |
|       }
 | |
|       return {
 | |
|         is: 'router-link',
 | |
|         to: url
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| }
 | |
| </script>
 |