CoreForm — рендер по конфигу › рендерит title формы как h3; без title — не рендерит
CoreForm — рендер по конфигу › рендерит поля всех типов с лейблами и связкой label↔контрол
CoreForm — рендер по конфигу › лейаут: span >= columns → --full, span < columns → --span-N
CoreForm — рендер по конфигу › лейаут: 3 колонки — span 1 база, span 2 в 2 колонки, span 3 вся строка
CoreForm — рендер по конфигу › лейаут: 4 колонки — span 3 в 3 колонки, span 4 вся строка
CoreForm — рендер по конфигу › группы: fieldset+legend на группу, своя сетка колонок
CoreForm — рендер по конфигу › без groups — одна неявная группа (единый fieldset, плоские поля)
CoreForm — рендер по конфигу › groups выигрывают у fields при задаче обоих
CoreForm — рендер по конфигу › конфиг-строка (JSON) эквивалентна объекту
CoreForm — рендер по конфигу › динамическое добавление поля в конфиг рендерит его (живое редактирование)
CoreForm — валидация › пустой сабмит: ошибки у required-полей, fetch не вызван, фокус-таргет aria-invalid
CoreForm — валидация › checkbox checked-семантика: unchecked невалиден, checked валиден
CoreForm — валидация › подпись чекбокса: [текст](URL) рендерится ссылкой
CoreForm — валидация › опасная схема в ссылке рендерится plain-текстом без якоря
CoreForm — сабмит › успех: POST JSON, success-текст из конфига, reset, emit success
CoreForm — сабмит › HTTP 500: error-текст из конфига, emit error со статусом
CoreForm — сабмит › сетевая ошибка: error-текст, emit error без статуса
CoreForm — сабмит › emit submit происходит до валидации и до fetch
CoreForm a11y (axe) › pristine форма — без axe-нарушений
CoreForm a11y (axe) › после пустого сабмита: ошибки полей — без нарушений, один alert на поле
CoreForm a11y (axe) › после успешного сабмита: статус role="status" — без нарушений