0.1.163 • Published 2 years ago

vuetify-schema-form v0.1.163

Weekly downloads
151
License
MIT
Repository
github
Last release
2 years ago

Введение

vuetify-schema-form может использоваться двумя способами: 1) просто как набор часто используемых компонентов. В этом случае нужные компоненты нужно подключать из папки /src/components 2) или же можно ее использовать, как более удобный (по крайней мере для меня) построитель сложных форм. В этом случае форма строится не по 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
		}]
	}]
}

Особенности

  • Уменьшает объем кода, который надо написать по следующим причинам: 1) разворачивает некоторые пропсы во Vue-компоненты: к примеру, дети элемента 'row' оборачиваются элементом \. 2) Проперти required: true у элементов превращается в правило с required-валидацией 3) Нет необходимости каждый раз импортировать нужные элементы (это, конечно, и минус, скорее всего, так как увеличит размер бандла)

  • Имеет множество частоиспользуемых компонентов. Напишу только про самые сложные, а остальные можно увидеть в исходнике: 1) 'remote' -- автокомплит по связанной сущности. Поддерживает поиск или выгрузку всех элементов при создании компонента 2) 'file' и 'files' -- сложные элементы и совсем без возможности кастомизации. Работали только в связке с koa-file-uploader-router на сервере. Могут принимать те же пропсы, что и другие компоненты. Особенные пропсы: params (у 'file') -- объект, позволяющий связать данный файл с сущностью в другой таблице. К примеру, нужно связать загружаемые файлы с водителем -- передаем сюда: params: {driverId: "some-uuid"}. Тогда файлы кокретного водителя отобразятся в форме. Необходимо, чтобы это поле (driverId) было объявлено в Хасуре в таблице File foreignKey, foreignKeyType (по умолчанию uuid!), foreignKeyValue -- пропсы для 'files'. Позволяют связывать файлы к сущности. Являются обязательными полями. В таблице File обязательно должно быть столбец "sort" -- сортировка в списке Я не спорю -- эти 3 компонента написаны не очень. Но мне они очень сильно упрощают жизнь 3) 'mask' -- инпут с поддержкой маски. Используется внутри элемента 'phone'. Я вынес его сюда, так как внутри 'mask' использует не v-mask какой-нибудь глючный, а Cleave.js который намного гибче, но при этом и интегрировать во Vue его сложней 4) 'array' -- тоже сложный элемент. Позволяет делать "массивы" компонентов (которые в Хасуре будут храниться в типе JSONB). Принимает проп inputType -- тип инпута из этой же либы (например, inputType: 'phone') покажет массив телефонов с возможностью добавлять новые элементы, проверять валидацию и т.д

0.1.158

2 years ago

0.1.157

2 years ago

0.1.159

2 years ago

0.1.161

2 years ago

0.1.160

2 years ago

0.1.163

2 years ago

0.1.162

2 years ago

0.1.156

2 years ago

0.1.155

2 years ago

0.1.154

2 years ago

0.1.153

2 years ago

0.1.152

2 years ago

0.1.151

2 years ago

0.1.149

2 years ago

0.1.148

2 years ago

0.1.150

2 years ago

0.1.147

2 years ago

0.1.146

2 years ago

0.1.143

3 years ago

0.1.145

3 years ago

0.1.144

3 years ago

0.1.142

3 years ago

0.1.139

3 years ago

0.1.136

3 years ago

0.1.138

3 years ago

0.1.137

3 years ago

0.1.141

3 years ago

0.1.140

3 years ago

0.1.135

3 years ago

0.1.132

3 years ago

0.1.131

3 years ago

0.1.134

3 years ago

0.1.133

3 years ago

0.1.130

3 years ago

0.1.129

3 years ago

0.1.128

3 years ago

0.1.125

3 years ago

0.1.124

3 years ago

0.1.127

3 years ago

0.1.126

3 years ago

0.1.123

3 years ago

0.1.122

3 years ago

0.1.121

3 years ago

0.1.119

