Компонент DFDialog
предназначен для упрощения создания форм и использует библиотеку react-final-form
.
Он поддерживает несколько предустановленных типов полей, список которых можно расширить, зарегистрировав новые с помощью registerDialogControl
.
- Базовые контролы:
plain
— статический текст;text
— редактируемый текст;multi-text
— пользовательский массив строк;checkbox
— чекбокс;tumbler
— переключатель;radio
— радиокнопка;editable-list
— список с возможностью удаления строк;multi-editable-list
— многоуровневый список с возможностью удаления строк;text area
— текстовая область;select
— селект (выпадающий элемент);block
— позволяет добавитьReactNode
.
- Пользовательские контролы.
- Встроенный и модальный вид.
- Формы с одной вкладкой и несколькими вкладками.
- Вертикальные и горизонтальные вкладки.
- Скрытые поля и вкладки.
- Связь полей по значениям.
- Валидация на уровне полей.
- Валидация на уровне формы.
- Виртуализация вкладок.
- Клонирование вкладок.
- Группировка полей.
npm install @gravity-ui/dialog-fields
Необходимо установить все обязательные peer-зависимости:
npm install -D @gravity-ui/uikit@^5 @bem-react/[email protected] react@^17
import {DFDialog, FormApi} from '@gravity-ui/dialog-fields';
interface FormValues {
firstName: string;
lastName: string;
}
function MyForm() {
return (
<DFDialog<FormValues>
visible={true}
headerProps={{
title: 'My form',
}}
onAdd={(form) => {
console.log(form.getState().values);
return Promise.resolve();
}}
fields={[
{
name: 'firstName',
type: 'text',
caption: 'First name',
tooltip: 'Description for first name field',
},
{
name: 'lastName',
type: 'text',
caption: 'LastName',
tooltip: 'Description for last name field',
},
]}
/>
);
}
C дополнительными примерами можно ознакомиться в Storybook.