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

SusForm

SusForm

Оболочка формы — title, слот полей, сводка валидации, submit / cancel, loading-оверлей через SusFormController.

Пакет

SusKit · Молекулы (коммерческий)

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

SusKit · Molecules

Свойства

ИмяТипПо умолчанию
ControllerProp<SusFormController>new()v-model
TitleProp<string>""v-model
SubmitLabelProp<string>"OK"v-model

Слоты

Имя
(по умолчанию)

События

Публичных событий нет.

Хуки стиля

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

  • sus-form
  • sus-form__actions
  • sus-form__body
  • sus-form__cancel
  • sus-form__error-item
  • sus-form__errors
  • sus-form__errors-title
  • sus-form__spinner
  • sus-form__submit
  • sus-form__title
  • sus-form--dirty
  • sus-form--disabled
  • sus-form--invalid
  • sus-form--readonly
  • sus-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.