|
@@ -150,6 +150,19 @@ const marketOptionGroups = computed(() => {
|
|
|
})).filter((group) => group.options.length);
|
|
})).filter((group) => group.options.length);
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+const getGroupSelectedMarkets = (options: Array<{ value: string }>) => {
|
|
|
|
|
+ const values = new Set(options.map((option) => option.value));
|
|
|
|
|
+ return selectedMarkets.value.filter((key) => values.has(key));
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+const updateGroupSelectedMarkets = (options: Array<{ value: string }>, values: string[]) => {
|
|
|
|
|
+ const groupValues = new Set(options.map((option) => option.value));
|
|
|
|
|
+ selectedMarkets.value = [
|
|
|
|
|
+ ...selectedMarkets.value.filter((key) => !groupValues.has(key)),
|
|
|
|
|
+ ...values,
|
|
|
|
|
+ ];
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
const selectedMarket = computed({
|
|
const selectedMarket = computed({
|
|
|
get: () => selectedMarkets.value[0],
|
|
get: () => selectedMarkets.value[0],
|
|
|
set: (key?: string) => {
|
|
set: (key?: string) => {
|
|
@@ -465,8 +478,9 @@ onMounted(() => {
|
|
|
<span class="market-platform">{{ group.label }}</span>
|
|
<span class="market-platform">{{ group.label }}</span>
|
|
|
<CheckboxGroup
|
|
<CheckboxGroup
|
|
|
v-if="isMultiSelect"
|
|
v-if="isMultiSelect"
|
|
|
- v-model:value="selectedMarkets"
|
|
|
|
|
:options="group.options"
|
|
:options="group.options"
|
|
|
|
|
+ :value="getGroupSelectedMarkets(group.options)"
|
|
|
|
|
+ @change="(values) => updateGroupSelectedMarkets(group.options, values as string[])"
|
|
|
/>
|
|
/>
|
|
|
<RadioGroup v-else v-model:value="selectedMarket" :options="group.options" />
|
|
<RadioGroup v-else v-model:value="selectedMarket" :options="group.options" />
|
|
|
</div>
|
|
</div>
|