SusForm

Оболочка формы — title, слот полей, сводка валидации, submit / cancel, loading-оверлей через SusFormController.
Пакет
SusKit · Молекулы (коммерческий)
Свойства
| Имя | Тип | По умолчанию | |
|---|---|---|---|
Controller | Prop<SusFormController> | new() | v-model |
Title | Prop<string> | "" | v-model |
SubmitLabel | Prop<string> | "OK" | v-model |
Слоты
| Имя |
|---|
(по умолчанию) |
События
Публичных событий нет.
Хуки стиля
Контракт USS-классов — внешний вид переопределяется без правки C#. Состояния переключаются этими классами:
sus-formsus-form__actionssus-form__bodysus-form__cancelsus-form__error-itemsus-form__errorssus-form__errors-titlesus-form__spinnersus-form__submitsus-form__titlesus-form--dirtysus-form--disabledsus-form--invalidsus-form--readonlysus-form--submitting
Использование
Управляйте жизненным циклом через Controller: submit → IsSubmitting до FinishSubmit / FailSubmit / SetServerErrors.
csharp
var ctrl = new SusFormController();
ctrl.OnSubmit += values =>
{
// async work…
ctrl.FinishSubmit();
// or ctrl.SetServerErrors(new Dictionary<string, string> { ["name"] = "Taken" });
// or ctrl.FailSubmit();
};
var form = new SusForm();
form.Controller.Value = ctrl;
form.Title.Value = "Quick form";
form.SubmitLabel.Value = "OK";
var nameField = new SusFormField();
nameField.Label.Value = "Name";
nameField.FieldName.Value = "name";
nameField.Required.Value = true;
var input = new SusTextfield();
input.Placeholder.Value = "Hero name";
input.Model.Changed += (_, val) => nameField.Model.Value = val;
nameField.Add(input);
form.Add(nameField);xml
<template>
<sus:SusForm Title="Quick form"
SubmitLabel="OK"
:Controller="FormCtrl.Value">
<!-- Prefer composing fields in C# (Controller + FormField.Model sync) — see above. -->
</sus:SusForm>
</template>
<script>
public Prop<SusFormController> FormCtrl = new(new());
</script>Заметки
- Используйте в паре с дочерними
SusFormField(авторегистрируются в контроллере). - Держите
Modelкаждого поля синхронизированным с его input (см. FormField). ShowCancel(поле) переключает кнопку Cancel;OnCancelсрабатывает при нажатии.- Во время отправки форма показывает spinner-оверлей и блокирует кнопку submit.