52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | |
|   <div>
 | |
|     <div class="z-50 tools fixed top-0 -left-0 hidden">
 | |
|       <button @click="setDisplay('pile')">pile</button>
 | |
|       <button @click="setDisplay('plateau')">plateau</button>
 | |
|       <button @click="setDisplay('holdem')">holdem</button>
 | |
|     </div>
 | |
|     <div ref="deck" class="deck flex flex-wrap justify-center gap-4">
 | |
|       <card v-for="track in tracks" :key="track.id" :track="track" />
 | |
|     </div>
 | |
|   </div>
 | |
| </template>
 | |
| 
 | |
| <script setup lang="ts">
 | |
| import { useDataStore } from '~/store/data'
 | |
| import type { Compilation } from '~~/types/types'
 | |
| 
 | |
| const props = defineProps<{
 | |
|   compilation: Compilation
 | |
| }>()
 | |
| const dataStore = useDataStore()
 | |
| const deck = ref()
 | |
| const tracks = props.compilation.duration ? dataStore.getTracksByCompilationId(props.compilation.id) : dataStore.getPlaylistTracksByCompilationId(props.compilation.id)
 | |
| 
 | |
| function setDisplay(displayMode) {
 | |
|   deck.value.classList.remove('pile', 'plateau', 'holdem')
 | |
|   deck.value.classList.add(displayMode)
 | |
| }
 | |
| </script>
 | |
| 
 | |
| <style lang="scss">
 | |
| .deck {
 | |
|   @apply transition-all;
 | |
| 
 | |
|   &.pile {
 | |
|     @apply relative;
 | |
| 
 | |
|     .card {
 | |
|       @apply absolute top-0;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   &.plateau {
 | |
|     @apply mt-8 p-8 w-full flex flex-wrap justify-around;
 | |
|   }
 | |
| 
 | |
|   &.holdem {
 | |
|     /* style holdem */
 | |
|   }
 | |
| }
 | |
| </style>
 |