2025-05-27 15:29:57 +02:00
|
|
|
<template>
|
|
|
|
|
<div
|
2025-09-18 16:28:24 +02:00
|
|
|
class="selector-dropdown | flex flex-col"
|
2025-10-07 15:41:48 +02:00
|
|
|
:class="{ 'has-image': getFrontViewUrl(currentValue) }"
|
|
|
|
|
:style="setImage()"
|
2025-05-27 15:29:57 +02:00
|
|
|
>
|
2025-06-05 18:41:01 +02:00
|
|
|
<label for="selector-select" class="text-sm">{{ label }}</label>
|
|
|
|
|
|
2025-06-06 09:33:08 +02:00
|
|
|
<MultiSelect
|
|
|
|
|
v-if="isCompareModeEnabled"
|
2025-06-06 10:04:06 +02:00
|
|
|
id="selector-multiselect"
|
2025-06-06 09:33:08 +02:00
|
|
|
v-model="currentValue"
|
|
|
|
|
:options="items"
|
|
|
|
|
optionLabel="title"
|
2025-10-01 12:03:31 +02:00
|
|
|
:placeholder="'Sélectionnez une déclinaison'"
|
2025-06-06 09:33:08 +02:00
|
|
|
:maxSelectedLabels="3"
|
2025-06-06 10:04:06 +02:00
|
|
|
class="font-serif"
|
2025-06-06 10:55:03 +02:00
|
|
|
:class="{ active: currentValue }"
|
2025-06-18 12:06:33 +02:00
|
|
|
data-icon="chevron-single-down"
|
2025-06-06 10:04:06 +02:00
|
|
|
checkmark
|
2025-06-18 12:06:33 +02:00
|
|
|
>
|
|
|
|
|
<template #option="slotProps">
|
|
|
|
|
<img
|
|
|
|
|
alt=""
|
|
|
|
|
:src="getFrontViewUrl(slotProps.option)"
|
|
|
|
|
width="28"
|
|
|
|
|
height="28"
|
|
|
|
|
/>
|
|
|
|
|
<p>{{ slotProps.option.title }}</p>
|
|
|
|
|
</template>
|
|
|
|
|
</MultiSelect>
|
2025-06-06 09:33:08 +02:00
|
|
|
|
2025-06-05 18:53:42 +02:00
|
|
|
<Select
|
2025-06-06 09:33:08 +02:00
|
|
|
v-else
|
2025-05-27 15:29:57 +02:00
|
|
|
id="selector-select"
|
2025-06-05 18:41:01 +02:00
|
|
|
v-model="currentValue"
|
2025-05-27 15:29:57 +02:00
|
|
|
:options="items"
|
|
|
|
|
optionLabel="title"
|
|
|
|
|
class="font-serif"
|
2025-06-06 10:55:03 +02:00
|
|
|
:class="{ active: currentValue }"
|
2025-05-27 15:29:57 +02:00
|
|
|
data-icon="chevron-single-down"
|
|
|
|
|
checkmark
|
2025-05-28 15:11:00 +02:00
|
|
|
>
|
|
|
|
|
<template #value="slotProps">
|
2025-06-06 10:04:06 +02:00
|
|
|
<p v-if="currentValue">
|
2025-06-05 18:41:01 +02:00
|
|
|
{{ currentValue.title }}
|
|
|
|
|
</p>
|
2025-10-01 12:51:17 +02:00
|
|
|
<p v-else>Sélectionnez une déclinaison</p>
|
2025-05-28 15:11:00 +02:00
|
|
|
</template>
|
2025-06-05 18:41:01 +02:00
|
|
|
|
2025-05-28 15:11:00 +02:00
|
|
|
<template #option="slotProps">
|
2025-06-05 18:41:01 +02:00
|
|
|
<img
|
|
|
|
|
alt=""
|
|
|
|
|
:src="getFrontViewUrl(slotProps.option)"
|
|
|
|
|
width="28"
|
|
|
|
|
height="28"
|
|
|
|
|
/>
|
2025-05-28 16:08:01 +02:00
|
|
|
<p>{{ slotProps.option.title }}</p>
|
2025-05-28 15:11:00 +02:00
|
|
|
</template>
|
2025-06-05 18:53:42 +02:00
|
|
|
</Select>
|
2025-05-27 15:29:57 +02:00
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup>
|
2025-10-01 13:10:28 +02:00
|
|
|
import { onBeforeMount, ref, watch, nextTick } from 'vue';
|
2025-06-05 18:41:01 +02:00
|
|
|
import { storeToRefs } from 'pinia';
|
|
|
|
|
import { useDialogStore } from '../stores/dialog';
|
2025-05-27 15:29:57 +02:00
|
|
|
|
2025-06-11 14:45:11 +02:00
|
|
|
// Props
|
|
|
|
|
const { items, label, isCompareModeEnabled, index } = defineProps({
|
2025-05-27 15:29:57 +02:00
|
|
|
label: String,
|
|
|
|
|
items: Array,
|
2025-10-01 13:10:28 +02:00
|
|
|
isCompareModeEnabled: { type: Boolean, default: false },
|
2025-06-11 14:45:11 +02:00
|
|
|
index: Number,
|
2025-05-27 15:29:57 +02:00
|
|
|
});
|
|
|
|
|
|
2025-10-01 13:10:28 +02:00
|
|
|
// Local state
|
2025-06-06 10:04:06 +02:00
|
|
|
const currentValue = ref(null);
|
2026-01-15 13:54:36 +01:00
|
|
|
const syncing = ref(false);
|
2025-06-05 18:41:01 +02:00
|
|
|
|
|
|
|
|
const { activeTracks } = storeToRefs(useDialogStore());
|
2025-05-27 15:29:57 +02:00
|
|
|
|
2026-01-15 13:54:36 +01:00
|
|
|
function normalizeSlug(slug) {
|
|
|
|
|
return slug.replace(/_/g, '-');
|
2025-10-01 13:10:28 +02:00
|
|
|
}
|
|
|
|
|
|
2026-01-15 13:54:36 +01:00
|
|
|
function areVariationsEqual(variationA, variationB) {
|
|
|
|
|
if (!variationA || !variationB) return false;
|
|
|
|
|
|
|
|
|
|
if (variationA.slug && variationB.slug) {
|
|
|
|
|
return normalizeSlug(variationA.slug) === normalizeSlug(variationB.slug);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return variationA.title === variationB.title;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function extractVariation(value) {
|
|
|
|
|
if (!value) return null;
|
|
|
|
|
return Array.isArray(value) ? value[value.length - 1] || null : value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function convertValueForCompareMode(value, shouldBeArray) {
|
|
|
|
|
if (shouldBeArray) {
|
|
|
|
|
return value && !Array.isArray(value) ? [value] : value;
|
|
|
|
|
} else {
|
|
|
|
|
return Array.isArray(value) ? value[0] || null : value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function findMatchingVariationsInStore(storeVariations) {
|
|
|
|
|
return storeVariations.filter((storeVar) =>
|
|
|
|
|
items.some((item) => areVariationsEqual(item, storeVar))
|
|
|
|
|
);
|
2025-10-01 13:10:28 +02:00
|
|
|
}
|
|
|
|
|
|
2026-01-15 13:54:36 +01:00
|
|
|
function syncCurrentValueFromStore(storeVariations) {
|
2025-10-01 13:10:28 +02:00
|
|
|
syncing.value = true;
|
|
|
|
|
|
2026-01-15 13:54:36 +01:00
|
|
|
const matchedVariations = findMatchingVariationsInStore(storeVariations);
|
|
|
|
|
|
|
|
|
|
if (isCompareModeEnabled) {
|
|
|
|
|
currentValue.value = matchedVariations.length ? [...matchedVariations] : [];
|
2025-10-01 13:10:28 +02:00
|
|
|
} else {
|
2026-01-15 13:54:36 +01:00
|
|
|
currentValue.value = matchedVariations[0] || null;
|
2025-06-11 14:45:11 +02:00
|
|
|
}
|
2025-10-01 13:10:28 +02:00
|
|
|
|
|
|
|
|
nextTick(() => (syncing.value = false));
|
2026-01-15 13:54:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function detectVariationChanges(newValues, oldValues) {
|
|
|
|
|
const newList = Array.isArray(newValues)
|
|
|
|
|
? newValues
|
|
|
|
|
: newValues
|
|
|
|
|
? [newValues]
|
|
|
|
|
: [];
|
|
|
|
|
const oldList = Array.isArray(oldValues)
|
|
|
|
|
? oldValues
|
|
|
|
|
: oldValues
|
|
|
|
|
? [oldValues]
|
|
|
|
|
: [];
|
|
|
|
|
|
|
|
|
|
const addedVariation = newList.find(
|
|
|
|
|
(n) => !oldList.some((o) => areVariationsEqual(o, n))
|
|
|
|
|
);
|
|
|
|
|
const removedVariation = oldList.find(
|
|
|
|
|
(o) => !newList.some((n) => areVariationsEqual(n, o))
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
return { addedVariation, removedVariation };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function handleVariationChange(newValue, oldValue) {
|
|
|
|
|
if (syncing.value) return;
|
|
|
|
|
|
|
|
|
|
const { addedVariation, removedVariation } = detectVariationChanges(
|
|
|
|
|
newValue,
|
|
|
|
|
oldValue
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (
|
|
|
|
|
addedVariation &&
|
|
|
|
|
items.some((item) => areVariationsEqual(item, addedVariation))
|
|
|
|
|
) {
|
|
|
|
|
updateActiveTracks(addedVariation, 'add');
|
|
|
|
|
} else if (
|
|
|
|
|
removedVariation &&
|
|
|
|
|
items.some((item) => areVariationsEqual(item, removedVariation))
|
|
|
|
|
) {
|
|
|
|
|
updateActiveTracks(removedVariation, 'remove');
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-06-11 14:45:11 +02:00
|
|
|
|
2025-06-06 10:04:06 +02:00
|
|
|
watch(
|
|
|
|
|
() => isCompareModeEnabled,
|
2026-01-15 13:54:36 +01:00
|
|
|
(shouldBeArray) => {
|
2025-10-01 13:10:28 +02:00
|
|
|
syncing.value = true;
|
2026-01-15 13:54:36 +01:00
|
|
|
currentValue.value = convertValueForCompareMode(
|
|
|
|
|
currentValue.value,
|
|
|
|
|
shouldBeArray
|
|
|
|
|
);
|
2025-10-01 13:10:28 +02:00
|
|
|
nextTick(() => (syncing.value = false));
|
2025-06-06 10:04:06 +02:00
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
2026-01-15 13:54:36 +01:00
|
|
|
watch(currentValue, handleVariationChange, { deep: true });
|
2025-10-01 13:10:28 +02:00
|
|
|
|
2026-01-15 13:54:36 +01:00
|
|
|
watch(
|
|
|
|
|
activeTracks,
|
|
|
|
|
(storeVariations) => {
|
|
|
|
|
const variationsList = Array.isArray(storeVariations)
|
|
|
|
|
? storeVariations
|
|
|
|
|
: [];
|
|
|
|
|
syncCurrentValueFromStore(variationsList);
|
2025-10-01 13:10:28 +02:00
|
|
|
},
|
2026-01-15 13:54:36 +01:00
|
|
|
{ deep: true, immediate: true }
|
2025-10-01 13:10:28 +02:00
|
|
|
);
|
2025-05-27 15:29:57 +02:00
|
|
|
|
2026-01-15 13:54:36 +01:00
|
|
|
function removeVariationFromActiveTracks(variation) {
|
|
|
|
|
activeTracks.value = activeTracks.value.filter(
|
|
|
|
|
(track) => !areVariationsEqual(track, variation)
|
|
|
|
|
);
|
|
|
|
|
}
|
2025-06-11 15:34:30 +02:00
|
|
|
|
2026-01-15 13:54:36 +01:00
|
|
|
function addVariationToActiveTracks(variation) {
|
|
|
|
|
const isAlreadyPresent = activeTracks.value.some((track) =>
|
|
|
|
|
areVariationsEqual(track, variation)
|
|
|
|
|
);
|
2025-10-01 13:10:28 +02:00
|
|
|
|
2026-01-15 13:54:36 +01:00
|
|
|
if (isAlreadyPresent) return;
|
2025-10-01 13:10:28 +02:00
|
|
|
|
2026-01-15 13:54:36 +01:00
|
|
|
if (activeTracks.value.length === 0) {
|
|
|
|
|
activeTracks.value = [variation];
|
|
|
|
|
} else if (activeTracks.value.length === 1) {
|
|
|
|
|
activeTracks.value = [activeTracks.value[0], variation];
|
|
|
|
|
} else {
|
|
|
|
|
activeTracks.value = [activeTracks.value[0], variation];
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-06-11 15:34:30 +02:00
|
|
|
|
2026-01-15 13:54:36 +01:00
|
|
|
function updateActiveTracks(track, action = 'add') {
|
|
|
|
|
const variation = extractVariation(track);
|
2025-10-01 13:10:28 +02:00
|
|
|
if (!variation) return;
|
|
|
|
|
|
2025-06-11 15:34:30 +02:00
|
|
|
if (!isCompareModeEnabled) {
|
2025-10-01 13:10:28 +02:00
|
|
|
activeTracks.value = [variation];
|
2025-06-11 15:34:30 +02:00
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-01 13:10:28 +02:00
|
|
|
if (action === 'remove') {
|
2026-01-15 13:54:36 +01:00
|
|
|
removeVariationFromActiveTracks(variation);
|
2025-10-01 13:10:28 +02:00
|
|
|
} else {
|
2026-01-15 13:54:36 +01:00
|
|
|
addVariationToActiveTracks(variation);
|
2025-06-05 18:41:01 +02:00
|
|
|
}
|
2025-10-01 13:10:28 +02:00
|
|
|
}
|
2025-05-27 15:29:57 +02:00
|
|
|
|
2025-05-28 15:11:00 +02:00
|
|
|
function getFrontViewUrl(item) {
|
2025-06-05 18:41:01 +02:00
|
|
|
if (!item) return '';
|
|
|
|
|
if (Array.isArray(item)) {
|
|
|
|
|
return item.length > 0 ? getFrontViewUrl(item[0]) : '';
|
|
|
|
|
}
|
2025-10-01 13:10:28 +02:00
|
|
|
if (item.files && item.files.length > 1) {
|
2025-06-05 18:41:01 +02:00
|
|
|
return item.files[7]?.url || item.files[0].url;
|
2025-05-27 15:29:57 +02:00
|
|
|
} else {
|
2025-10-01 13:10:28 +02:00
|
|
|
return item.files && item.files[0] ? item.files[0].url : '';
|
2025-05-27 15:29:57 +02:00
|
|
|
}
|
|
|
|
|
}
|
2025-10-07 15:41:48 +02:00
|
|
|
|
|
|
|
|
function setImage() {
|
2026-01-15 13:54:36 +01:00
|
|
|
return getFrontViewUrl(currentValue.value)
|
|
|
|
|
? "--image: url('" + getFrontViewUrl(currentValue.value) + "')"
|
2025-10-07 15:41:48 +02:00
|
|
|
: undefined;
|
|
|
|
|
}
|
2025-05-27 15:29:57 +02:00
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style>
|
2025-09-18 16:28:24 +02:00
|
|
|
.selector-dropdown {
|
2025-06-06 11:15:48 +02:00
|
|
|
--selector-width: 21rem;
|
2025-05-27 15:29:57 +02:00
|
|
|
--row-gap: 0;
|
|
|
|
|
align-items: flex-start;
|
|
|
|
|
position: relative;
|
|
|
|
|
background: var(--color-background);
|
|
|
|
|
border-radius: var(--rounded-lg);
|
|
|
|
|
height: 3.75rem;
|
2025-06-06 11:15:48 +02:00
|
|
|
min-width: var(--selector-width, 21rem);
|
2025-10-07 15:41:48 +02:00
|
|
|
padding: var(--space-8) var(--space-48) var(--space-8) var(--space-16);
|
|
|
|
|
}
|
|
|
|
|
.selector-dropdown.has-image,
|
2026-01-15 13:54:36 +01:00
|
|
|
.selector-dropdown.has-image
|
|
|
|
|
:is(#selector-select, #selector-multiselect, [role='combobox']) {
|
2025-10-07 15:41:48 +02:00
|
|
|
padding-left: var(--space-64);
|
2025-05-27 15:29:57 +02:00
|
|
|
}
|
2025-10-07 15:41:48 +02:00
|
|
|
.selector-dropdown.has-image:before {
|
2025-05-27 15:29:57 +02:00
|
|
|
content: '';
|
|
|
|
|
position: absolute;
|
|
|
|
|
left: var(--space-8);
|
|
|
|
|
width: 2.75rem;
|
|
|
|
|
height: 2.75rem;
|
|
|
|
|
border-radius: var(--rounded-md);
|
2025-05-28 16:08:01 +02:00
|
|
|
background-color: var(--dialog-inner-background, #f7f7f7);
|
2025-05-27 15:29:57 +02:00
|
|
|
background-image: var(--image);
|
|
|
|
|
background-repeat: no-repeat;
|
|
|
|
|
background-size: cover;
|
|
|
|
|
background-position: center;
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-01 12:03:31 +02:00
|
|
|
[role='combobox'],
|
|
|
|
|
[id*='select_list'] {
|
2025-05-27 15:29:57 +02:00
|
|
|
border: 1px solid var(--color-grey-200);
|
|
|
|
|
}
|
2025-10-01 12:03:31 +02:00
|
|
|
[role='combobox']:hover {
|
2025-06-06 11:15:48 +02:00
|
|
|
outline: 0px solid var(--color-grey-400);
|
|
|
|
|
border-color: var(--color-grey-400);
|
2025-05-27 15:29:57 +02:00
|
|
|
}
|
2025-10-01 12:03:31 +02:00
|
|
|
[role='combobox'][aria-expanded='true'] {
|
2025-05-27 15:29:57 +02:00
|
|
|
outline: 2px solid var(--color-focus-ring);
|
|
|
|
|
outline-offset: -2px;
|
|
|
|
|
border-color: transparent;
|
|
|
|
|
}
|
|
|
|
|
#selector-select,
|
2025-06-18 12:06:33 +02:00
|
|
|
#selector-multiselect,
|
2025-10-01 12:03:31 +02:00
|
|
|
[role='combobox'] {
|
2025-05-27 15:29:57 +02:00
|
|
|
position: absolute;
|
|
|
|
|
inset: 0;
|
|
|
|
|
border-radius: inherit;
|
2025-10-07 15:41:48 +02:00
|
|
|
padding: 1.875rem var(--space-48) var(--space-8) var(--space-16);
|
2025-05-27 15:29:57 +02:00
|
|
|
cursor: pointer;
|
|
|
|
|
}
|
2025-10-01 16:17:40 +02:00
|
|
|
[role='combobox'] p,
|
2026-01-15 13:54:36 +01:00
|
|
|
.selector-dropdown
|
|
|
|
|
[data-pc-section='labelcontainer']
|
|
|
|
|
> [data-pc-section='label'] {
|
2025-06-06 11:29:53 +02:00
|
|
|
max-height: 1lh;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
|
white-space: nowrap;
|
|
|
|
|
}
|
2025-10-01 12:03:31 +02:00
|
|
|
#selector-select.active [role='combobox'] {
|
2025-06-18 12:06:33 +02:00
|
|
|
border-color: var(--color-focus-ring);
|
|
|
|
|
}
|
2025-05-27 15:29:57 +02:00
|
|
|
|
|
|
|
|
/* Icon */
|
2025-10-01 12:03:31 +02:00
|
|
|
[data-pc-section='dropdown'] {
|
2025-05-27 15:29:57 +02:00
|
|
|
display: none; /* Hide default component svg */
|
|
|
|
|
}
|
2025-09-18 16:28:24 +02:00
|
|
|
.selector-dropdown [data-icon]::before {
|
2025-05-27 15:29:57 +02:00
|
|
|
--icon-color: var(--color-grey-700);
|
|
|
|
|
position: absolute;
|
|
|
|
|
right: var(--space-8);
|
|
|
|
|
top: 0.625rem;
|
|
|
|
|
width: 2.5rem;
|
|
|
|
|
height: 2.5rem;
|
|
|
|
|
padding: 0.625rem;
|
|
|
|
|
}
|
2025-09-18 16:28:24 +02:00
|
|
|
.selector-dropdown label {
|
2025-05-27 15:29:57 +02:00
|
|
|
color: var(--color-grey-700);
|
|
|
|
|
letter-spacing: var(--tracking-wider);
|
2025-05-28 16:08:01 +02:00
|
|
|
overflow: hidden;
|
|
|
|
|
white-space: nowrap;
|
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
|
height: 1lh;
|
|
|
|
|
padding-right: 1em;
|
2025-05-27 15:29:57 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Options */
|
2025-10-01 12:03:31 +02:00
|
|
|
[id*='select_list'] {
|
2025-05-27 15:29:57 +02:00
|
|
|
margin-top: var(--space-4);
|
|
|
|
|
border-radius: var(--rounded-md);
|
|
|
|
|
background: var(--color-background);
|
|
|
|
|
box-shadow: var(--shadow);
|
|
|
|
|
padding: var(--space-8);
|
|
|
|
|
}
|
2025-10-01 12:03:31 +02:00
|
|
|
[id*='select_list'] > * {
|
2025-05-27 15:29:57 +02:00
|
|
|
font-family: var(--font-serif);
|
|
|
|
|
padding: var(--space-8) var(--space-8) var(--space-8) var(--space-48);
|
|
|
|
|
border-radius: var(--rounded-sm);
|
|
|
|
|
position: relative;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
height: 2.75rem;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
}
|
2025-10-01 12:03:31 +02:00
|
|
|
[id*='select_list'] > * + * {
|
2025-05-27 15:29:57 +02:00
|
|
|
margin-top: var(--space-4);
|
|
|
|
|
}
|
2025-10-01 12:03:31 +02:00
|
|
|
[id*='select_list'] > *::before {
|
2025-05-27 15:29:57 +02:00
|
|
|
content: '';
|
|
|
|
|
position: absolute;
|
|
|
|
|
left: var(--space-8);
|
|
|
|
|
width: 1.75rem;
|
|
|
|
|
height: 1.75rem;
|
|
|
|
|
border-radius: var(--rounded-sm);
|
|
|
|
|
background-image: var(--image);
|
2025-05-28 16:08:01 +02:00
|
|
|
background-color: var(--dialog-inner-background, #f7f7f7);
|
2025-05-27 15:29:57 +02:00
|
|
|
background-repeat: no-repeat;
|
|
|
|
|
background-size: cover;
|
|
|
|
|
background-position: center;
|
|
|
|
|
}
|
2025-10-01 12:03:31 +02:00
|
|
|
[id*='select_list'] > *:hover {
|
2025-05-27 15:29:57 +02:00
|
|
|
background-color: var(--color-grey-50);
|
|
|
|
|
}
|
2025-10-01 12:03:31 +02:00
|
|
|
[id*='select_list'] > *:focus,
|
|
|
|
|
[id*='select_list'] > *:focus-visible,
|
|
|
|
|
[id*='select_list'] > [data-p-focused='true'] {
|
2025-05-27 15:29:57 +02:00
|
|
|
outline: 2px solid var(--color-focus-ring);
|
|
|
|
|
}
|
|
|
|
|
/* Check */
|
2025-10-01 12:03:31 +02:00
|
|
|
#selector-multiselect_list input[type='checkbox'] {
|
2025-06-18 12:06:33 +02:00
|
|
|
position: absolute;
|
|
|
|
|
left: var(--space-4);
|
|
|
|
|
top: calc(var(--space-4) + 1px);
|
|
|
|
|
width: 1.75rem;
|
|
|
|
|
height: 1.75rem;
|
|
|
|
|
border-radius: var(--rounded-sm);
|
|
|
|
|
}
|
2025-10-01 12:03:31 +02:00
|
|
|
#selector-multiselect_list input[type='checkbox']:checked {
|
2025-06-18 12:06:33 +02:00
|
|
|
--icon-color: var(--color-focus-ring);
|
|
|
|
|
}
|
2025-10-01 12:03:31 +02:00
|
|
|
[id*='select_list'] > * > svg {
|
2025-05-27 15:29:57 +02:00
|
|
|
position: absolute;
|
|
|
|
|
left: 0.875rem;
|
|
|
|
|
width: 1rem;
|
|
|
|
|
height: 1rem;
|
|
|
|
|
color: var(--color-grey-700);
|
|
|
|
|
}
|
2025-10-01 12:03:31 +02:00
|
|
|
[id*='select_list'] img {
|
2025-05-28 16:08:01 +02:00
|
|
|
position: absolute;
|
|
|
|
|
left: 0.5rem;
|
|
|
|
|
width: 1.75rem;
|
|
|
|
|
height: 1.75rem;
|
|
|
|
|
mix-blend-mode: multiply;
|
|
|
|
|
}
|
2025-10-01 12:03:31 +02:00
|
|
|
[id*='select_list'] [aria-selected='true'] img,
|
|
|
|
|
#selector-multiselect_list input[type='checkbox'] + [data-pc-section='box'] {
|
2025-06-18 12:06:33 +02:00
|
|
|
display: none;
|
|
|
|
|
}
|
2025-10-01 12:03:31 +02:00
|
|
|
#selector-multiselect_list
|
|
|
|
|
[aria-selected='false']
|
|
|
|
|
input[type='checkbox']::before {
|
2025-06-18 12:06:33 +02:00
|
|
|
--icon-color: transparent;
|
|
|
|
|
}
|
|
|
|
|
/* Overlay */
|
2025-10-01 12:03:31 +02:00
|
|
|
[data-pc-section='overlay'] [data-pc-section='header'] {
|
2025-05-28 16:08:01 +02:00
|
|
|
display: none;
|
|
|
|
|
}
|
2025-05-27 15:29:57 +02:00
|
|
|
</style>
|