All files / src/components/shared ShSelect.vue

100% Statements 5/5
100% Branches 2/2
100% Functions 1/1
100% Lines 5/5

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59  6x                                         19x                                       132x         132x 132x                    
<template>
  <div class="new-style py-0">
    <label
      v-if="!!label"
      class="pl-0 pb-1 sh-label"
      :for="props.id"
      data-testid="label"
    >
      <span>{{ props.label }}</span>
    </label>
    <v-select
      v-bind="attrs"
      :v-slot="slots"
      :list-props="{ class: 'pa-2' }"
      class="pt-1 my-select"
      variant="outlined"
      density="comfortable"
      clearable
      menu-icon="keyboard_arrow_down"
    >
      <template
        v-for="(_, name) in slots"
        v-slot:[name]="slotData"
      >
        <slot
          :name="name"
          v-bind="slotData"
        ></slot>
      </template>
    </v-select>
  </div>
</template>
 
<script setup lang="ts">
import { v4 } from 'uuid';
import { useAttrs, useSlots } from 'vue';
 
interface Props {
  id?: string;
  label?: string;
}
 
const props = withDefaults(defineProps<Props>(), {
  id: v4(),
  label: '',
});
 
const attrs = useAttrs();
const slots = useSlots();
</script>
 
<style lang="scss">
.v-select {
  .v-select__menu-icon {
    color: rgba(104, 117, 236, 1);
  }
}
</style>