46 lines
		
	
	
		
			1005 B
		
	
	
	
		
			Vue
		
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1005 B
		
	
	
	
		
			Vue
		
	
	
	
| <template>
 | |
|     <div class="flex space-x-2" :class="levelMap[level]">
 | |
|         <a
 | |
|             v-if="value.children_count > 0"
 | |
|             v-tooltip="active ? 'Schließen' : 'Öffnen'"
 | |
|             href="#"
 | |
|             class="inline-flex items-center justify-center bg-blue-700 text-blue-100 rounded w-5 h-5"
 | |
|             @click.prevent="emit('toggle')"
 | |
|         >
 | |
|             <ui-sprite class="w-3 h-3" :src="active ? 'close' : 'plus'"></ui-sprite>
 | |
|         </a>
 | |
|         <span v-if="text" v-text="text"></span>
 | |
|         <slot></slot>
 | |
|     </div>
 | |
| </template>
 | |
| 
 | |
| <script setup>
 | |
| const emit = defineEmits(['toggle']);
 | |
| 
 | |
| const levelMap = {
 | |
|     0: '',
 | |
|     1: 'pl-7',
 | |
|     2: 'pl-14',
 | |
| };
 | |
| 
 | |
| const props = defineProps({
 | |
|     text: {
 | |
|         required: false,
 | |
|         type: String,
 | |
|         default: () => '',
 | |
|     },
 | |
|     value: {
 | |
|         type: Object,
 | |
|         required: true,
 | |
|     },
 | |
|     active: {
 | |
|         type: Boolean,
 | |
|         required: true,
 | |
|     },
 | |
|     level: {
 | |
|         required: true,
 | |
|         type: Number,
 | |
|     },
 | |
| });
 | |
| </script>
 |