MultiSelectTask
MultiSelectTask позволяет отметить сразу несколько пунктов. Подходит для выбора компонентов установки, фич, ролей и других списков, где безопасно выбрать несколько значений.
Базовый пример

Настройки
Пункт «Выбрать все»
ziva.MenuItemDefaultStyle().
Значения по умолчанию
Viewport
Отключение элементов
Таймаут
Зависимости между пунктами
WithDependencies описывает связи между пунктами меню. Для каждого ключа задаётся MultiSelectDependencyRule с действиями при выборе (OnSelect) и снятии выбора (OnDeselect). Доступные действия:
Disable/Enable— временно блокируют или возвращают пункт.ForceSelect— автоматически отмечает связанные пункты (например, обязательные зависимости).ForceClear— снимает выбор, если условия больше не выполнены.
Пустой выбор как отдельный сценарий
По умолчаниюMultiSelectTask позволяет завершить задачу без выбора — удобно для опциональных блоков. Если нужно требовать хотя бы один пункт, вызовите WithRequireSelection(true): при нажатии Enter без выбора пользователь увидит подсказку NeedSelectAtLeastOne.
Получение результата
Советы
- Используйте
WithSelectAll, если большинство пользователей выбирают все элементы. - Метод принимает до трёх аргументов: подпись для включения, подпись для отключения и дополнительный
lipgloss.Style. Это позволяет локализовать оба режима и оформить shortcut отдельно от других пунктов меню. - Храните идентификаторы в самих строках (
id::подсказка), чтобы легко сопоставлять выбор с конфигурацией. - Если нужно ограничить максимальное количество пунктов, добавьте проверку после
queue.Run()и попросите пользователя повторить выбор. - Комбинируйте
MultiSelectTaskсFuncTask, чтобы после выбора сразу выполнять сопутствующие операции (например, устанавливать выбранные модули).
Связанные материалы
- SingleSelectTask
- InputTask — удобно запрашивать дополнительные параметры для выбранных пунктов