C3DynamicForm: продвинутая схема
Форма
Входные параметры
Пропсы самого C3DynamicForm описаны на странице dynamic-demo. Эта страница показывает ключи схемы, которые там не использовались:
| Ключ | Где | Тип | Описание |
|---|---|---|---|
repeatable | группа | boolean | Группа рендерится списком копий; значения — массив под id группы |
repeatMin | группа | number | Нижняя граница: последней записи не дадут удалиться; пустые копии создаются только кнопкой |
repeatMax | группа | number | Потолок копий: кнопка добавления исчезает на достижении |
visibleIf / requiredIf | поле и группа | C3Condition | Условие { field, operator, value }; у группы условие скрывает весь блок |
validation.custom | поле | string | Имя функции из пропа validators |
source.type = 'function' | поле | { function, params? } | Вызов загрузчика из пропа dataSourceLoaders по имени |
span | группа | 1…6 | Ширина вложенной группы в колонках родительской сетки |
Описание
Страница собирает в одном месте то, что базовое демо не показало: повторяющуюся группу с лимитами, условия разными операторами (eq и notEmpty), кастомную проверку из пропа validators и справочник, который отдаёт функция-загрузчик из пропа dataSourceLoaders.
Загрузчик живёт ровно столько, сколько форма: при размонтировании он снимается из глобального реестра, поэтому одно имя можно использовать в разных формах.
Дополнительная информация
- Данные повторяемой группы — массив под
idгруппы: в этой схеме ключpledgesпоявляется вsubmit-payload только когда залог включён. - Кнопки добавления/удаления копий рисует
C3DynamicRepeatableField: удалить — в шапке записи, добавить — под списком. Вreadonlyих нет вовсе; приdisabledкнопки остаются, заблокированы только поля внутри записи. - Скрытые условием поля не проверяются и не попадают в собираемый payload — поэтому
collateralTypeне требует значения, покаhasCollateralвыключен. requiredIfпомечает поле обязательным, пока условие выполнено: снимается условие — снимается и звёздочка, и требование значения при проверке.- Ошибка загрузки справочника форму не ломает: варианты просто остаются пустыми, исключение внутрь поля глотается. Состояние загрузки и загруженные варианты поле отдаёт через
defineExpose(optionsLoading,loadedOptions).