FormWizard
Стилизованный многошаговый визард поверх headless @reformer/cdk/form-wizard. Индикатор шагов,
тело шага, кнопки Назад/Далее/Отправить и прогресс рендерятся автоматически. Шаги и их правила —
поток шагов сборки createForm({ flow: { steps: [{ id, rules }] } }): «Далее» проверяет
правила текущего шага и не пускает дальше, пока у шага есть замечания. Отправка идёт через
bundle.submission.submit(handler) — один прогон всех правил.
Два способа подключения:
- в JSX —
form={bundle.form},flow={bundle.flow}и декларативный массивsteps({ number, title, icon?, body }). Тело шага полиморфно: компонент({ control }) => …, ReactNode или узел схемы (сrenderStepBody).onSubmitзовётся по нажатию — проверку делает приложение:onSubmit={() => void bundle.submission.submit(api.send)}; - в схеме формы — узел
{ selector: 'wizard', component: FormWizard, children: [шаги] }, шаг —{ selector: 'loan', component: Step, componentProps: { title, icon }, children: [...] }. Форму и поток визард берёт из сборки, которую рисуетFormRenderer;selectorшага —idшага потока. Обработчик кнопки отправки получает значения только после успешной проверки всей формы (onComponentEvent(schema.node('wizard'), 'onSubmit', …)в поведении формы).
Управлять визардом снаружи — через сам поток: bundle.flow.next(), bundle.flow.goTo('loan'),
состояние для рендера — useFormFlow(bundle.flow) из @reformer/core/react. Для кастомной
раскладки — headless-слоты FormWizard из CDK, там же подробно о потоке,
отправке и живой проверке.
Variants — готовые конфигурации компонента: один и тот же компонент с разными преднастроенными пропсами. Витрина состояний (напр. обычный Select и Select с расширенной информацией — два варианта).
Examples — приёмы в коде: как решить задачу. Напр. как разные Data Provider’ы работают с компонентом (рецепты использования).