3 years ago

0.1.120

3 years ago

0.1.118

3 years ago

0.1.117

3 years ago

0.1.116

3 years ago

0.1.115

3 years ago

0.1.114

3 years ago

0.1.113

3 years ago

0.1.112

3 years ago

0.1.111

3 years ago

0.1.110

4 years ago

0.1.109

4 years ago

0.1.108

4 years ago

0.1.107

4 years ago

0.1.106

4 years ago

0.1.105

4 years ago

0.1.104

4 years ago

0.1.103

4 years ago

0.1.102

4 years ago

0.1.99

4 years ago

0.1.101

4 years ago

0.1.100

4 years ago

0.1.97

4 years ago

0.1.98

4 years ago

0.1.96

4 years ago

0.1.95

4 years ago

0.1.92

4 years ago

0.1.93

4 years ago

0.1.94

4 years ago

0.1.91

4 years ago

0.1.90

4 years ago

0.1.88

4 years ago

0.1.89

4 years ago

0.1.87

4 years ago

0.1.86

4 years ago

0.1.84

4 years ago

0.1.81

4 years ago

0.1.79

4 years ago

0.1.78

4 years ago

0.1.77

4 years ago

0.1.76

4 years ago

0.1.75

4 years ago

0.1.74

4 years ago

0.1.73

4 years ago

0.1.71

4 years ago

0.1.72

4 years ago

0.1.70

4 years ago

0.1.68

4 years ago

0.1.69

4 years ago

0.1.67

4 years ago

0.1.66

4 years ago

0.1.65

4 years ago

0.1.64

4 years ago

0.1.63

4 years ago

0.1.62

4 years ago

0.1.61

4 years ago

0.1.60

4 years ago

0.1.58

4 years ago

0.1.59

4 years ago

0.1.56

4 years ago

0.1.57

4 years ago

0.1.55

4 years ago

0.1.52

4 years ago

0.1.53

4 years ago

0.1.54

4 years ago

0.1.51

4 years ago

0.1.49

4 years ago

0.1.46

4 years ago

0.1.47

4 years ago

0.1.48

4 years ago

0.1.45

4 years ago

0.1.44

4 years ago

0.1.43

4 years ago

0.1.42

4 years ago

0.1.41

4 years ago

0.1.40

4 years ago

0.1.39

4 years ago

0.1.38

4 years ago

0.1.37

4 years ago

0.1.36

4 years ago

0.1.30

4 years ago

0.1.31

4 years ago

0.1.32

4 years ago

0.1.33

4 years ago

0.1.34

4 years ago

0.1.29

4 years ago

0.1.27

4 years ago

0.1.28

4 years ago

0.1.26

4 years ago

0.1.25

4 years ago

0.1.23

4 years ago

0.1.22

4 years ago

0.1.21

4 years ago

0.1.20

4 years ago

0.1.18

4 years ago

0.1.19

4 years ago

0.1.16

4 years ago

0.1.15

4 years ago

0.1.14

4 years ago

0.1.13

4 years ago

0.1.11

4 years ago

0.1.12

4 years ago

0.1.10

4 years ago

0.1.9

4 years ago

0.1.8

4 years ago

0.1.7

4 years ago

0.1.6

4 years ago

0.1.5

4 years ago

0.1.4

4 years ago

0.1.0

4 years ago

0.1.2

4 years ago

0.1.3

4 years ago

0.0.10

4 years ago

0.0.9

4 years ago

0.0.8

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.5

4 years ago

0.0.4

4 years ago

0.0.1-beta.7

4 years ago

0.0.1-beta.6

4 years ago

0.0.1-beta.8

4 years ago

0.0.1-beta.5

4 years ago

0.0.1-beta.3

4 years ago

0.0.1-beta.2

4 years ago

0.0.1-beta.1

4 years ago

0.0.0-beta.9

4 years ago

0.0.0-beta.7

4 years ago

0.0.0-beta.6

4 years ago

0.0.0-beta.5

4 years ago