vuetify-schema-form
A schema-based form generator component for Vue.js.
9,844
4
| Install | |
|---|---|
npm install vuetify-schema-form |
|
| Latest Version: | 0.1.163 |
| Vue: | 2 |
| License: | MIT |
| Last Updated: | Mar 3, 2023 |
| Links: | GitHub · npm |
Maintainer: zaidulin_kirill
Введение
vuetify-schema-form может использоваться двумя способами:
- просто как набор часто используемых компонентов. В этом случае нужные компоненты нужно подключать из папки /src/components
- или же можно ее использовать, как более удобный (по крайней мере для меня) построитель сложных форм. В этом случае форма строится не по html-разметке, а по JS-объекту
Например, хотим построить форму с вкладками? Пишем вот такую структуру и передаем ее на вход либы:
fields: {
type: 'tabs',
fields: [{
label: 'Основная информация',
type: 'row',
fields: [{
type: 'row',
md: 8,
fields: [
{ label: 'Фамилия', value: 'secondName', md: 3, required: true },
{ label: 'Имя', value: 'firstName', md: 3, required: true },
{ label: 'Отчество', value: 'middleName', md: 3, required: true }
]
}, {
type: 'row',
md: 4,
fields: [{
label: 'Телефоны',
value: 'phones',
type: 'array',
containerProps: { noGutters: true },
inputType: 'phone',
inputProps: { cols: 12 },
required: true,
noGutters: true
}
]
}]
}, {
label: 'Файлы',
type: 'row',
fields: [{
label: 'Файлы',
value: 'files',
type: 'files',
foreignKey: 'driverId',
foreignKeyValue: () => this.id
}]
}]
}
Особенности
- Уменьшает объем кода, который надо написать по следующим причинам:
- разворачивает некоторые пропсы во Vue-компоненты: к примеру, дети элемента 'row' оборачиваются элементом <v-col>.
- Проперти required: true у элементов превращается в правило с required-валидацией
- Нет необходимости каждый раз импортировать нужные элементы (это, конечно, и минус, скорее всего, так как увеличит размер бандла)
- Имеет множество частоиспользуемых компонентов. Напишу только про самые сложные, а остальные можно увидеть в исходнике:
- 'remote' -- автокомплит по связанной сущности. Поддерживает поиск или выгрузку всех элементов при создании компонента
- 'file' и 'files' -- сложные элементы и совсем без возможности кастомизации. Работали только в связке с koa-file-uploader-router на сервере. Могут принимать те же пропсы, что и другие компоненты. Особенные пропсы:
params(у 'file') -- объект, позволяющий связать данный файл с сущностью в другой таблице. К примеру, нужно связать загружаемые файлы с водителем -- передаем сюда: params: {driverId: "some-uuid"}. Тогда файлы кокретного водителя отобразятся в форме. Необходимо, чтобы это поле (driverId) было объявлено в Хасуре в таблице FileforeignKey,foreignKeyType(по умолчанию uuid!),foreignKeyValue-- пропсы для 'files'. Позволяют связывать файлы к сущности. Являются обязательными полями. В таблице File обязательно должно быть столбец "sort" -- сортировка в списке Я не спорю -- эти 3 компонента написаны не очень. Но мне они очень сильно упрощают жизнь - 'mask' -- инпут с поддержкой маски. Используется внутри элемента 'phone'. Я вынес его сюда, так как внутри 'mask' использует не v-mask какой-нибудь глючный, а Cleave.js который намного гибче, но при этом и интегрировать во Vue его сложней
- 'array' -- тоже сложный элемент. Позволяет делать "массивы" компонентов (которые в Хасуре будут храниться в типе JSONB). Принимает проп inputType -- тип инпута из этой же либы (например, inputType: 'phone') покажет массив телефонов с возможностью добавлять новые элементы, проверять валидацию и т.д
Related Packages
Version History
| Version | Released | License |
|---|---|---|
| 0.1.163 | MIT | |
| 0.1.162 | MIT | |
| 0.1.161 | MIT | |
| 0.1.160 | MIT | |
| 0.1.159 | MIT | |
| 0.1.158 | MIT | |
| 0.1.157 | MIT | |
| 0.1.156 | MIT | |
| 0.1.155 | MIT | |
| 0.1.154 | MIT | |
| 0.1.153 | MIT | |
| 0.1.152 | MIT | |
| 0.1.151 | MIT | |
| 0.1.150 | MIT | |
| 0.1.149 | MIT | |
| 0.1.148 | MIT | |
| 0.1.147 | MIT | |
| 0.1.146 | MIT | |
| 0.1.145 | MIT | |
| 0.1.144 | MIT | |
| 0.1.143 | MIT | |
| 0.1.142 | MIT | |
| 0.1.141 | MIT | |
| 0.1.140 | MIT | |
| 0.1.139 | MIT | |
| 0.1.138 | MIT | |
| 0.1.137 | MIT | |
| 0.1.136 | MIT | |
| 0.1.135 | MIT | |
| 0.1.134 | MIT |
Showing the latest 30 of 162. See every release on npm
Pre-releases (11)
| Version | Released | License |
|---|---|---|
| 0.0.1-beta.8 | MIT | |
| 0.0.1-beta.7 | MIT | |
| 0.0.1-beta.6 | MIT | |
| 0.0.1-beta.5 | MIT | |
| 0.0.1-beta.3 | MIT | |
| 0.0.1-beta.2 | MIT | |
| 0.0.1-beta.1 | MIT | |
| 0.0.0-beta.9 | MIT | |
| 0.0.0-beta.7 | MIT | |
| 0.0.0-beta.6 | MIT | |
| 0.0.0-beta.5 | MIT |