Начиная с formiojs@4 (доступно через https://next.form.io) компоненты имеют возможность определять специфические c логики. Таким образом, вы можете изменить сам компонент в зависимости от различных условий (например, событий или пользовательских javascript).
В принципе, вы захотите запускать logi c всякий раз, когда компонент цвета имеет значение (так он не вызывает ненужных срабатываний при каждом изменении). При этом изменении вы можете обновить значения компонентов в зависимости от значения цвета. Кроме того, очистите значение компонента, если новые параметры не включают его текущее значение.
Например, вы можете выполнить следующее действие:
var values = [];
if (data.color === 'red') {
values.push(10, 20);
} else if (data.color === 'blue') {
values.push(30, 40);
}
if (!values.includes(data.option)) {
delete data.option;
}
schema = {
values: values.map((value) => ({ label: value.toString(), value })),
};
Проверьте следующий jsfiddle для рабочего примера: https://jsfiddle.net/airarrazaval/btpyfjm8/