import { type ReactNode } from 'react'; import { type FieldErrors } from 'react-hook-form'; import { type UseFormReturn } from '../hooks'; import type { WizardFooterProps, WizardStep, WizardStepId } from './types'; export type FormWizardProps> = { /** * Название класса, применяется к корневому компоненту */ className?: string; /** * Идентификатор текущего шага */ currentStepId: WizardStepId; /** * Объект формы возвращаемый из useForm */ form: UseFormReturn; /** * Флаг, указывающий, является ли текущий шаг первым в последовательности. */ isFirstStep: boolean; /** * Флаг, указывающий, является ли текущий шаг последним в последовательности. */ isLastStep: boolean; /** * Если true, форма будет недоступна для редактирования. */ isDisabled?: boolean; /** * Если true, будет отображаться индикатор загрузки. * Можно использовать пока ждем данных для инициализации формы. */ isLoading?: boolean; /** * Если true, форма будет отображать ошибку. * Используется если не удалось загрузить данные для формы. */ isError?: boolean; /** * Текст ошибки */ errorMsg?: string; /** * Текст для кнопки "Отправить" */ submitButtonText: string; /** * Шаги формы */ steps: WizardStep[]; /** * Рендер-props для организации кастомного футера * @param params - Параметры, передаваемые в кастомный футер. * @param params.isDisabled - Текст для кнопки "Далее". * @param params.isFirstStep - Флаг, указывающий, является ли текущий шаг первым в последовательности. * @param params.prevButtonText - Текст для кнопки "Назад" * @param params.submitButtonText - Текст для кнопки "Далее" и "Отправить" * @param params.onPrevStep - Функция, вызываемая при переходе на предыдущий шаг. */ customFooter?: (params: WizardFooterProps) => ReactNode | undefined; /** * Функция обработки нажатия на кнопку "Повторить запрос" */ onRetry?: () => void; /** * Функция, вызываемая при клике на шаг. * При ее наличии появляется возможность клика и быстрого перехода на предыдущий шаг */ onClickStep?: (index: number) => void; /** * Функция для перехода на предыдущий шаг. */ onPrevStep: () => void; /** * Функция, вызываемая при отправке формы или при переходе на следующий шаг. * @param formValues - Значения формы. */ onSubmit: (formValues: TFormValues) => void | Promise; /** * Функция вызывается если есть ошибка валидации при отправке формы или при переходе на следующий шаг */ onSubmitError?: (errors: FieldErrors) => void; /** * Произвольный контент перед степпером формы */ beforeContent?: ReactNode; }; /** * FormWizard предназначен для построения форм со степпером. */ export declare const FormWizard: >(props: FormWizardProps) => JSX.Element;