1 | function endsWith(string, suffix) {
|
2 | return string.indexOf(suffix, string.length - suffix.length) !== -1;
|
3 | }
|
4 |
|
5 |
|
6 | export default {
|
7 | name: 'vue-dotnet-validator-group',
|
8 | props: {
|
9 | onValid: {
|
10 | type: Function,
|
11 | default: null
|
12 | }
|
13 | },
|
14 | data() {
|
15 | return {
|
16 | validators: [],
|
17 | loading: false,
|
18 | isValidatorGroup: true,
|
19 | }
|
20 | },
|
21 | methods: {
|
22 | validate(event) {
|
23 | let valid = true;
|
24 | this.validators.forEach(validator => {
|
25 | validator.hasForced = true;
|
26 | if(!validator.isValid) {
|
27 | valid = false;
|
28 | event.preventDefault();
|
29 | validator.showValidationMessage(true);
|
30 | validator.blurField();
|
31 | }
|
32 | });
|
33 | if(valid && this.onValid instanceof Function) {
|
34 | event.preventDefault();
|
35 | return this.onValid(event);
|
36 | }
|
37 |
|
38 | this.loading = valid;
|
39 | return valid;
|
40 | },
|
41 | findValidatorsByName(name) {
|
42 |
|
43 | name = name.replace(/\*/g, '').replace(/\./g, '');
|
44 | return this.validators.filter(validator => endsWith(validator.name, name));
|
45 | },
|
46 | addValidator(validator) {
|
47 | this.validators.push(validator);
|
48 | },
|
49 | removeValidator(validator) {
|
50 | this.validators.splice(this.validators.indexOf(validator), 1);
|
51 | }
|
52 | }
|
53 | };
|