Skip to main content

MultiSelectTask

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

Базовый пример

Скриншот: задача множественного выбора

Настройки

Пункт «Выбрать все»

Пункт добавляется в начало списка и управляет остальными позициями. Если стиль не передан, используется подсвеченный вариант, чтобы shortcut выделялся на фоне обычных элементов. Для нейтрального оформления можно передать 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 — удобно запрашивать дополнительные параметры для выбранных пунктов