1*90c8c64dSAndroid Build Coastguard Worker<template> 2*90c8c64dSAndroid Build Coastguard Worker <v-btn 3*90c8c64dSAndroid Build Coastguard Worker block 4*90c8c64dSAndroid Build Coastguard Worker type="button" 5*90c8c64dSAndroid Build Coastguard Worker class="my-5" 6*90c8c64dSAndroid Build Coastguard Worker @click="revertAllSelection" 7*90c8c64dSAndroid Build Coastguard Worker > 8*90c8c64dSAndroid Build Coastguard Worker {{ selectAllText[selectAll] }} 9*90c8c64dSAndroid Build Coastguard Worker </v-btn> 10*90c8c64dSAndroid Build Coastguard Worker <v-row class="mb-5"> 11*90c8c64dSAndroid Build Coastguard Worker <v-col 12*90c8c64dSAndroid Build Coastguard Worker v-for="label in labels" 13*90c8c64dSAndroid Build Coastguard Worker :key="label" 14*90c8c64dSAndroid Build Coastguard Worker cols="12" 15*90c8c64dSAndroid Build Coastguard Worker md="4" 16*90c8c64dSAndroid Build Coastguard Worker > 17*90c8c64dSAndroid Build Coastguard Worker <input 18*90c8c64dSAndroid Build Coastguard Worker type="checkbox" 19*90c8c64dSAndroid Build Coastguard Worker :value="label" 20*90c8c64dSAndroid Build Coastguard Worker :checked="modelValue.get(label)" 21*90c8c64dSAndroid Build Coastguard Worker @change="updateSelected($event.target.value)" 22*90c8c64dSAndroid Build Coastguard Worker > 23*90c8c64dSAndroid Build Coastguard Worker <label v-if="label"> {{ label }} </label> 24*90c8c64dSAndroid Build Coastguard Worker </v-col> 25*90c8c64dSAndroid Build Coastguard Worker </v-row> 26*90c8c64dSAndroid Build Coastguard Worker</template> 27*90c8c64dSAndroid Build Coastguard Worker 28*90c8c64dSAndroid Build Coastguard Worker<script> 29*90c8c64dSAndroid Build Coastguard Workerexport default { 30*90c8c64dSAndroid Build Coastguard Worker props: { 31*90c8c64dSAndroid Build Coastguard Worker labels: { 32*90c8c64dSAndroid Build Coastguard Worker type: Array, 33*90c8c64dSAndroid Build Coastguard Worker default: new Array(), 34*90c8c64dSAndroid Build Coastguard Worker }, 35*90c8c64dSAndroid Build Coastguard Worker modelValue: { 36*90c8c64dSAndroid Build Coastguard Worker type: Map, 37*90c8c64dSAndroid Build Coastguard Worker default: new Map(), 38*90c8c64dSAndroid Build Coastguard Worker }, 39*90c8c64dSAndroid Build Coastguard Worker }, 40*90c8c64dSAndroid Build Coastguard Worker data() { 41*90c8c64dSAndroid Build Coastguard Worker return { 42*90c8c64dSAndroid Build Coastguard Worker selectAll: 1, 43*90c8c64dSAndroid Build Coastguard Worker selectAllText: ['Select All', 'Unselect All'], 44*90c8c64dSAndroid Build Coastguard Worker } 45*90c8c64dSAndroid Build Coastguard Worker }, 46*90c8c64dSAndroid Build Coastguard Worker mounted() { 47*90c8c64dSAndroid Build Coastguard Worker // Set the default value to be true once mounted 48*90c8c64dSAndroid Build Coastguard Worker for (let key of this.labels) { 49*90c8c64dSAndroid Build Coastguard Worker this.modelValue.set(key, true) 50*90c8c64dSAndroid Build Coastguard Worker } 51*90c8c64dSAndroid Build Coastguard Worker }, 52*90c8c64dSAndroid Build Coastguard Worker methods: { 53*90c8c64dSAndroid Build Coastguard Worker updateSelected(newSelect) { 54*90c8c64dSAndroid Build Coastguard Worker this.modelValue.set(newSelect, !this.modelValue.get(newSelect)) 55*90c8c64dSAndroid Build Coastguard Worker this.$emit('update:modelValue', this.modelValue) 56*90c8c64dSAndroid Build Coastguard Worker }, 57*90c8c64dSAndroid Build Coastguard Worker revertAllSelection() { 58*90c8c64dSAndroid Build Coastguard Worker this.selectAll = 1 - this.selectAll 59*90c8c64dSAndroid Build Coastguard Worker for (let key of this.modelValue.keys()) { 60*90c8c64dSAndroid Build Coastguard Worker this.modelValue.set(key, Boolean(this.selectAll)) 61*90c8c64dSAndroid Build Coastguard Worker } 62*90c8c64dSAndroid Build Coastguard Worker }, 63*90c8c64dSAndroid Build Coastguard Worker }, 64*90c8c64dSAndroid Build Coastguard Worker} 65*90c8c64dSAndroid Build Coastguard Worker</script> 66*90c8c64dSAndroid Build Coastguard Worker 67*90c8c64dSAndroid Build Coastguard Worker<style scoped> 68*90c8c64dSAndroid Build Coastguard Workerul > li { 69*90c8c64dSAndroid Build Coastguard Worker display: inline-block; 70*90c8c64dSAndroid Build Coastguard Worker list-style-type: none; 71*90c8c64dSAndroid Build Coastguard Worker margin-left: 5%; 72*90c8c64dSAndroid Build Coastguard Worker margin-right: 5%; 73*90c8c64dSAndroid Build Coastguard Worker top: 0px; 74*90c8c64dSAndroid Build Coastguard Worker height: 50px; 75*90c8c64dSAndroid Build Coastguard Worker} 76*90c8c64dSAndroid Build Coastguard Worker</style>