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 (коммерческий)
Свойства
| Имя | Тип | По умолчанию | |
|---|---|---|---|
Title | Prop<string> | "Choose" | |
Message | Prop<string> | "" | v-model |
Buttons | Prop<string[]> | Array.Empty<string>() | |
ButtonIds | Prop<string[]> | Array.Empty<string>() |
Слоты
Слотов нет.
События
| Имя | Поле | Payload |
|---|---|---|
Choose | OnChoose | int |
ChooseId | OnChooseId | string |
Хуки стиля
Контракт USS-классов — внешний вид переопределяется без правки C#. Состояния переключаются этими классами:
sus-choice-dialogsus-choice-dialog__btnsus-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 модалки без клика по кнопке.