function updateAllSelects() {
const selects = Array.from(container.querySelectorAll('select.item-select'));
// Получаем текущие выбранные значения для каждого селекта
const selectedValues = selects.map(s => s.value);
selects.forEach((select, idx) => {
const currentValue = select.value;
// Список выбранных в других селектах
const otherSelected = selectedValues.filter((val, i) => i !== idx);
// Формируем доступные опции для этого селекта:
// Все элементы массива кроме тех, что заняты в других селектах,
// плюс текущее выбранное значение (даже если оно занято, чтобы не сбросить выбор)
const availableOptions = items.filter(item => {
return !otherSelected.includes(item) || item === currentValue;
});
// Сохраняем позицию курсора (если нужно)
// Очищаем и создаём опции заново
select.innerHTML = '';
availableOptions.forEach(optionValue => {
const option = document.createElement('option');
option.value = optionValue;
option.textContent = optionValue;
select.appendChild(option);
});
// Если текущее значение стало недоступно - выбрать первый доступный вариант
if (!availableOptions.includes(currentValue)) {
select.value = availableOptions.length > 0 ? availableOptions[0] : '';
selectedValues[idx] = select.value; // обновляем выбранные значения
} else {
select.value = currentValue;
}
});
}