toggleGroupMultiple<T> function

BloomNode toggleGroupMultiple<T>({
  1. required List<ToggleGroupItem<T>> items,
  2. required Set<T> value,
  3. required void onChange(
    1. Set<T> value
    ),
  4. ToggleVariant variant = ToggleVariant.defaultVariant,
  5. ToggleSize size = ToggleSize.defaultSize,
  6. String orientation = 'horizontal',
  7. String extraClassName = '',
})

Controlled toggle group supporting multiple selections.

Implementation

BloomNode toggleGroupMultiple<T>({
  required List<ToggleGroupItem<T>> items,
  required Set<T> value,
  required void Function(Set<T> value) onChange,
  ToggleVariant variant = ToggleVariant.defaultVariant,
  ToggleSize size = ToggleSize.defaultSize,
  String orientation = 'horizontal',
  String extraClassName = '',
}) {
  final isHorizontal = orientation == 'horizontal';

  return Div(
    attrs: {
      'role': 'group',
      'data-slot': 'toggle-group',
      'aria-orientation': orientation,
    },
    className: cn([
      'inline-flex items-center gap-1 rounded-[var(--radius-md)] p-1 bg-[var(--card)] border border-[var(--border)]',
      isHorizontal ? 'flex-row' : 'flex-col',
      extraClassName,
    ]),
    children: items.map((item) {
      final isSelected = value.contains(item.value);

      return toggle(
        pressed: isSelected,
        onChange: (pressed) {
          final next = Set<T>.from(value);
          if (pressed) {
            next.add(item.value);
          } else {
            next.remove(item.value);
          }
          onChange(next);
        },
        variant: variant,
        size: size,
        child: item.child,
      );
    }).toList(),
  );
}