xref: /aosp_15_r20/development/tools/ota_analysis/src/components/PartialCheckbox.vue (revision 90c8c64db3049935a07c6143d7fd006e26f8ecca)
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>