import React from 'react'; import type { CommonProps } from '@skbkontur/react-ui/internal/CommonWrapper'; import type { FiasLocale } from './locale/index.js'; import type { FiasAPIProvider, FiasValue, FiasFieldsSettings, FiasFormValidation, FiasAllFields, FiasModalProps, FiasSuggestLevels } from './types.js'; import { FiasDivision, FiasSchema } from './types.js'; import { FiasAddress } from './models/FiasAddress.js'; export interface FiasLabelComponentProps { icon?: React.ReactNode; onClick?: () => void; } export interface FiasProps extends CommonProps { /** * Значение адреса. См. формат в примерах */ value?: Partial; error?: boolean; warning?: boolean; /** * Сообщение пользователю в режиме `error` или `warning` */ feedback?: React.ReactNode; /** * Выводить ли текстовую интерпретацию адреса над ссылкой */ showAddressText?: boolean; /** * Текст ссылки */ label?: React.ReactNode; /** * Текст ссылки */ labelComponent?: React.ComponentType; /** * Иконка рядом со ссылкой */ icon?: React.ReactElement; readonly?: boolean; /** * API URL. * Тестовый ФИАС: `https://api.testkontur.ru/fias/v1/` * Боевой ФИАС: `https://api.kontur.ru/fias/v1/` */ baseUrl?: string; /** * API instance. Если нет возможности использовать стандартный API. */ api?: FiasAPIProvider; /** * Позволяет получить полный FiasValue после обработки входного `value` */ onInit?: (value: FiasValue) => void; onValueChange?: (value: FiasValue) => void; onDivisionChange?: (division: FiasDivision) => void; onClose?: () => void; /** * Добавляет поле поиска адреса в произвольной форме */ search?: boolean; /** * Количество отображаемых элементов в выпадающих списках */ limit?: number; /** * Уровень критичности ошибок валидации полей адреса */ formValidation?: FiasFormValidation; /** * Разрешать ли сохранять неверефицированный (произвольный, не из базы) адрес */ allowNotVerified?: boolean; /** * Версия базы данных ФИАС. Формат: "2018-10-22" */ version?: string; /** * Настройка полей. Достаточно переопределить только нужные. * * Внимание, не рекомендуется скрывать поля в произвольном порядке. Это может привести * к невозможности заполнения некоторых адресов. * * Отключение валидации – не рекомендуется и имеет смыст только, если вы хотите позволить вводить * в определенные поля любые данные - например в квартиру. * * ```ts * { * room: { * validation: false * } * } * ``` * * Кастомные валидации – имеют смысл, если вы нуждаетесь в дополнительном форматном контроле. * При добавлении кастомной валидации учитывайте, что ваша ваша функция будет переопределять валидацию контрола Fias, * если вы хотите отображать также нативную валижацию Fias - она приходит в последний аргумент функции. * * ```ts * { * house: { * validation: (value, field, fiasError) => ( * fiasError || customHouseValidation(value) * ) * } * } * ``` * * Значение по умолчанию: * * ```ts * { * region: * ... * room: { * visible: true, * validation: true * }, * postalcode: { * visible: false, * validation: true * } * }``` * */ fieldsSettings: FiasFieldsSettings; /** Выбор страны */ countrySelector: boolean; /** Разрешить ввод стран не из справочника */ allowArbitraryCountry?: boolean; /** * Формат выгрузки. [Подробнее](https://wiki.skbkontur.ru/pages/viewpage.action?pageId=415373469). * * ```ts * "administrative" - Административно-территориальное * "municipal" - Муниципальное * ``` */ division?: FiasDivision; /** * Формат домов. [Подробнее](https://wiki.skbkontur.ru/pages/viewpage.action?pageId=415373469). * * ```ts * "fias" - старый формат * "gar" - новый формат * ``` */ schema?: FiasSchema; /** * @deprecated * Используйте параметр **suggestUnknownLevel** */ suggestUnknownParts?: boolean; /** * Параметр для ввода несуществующих адресов. * [Подробнее](https://wiki.skbkontur.ru/pages/viewpage.action?pageId=590445348). * * Также включает верификацию несуществующих [адресов](https://wiki.skbkontur.ru/pages/viewpage.action?pageId=192906451). * * ```ts * "House" - уровень дома * "Room" - уровень помещения * ``` */ suggestUnknownLevel?: FiasSuggestLevels; /** * Определяет в каком модальном окне открыть форму. * Варианты `FiasModal` и `FiasSidePage` доступны для импорта из пакета. * Возможно использование кастомного компонента, принимающего пропы FiasModalProps. * * @default FiasModal */ modal?: React.ComponentType; renderForm?: (form: React.ReactNode) => React.ReactNode; divisionSelector?: boolean; /** * Выключает кнопку сохранения формы, если значение в форме не изменилось. */ disableFormSave?: boolean; } export interface FiasState { opened: boolean; address: FiasAddress; locale: FiasLocale; formSaveDisabled: boolean; formSubmitting: boolean; } export declare function deepMerge(dst: T, ...src: T[]): T; /** * @deprecated Компонент устарел и больше не развивается. Рекомендуется переходить на [виджет](https://widgets.skbkontur.ru/#/category/%D0%94%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5/doc/%D0%90%D0%B4%D1%80%D0%B5%D1%81%D0%B0%20%E2%80%94%20%D0%A4%D0%98%D0%90%D0%A1). */ export declare class Fias extends React.Component { static __KONTUR_REACT_UI__: string; static displayName: string; static defaultProps: FiasProps; static getFieldsSettings: ({ userFieldsSettings, division, schema, countrySelector, }: { userFieldsSettings: FiasFieldsSettings; division: FiasDivision; schema: FiasSchema; countrySelector?: boolean; }) => FiasFieldsSettings; static getDefaultFieldsSettings: ({ division, schema }?: { division: FiasDivision; schema: FiasSchema; }) => FiasFieldsSettings; static getDefaultFieldVisibility: (field: FiasAllFields, division: FiasDivision, schema: FiasSchema) => boolean; private get division(); private get schema(); private get suggestUnknownParts(); private get suggestUnknownLevel(); state: FiasState; private theme; private styles; private emotion; private form; private readonly locale; constructor(props: FiasProps); get fieldsSettings(): FiasFieldsSettings; get api(): FiasAPIProvider; componentDidMount: () => void; componentDidUpdate: (prevProps: FiasProps, prevState: FiasState) => void; isFieldVisible(field: FiasAllFields): boolean; render(): JSX.Element; open(): void; close(): void; resetForm(value?: Partial): Promise; private renderMain; private handleFormSubmitDisable; private renderModal; private renderForm; private init; private updateAddress; private updateLocale; private updateFormDisable; private handleOpen; private handleClose; private handleSave; private handleChange; private refForm; }