0.1.163 • Published 3 years ago

vuetify-schema-form v0.1.163

Weekly downloads
151
License
MIT
Repository
github
Last release
3 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

3 years ago

0.1.157

3 years ago

0.1.159

3 years ago

0.1.161

3 years ago

0.1.160

3 years ago

0.1.163

3 years ago

0.1.162

3 years ago

0.1.156

3 years ago

0.1.155

3 years ago

0.1.154

3 years ago

0.1.153

3 years ago

0.1.152

3 years ago

0.1.151

3 years ago

0.1.149

3 years ago

0.1.148

3 years ago

0.1.150

3 years ago

0.1.147

4 years ago

0.1.146

4 years ago

0.1.143

4 years ago

0.1.145

4 years ago

0.1.144

4 years ago

0.1.142

4 years ago

0.1.139

4 years ago

0.1.136

4 years ago

0.1.138

4 years ago

0.1.137

4 years ago

0.1.141

4 years ago

0.1.140

4 years ago

0.1.135

4 years ago

0.1.132

4 years ago

0.1.131

4 years ago

0.1.134

4 years ago

0.1.133

4 years ago

0.1.130

4 years ago

0.1.129

4 years ago

0.1.128

4 years ago

0.1.125

4 years ago

0.1.124

4 years ago

0.1.127

4 years ago

0.1.126

4 years ago

0.1.123

4 years ago

0.1.122

4 years ago

0.1.121

4 years ago

0.1.119

4 years ago

0.1.120

4 years ago

0.1.118

4 years ago

0.1.117

5 years ago

0.1.116

5 years ago

0.1.115

5 years ago

0.1.114

5 years ago

0.1.113

5 years ago

0.1.112

5 years ago

0.1.111

5 years ago

0.1.110

5 years ago

0.1.109

5 years ago

0.1.108

5 years ago

0.1.107

5 years ago

0.1.106

5 years ago

0.1.105

5 years ago

0.1.104

5 years ago

0.1.103

5 years ago

0.1.102

5 years ago

0.1.99

5 years ago

0.1.101

5 years ago

0.1.100

5 years ago

0.1.97

5 years ago

0.1.98

5 years ago

0.1.96

5 years ago

0.1.95

5 years ago

0.1.92

5 years ago

0.1.93

5 years ago

0.1.94

5 years ago

0.1.91

5 years ago

0.1.90

5 years ago

0.1.88

5 years ago

0.1.89

5 years ago

0.1.87

5 years ago

0.1.86

5 years ago

0.1.84

5 years ago

0.1.81

5 years ago

0.1.79

5 years ago

0.1.78

5 years ago

0.1.77

5 years ago

0.1.76

5 years ago

0.1.75

5 years ago

0.1.74

5 years ago

0.1.73

5 years ago

0.1.71

5 years ago

0.1.72

5 years ago

0.1.70

5 years ago

0.1.68

5 years ago

0.1.69

5 years ago

0.1.67

5 years ago

0.1.66

5 years ago

0.1.65

5 years ago

0.1.64

5 years ago

0.1.63

5 years ago

0.1.62

5 years ago

0.1.61

5 years ago

0.1.60

5 years ago

0.1.58

5 years ago

0.1.59

5 years ago

0.1.56

5 years ago

0.1.57

5 years ago

0.1.55

5 years ago

0.1.52

5 years ago

0.1.53

5 years ago

0.1.54

5 years ago

0.1.51

5 years ago

0.1.49

5 years ago

0.1.46

5 years ago

0.1.47

5 years ago

0.1.48

5 years ago

0.1.45

5 years ago

0.1.44

5 years ago

0.1.43

5 years ago

0.1.42

5 years ago

0.1.41

5 years ago

0.1.40

5 years ago

0.1.39

5 years ago

0.1.38

5 years ago

0.1.37

5 years ago

0.1.36

5 years ago

0.1.30

5 years ago

0.1.31

5 years ago

0.1.32

5 years ago

0.1.33

5 years ago

0.1.34

5 years ago

0.1.29

5 years ago

0.1.27

5 years ago

0.1.28

5 years ago

0.1.26

5 years ago

0.1.25

5 years ago

0.1.23

5 years ago

0.1.22

5 years ago

0.1.21

5 years ago

0.1.20

5 years ago

0.1.18

5 years ago

0.1.19

5 years ago

0.1.16

5 years ago

0.1.15

5 years ago

0.1.14

5 years ago

0.1.13

5 years ago

0.1.11

5 years ago

0.1.12

5 years ago

0.1.10

5 years ago

0.1.9

5 years ago

0.1.8

5 years ago

0.1.7

5 years ago

0.1.6

5 years ago

0.1.5

5 years ago

0.1.4

5 years ago

0.1.0

5 years ago

0.1.2

5 years ago

0.1.3

5 years ago

0.0.10

5 years ago

0.0.9

5 years ago

0.0.8

5 years ago

0.0.7

5 years ago

0.0.6

5 years ago

0.0.5

5 years ago

0.0.4

5 years ago

0.0.1-beta.7

5 years ago

0.0.1-beta.6

5 years ago

0.0.1-beta.8

5 years ago

0.0.1-beta.5

5 years ago

0.0.1-beta.3

5 years ago

0.0.1-beta.2

5 years ago

0.0.1-beta.1

5 years ago

0.0.0-beta.9

5 years ago

0.0.0-beta.7

5 years ago

0.0.0-beta.6

5 years ago

0.0.0-beta.5

5 years ago