in dashboards-notifications/public/pages/Channels/components/ChannelControls.tsx [62:101]
function updateItem(
items: Array<{ field: string; display: string; checked: string }>,
index: number,
type: 'state' | 'type' | 'source',
singleSelect?: boolean
) {
if (!items[index]) return;
const newItems = [...items];
if (singleSelect) {
const checked = newItems[index].checked === 'off' ? 'on' : 'off';
newItems.forEach((item, i) => (item.checked = 'off'));
newItems[index].checked = checked;
} else {
newItems[index].checked =
newItems[index].checked === 'off' ? 'on' : 'off';
}
const newFilters = _.clone(props.filters);
const checkedItems = newItems
.filter((item) => item.checked === 'on')
.map((item) => item.field);
switch (type) {
case 'state':
setStateItems(newItems);
newFilters.state = checkedItems[0];
break;
case 'source':
setSourceItems(newItems);
newFilters.source = checkedItems;
break;
case 'type':
setTypeItems(newItems);
newFilters.type = checkedItems;
break;
default:
break;
}
props.onFiltersChange(newFilters);
}