forked from matfish2/vue-formular
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
136 lines (119 loc) · 4.05 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
String.prototype.ucfirst = require('./lib/helpers/ucfirst');
var merge = require('merge');
exports.install = function(Vue, globalOptions) {
var vfForm = {
template: require('./lib/templates/form.html'),
props: {
client:{
type:Boolean,
required:false,
default: false
},
ajax: {
type: Boolean,
required: false,
default: false
},
action: {
type: String
},
method: {
type: String,
required:false,
default: 'POST'
},
validation: {
type: Object,
required:false,
default: function() {
return {
}
}
},
triggers:{
type: Object,
required:false,
default: function() {
return {
}
}
},
options:{
type: Object,
required:false,
default: function() {
return {
}
}
}
},
created: function() {
globalOptions = globalOptions?globalOptions:{};
var defaultOptions = require('./lib/options/options')();
var options = merge.recursive(defaultOptions, globalOptions);
this.options = merge.recursive(options, this.options);
if (!this.ajax && !this.client) {
var payload = this.options.additionalPayload;
for (var key in payload) {
this.additionalValues.push({name:key,value:payload[key]});
}
}
this.registerInterfieldsRules();
this.registerTriggers();
},
data: function() {
return {
isForm: true,
fields:[],
additionalValues:[],
errors:[],
serverErrors:[],
relatedFields:{},
triggeredFields:{},
status:'danger',
statusbarMessage:'',
sending:false
}
},
computed: {
labelClass:require('./lib/computed/label-class'),
fieldClass:require('./lib/computed/field-class'),
hasErrors: require('./lib/computed/has-errors'),
pristine: function() {
return this.fields.length==0;
}
},
methods: {
submit:require('./lib/methods/submit'),
formData:require('./lib/methods/form-data'),
getField:require('./lib/methods/get-field'),
showAllErrors:require('./lib/methods/show-all-errors'),
reinitForm:require('./lib/methods/reinit-form'),
registerInterfieldsRules: require('./lib/methods/register-interfields-rules'),
registerTriggers: require('./lib/methods/register-triggers'),
childrenOf: require('./lib/methods/children-of')
}
}
Vue.component('vf-form',vfForm);
Vue.component('vf-text',require('./lib/components/fields/text')());
Vue.component('vf-email',require('./lib/components/fields/email')());
Vue.component('vf-number',require('./lib/components/fields/number')());
Vue.component('vf-password',require('./lib/components/fields/password')());
Vue.component('vf-file',require('./lib/components/fields/file')());
Vue.component('vf-textarea',require('./lib/components/fields/textarea')());
Vue.component('vf-select',require('./lib/components/fields/select')());
Vue.component('vf-buttons-list',require('./lib/components/fields/buttons-list')());
Vue.component('vf-date',require('./lib/components/fields/date')());
Vue.component('vf-checkbox',require('./lib/components/fields/checkbox')());
Vue.component('vf-status-bar', require('./lib/components/status-bar'));
Vue.component('vf-submit',require('./lib/components/submit'));
Vue.partial('input',require('./lib/templates/input.html'));
Vue.partial('buttons',require('./lib/templates/buttons-list.html'));
Vue.partial('checkbox',require('./lib/templates/checkbox.html'));
Vue.partial('date',require('./lib/templates/date.html'));
Vue.partial('file',require('./lib/templates/file.html'));
Vue.partial('select',require('./lib/templates/select.html'));
Vue.partial('textarea',require('./lib/templates/textarea.html'));
Vue.partial('date-span',require('./lib/templates/date-span.html'));
Vue.partial('date-input',require('./lib/templates/date-input.html'));
}