К содержимому

SusChoiceDialog

SusChoiceDialog

N-button choice card for modal dialogs — buttons render in order, awaitable ShowAsync resolves to the chosen index (or -1 on dismiss).

Пакет

SusKit · Molecules (коммерческий)

Открыть в песочнице

SusKit · Molecules

Свойства

ИмяТипПо умолчанию
TitleProp<string>"Choose"
MessageProp<string>""v-model
ButtonsProp<string[]>Array.Empty<string>()
ButtonIdsProp<string[]>Array.Empty<string>()

Слоты

Слотов нет.

События

ИмяПолеPayload
ChooseOnChooseint
ChooseIdOnChooseIdstring

Хуки стиля

Контракт USS-классов — внешний вид переопределяется без правки C#. Состояния переключаются этими классами:

  • sus-choice-dialog
  • sus-choice-dialog__btn
  • sus-choice-dialog__buttons

Использование

xml
<template>
  <sus:SusChoiceDialog Title="Delete item?"
                       Message="This cannot be undone."
                       :Buttons="Options.Value"
                       @choose="OnChoose" />
</template>

<script>
public Prop<string[]> Options = new(new[] { "Cancel", "Delete" });
void OnChoose(int index) { /* index == Options.Value.Length - 1 → confirmed */ }
</script>
csharp
// Awaitable helper — hosts the card inside a SusModal and resolves when it closes.
int index = await SusChoiceDialog.ShowAsync(
    "Delete item?", "This cannot be undone.", "Cancel", "Delete");
if (index == 1) { /* confirmed */ }

Заметки

  • Последняя запись в Buttons рендерится как primary-действие (elevated / цвет primary); все остальные — outlined / secondary — подтверждающий выбор ставьте последним.
  • OnChoose(int) срабатывает с индексом клика. ButtonIds — опциональный массив параллельно Buttons: если у кликнутой кнопки есть совпадающий id, рядом срабатывает OnChooseId(string), чтобы вызывающий код опирался на стабильный id, а не на позицию.
  • Статический хелпер ShowAsync оборачивает карточку в хост SusModal через SusModalService и резолвится в -1, когда диалог закрыт через scrim модалки без клика по кнопке.