56 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
| <template>
 | |
|     <button v-if="$attrs.onClick" v-tooltip="menuStore.tooltipsVisible ? slotContent : ''" class="btn label" v-bind="$attrs" :class="colors[color]">
 | |
|         <ui-sprite v-show="icon" class="w-3 h-3 xl:mr-2" :src="icon"></ui-sprite>
 | |
|         <span class="hidden xl:inline">
 | |
|             <slot></slot>
 | |
|         </span>
 | |
|     </button>
 | |
|     <i-link v-if="!$attrs.onClick && !asA" v-tooltip="menuStore.tooltipsVisible ? slotContent : ''" :href="href" class="btn label" v-bind="$attrs" :class="colors[color]">
 | |
|         <ui-sprite v-show="icon" class="w-3 h-3 xl:mr-2" :src="icon"></ui-sprite>
 | |
|         <span class="hidden xl:inline">
 | |
|             <slot></slot>
 | |
|         </span>
 | |
|     </i-link>
 | |
|     <a v-if="asA" v-tooltip="menuStore.tooltipsVisible ? slotContent : ''" :href="href" target="_BLANK" class="btn label" v-bind="$attrs" :class="colors[color]">
 | |
|         <ui-sprite v-show="icon" class="w-3 h-3 xl:mr-2" :src="icon"></ui-sprite>
 | |
|         <span class="hidden xl:inline">
 | |
|             <slot></slot>
 | |
|         </span>
 | |
|     </a>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
| import {menuStore} from '../../stores/menuStore.js';
 | |
| 
 | |
| export default {
 | |
|     props: {
 | |
|         asA: {
 | |
|             type: Boolean,
 | |
|             default: () => false,
 | |
|         },
 | |
|         href: {
 | |
|             required: false,
 | |
|             default: () => '#',
 | |
|         },
 | |
|         icon: {},
 | |
|         color: {},
 | |
|     },
 | |
|     data: function () {
 | |
|         return {
 | |
|             menuStore: menuStore(),
 | |
|             colors: {
 | |
|                 primary: 'btn-primary',
 | |
|                 warning: 'btn-warning',
 | |
|                 info: 'btn-info',
 | |
|             },
 | |
|         };
 | |
|     },
 | |
| 
 | |
|     computed: {
 | |
|         slotContent() {
 | |
|             return this.$slots.default()[0].children;
 | |
|         },
 | |
|     },
 | |
| };
 | |
| </script>
 |