/ src / components / Strip.vue
Strip.vue
 1  <script setup lang="ts">
 2  import Slider from './Slider.vue'
 3  import Toggle from './Toggle.vue'
 4  
 5  defineProps<{
 6      mainSliderValue: number
 7      secondarySliderValue: number
 8      enabled: boolean
 9      inputEnabled: boolean  // Add this new prop
10      mainSliderLabel: string
11      secondarySliderLabel: string
12      mainMin: number
13      mainMax: number
14      mainStep: number
15      secondaryMin: number
16      secondaryMax: number
17      secondaryStep: number
18      filterType: string
19  }>()
20  
21  const emit = defineEmits(['update:mainSliderValue', 'update:secondarySliderValue', 'update:enabled', 'updateFilter', 'toggleFilter'])
22  </script>
23  
24  <template>
25      <span class="strip">
26          <!-- Vertical frequency slider -->
27          <Slider :model-value="mainSliderValue" @update:model-value="(value) => {
28              emit('update:mainSliderValue', value);
29              // Always pass both values to ensure filter state is complete
30              emit('updateFilter', {
31                  type: filterType,
32                  value,
33                  secondaryValue: secondarySliderValue
34              });
35          }" :sliderLabel="mainSliderLabel" :min="mainMin" :max="mainMax" :step="mainStep" direction="vertical"
36              :showValue="true" />
37  
38          <!-- Horizontal Q/Gain slider -->
39          <Slider :model-value="secondarySliderValue" @update:model-value="(value) => {
40              emit('update:secondarySliderValue', value);
41              // Always pass both values to ensure filter state is complete
42              emit('updateFilter', {
43                  type: filterType,
44                  value: mainSliderValue,
45                  secondaryValue: value
46              });
47          }" :sliderLabel="secondarySliderLabel" :min="secondaryMin" :max="secondaryMax" :step="secondaryStep"
48              direction="horizontal" :showValue="true" />
49          <Toggle :model-value="enabled" :input-value="inputEnabled" @update:model-value="(value) => {
50              emit('update:enabled', value);
51              emit('toggleFilter', { filterType, value });
52          }" toggleLabel="Enabled" />
53      </span>
54  </template>
55  
56  <style scoped>
57  .strip {
58      margin: 4px;
59      padding: 4px 8px;
60      outline: 1px solid transparent;
61      box-shadow: 0px 1px 3px 1px #000000;
62      display: flex;
63      flex-direction: column;
64      background-color: #E2B241;
65      color: #000;
66  }
67  </style>