Skip to main content

FormSchemaNode

Defined in: core/types/schema-node.ts:77

Узел единой схемы M1 — дерево, обходимое createForm({ model, schema }), validateModel/validateFormModel и рендерерами.

Узел совмещает несколько ролей (различаются рантаймом по форме):

  • поле — несёт value: Signal (сигнал модели model.$.x) + component/validators;
  • массив{ array: model.<path>, item(itemModel) };
  • контейнер/ветка — вложенные узлы (children), опц. условие when;
  • record-of-fields — под-узлы под произвольными именованными ключами (индексная сигнатура).

Индексная сигнатура ([key: string]: unknown) отражает свободный рекурсивный обход: под-узлы допустимы под любым ключом. Известные поля типизированы (даёт автокомплит и проверку их типов).

Indexable

[key: string]: unknown

Свободная вложенность: record-of-fields и произвольные под-узлы.

Properties

array?

optional array: SchemaArrayControl;

Defined in: core/types/schema-node.ts:102

Реактивный массив модели (model.<path>) — маркер узла-массива (вместе с item).


asyncValidators?

optional asyncValidators: SchemaValidator[];

Defined in: core/types/schema-node.ts:89


children?

optional children: readonly FormSchemaNode[];

Defined in: core/types/schema-node.ts:98

Дочерние узлы (даёт контекстную типизацию вложенным литералам — value/validators/when).


component?

optional component: ComponentType<any>;

Defined in: core/types/schema-node.ts:85

UI-компонент. Опционален: core-часть работает без UI (значение/валидация).


componentProps?

optional componentProps: Record<string, unknown>;

Defined in: core/types/schema-node.ts:87

Props компонента. Также «клапан» для вложенности под-узлов (напр. steps визарда).


debounce?

optional debounce: number;

Defined in: core/types/schema-node.ts:93

Задержка (мс) перед запуском асинхронной валидации.


disabled?

optional disabled: boolean;

Defined in: core/types/schema-node.ts:91


initialValue?

optional initialValue: unknown;

Defined in: core/types/schema-node.ts:110

Значение нового элемента массива для кнопки «Добавить»: либо готовое значение, либо фабрика () => value. Тип не различает варианты (union unknown | (() => unknown) схлопывается в unknown) — рантайм различает по typeof initialValue === 'function'.


item()?

optional item: (itemModel) => FormSchemaNode;

Defined in: core/types/schema-node.ts:104

Схема элемента массива: под-модель элемента → узел поддерева.

Parameters

itemModel

any

Returns

FormSchemaNode


selector?

optional selector: string;

Defined in: core/types/schema-node.ts:95

Идентификатор узла (для wizard/tabs/renderBehavior).


testId?

optional testId: string;

Defined in: core/types/schema-node.ts:96


updateOn?

optional updateOn: "change" | "blur" | "submit";

Defined in: core/types/schema-node.ts:90


validators?

optional validators: SchemaValidator[];

Defined in: core/types/schema-node.ts:88


value?

optional value: unknown;

Defined in: core/types/schema-node.ts:83

«Ручка» значения поля — маркер узла-поля. Обычно сигнал модели (model.$.<path>), но форма зависит от таргета (для массива model.$.x — дерево сигналов; в renderer-типах сужается до Signal). Движок разбирает узел как поле рантаймом по value instanceof Signal.


when()?

optional when: (scope, root) => boolean;

Defined in: core/types/schema-node.ts:100

Условие включения поддерева (branch-узел { when, children }).

Parameters

scope

any

root

any

Returns

boolean