vee-validate 4.6.6 → 4.6.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/vee-validate.d.ts +4 -4
- package/dist/vee-validate.esm.js +179 -135
- package/dist/vee-validate.js +179 -135
- package/dist/vee-validate.min.js +2 -2
- package/package.json +2 -2
package/dist/vee-validate.d.ts
CHANGED
|
@@ -99,7 +99,7 @@ interface PrivateFieldContext<TValue = unknown> {
|
|
|
99
99
|
setValue(value: TValue): void;
|
|
100
100
|
}
|
|
101
101
|
declare type FieldContext<TValue = unknown> = Omit<PrivateFieldContext<TValue>, 'id' | 'instances'>;
|
|
102
|
-
declare type GenericValidateFunction = (value:
|
|
102
|
+
declare type GenericValidateFunction<TValue = unknown> = (value: TValue, ctx: FieldValidationMetaInfo) => boolean | string | Promise<boolean | string>;
|
|
103
103
|
interface FormState<TValues> {
|
|
104
104
|
values: TValues;
|
|
105
105
|
errors: Partial<Record<keyof TValues, string | undefined>>;
|
|
@@ -179,7 +179,7 @@ interface ValidationOptions {
|
|
|
179
179
|
/**
|
|
180
180
|
* Validates a value against the rules.
|
|
181
181
|
*/
|
|
182
|
-
declare function validate(value:
|
|
182
|
+
declare function validate<TValue = unknown>(value: TValue, rules: string | Record<string, unknown | unknown[]> | GenericValidateFunction<TValue> | GenericValidateFunction<TValue>[] | YupValidator, options?: ValidationOptions): Promise<ValidationResult>;
|
|
183
183
|
|
|
184
184
|
/**
|
|
185
185
|
* Adds a custom validator to the list of validation rules.
|
|
@@ -211,7 +211,7 @@ interface FieldOptions<TValue = unknown> {
|
|
|
211
211
|
modelPropName?: string;
|
|
212
212
|
syncVModel?: boolean;
|
|
213
213
|
}
|
|
214
|
-
declare type RuleExpression<TValue> = string | Record<string, unknown> | GenericValidateFunction | GenericValidateFunction[] | YupValidator<TValue> | undefined;
|
|
214
|
+
declare type RuleExpression<TValue> = string | Record<string, unknown> | GenericValidateFunction<TValue> | GenericValidateFunction<TValue>[] | YupValidator<TValue> | undefined;
|
|
215
215
|
/**
|
|
216
216
|
* Creates a field composite.
|
|
217
217
|
*/
|
|
@@ -1183,4 +1183,4 @@ declare const FormContextKey: InjectionKey<PrivateFormContext>;
|
|
|
1183
1183
|
declare const FieldContextKey: InjectionKey<PrivateFieldContext<unknown>>;
|
|
1184
1184
|
declare const IS_ABSENT: unique symbol;
|
|
1185
1185
|
|
|
1186
|
-
export { ErrorMessage, Field, FieldArray, FieldArrayContext, FieldContext, FieldContextKey, FieldEntry, FieldMeta, FieldOptions, Form, FormActions, FormContext, FormContextKey, FormMeta, FormOptions, FormState, FormValidationResult, GenericValidateFunction, IS_ABSENT, InvalidSubmissionContext, InvalidSubmissionHandler, SubmissionContext, SubmissionHandler, ValidationOptions$1 as ValidationOptions, ValidationResult, configure, defineRule, useField, useFieldArray, useFieldError, useFieldValue, useForm, useFormErrors, useFormValues, useIsFieldDirty, useIsFieldTouched, useIsFieldValid, useIsFormDirty, useIsFormTouched, useIsFormValid, useIsSubmitting, useResetForm, useSubmitCount, useSubmitForm, useValidateField, useValidateForm, validate };
|
|
1186
|
+
export { ErrorMessage, Field, FieldArray, FieldArrayContext, FieldContext, FieldContextKey, FieldEntry, FieldMeta, FieldOptions, Form, FormActions, FormContext, FormContextKey, FormMeta, FormOptions, FormState, FormValidationResult, GenericValidateFunction, IS_ABSENT, InvalidSubmissionContext, InvalidSubmissionHandler, RuleExpression, SubmissionContext, SubmissionHandler, ValidationOptions$1 as ValidationOptions, ValidationResult, configure, defineRule, useField, useFieldArray, useFieldError, useFieldValue, useForm, useFormErrors, useFormValues, useIsFieldDirty, useIsFieldTouched, useIsFieldValid, useIsFormDirty, useIsFormTouched, useIsFormValid, useIsSubmitting, useResetForm, useSubmitCount, useSubmitForm, useValidateField, useValidateForm, validate };
|
package/dist/vee-validate.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* vee-validate v4.6.
|
|
2
|
+
* vee-validate v4.6.8
|
|
3
3
|
* (c) 2022 Abdelrahman Awad
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
@@ -126,6 +126,96 @@ function isEvent(evt) {
|
|
|
126
126
|
}
|
|
127
127
|
function isPropPresent(obj, prop) {
|
|
128
128
|
return prop in obj && obj[prop] !== IS_ABSENT;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Compares if two values are the same borrowed from:
|
|
132
|
+
* https://github.com/epoberezkin/fast-deep-equal
|
|
133
|
+
* We added a case for file matching since `Object.keys` doesn't work with Files.
|
|
134
|
+
* */
|
|
135
|
+
function isEqual(a, b) {
|
|
136
|
+
if (a === b)
|
|
137
|
+
return true;
|
|
138
|
+
if (a && b && typeof a === 'object' && typeof b === 'object') {
|
|
139
|
+
if (a.constructor !== b.constructor)
|
|
140
|
+
return false;
|
|
141
|
+
// eslint-disable-next-line no-var
|
|
142
|
+
var length, i, keys;
|
|
143
|
+
if (Array.isArray(a)) {
|
|
144
|
+
length = a.length;
|
|
145
|
+
// eslint-disable-next-line eqeqeq
|
|
146
|
+
if (length != b.length)
|
|
147
|
+
return false;
|
|
148
|
+
for (i = length; i-- !== 0;)
|
|
149
|
+
if (!isEqual(a[i], b[i]))
|
|
150
|
+
return false;
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
if (a instanceof Map && b instanceof Map) {
|
|
154
|
+
if (a.size !== b.size)
|
|
155
|
+
return false;
|
|
156
|
+
for (i of a.entries())
|
|
157
|
+
if (!b.has(i[0]))
|
|
158
|
+
return false;
|
|
159
|
+
for (i of a.entries())
|
|
160
|
+
if (!isEqual(i[1], b.get(i[0])))
|
|
161
|
+
return false;
|
|
162
|
+
return true;
|
|
163
|
+
}
|
|
164
|
+
// We added this part for file comparison, arguably a little naive but should work for most cases.
|
|
165
|
+
// #3911
|
|
166
|
+
if (a instanceof File && b instanceof File) {
|
|
167
|
+
if (a.size !== b.size)
|
|
168
|
+
return false;
|
|
169
|
+
if (a.name !== b.name)
|
|
170
|
+
return false;
|
|
171
|
+
if (a.lastModified !== b.lastModified)
|
|
172
|
+
return false;
|
|
173
|
+
if (a.type !== b.type)
|
|
174
|
+
return false;
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
if (a instanceof Set && b instanceof Set) {
|
|
178
|
+
if (a.size !== b.size)
|
|
179
|
+
return false;
|
|
180
|
+
for (i of a.entries())
|
|
181
|
+
if (!b.has(i[0]))
|
|
182
|
+
return false;
|
|
183
|
+
return true;
|
|
184
|
+
}
|
|
185
|
+
if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {
|
|
186
|
+
length = a.length;
|
|
187
|
+
// eslint-disable-next-line eqeqeq
|
|
188
|
+
if (length != b.length)
|
|
189
|
+
return false;
|
|
190
|
+
for (i = length; i-- !== 0;)
|
|
191
|
+
if (a[i] !== b[i])
|
|
192
|
+
return false;
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
if (a.constructor === RegExp)
|
|
196
|
+
return a.source === b.source && a.flags === b.flags;
|
|
197
|
+
if (a.valueOf !== Object.prototype.valueOf)
|
|
198
|
+
return a.valueOf() === b.valueOf();
|
|
199
|
+
if (a.toString !== Object.prototype.toString)
|
|
200
|
+
return a.toString() === b.toString();
|
|
201
|
+
keys = Object.keys(a);
|
|
202
|
+
length = keys.length;
|
|
203
|
+
if (length !== Object.keys(b).length)
|
|
204
|
+
return false;
|
|
205
|
+
for (i = length; i-- !== 0;)
|
|
206
|
+
if (!Object.prototype.hasOwnProperty.call(b, keys[i]))
|
|
207
|
+
return false;
|
|
208
|
+
for (i = length; i-- !== 0;) {
|
|
209
|
+
// eslint-disable-next-line no-var
|
|
210
|
+
var key = keys[i];
|
|
211
|
+
if (!isEqual(a[key], b[key]))
|
|
212
|
+
return false;
|
|
213
|
+
}
|
|
214
|
+
return true;
|
|
215
|
+
}
|
|
216
|
+
// true if both NaN, false otherwise
|
|
217
|
+
// eslint-disable-next-line no-self-compare
|
|
218
|
+
return a !== a && b !== b;
|
|
129
219
|
}
|
|
130
220
|
|
|
131
221
|
// do not edit .js files directly - edit src/index.jst
|
|
@@ -344,6 +434,20 @@ function applyModelModifiers(value, modifiers) {
|
|
|
344
434
|
return toNumber(value);
|
|
345
435
|
}
|
|
346
436
|
return value;
|
|
437
|
+
}
|
|
438
|
+
function withLatest(fn, onDone) {
|
|
439
|
+
let latestRun;
|
|
440
|
+
return async function runLatest(...args) {
|
|
441
|
+
const pending = fn(...args);
|
|
442
|
+
latestRun = pending;
|
|
443
|
+
const result = await pending;
|
|
444
|
+
if (pending !== latestRun) {
|
|
445
|
+
return result;
|
|
446
|
+
}
|
|
447
|
+
latestRun = undefined;
|
|
448
|
+
onDone(result, args);
|
|
449
|
+
return result;
|
|
450
|
+
};
|
|
347
451
|
}
|
|
348
452
|
|
|
349
453
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -787,71 +891,6 @@ function klona(x) {
|
|
|
787
891
|
return tmp || x;
|
|
788
892
|
}
|
|
789
893
|
|
|
790
|
-
var es6 = function equal(a, b) {
|
|
791
|
-
if (a === b) return true;
|
|
792
|
-
|
|
793
|
-
if (a && b && typeof a == 'object' && typeof b == 'object') {
|
|
794
|
-
if (a.constructor !== b.constructor) return false;
|
|
795
|
-
|
|
796
|
-
var length, i, keys;
|
|
797
|
-
if (Array.isArray(a)) {
|
|
798
|
-
length = a.length;
|
|
799
|
-
if (length != b.length) return false;
|
|
800
|
-
for (i = length; i-- !== 0;)
|
|
801
|
-
if (!equal(a[i], b[i])) return false;
|
|
802
|
-
return true;
|
|
803
|
-
}
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
if ((a instanceof Map) && (b instanceof Map)) {
|
|
807
|
-
if (a.size !== b.size) return false;
|
|
808
|
-
for (i of a.entries())
|
|
809
|
-
if (!b.has(i[0])) return false;
|
|
810
|
-
for (i of a.entries())
|
|
811
|
-
if (!equal(i[1], b.get(i[0]))) return false;
|
|
812
|
-
return true;
|
|
813
|
-
}
|
|
814
|
-
|
|
815
|
-
if ((a instanceof Set) && (b instanceof Set)) {
|
|
816
|
-
if (a.size !== b.size) return false;
|
|
817
|
-
for (i of a.entries())
|
|
818
|
-
if (!b.has(i[0])) return false;
|
|
819
|
-
return true;
|
|
820
|
-
}
|
|
821
|
-
|
|
822
|
-
if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {
|
|
823
|
-
length = a.length;
|
|
824
|
-
if (length != b.length) return false;
|
|
825
|
-
for (i = length; i-- !== 0;)
|
|
826
|
-
if (a[i] !== b[i]) return false;
|
|
827
|
-
return true;
|
|
828
|
-
}
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
|
|
832
|
-
if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
|
|
833
|
-
if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();
|
|
834
|
-
|
|
835
|
-
keys = Object.keys(a);
|
|
836
|
-
length = keys.length;
|
|
837
|
-
if (length !== Object.keys(b).length) return false;
|
|
838
|
-
|
|
839
|
-
for (i = length; i-- !== 0;)
|
|
840
|
-
if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
|
|
841
|
-
|
|
842
|
-
for (i = length; i-- !== 0;) {
|
|
843
|
-
var key = keys[i];
|
|
844
|
-
|
|
845
|
-
if (!equal(a[key], b[key])) return false;
|
|
846
|
-
}
|
|
847
|
-
|
|
848
|
-
return true;
|
|
849
|
-
}
|
|
850
|
-
|
|
851
|
-
// true if both NaN, false otherwise
|
|
852
|
-
return a!==a && b!==b;
|
|
853
|
-
};
|
|
854
|
-
|
|
855
894
|
let ID_COUNTER = 0;
|
|
856
895
|
function useFieldState(path, init) {
|
|
857
896
|
const { value, initialValue, setInitialValue } = _useFieldValue(path, init.modelValue, !init.standalone);
|
|
@@ -945,7 +984,7 @@ function _useFieldMeta(currentValue, initialValue, errors) {
|
|
|
945
984
|
validated: !!unref(errors).length,
|
|
946
985
|
initialValue: computed(() => unref(initialValue)),
|
|
947
986
|
dirty: computed(() => {
|
|
948
|
-
return !
|
|
987
|
+
return !isEqual(unref(currentValue), unref(initialValue));
|
|
949
988
|
}),
|
|
950
989
|
});
|
|
951
990
|
watch(errors, value => {
|
|
@@ -1396,10 +1435,11 @@ function _useField(name, rules, opts) {
|
|
|
1396
1435
|
bails,
|
|
1397
1436
|
});
|
|
1398
1437
|
}
|
|
1399
|
-
|
|
1438
|
+
const validateWithStateMutation = withLatest(async () => {
|
|
1400
1439
|
meta.pending = true;
|
|
1401
1440
|
meta.validated = true;
|
|
1402
|
-
|
|
1441
|
+
return validateCurrentValue('validated-only');
|
|
1442
|
+
}, result => {
|
|
1403
1443
|
if (markedForRemoval) {
|
|
1404
1444
|
result.valid = true;
|
|
1405
1445
|
result.errors = [];
|
|
@@ -1407,23 +1447,21 @@ function _useField(name, rules, opts) {
|
|
|
1407
1447
|
setState({ errors: result.errors });
|
|
1408
1448
|
meta.pending = false;
|
|
1409
1449
|
return result;
|
|
1410
|
-
}
|
|
1411
|
-
|
|
1412
|
-
|
|
1450
|
+
});
|
|
1451
|
+
const validateValidStateOnly = withLatest(async () => {
|
|
1452
|
+
return validateCurrentValue('silent');
|
|
1453
|
+
}, result => {
|
|
1413
1454
|
if (markedForRemoval) {
|
|
1414
1455
|
result.valid = true;
|
|
1415
1456
|
}
|
|
1416
1457
|
meta.valid = result.valid;
|
|
1417
1458
|
return result;
|
|
1418
|
-
}
|
|
1459
|
+
});
|
|
1419
1460
|
function validate$1(opts) {
|
|
1420
|
-
if (
|
|
1421
|
-
return
|
|
1461
|
+
if ((opts === null || opts === void 0 ? void 0 : opts.mode) === 'silent') {
|
|
1462
|
+
return validateValidStateOnly();
|
|
1422
1463
|
}
|
|
1423
|
-
|
|
1424
|
-
return validateWithStateMutation();
|
|
1425
|
-
}
|
|
1426
|
-
return validateValidStateOnly();
|
|
1464
|
+
return validateWithStateMutation();
|
|
1427
1465
|
}
|
|
1428
1466
|
// Common input/change event handler
|
|
1429
1467
|
function handleChange(e, shouldValidate = true) {
|
|
@@ -1448,13 +1486,15 @@ function _useField(name, rules, opts) {
|
|
|
1448
1486
|
meta.touched = isTouched;
|
|
1449
1487
|
}
|
|
1450
1488
|
let unwatchValue;
|
|
1489
|
+
let lastWatchedValue = klona(value.value);
|
|
1451
1490
|
function watchValue() {
|
|
1452
1491
|
unwatchValue = watch(value, (val, oldVal) => {
|
|
1453
|
-
if (
|
|
1492
|
+
if (isEqual(val, oldVal) && isEqual(val, lastWatchedValue)) {
|
|
1454
1493
|
return;
|
|
1455
1494
|
}
|
|
1456
1495
|
const validateFn = validateOnValueUpdate ? validateWithStateMutation : validateValidStateOnly;
|
|
1457
1496
|
validateFn();
|
|
1497
|
+
lastWatchedValue = klona(val);
|
|
1458
1498
|
}, {
|
|
1459
1499
|
deep: true,
|
|
1460
1500
|
});
|
|
@@ -1510,7 +1550,7 @@ function _useField(name, rules, opts) {
|
|
|
1510
1550
|
provide(FieldContextKey, field);
|
|
1511
1551
|
if (isRef(rules) && typeof unref(rules) !== 'function') {
|
|
1512
1552
|
watch(rules, (value, oldValue) => {
|
|
1513
|
-
if (
|
|
1553
|
+
if (isEqual(value, oldValue)) {
|
|
1514
1554
|
return;
|
|
1515
1555
|
}
|
|
1516
1556
|
meta.validated ? validateWithStateMutation() : validateValidStateOnly();
|
|
@@ -1564,7 +1604,7 @@ function _useField(name, rules, opts) {
|
|
|
1564
1604
|
if (!Object.keys(deps).length) {
|
|
1565
1605
|
return;
|
|
1566
1606
|
}
|
|
1567
|
-
const shouldValidate = !
|
|
1607
|
+
const shouldValidate = !isEqual(deps, oldDeps);
|
|
1568
1608
|
if (shouldValidate) {
|
|
1569
1609
|
meta.validated ? validateWithStateMutation() : validateValidStateOnly();
|
|
1570
1610
|
}
|
|
@@ -1615,12 +1655,15 @@ function useCheckboxField(name, rules, opts) {
|
|
|
1615
1655
|
const currentValue = unref(field.value);
|
|
1616
1656
|
const checkedVal = unref(checkedValue);
|
|
1617
1657
|
return Array.isArray(currentValue)
|
|
1618
|
-
? currentValue.findIndex(v =>
|
|
1619
|
-
:
|
|
1658
|
+
? currentValue.findIndex(v => isEqual(v, checkedVal)) >= 0
|
|
1659
|
+
: isEqual(checkedVal, currentValue);
|
|
1620
1660
|
});
|
|
1621
1661
|
function handleCheckboxChange(e, shouldValidate = true) {
|
|
1622
1662
|
var _a;
|
|
1623
1663
|
if (checked.value === ((_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.checked)) {
|
|
1664
|
+
if (shouldValidate) {
|
|
1665
|
+
field.validate();
|
|
1666
|
+
}
|
|
1624
1667
|
return;
|
|
1625
1668
|
}
|
|
1626
1669
|
let newValue = normalizeEventValue(e);
|
|
@@ -1652,7 +1695,7 @@ function useVModel({ prop, value, handleChange }) {
|
|
|
1652
1695
|
return;
|
|
1653
1696
|
}
|
|
1654
1697
|
watch(value, newValue => {
|
|
1655
|
-
if (
|
|
1698
|
+
if (isEqual(newValue, getCurrentModelValue(vm, propName))) {
|
|
1656
1699
|
return;
|
|
1657
1700
|
}
|
|
1658
1701
|
vm.emit(emitName, newValue);
|
|
@@ -1662,7 +1705,7 @@ function useVModel({ prop, value, handleChange }) {
|
|
|
1662
1705
|
return;
|
|
1663
1706
|
}
|
|
1664
1707
|
const newValue = propValue === IS_ABSENT ? undefined : propValue;
|
|
1665
|
-
if (
|
|
1708
|
+
if (isEqual(newValue, applyModelModifiers(value.value, vm.props.modelModifiers))) {
|
|
1666
1709
|
return;
|
|
1667
1710
|
}
|
|
1668
1711
|
handleChange(newValue);
|
|
@@ -1923,6 +1966,54 @@ function useForm(opts) {
|
|
|
1923
1966
|
// form meta aggregations
|
|
1924
1967
|
const meta = useFormMeta(fieldsByPath, formValues, originalInitialValues, errors);
|
|
1925
1968
|
const schema = opts === null || opts === void 0 ? void 0 : opts.validationSchema;
|
|
1969
|
+
/**
|
|
1970
|
+
* Batches validation runs in 5ms batches
|
|
1971
|
+
* Must have two distinct batch queues to make sure they don't override each other settings #3783
|
|
1972
|
+
*/
|
|
1973
|
+
const debouncedSilentValidation = debounceAsync(_validateSchema, 5);
|
|
1974
|
+
const debouncedValidation = debounceAsync(_validateSchema, 5);
|
|
1975
|
+
const validateSchema = withLatest(async (mode) => {
|
|
1976
|
+
return (await mode) === 'silent' ? debouncedSilentValidation() : debouncedValidation();
|
|
1977
|
+
}, (formResult, [mode]) => {
|
|
1978
|
+
// fields by id lookup
|
|
1979
|
+
const fieldsById = formCtx.fieldsByPath.value || {};
|
|
1980
|
+
// errors fields names, we need it to also check if custom errors are updated
|
|
1981
|
+
const currentErrorsPaths = keysOf(formCtx.errorBag.value);
|
|
1982
|
+
// collect all the keys from the schema and all fields
|
|
1983
|
+
// this ensures we have a complete keymap of all the fields
|
|
1984
|
+
const paths = [
|
|
1985
|
+
...new Set([...keysOf(formResult.results), ...keysOf(fieldsById), ...currentErrorsPaths]),
|
|
1986
|
+
];
|
|
1987
|
+
// aggregates the paths into a single result object while applying the results on the fields
|
|
1988
|
+
return paths.reduce((validation, path) => {
|
|
1989
|
+
const field = fieldsById[path];
|
|
1990
|
+
const messages = (formResult.results[path] || { errors: [] }).errors;
|
|
1991
|
+
const fieldResult = {
|
|
1992
|
+
errors: messages,
|
|
1993
|
+
valid: !messages.length,
|
|
1994
|
+
};
|
|
1995
|
+
validation.results[path] = fieldResult;
|
|
1996
|
+
if (!fieldResult.valid) {
|
|
1997
|
+
validation.errors[path] = fieldResult.errors[0];
|
|
1998
|
+
}
|
|
1999
|
+
// field not rendered
|
|
2000
|
+
if (!field) {
|
|
2001
|
+
setFieldError(path, messages);
|
|
2002
|
+
return validation;
|
|
2003
|
+
}
|
|
2004
|
+
// always update the valid flag regardless of the mode
|
|
2005
|
+
applyFieldMutation(field, f => (f.meta.valid = fieldResult.valid));
|
|
2006
|
+
if (mode === 'silent') {
|
|
2007
|
+
return validation;
|
|
2008
|
+
}
|
|
2009
|
+
const wasValidated = Array.isArray(field) ? field.some(f => f.meta.validated) : field.meta.validated;
|
|
2010
|
+
if (mode === 'validated-only' && !wasValidated) {
|
|
2011
|
+
return validation;
|
|
2012
|
+
}
|
|
2013
|
+
applyFieldMutation(field, f => f.setState({ errors: fieldResult.errors }));
|
|
2014
|
+
return validation;
|
|
2015
|
+
}, { valid: formResult.valid, results: {}, errors: {} });
|
|
2016
|
+
});
|
|
1926
2017
|
const formCtx = {
|
|
1927
2018
|
formId,
|
|
1928
2019
|
fieldsByPath,
|
|
@@ -2178,7 +2269,7 @@ function useForm(opts) {
|
|
|
2178
2269
|
// if it does belong to it that means the group still exists
|
|
2179
2270
|
// #3844
|
|
2180
2271
|
if (isSameGroup && Array.isArray(currentGroupValue) && !shouldKeepValue) {
|
|
2181
|
-
const valueIdx = currentGroupValue.findIndex(i =>
|
|
2272
|
+
const valueIdx = currentGroupValue.findIndex(i => isEqual(i, unref(field.checkedValue)));
|
|
2182
2273
|
if (valueIdx > -1) {
|
|
2183
2274
|
const newVal = [...currentGroupValue];
|
|
2184
2275
|
newVal.splice(valueIdx, 1);
|
|
@@ -2324,53 +2415,6 @@ function useForm(opts) {
|
|
|
2324
2415
|
});
|
|
2325
2416
|
return formResult;
|
|
2326
2417
|
}
|
|
2327
|
-
/**
|
|
2328
|
-
* Batches validation runs in 5ms batches
|
|
2329
|
-
* Must have two distinct batch queues to make sure they don't override each other settings #3783
|
|
2330
|
-
*/
|
|
2331
|
-
const debouncedSilentValidation = debounceAsync(_validateSchema, 5);
|
|
2332
|
-
const debouncedValidation = debounceAsync(_validateSchema, 5);
|
|
2333
|
-
async function validateSchema(mode) {
|
|
2334
|
-
const formResult = await (mode === 'silent' ? debouncedSilentValidation() : debouncedValidation());
|
|
2335
|
-
// fields by id lookup
|
|
2336
|
-
const fieldsById = formCtx.fieldsByPath.value || {};
|
|
2337
|
-
// errors fields names, we need it to also check if custom errors are updated
|
|
2338
|
-
const currentErrorsPaths = keysOf(formCtx.errorBag.value);
|
|
2339
|
-
// collect all the keys from the schema and all fields
|
|
2340
|
-
// this ensures we have a complete keymap of all the fields
|
|
2341
|
-
const paths = [
|
|
2342
|
-
...new Set([...keysOf(formResult.results), ...keysOf(fieldsById), ...currentErrorsPaths]),
|
|
2343
|
-
];
|
|
2344
|
-
// aggregates the paths into a single result object while applying the results on the fields
|
|
2345
|
-
return paths.reduce((validation, path) => {
|
|
2346
|
-
const field = fieldsById[path];
|
|
2347
|
-
const messages = (formResult.results[path] || { errors: [] }).errors;
|
|
2348
|
-
const fieldResult = {
|
|
2349
|
-
errors: messages,
|
|
2350
|
-
valid: !messages.length,
|
|
2351
|
-
};
|
|
2352
|
-
validation.results[path] = fieldResult;
|
|
2353
|
-
if (!fieldResult.valid) {
|
|
2354
|
-
validation.errors[path] = fieldResult.errors[0];
|
|
2355
|
-
}
|
|
2356
|
-
// field not rendered
|
|
2357
|
-
if (!field) {
|
|
2358
|
-
setFieldError(path, messages);
|
|
2359
|
-
return validation;
|
|
2360
|
-
}
|
|
2361
|
-
// always update the valid flag regardless of the mode
|
|
2362
|
-
applyFieldMutation(field, f => (f.meta.valid = fieldResult.valid));
|
|
2363
|
-
if (mode === 'silent') {
|
|
2364
|
-
return validation;
|
|
2365
|
-
}
|
|
2366
|
-
const wasValidated = Array.isArray(field) ? field.some(f => f.meta.validated) : field.meta.validated;
|
|
2367
|
-
if (mode === 'validated-only' && !wasValidated) {
|
|
2368
|
-
return validation;
|
|
2369
|
-
}
|
|
2370
|
-
applyFieldMutation(field, f => f.setState({ errors: fieldResult.errors }));
|
|
2371
|
-
return validation;
|
|
2372
|
-
}, { valid: formResult.valid, results: {}, errors: {} });
|
|
2373
|
-
}
|
|
2374
2418
|
const submitForm = handleSubmit((_, { evt }) => {
|
|
2375
2419
|
if (isFormSubmitEvent(evt)) {
|
|
2376
2420
|
evt.target.submit();
|
|
@@ -2440,7 +2484,7 @@ function useFormMeta(fieldsByPath, currentValues, initialValues, errors) {
|
|
|
2440
2484
|
valid: 'every',
|
|
2441
2485
|
};
|
|
2442
2486
|
const isDirty = computed(() => {
|
|
2443
|
-
return !
|
|
2487
|
+
return !isEqual(currentValues, unref(initialValues));
|
|
2444
2488
|
});
|
|
2445
2489
|
function calculateFlags() {
|
|
2446
2490
|
const fields = Object.values(fieldsByPath.value).flat(1).filter(Boolean);
|
package/dist/vee-validate.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* vee-validate v4.6.
|
|
2
|
+
* vee-validate v4.6.8
|
|
3
3
|
* (c) 2022 Abdelrahman Awad
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
@@ -129,6 +129,96 @@
|
|
|
129
129
|
}
|
|
130
130
|
function isPropPresent(obj, prop) {
|
|
131
131
|
return prop in obj && obj[prop] !== IS_ABSENT;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Compares if two values are the same borrowed from:
|
|
135
|
+
* https://github.com/epoberezkin/fast-deep-equal
|
|
136
|
+
* We added a case for file matching since `Object.keys` doesn't work with Files.
|
|
137
|
+
* */
|
|
138
|
+
function isEqual(a, b) {
|
|
139
|
+
if (a === b)
|
|
140
|
+
return true;
|
|
141
|
+
if (a && b && typeof a === 'object' && typeof b === 'object') {
|
|
142
|
+
if (a.constructor !== b.constructor)
|
|
143
|
+
return false;
|
|
144
|
+
// eslint-disable-next-line no-var
|
|
145
|
+
var length, i, keys;
|
|
146
|
+
if (Array.isArray(a)) {
|
|
147
|
+
length = a.length;
|
|
148
|
+
// eslint-disable-next-line eqeqeq
|
|
149
|
+
if (length != b.length)
|
|
150
|
+
return false;
|
|
151
|
+
for (i = length; i-- !== 0;)
|
|
152
|
+
if (!isEqual(a[i], b[i]))
|
|
153
|
+
return false;
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
if (a instanceof Map && b instanceof Map) {
|
|
157
|
+
if (a.size !== b.size)
|
|
158
|
+
return false;
|
|
159
|
+
for (i of a.entries())
|
|
160
|
+
if (!b.has(i[0]))
|
|
161
|
+
return false;
|
|
162
|
+
for (i of a.entries())
|
|
163
|
+
if (!isEqual(i[1], b.get(i[0])))
|
|
164
|
+
return false;
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
// We added this part for file comparison, arguably a little naive but should work for most cases.
|
|
168
|
+
// #3911
|
|
169
|
+
if (a instanceof File && b instanceof File) {
|
|
170
|
+
if (a.size !== b.size)
|
|
171
|
+
return false;
|
|
172
|
+
if (a.name !== b.name)
|
|
173
|
+
return false;
|
|
174
|
+
if (a.lastModified !== b.lastModified)
|
|
175
|
+
return false;
|
|
176
|
+
if (a.type !== b.type)
|
|
177
|
+
return false;
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
if (a instanceof Set && b instanceof Set) {
|
|
181
|
+
if (a.size !== b.size)
|
|
182
|
+
return false;
|
|
183
|
+
for (i of a.entries())
|
|
184
|
+
if (!b.has(i[0]))
|
|
185
|
+
return false;
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {
|
|
189
|
+
length = a.length;
|
|
190
|
+
// eslint-disable-next-line eqeqeq
|
|
191
|
+
if (length != b.length)
|
|
192
|
+
return false;
|
|
193
|
+
for (i = length; i-- !== 0;)
|
|
194
|
+
if (a[i] !== b[i])
|
|
195
|
+
return false;
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
if (a.constructor === RegExp)
|
|
199
|
+
return a.source === b.source && a.flags === b.flags;
|
|
200
|
+
if (a.valueOf !== Object.prototype.valueOf)
|
|
201
|
+
return a.valueOf() === b.valueOf();
|
|
202
|
+
if (a.toString !== Object.prototype.toString)
|
|
203
|
+
return a.toString() === b.toString();
|
|
204
|
+
keys = Object.keys(a);
|
|
205
|
+
length = keys.length;
|
|
206
|
+
if (length !== Object.keys(b).length)
|
|
207
|
+
return false;
|
|
208
|
+
for (i = length; i-- !== 0;)
|
|
209
|
+
if (!Object.prototype.hasOwnProperty.call(b, keys[i]))
|
|
210
|
+
return false;
|
|
211
|
+
for (i = length; i-- !== 0;) {
|
|
212
|
+
// eslint-disable-next-line no-var
|
|
213
|
+
var key = keys[i];
|
|
214
|
+
if (!isEqual(a[key], b[key]))
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
return true;
|
|
218
|
+
}
|
|
219
|
+
// true if both NaN, false otherwise
|
|
220
|
+
// eslint-disable-next-line no-self-compare
|
|
221
|
+
return a !== a && b !== b;
|
|
132
222
|
}
|
|
133
223
|
|
|
134
224
|
// do not edit .js files directly - edit src/index.jst
|
|
@@ -329,6 +419,20 @@
|
|
|
329
419
|
return toNumber(value);
|
|
330
420
|
}
|
|
331
421
|
return value;
|
|
422
|
+
}
|
|
423
|
+
function withLatest(fn, onDone) {
|
|
424
|
+
let latestRun;
|
|
425
|
+
return async function runLatest(...args) {
|
|
426
|
+
const pending = fn(...args);
|
|
427
|
+
latestRun = pending;
|
|
428
|
+
const result = await pending;
|
|
429
|
+
if (pending !== latestRun) {
|
|
430
|
+
return result;
|
|
431
|
+
}
|
|
432
|
+
latestRun = undefined;
|
|
433
|
+
onDone(result, args);
|
|
434
|
+
return result;
|
|
435
|
+
};
|
|
332
436
|
}
|
|
333
437
|
|
|
334
438
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -772,71 +876,6 @@
|
|
|
772
876
|
return tmp || x;
|
|
773
877
|
}
|
|
774
878
|
|
|
775
|
-
var es6 = function equal(a, b) {
|
|
776
|
-
if (a === b) return true;
|
|
777
|
-
|
|
778
|
-
if (a && b && typeof a == 'object' && typeof b == 'object') {
|
|
779
|
-
if (a.constructor !== b.constructor) return false;
|
|
780
|
-
|
|
781
|
-
var length, i, keys;
|
|
782
|
-
if (Array.isArray(a)) {
|
|
783
|
-
length = a.length;
|
|
784
|
-
if (length != b.length) return false;
|
|
785
|
-
for (i = length; i-- !== 0;)
|
|
786
|
-
if (!equal(a[i], b[i])) return false;
|
|
787
|
-
return true;
|
|
788
|
-
}
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
if ((a instanceof Map) && (b instanceof Map)) {
|
|
792
|
-
if (a.size !== b.size) return false;
|
|
793
|
-
for (i of a.entries())
|
|
794
|
-
if (!b.has(i[0])) return false;
|
|
795
|
-
for (i of a.entries())
|
|
796
|
-
if (!equal(i[1], b.get(i[0]))) return false;
|
|
797
|
-
return true;
|
|
798
|
-
}
|
|
799
|
-
|
|
800
|
-
if ((a instanceof Set) && (b instanceof Set)) {
|
|
801
|
-
if (a.size !== b.size) return false;
|
|
802
|
-
for (i of a.entries())
|
|
803
|
-
if (!b.has(i[0])) return false;
|
|
804
|
-
return true;
|
|
805
|
-
}
|
|
806
|
-
|
|
807
|
-
if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {
|
|
808
|
-
length = a.length;
|
|
809
|
-
if (length != b.length) return false;
|
|
810
|
-
for (i = length; i-- !== 0;)
|
|
811
|
-
if (a[i] !== b[i]) return false;
|
|
812
|
-
return true;
|
|
813
|
-
}
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
|
|
817
|
-
if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
|
|
818
|
-
if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();
|
|
819
|
-
|
|
820
|
-
keys = Object.keys(a);
|
|
821
|
-
length = keys.length;
|
|
822
|
-
if (length !== Object.keys(b).length) return false;
|
|
823
|
-
|
|
824
|
-
for (i = length; i-- !== 0;)
|
|
825
|
-
if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
|
|
826
|
-
|
|
827
|
-
for (i = length; i-- !== 0;) {
|
|
828
|
-
var key = keys[i];
|
|
829
|
-
|
|
830
|
-
if (!equal(a[key], b[key])) return false;
|
|
831
|
-
}
|
|
832
|
-
|
|
833
|
-
return true;
|
|
834
|
-
}
|
|
835
|
-
|
|
836
|
-
// true if both NaN, false otherwise
|
|
837
|
-
return a!==a && b!==b;
|
|
838
|
-
};
|
|
839
|
-
|
|
840
879
|
let ID_COUNTER = 0;
|
|
841
880
|
function useFieldState(path, init) {
|
|
842
881
|
const { value, initialValue, setInitialValue } = _useFieldValue(path, init.modelValue, !init.standalone);
|
|
@@ -930,7 +969,7 @@
|
|
|
930
969
|
validated: !!vue.unref(errors).length,
|
|
931
970
|
initialValue: vue.computed(() => vue.unref(initialValue)),
|
|
932
971
|
dirty: vue.computed(() => {
|
|
933
|
-
return !
|
|
972
|
+
return !isEqual(vue.unref(currentValue), vue.unref(initialValue));
|
|
934
973
|
}),
|
|
935
974
|
});
|
|
936
975
|
vue.watch(errors, value => {
|
|
@@ -1021,10 +1060,11 @@
|
|
|
1021
1060
|
bails,
|
|
1022
1061
|
});
|
|
1023
1062
|
}
|
|
1024
|
-
|
|
1063
|
+
const validateWithStateMutation = withLatest(async () => {
|
|
1025
1064
|
meta.pending = true;
|
|
1026
1065
|
meta.validated = true;
|
|
1027
|
-
|
|
1066
|
+
return validateCurrentValue('validated-only');
|
|
1067
|
+
}, result => {
|
|
1028
1068
|
if (markedForRemoval) {
|
|
1029
1069
|
result.valid = true;
|
|
1030
1070
|
result.errors = [];
|
|
@@ -1032,23 +1072,21 @@
|
|
|
1032
1072
|
setState({ errors: result.errors });
|
|
1033
1073
|
meta.pending = false;
|
|
1034
1074
|
return result;
|
|
1035
|
-
}
|
|
1036
|
-
|
|
1037
|
-
|
|
1075
|
+
});
|
|
1076
|
+
const validateValidStateOnly = withLatest(async () => {
|
|
1077
|
+
return validateCurrentValue('silent');
|
|
1078
|
+
}, result => {
|
|
1038
1079
|
if (markedForRemoval) {
|
|
1039
1080
|
result.valid = true;
|
|
1040
1081
|
}
|
|
1041
1082
|
meta.valid = result.valid;
|
|
1042
1083
|
return result;
|
|
1043
|
-
}
|
|
1084
|
+
});
|
|
1044
1085
|
function validate$1(opts) {
|
|
1045
|
-
if (
|
|
1046
|
-
return
|
|
1086
|
+
if ((opts === null || opts === void 0 ? void 0 : opts.mode) === 'silent') {
|
|
1087
|
+
return validateValidStateOnly();
|
|
1047
1088
|
}
|
|
1048
|
-
|
|
1049
|
-
return validateWithStateMutation();
|
|
1050
|
-
}
|
|
1051
|
-
return validateValidStateOnly();
|
|
1089
|
+
return validateWithStateMutation();
|
|
1052
1090
|
}
|
|
1053
1091
|
// Common input/change event handler
|
|
1054
1092
|
function handleChange(e, shouldValidate = true) {
|
|
@@ -1073,13 +1111,15 @@
|
|
|
1073
1111
|
meta.touched = isTouched;
|
|
1074
1112
|
}
|
|
1075
1113
|
let unwatchValue;
|
|
1114
|
+
let lastWatchedValue = klona(value.value);
|
|
1076
1115
|
function watchValue() {
|
|
1077
1116
|
unwatchValue = vue.watch(value, (val, oldVal) => {
|
|
1078
|
-
if (
|
|
1117
|
+
if (isEqual(val, oldVal) && isEqual(val, lastWatchedValue)) {
|
|
1079
1118
|
return;
|
|
1080
1119
|
}
|
|
1081
1120
|
const validateFn = validateOnValueUpdate ? validateWithStateMutation : validateValidStateOnly;
|
|
1082
1121
|
validateFn();
|
|
1122
|
+
lastWatchedValue = klona(val);
|
|
1083
1123
|
}, {
|
|
1084
1124
|
deep: true,
|
|
1085
1125
|
});
|
|
@@ -1135,7 +1175,7 @@
|
|
|
1135
1175
|
vue.provide(FieldContextKey, field);
|
|
1136
1176
|
if (vue.isRef(rules) && typeof vue.unref(rules) !== 'function') {
|
|
1137
1177
|
vue.watch(rules, (value, oldValue) => {
|
|
1138
|
-
if (
|
|
1178
|
+
if (isEqual(value, oldValue)) {
|
|
1139
1179
|
return;
|
|
1140
1180
|
}
|
|
1141
1181
|
meta.validated ? validateWithStateMutation() : validateValidStateOnly();
|
|
@@ -1180,7 +1220,7 @@
|
|
|
1180
1220
|
if (!Object.keys(deps).length) {
|
|
1181
1221
|
return;
|
|
1182
1222
|
}
|
|
1183
|
-
const shouldValidate = !
|
|
1223
|
+
const shouldValidate = !isEqual(deps, oldDeps);
|
|
1184
1224
|
if (shouldValidate) {
|
|
1185
1225
|
meta.validated ? validateWithStateMutation() : validateValidStateOnly();
|
|
1186
1226
|
}
|
|
@@ -1231,12 +1271,15 @@
|
|
|
1231
1271
|
const currentValue = vue.unref(field.value);
|
|
1232
1272
|
const checkedVal = vue.unref(checkedValue);
|
|
1233
1273
|
return Array.isArray(currentValue)
|
|
1234
|
-
? currentValue.findIndex(v =>
|
|
1235
|
-
:
|
|
1274
|
+
? currentValue.findIndex(v => isEqual(v, checkedVal)) >= 0
|
|
1275
|
+
: isEqual(checkedVal, currentValue);
|
|
1236
1276
|
});
|
|
1237
1277
|
function handleCheckboxChange(e, shouldValidate = true) {
|
|
1238
1278
|
var _a;
|
|
1239
1279
|
if (checked.value === ((_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.checked)) {
|
|
1280
|
+
if (shouldValidate) {
|
|
1281
|
+
field.validate();
|
|
1282
|
+
}
|
|
1240
1283
|
return;
|
|
1241
1284
|
}
|
|
1242
1285
|
let newValue = normalizeEventValue(e);
|
|
@@ -1265,7 +1308,7 @@
|
|
|
1265
1308
|
return;
|
|
1266
1309
|
}
|
|
1267
1310
|
vue.watch(value, newValue => {
|
|
1268
|
-
if (
|
|
1311
|
+
if (isEqual(newValue, getCurrentModelValue(vm, propName))) {
|
|
1269
1312
|
return;
|
|
1270
1313
|
}
|
|
1271
1314
|
vm.emit(emitName, newValue);
|
|
@@ -1275,7 +1318,7 @@
|
|
|
1275
1318
|
return;
|
|
1276
1319
|
}
|
|
1277
1320
|
const newValue = propValue === IS_ABSENT ? undefined : propValue;
|
|
1278
|
-
if (
|
|
1321
|
+
if (isEqual(newValue, applyModelModifiers(value.value, vm.props.modelModifiers))) {
|
|
1279
1322
|
return;
|
|
1280
1323
|
}
|
|
1281
1324
|
handleChange(newValue);
|
|
@@ -1536,6 +1579,54 @@
|
|
|
1536
1579
|
// form meta aggregations
|
|
1537
1580
|
const meta = useFormMeta(fieldsByPath, formValues, originalInitialValues, errors);
|
|
1538
1581
|
const schema = opts === null || opts === void 0 ? void 0 : opts.validationSchema;
|
|
1582
|
+
/**
|
|
1583
|
+
* Batches validation runs in 5ms batches
|
|
1584
|
+
* Must have two distinct batch queues to make sure they don't override each other settings #3783
|
|
1585
|
+
*/
|
|
1586
|
+
const debouncedSilentValidation = debounceAsync(_validateSchema, 5);
|
|
1587
|
+
const debouncedValidation = debounceAsync(_validateSchema, 5);
|
|
1588
|
+
const validateSchema = withLatest(async (mode) => {
|
|
1589
|
+
return (await mode) === 'silent' ? debouncedSilentValidation() : debouncedValidation();
|
|
1590
|
+
}, (formResult, [mode]) => {
|
|
1591
|
+
// fields by id lookup
|
|
1592
|
+
const fieldsById = formCtx.fieldsByPath.value || {};
|
|
1593
|
+
// errors fields names, we need it to also check if custom errors are updated
|
|
1594
|
+
const currentErrorsPaths = keysOf(formCtx.errorBag.value);
|
|
1595
|
+
// collect all the keys from the schema and all fields
|
|
1596
|
+
// this ensures we have a complete keymap of all the fields
|
|
1597
|
+
const paths = [
|
|
1598
|
+
...new Set([...keysOf(formResult.results), ...keysOf(fieldsById), ...currentErrorsPaths]),
|
|
1599
|
+
];
|
|
1600
|
+
// aggregates the paths into a single result object while applying the results on the fields
|
|
1601
|
+
return paths.reduce((validation, path) => {
|
|
1602
|
+
const field = fieldsById[path];
|
|
1603
|
+
const messages = (formResult.results[path] || { errors: [] }).errors;
|
|
1604
|
+
const fieldResult = {
|
|
1605
|
+
errors: messages,
|
|
1606
|
+
valid: !messages.length,
|
|
1607
|
+
};
|
|
1608
|
+
validation.results[path] = fieldResult;
|
|
1609
|
+
if (!fieldResult.valid) {
|
|
1610
|
+
validation.errors[path] = fieldResult.errors[0];
|
|
1611
|
+
}
|
|
1612
|
+
// field not rendered
|
|
1613
|
+
if (!field) {
|
|
1614
|
+
setFieldError(path, messages);
|
|
1615
|
+
return validation;
|
|
1616
|
+
}
|
|
1617
|
+
// always update the valid flag regardless of the mode
|
|
1618
|
+
applyFieldMutation(field, f => (f.meta.valid = fieldResult.valid));
|
|
1619
|
+
if (mode === 'silent') {
|
|
1620
|
+
return validation;
|
|
1621
|
+
}
|
|
1622
|
+
const wasValidated = Array.isArray(field) ? field.some(f => f.meta.validated) : field.meta.validated;
|
|
1623
|
+
if (mode === 'validated-only' && !wasValidated) {
|
|
1624
|
+
return validation;
|
|
1625
|
+
}
|
|
1626
|
+
applyFieldMutation(field, f => f.setState({ errors: fieldResult.errors }));
|
|
1627
|
+
return validation;
|
|
1628
|
+
}, { valid: formResult.valid, results: {}, errors: {} });
|
|
1629
|
+
});
|
|
1539
1630
|
const formCtx = {
|
|
1540
1631
|
formId,
|
|
1541
1632
|
fieldsByPath,
|
|
@@ -1791,7 +1882,7 @@
|
|
|
1791
1882
|
// if it does belong to it that means the group still exists
|
|
1792
1883
|
// #3844
|
|
1793
1884
|
if (isSameGroup && Array.isArray(currentGroupValue) && !shouldKeepValue) {
|
|
1794
|
-
const valueIdx = currentGroupValue.findIndex(i =>
|
|
1885
|
+
const valueIdx = currentGroupValue.findIndex(i => isEqual(i, vue.unref(field.checkedValue)));
|
|
1795
1886
|
if (valueIdx > -1) {
|
|
1796
1887
|
const newVal = [...currentGroupValue];
|
|
1797
1888
|
newVal.splice(valueIdx, 1);
|
|
@@ -1937,53 +2028,6 @@
|
|
|
1937
2028
|
});
|
|
1938
2029
|
return formResult;
|
|
1939
2030
|
}
|
|
1940
|
-
/**
|
|
1941
|
-
* Batches validation runs in 5ms batches
|
|
1942
|
-
* Must have two distinct batch queues to make sure they don't override each other settings #3783
|
|
1943
|
-
*/
|
|
1944
|
-
const debouncedSilentValidation = debounceAsync(_validateSchema, 5);
|
|
1945
|
-
const debouncedValidation = debounceAsync(_validateSchema, 5);
|
|
1946
|
-
async function validateSchema(mode) {
|
|
1947
|
-
const formResult = await (mode === 'silent' ? debouncedSilentValidation() : debouncedValidation());
|
|
1948
|
-
// fields by id lookup
|
|
1949
|
-
const fieldsById = formCtx.fieldsByPath.value || {};
|
|
1950
|
-
// errors fields names, we need it to also check if custom errors are updated
|
|
1951
|
-
const currentErrorsPaths = keysOf(formCtx.errorBag.value);
|
|
1952
|
-
// collect all the keys from the schema and all fields
|
|
1953
|
-
// this ensures we have a complete keymap of all the fields
|
|
1954
|
-
const paths = [
|
|
1955
|
-
...new Set([...keysOf(formResult.results), ...keysOf(fieldsById), ...currentErrorsPaths]),
|
|
1956
|
-
];
|
|
1957
|
-
// aggregates the paths into a single result object while applying the results on the fields
|
|
1958
|
-
return paths.reduce((validation, path) => {
|
|
1959
|
-
const field = fieldsById[path];
|
|
1960
|
-
const messages = (formResult.results[path] || { errors: [] }).errors;
|
|
1961
|
-
const fieldResult = {
|
|
1962
|
-
errors: messages,
|
|
1963
|
-
valid: !messages.length,
|
|
1964
|
-
};
|
|
1965
|
-
validation.results[path] = fieldResult;
|
|
1966
|
-
if (!fieldResult.valid) {
|
|
1967
|
-
validation.errors[path] = fieldResult.errors[0];
|
|
1968
|
-
}
|
|
1969
|
-
// field not rendered
|
|
1970
|
-
if (!field) {
|
|
1971
|
-
setFieldError(path, messages);
|
|
1972
|
-
return validation;
|
|
1973
|
-
}
|
|
1974
|
-
// always update the valid flag regardless of the mode
|
|
1975
|
-
applyFieldMutation(field, f => (f.meta.valid = fieldResult.valid));
|
|
1976
|
-
if (mode === 'silent') {
|
|
1977
|
-
return validation;
|
|
1978
|
-
}
|
|
1979
|
-
const wasValidated = Array.isArray(field) ? field.some(f => f.meta.validated) : field.meta.validated;
|
|
1980
|
-
if (mode === 'validated-only' && !wasValidated) {
|
|
1981
|
-
return validation;
|
|
1982
|
-
}
|
|
1983
|
-
applyFieldMutation(field, f => f.setState({ errors: fieldResult.errors }));
|
|
1984
|
-
return validation;
|
|
1985
|
-
}, { valid: formResult.valid, results: {}, errors: {} });
|
|
1986
|
-
}
|
|
1987
2031
|
const submitForm = handleSubmit((_, { evt }) => {
|
|
1988
2032
|
if (isFormSubmitEvent(evt)) {
|
|
1989
2033
|
evt.target.submit();
|
|
@@ -2047,7 +2091,7 @@
|
|
|
2047
2091
|
valid: 'every',
|
|
2048
2092
|
};
|
|
2049
2093
|
const isDirty = vue.computed(() => {
|
|
2050
|
-
return !
|
|
2094
|
+
return !isEqual(currentValues, vue.unref(initialValues));
|
|
2051
2095
|
});
|
|
2052
2096
|
function calculateFlags() {
|
|
2053
2097
|
const fields = Object.values(fieldsByPath.value).flat(1).filter(Boolean);
|
package/dist/vee-validate.min.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* vee-validate v4.6.
|
|
2
|
+
* vee-validate v4.6.8
|
|
3
3
|
* (c) 2022 Abdelrahman Awad
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
6
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).VeeValidate={},e.Vue)}(this,(function(e,t){"use strict";function r(e){return"function"==typeof e}function n(e){return null==e}const a=e=>null!==e&&!!e&&"object"==typeof e&&!Array.isArray(e);function u(e){return Number(e)>=0}const i={};const o=Symbol("vee-validate-form"),l=Symbol("vee-validate-field-instance"),s=Symbol("Default empty value");function d(e){return r(e)&&!!e.__locatorRef}function c(e){return!!e&&r(e.validate)}function f(e){return"checkbox"===e||"radio"===e}function v(e){return Array.isArray(e)?0===e.length:a(e)&&0===Object.keys(e).length}function p(e){return/^\[.+\]$/i.test(e)}function m(e){return"SELECT"===e.tagName}function h(e,t){return!function(e,t){const r=![!1,null,void 0,0].includes(t.multiple)&&!Number.isNaN(t.multiple);return"select"===e&&"multiple"in t&&r}(e,t)&&"file"!==t.type&&!f(t.type)}function y(e){return g(e)&&e.target&&"submit"in e.target}function g(e){return!!e&&(!!("undefined"!=typeof Event&&r(Event)&&e instanceof Event)||!(!e||!e.srcElement))}function b(e,t){return t in e&&e[t]!==s}var O=function e(t,r){if(t===r)return!0;if(t&&r&&"object"==typeof t&&"object"==typeof r){if(t.constructor!==r.constructor)return!1;var n,a,u;if(Array.isArray(t)){if((n=t.length)!=r.length)return!1;for(a=n;0!=a--;)if(!e(t[a],r[a]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if((n=(u=Object.keys(t)).length)!==Object.keys(r).length)return!1;for(a=n;0!=a--;)if(!Object.prototype.hasOwnProperty.call(r,u[a]))return!1;for(a=n;0!=a--;){var i=u[a];if(!e(t[i],r[i]))return!1}return!0}return t!=t&&r!=r};function V(e){return p(e)?e.replace(/\[|\]/gi,""):e}function F(e,t,r){if(!e)return r;if(p(t))return e[V(t)];return(t||"").split(/\.|\[(\d+)\]/).filter(Boolean).reduce(((e,t)=>{return(a(n=e)||Array.isArray(n))&&t in e?e[t]:r;var n}),e)}function A(e,t,r){if(p(t))return void(e[V(t)]=r);const a=t.split(/\.|\[(\d+)\]/).filter(Boolean);let i=e;for(let e=0;e<a.length;e++){if(e===a.length-1)return void(i[a[e]]=r);a[e]in i&&!n(i[a[e]])||(i[a[e]]=u(a[e+1])?[]:{}),i=i[a[e]]}}function j(e,t){Array.isArray(e)&&u(t)?e.splice(Number(t),1):a(e)&&delete e[t]}function w(e,t){if(p(t))return void delete e[V(t)];const r=t.split(/\.|\[(\d+)\]/).filter(Boolean);let a=e;for(let e=0;e<r.length;e++){if(e===r.length-1){j(a,r[e]);break}if(!(r[e]in a)||n(a[r[e]]))break;a=a[r[e]]}const u=r.map(((t,n)=>F(e,r.slice(0,n).join("."))));for(let t=u.length-1;t>=0;t--)v(u[t])&&(0!==t?j(u[t-1],r[t-1]):j(e,r[0]))}function E(e){return Object.keys(e)}function S(e,r){const n=t.getCurrentInstance();return(null==n?void 0:n.provides[e])||t.inject(e,r)}function k(e){t.warn(`[vee-validate]: ${e}`)}function B(e){return Array.isArray(e)?e[0]:e}function I(e,t,r){if(Array.isArray(e)){const r=[...e],n=r.findIndex((e=>O(e,t)));return n>=0?r.splice(n,1):r.push(t),r}return O(e,t)?r:t}function M(e,t=0){let r=null,n=[];return function(...a){return r&&window.clearTimeout(r),r=window.setTimeout((()=>{const t=e(...a);n.forEach((e=>e(t))),n=[]}),t),new Promise((e=>n.push(e)))}}function T(e,t){return a(t)&&t.number?function(e){const t=parseFloat(e);return isNaN(t)?e:t}(e):e}const C=(e,t,r)=>t.slots.default?"string"!=typeof e&&e?{default:()=>{var e,n;return null===(n=(e=t.slots).default)||void 0===n?void 0:n.call(e,r())}}:t.slots.default(r()):t.slots.default;function R(e){if(x(e))return e._value}function x(e){return"_value"in e}function P(e){if(!g(e))return e;const t=e.target;if(f(t.type)&&x(t))return R(t);if("file"===t.type&&t.files){const e=Array.from(t.files);return t.multiple?e:e[0]}if(m(r=t)&&r.multiple)return Array.from(t.options).filter((e=>e.selected&&!e.disabled)).map(R);var r;if(m(t)){const e=Array.from(t.options).find((e=>e.selected));return e?R(e):t.value}return t.value}function N(e){const t={};return Object.defineProperty(t,"_$$isNormalized",{value:!0,writable:!1,enumerable:!1,configurable:!1}),e?a(e)&&e._$$isNormalized?e:a(e)?Object.keys(e).reduce(((t,r)=>{const n=function(e){if(!0===e)return[];if(Array.isArray(e))return e;if(a(e))return e;return[e]}(e[r]);return!1!==e[r]&&(t[r]=_(n)),t}),t):"string"!=typeof e?t:e.split("|").reduce(((e,t)=>{const r=U(t);return r.name?(e[r.name]=_(r.params),e):e}),t):t}function _(e){const t=e=>"string"==typeof e&&"@"===e[0]?function(e){const t=t=>F(t,e)||t[e];return t.__locatorRef=e,t}(e.slice(1)):e;return Array.isArray(e)?e.map(t):e instanceof RegExp?[e]:Object.keys(e).reduce(((r,n)=>(r[n]=t(e[n]),r)),{})}const U=e=>{let t=[];const r=e.split(":")[0];return e.includes(":")&&(t=e.split(":").slice(1).join(":").split(",")),{name:r,params:t}};let $=Object.assign({},{generateMessage:({field:e})=>`${e} is not valid.`,bails:!0,validateOnBlur:!0,validateOnChange:!0,validateOnInput:!1,validateOnModelUpdate:!0});const D=()=>$,q=e=>{$=Object.assign(Object.assign({},$),e)};async function z(e,t,n={}){const a=null==n?void 0:n.bails,u={name:(null==n?void 0:n.name)||"{field}",rules:t,bails:null==a||a,formData:(null==n?void 0:n.values)||{}},i=await async function(e,t){if(c(e.rules))return async function(e,t,r){var n;return{errors:await t.validate(e,{abortEarly:null===(n=r.bails)||void 0===n||n}).then((()=>[])).catch((e=>{if("ValidationError"===e.name)return e.errors;throw e}))}}(t,e.rules,{bails:e.bails});if(r(e.rules)||Array.isArray(e.rules)){const r={field:e.name,form:e.formData,value:t},n=Array.isArray(e.rules)?e.rules:[e.rules],a=n.length,u=[];for(let i=0;i<a;i++){const a=n[i],o=await a(t,r);if("string"!=typeof o&&o)continue;const l="string"==typeof o?o:K(r);if(u.push(l),e.bails)return{errors:u}}return{errors:u}}const n=Object.assign(Object.assign({},e),{rules:N(e.rules)}),a=[],u=Object.keys(n.rules),i=u.length;for(let r=0;r<i;r++){const i=u[r],o=await L(n,t,{name:i,params:n.rules[i]});if(o.error&&(a.push(o.error),e.bails))return{errors:a}}return{errors:a}}(u,e),o=i.errors;return{errors:o,valid:!o.length}}async function L(e,t,r){const n=(a=r.name,i[a]);var a;if(!n)throw new Error(`No such validator '${r.name}' exists.`);const u=function(e,t){const r=e=>d(e)?e(t):e;if(Array.isArray(e))return e.map(r);return Object.keys(e).reduce(((t,n)=>(t[n]=r(e[n]),t)),{})}(r.params,e.formData),o={field:e.name,value:t,form:e.formData,rule:Object.assign(Object.assign({},r),{params:u})},l=await n(t,u,o);return"string"==typeof l?{error:l}:{error:l?void 0:K(o)}}function K(e){const t=D().generateMessage;return t?t(e):"Field is invalid"}async function G(e,t,r){const n=E(e).map((async n=>{var a,u,i;const o=await z(F(t,n),e[n],{name:(null===(a=null==r?void 0:r.names)||void 0===a?void 0:a[n])||n,values:t,bails:null===(i=null===(u=null==r?void 0:r.bailsMap)||void 0===u?void 0:u[n])||void 0===i||i});return Object.assign(Object.assign({},o),{path:n})}));let a=!0;const u=await Promise.all(n),i={},o={};for(const e of u)i[e.path]={valid:e.valid,errors:e.errors},e.valid||(a=!1,o[e.path]=e.errors[0]);return{valid:a,results:i,errors:o}}function X(e,t,r){"object"==typeof r.value&&(r.value=H(r.value)),r.enumerable&&!r.get&&!r.set&&r.configurable&&r.writable&&"__proto__"!==t?e[t]=r.value:Object.defineProperty(e,t,r)}function H(e){if("object"!=typeof e)return e;var t,r,n,a=0,u=Object.prototype.toString.call(e);if("[object Object]"===u?n=Object.create(e.__proto__||null):"[object Array]"===u?n=Array(e.length):"[object Set]"===u?(n=new Set,e.forEach((function(e){n.add(H(e))}))):"[object Map]"===u?(n=new Map,e.forEach((function(e,t){n.set(H(t),H(e))}))):"[object Date]"===u?n=new Date(+e):"[object RegExp]"===u?n=new RegExp(e.source,e.flags):"[object DataView]"===u?n=new e.constructor(H(e.buffer)):"[object ArrayBuffer]"===u?n=e.slice(0):"Array]"===u.slice(-6)&&(n=new e.constructor(e)),n){for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)X(n,r[a],Object.getOwnPropertyDescriptor(e,r[a]));for(a=0,r=Object.getOwnPropertyNames(e);a<r.length;a++)Object.hasOwnProperty.call(n,t=r[a])&&n[t]===e[t]||X(n,t,Object.getOwnPropertyDescriptor(e,t))}return n||e}var J=function e(t,r){if(t===r)return!0;if(t&&r&&"object"==typeof t&&"object"==typeof r){if(t.constructor!==r.constructor)return!1;var n,a,u;if(Array.isArray(t)){if((n=t.length)!=r.length)return!1;for(a=n;0!=a--;)if(!e(t[a],r[a]))return!1;return!0}if(t instanceof Map&&r instanceof Map){if(t.size!==r.size)return!1;for(a of t.entries())if(!r.has(a[0]))return!1;for(a of t.entries())if(!e(a[1],r.get(a[0])))return!1;return!0}if(t instanceof Set&&r instanceof Set){if(t.size!==r.size)return!1;for(a of t.entries())if(!r.has(a[0]))return!1;return!0}if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(r)){if((n=t.length)!=r.length)return!1;for(a=n;0!=a--;)if(t[a]!==r[a])return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if((n=(u=Object.keys(t)).length)!==Object.keys(r).length)return!1;for(a=n;0!=a--;)if(!Object.prototype.hasOwnProperty.call(r,u[a]))return!1;for(a=n;0!=a--;){var i=u[a];if(!e(t[i],r[i]))return!1}return!0}return t!=t&&r!=r};let Q=0;function W(e,r){const{value:n,initialValue:a,setInitialValue:u}=Y(e,r.modelValue,!r.standalone),{errorMessage:i,errors:l,setErrors:s}=function(e,r){const n=r?S(o,void 0):void 0;function a(e){return e?Array.isArray(e)?e:[e]:[]}if(!n){const e=t.ref([]);return{errors:e,errorMessage:t.computed((()=>e.value[0])),setErrors:t=>{e.value=a(t)}}}const u=t.computed((()=>n.errorBag.value[t.unref(e)]||[]));return{errors:u,errorMessage:t.computed((()=>u.value[0])),setErrors:r=>{n.setFieldErrorBag(t.unref(e),a(r))}}}(e,!r.standalone),d=function(e,r,n){const a=t.reactive({touched:!1,pending:!1,valid:!0,validated:!!t.unref(n).length,initialValue:t.computed((()=>t.unref(r))),dirty:t.computed((()=>!J(t.unref(e),t.unref(r))))});return t.watch(n,(e=>{a.valid=!e.length}),{immediate:!0,flush:"sync"}),a}(n,a,l);return{id:Q>=Number.MAX_SAFE_INTEGER?0:++Q,path:e,value:n,initialValue:a,meta:d,errors:l,errorMessage:i,setState:function(e){var t;"value"in e&&(n.value=e.value),"errors"in e&&s(e.errors),"touched"in e&&(d.touched=null!==(t=e.touched)&&void 0!==t?t:d.touched),"initialValue"in e&&u(e.initialValue)}}}function Y(e,r,n=!0){const a=!0===n?S(o,void 0):void 0,u=t.ref(t.unref(r));function i(){return a?F(a.meta.value.initialValues,t.unref(e),t.unref(u)):t.unref(u)}function l(r){a?a.stageInitialValue(t.unref(e),r,!0):u.value=r}const s=t.computed(i);if(!a){return{value:t.ref(i()),initialValue:s,setInitialValue:l}}const d=r?t.unref(r):F(a.values,t.unref(e),t.unref(s));a.stageInitialValue(t.unref(e),d,!0);return{value:t.computed({get:()=>F(a.values,t.unref(e)),set(r){a.setFieldValue(t.unref(e),r)}}),initialValue:s,setInitialValue:l}}function Z(e,r,n){return f(null==n?void 0:n.type)?function(e,r,n){const a=(null==n?void 0:n.standalone)?void 0:S(o),u=null==n?void 0:n.checkedValue,i=null==n?void 0:n.uncheckedValue;function l(e){const r=e.handleChange,n=t.computed((()=>{const r=t.unref(e.value),n=t.unref(u);return Array.isArray(r)?r.findIndex((e=>J(e,n)))>=0:J(n,r)}));function o(o,l=!0){var s;if(n.value===(null===(s=null==o?void 0:o.target)||void 0===s?void 0:s.checked))return;let d=P(o);a||(d=I(t.unref(e.value),t.unref(u),t.unref(i))),r(d,l)}return Object.assign(Object.assign({},e),{checked:n,checkedValue:u,uncheckedValue:i,handleChange:o})}return l(ee(e,r,n))}(e,r,n):ee(e,r,n)}function ee(e,n,a){const{initialValue:u,validateOnMount:i,bails:f,type:v,checkedValue:p,label:m,validateOnValueUpdate:h,uncheckedValue:y,standalone:g,keepValueOnUnmount:b,modelPropName:O,syncVModel:V}=function(e,t){const r=()=>({initialValue:void 0,validateOnMount:!1,bails:!0,rules:"",label:e,validateOnValueUpdate:!0,standalone:!1,keepValueOnUnmount:void 0,modelPropName:"modelValue",syncVModel:!0});if(!t)return r();const n="valueProp"in t?t.valueProp:t.checkedValue;return Object.assign(Object.assign(Object.assign({},r()),t||{}),{checkedValue:n})}(t.unref(e),a),A=g?void 0:S(o);let j=!1;const{id:w,value:k,initialValue:B,meta:I,setState:M,errors:C,errorMessage:R}=W(e,{modelValue:u,standalone:g});V&&function({prop:e,value:r,handleChange:n}){const a=t.getCurrentInstance();if(!a)return;const u=e||"modelValue",i=`update:${u}`;if(!(u in a.props))return;t.watch(r,(e=>{J(e,te(a,u))||a.emit(i,e)})),t.watch((()=>te(a,u)),(e=>{if(e===s&&void 0===r.value)return;const t=e===s?void 0:e;J(t,T(r.value,a.props.modelModifiers))||n(t)}))}({value:k,prop:O,handleChange:D});const x=t.computed((()=>{let a=t.unref(n);const u=t.unref(null==A?void 0:A.schema);return u&&!c(u)&&(a=function(e,t){if(!e)return;return e[t]}(u,t.unref(e))||a),c(a)||r(a)||Array.isArray(a)?a:N(a)}));async function _(r){var n,a;return(null==A?void 0:A.validateSchema)?null!==(n=(await A.validateSchema(r)).results[t.unref(e)])&&void 0!==n?n:{valid:!0,errors:[]}:z(k.value,x.value,{name:t.unref(m)||t.unref(e),values:null!==(a=null==A?void 0:A.values)&&void 0!==a?a:{},bails:f})}async function U(){I.pending=!0,I.validated=!0;const e=await _("validated-only");return j&&(e.valid=!0,e.errors=[]),M({errors:e.errors}),I.pending=!1,e}async function $(){const e=await _("silent");return j&&(e.valid=!0),I.valid=e.valid,e}function D(e,t=!0){const r=P(e);k.value=r,!h&&t&&U()}let q;function L(){q=t.watch(k,((e,t)=>{if(J(e,t))return;(h?U:$)()}),{deep:!0})}function K(e){var r;null==q||q();const n=e&&"value"in e?e.value:B.value;M({value:H(n),initialValue:H(n),touched:null!==(r=null==e?void 0:e.touched)&&void 0!==r&&r,errors:(null==e?void 0:e.errors)||[]}),I.pending=!1,I.validated=!1,$(),t.nextTick((()=>{L()}))}t.onMounted((()=>{if(i)return U();A&&A.validateSchema||$()})),L();const G={id:w,name:e,label:m,value:k,meta:I,errors:C,errorMessage:R,type:v,checkedValue:p,uncheckedValue:y,bails:f,keepValueOnUnmount:b,resetField:K,handleReset:()=>K(),validate:function(e){return(null==e?void 0:e.mode)&&"force"!==(null==e?void 0:e.mode)?"validated-only"===(null==e?void 0:e.mode)?U():$():U()},handleChange:D,handleBlur:()=>{I.touched=!0},setState:M,setTouched:function(e){I.touched=e},setErrors:function(e){M({errors:Array.isArray(e)?e:[e]})},setValue:function(e){k.value=e}};if(t.provide(l,G),t.isRef(n)&&"function"!=typeof t.unref(n)&&t.watch(n,((e,t)=>{J(e,t)||(I.validated?U():$())}),{deep:!0}),!A)return G;A.register(G),t.onBeforeUnmount((()=>{j=!0,A.unregister(G)}));const X=t.computed((()=>{const e=x.value;return!e||r(e)||c(e)||Array.isArray(e)?{}:Object.keys(e).reduce(((t,r)=>{const n=(a=e[r],Array.isArray(a)?a.filter(d):E(a).filter((e=>d(a[e]))).map((e=>a[e]))).map((e=>e.__locatorRef)).reduce(((e,t)=>{const r=F(A.values,t)||A.values[t];return void 0!==r&&(e[t]=r),e}),{});var a;return Object.assign(t,n),t}),{})}));return t.watch(X,((e,t)=>{if(!Object.keys(e).length)return;!J(e,t)&&(I.validated?U():$())})),G}function te(e,t){return e.props[t]}function re(e,t){let r=e.as||"";return e.as||t.slots.default||(r="input"),r}function ne(e,t){return f(t.attrs.type)?b(e,"modelValue")?e.modelValue:void 0:b(e,"modelValue")?e.modelValue:t.attrs.value}const ae=t.defineComponent({name:"Field",inheritAttrs:!1,props:{as:{type:[String,Object],default:void 0},name:{type:String,required:!0},rules:{type:[Object,String,Function],default:void 0},validateOnMount:{type:Boolean,default:!1},validateOnBlur:{type:Boolean,default:void 0},validateOnChange:{type:Boolean,default:void 0},validateOnInput:{type:Boolean,default:void 0},validateOnModelUpdate:{type:Boolean,default:void 0},bails:{type:Boolean,default:()=>D().bails},label:{type:String,default:void 0},uncheckedValue:{type:null,default:void 0},modelValue:{type:null,default:s},modelModifiers:{type:null,default:()=>({})},"onUpdate:modelValue":{type:null,default:void 0},standalone:{type:Boolean,default:!1},keepValue:{type:Boolean,default:void 0}},setup(e,r){const n=t.toRef(e,"rules"),a=t.toRef(e,"name"),u=t.toRef(e,"label"),i=t.toRef(e,"uncheckedValue"),o=t.toRef(e,"keepValue"),{errors:l,value:s,errorMessage:d,validate:c,handleChange:v,handleBlur:p,setTouched:m,resetField:y,handleReset:g,meta:b,checked:O,setErrors:V}=Z(a,n,{validateOnMount:e.validateOnMount,bails:e.bails,standalone:e.standalone,type:r.attrs.type,initialValue:ne(e,r),checkedValue:r.attrs.value,uncheckedValue:i,label:u,validateOnValueUpdate:!1,keepValueOnUnmount:o}),F=function(e,t=!0){v(e,t),r.emit("update:modelValue",s.value)},A=function(e){(e=>{f(r.attrs.type)||(s.value=P(e))})(e),r.emit("update:modelValue",s.value)},j=t.computed((()=>{const{validateOnInput:t,validateOnChange:n,validateOnBlur:a,validateOnModelUpdate:u}=function(e){var t,r,n,a;const{validateOnInput:u,validateOnChange:i,validateOnBlur:o,validateOnModelUpdate:l}=D();return{validateOnInput:null!==(t=e.validateOnInput)&&void 0!==t?t:u,validateOnChange:null!==(r=e.validateOnChange)&&void 0!==r?r:i,validateOnBlur:null!==(n=e.validateOnBlur)&&void 0!==n?n:o,validateOnModelUpdate:null!==(a=e.validateOnModelUpdate)&&void 0!==a?a:l}}(e),i=[p,r.attrs.onBlur,a?c:void 0].filter(Boolean),o=[e=>F(e,t),r.attrs.onInput].filter(Boolean),l=[e=>F(e,n),r.attrs.onChange].filter(Boolean),d={name:e.name,onBlur:i,onInput:o,onChange:l,"onUpdate:modelValue":e=>F(e,u)};f(r.attrs.type)&&O&&(d.checked=O.value);return h(re(e,r),r.attrs)&&(d.value=s.value),d}));function w(){return{field:j.value,value:s.value,meta:b,errors:l.value,errorMessage:d.value,validate:c,resetField:y,handleChange:F,handleInput:A,handleReset:g,handleBlur:p,setTouched:m,setErrors:V}}return r.expose({setErrors:V,setTouched:m,reset:y,validate:c,handleChange:v}),()=>{const n=t.resolveDynamicComponent(re(e,r)),a=C(n,r,w);return n?t.h(n,Object.assign(Object.assign({},r.attrs),j.value),a):a}}});let ue=0;function ie(e){var r;const n=ue++;let a=!1;const u=t.ref({}),i=t.ref(!1),l=t.ref(0),s=[],d=t.reactive(H(t.unref(null==e?void 0:e.initialValues)||{})),{errorBag:f,setErrorBag:p,setFieldErrorBag:m}=function(e){const r=t.ref({});function n(e){return Array.isArray(e)?e:e?[e]:[]}function a(e,t){t?r.value[e]=n(t):delete r.value[e]}function u(e){r.value=E(e).reduce(((t,r)=>{const a=e[r];return a&&(t[r]=n(a)),t}),{})}e&&u(e);return{errorBag:r,setErrorBag:u,setFieldErrorBag:a}}(null==e?void 0:e.initialErrors),h=t.computed((()=>E(f.value).reduce(((e,t)=>{const r=f.value[t];return r&&r.length&&(e[t]=r[0]),e}),{})));function g(e){const t=u.value[e];return Array.isArray(t)?t[0]:t}function b(e){return!!u.value[e]}const O=t.computed((()=>E(u.value).reduce(((e,r)=>{const n=g(r);return n&&(e[r]=t.unref(n.label||n.name)||""),e}),{}))),V=t.computed((()=>E(u.value).reduce(((e,t)=>{var r;const n=g(t);return n&&(e[t]=null===(r=n.bails)||void 0===r||r),e}),{}))),j=Object.assign({},(null==e?void 0:e.initialErrors)||{}),S=null!==(r=null==e?void 0:e.keepValuesOnUnmount)&&void 0!==r&&r,{initialValues:k,originalInitialValues:B,setInitialValues:T}=function(e,r,n){const a=t.ref(H(t.unref(n))||{}),u=t.ref(H(t.unref(n))||{});function i(t,n=!1){a.value=H(t),u.value=H(t),n&&E(e.value).forEach((t=>{const n=e.value[t],u=Array.isArray(n)?n.some((e=>e.meta.touched)):null==n?void 0:n.meta.touched;if(!n||u)return;const i=F(a.value,t);A(r,t,H(i))}))}t.isRef(n)&&t.watch(n,(e=>{i(e,!0)}),{deep:!0});return{initialValues:a,originalInitialValues:u,setInitialValues:i}}(u,d,null==e?void 0:e.initialValues),C=function(e,r,n,a){const u={touched:"some",pending:"some",valid:"every"},i=t.computed((()=>!J(r,t.unref(n))));function o(){const t=Object.values(e.value).flat(1).filter(Boolean);return E(u).reduce(((e,r)=>{const n=u[r];return e[r]=t[n]((e=>e.meta[r])),e}),{})}const l=t.reactive(o());return t.watchEffect((()=>{const e=o();l.touched=e.touched,l.valid=e.valid,l.pending=e.pending})),t.computed((()=>Object.assign(Object.assign({initialValues:t.unref(n)},l),{valid:l.valid&&!E(a.value).length,dirty:i.value})))}(u,d,B,h),R=null==e?void 0:e.validationSchema,x={formId:n,fieldsByPath:u,values:d,errorBag:f,errors:h,schema:R,submitCount:l,meta:C,isSubmitting:i,fieldArrays:s,keepValuesOnUnmount:S,validateSchema:t.unref(R)?async function(e){const t=await("silent"===e?ie():oe()),r=x.fieldsByPath.value||{},n=E(x.errorBag.value);return[...new Set([...E(t.results),...E(r),...n])].reduce(((n,a)=>{const u=r[a],i=(t.results[a]||{errors:[]}).errors,o={errors:i,valid:!i.length};if(n.results[a]=o,o.valid||(n.errors[a]=o.errors[0]),!u)return U(a,i),n;if(N(u,(e=>e.meta.valid=o.valid)),"silent"===e)return n;const l=Array.isArray(u)?u.some((e=>e.meta.validated)):u.meta.validated;return"validated-only"!==e||l?(N(u,(e=>e.setState({errors:o.errors}))),n):n}),{valid:t.valid,results:{},errors:{}})}:void 0,validate:ee,register:function(e){const r=t.unref(e.name);W(e,r),t.isRef(e.name)&&t.watch(e.name,(async(r,n)=>{await t.nextTick(),Z(e,n),W(e,r),(h.value[n]||h.value[r])&&(U(n,void 0),te(r)),await t.nextTick(),b(n)||w(d,n)}));const n=t.unref(e.errorMessage);n&&(null==j?void 0:j[r])!==n&&te(r);delete j[r]},unregister:function(e){const r=t.unref(e.name),n=u.value[r],a=!!n&&P(n);Z(e,r),t.nextTick((()=>{var i;const o=null!==(i=t.unref(e.keepValueOnUnmount))&&void 0!==i?i:t.unref(S),l=F(d,r);if(a&&(n===u.value[r]||!u.value[r])&&Array.isArray(l)&&!o){const n=l.findIndex((r=>J(r,t.unref(e.checkedValue))));if(n>-1){const e=[...l];e.splice(n,1),D(r,e,{force:!0})}}if(!b(r)){if(U(r,void 0),o)return;if(a&&!v(F(d,r)))return;w(d,r)}}))},setFieldErrorBag:m,validateField:te,setFieldValue:D,setValues:q,setErrors:$,setFieldError:U,setFieldTouched:K,setTouched:X,resetForm:Q,handleSubmit:re,stageInitialValue:function(t,r,n=!1){A(d,t,r),ne(t,r),n&&!(null==e?void 0:e.initialValues)&&A(B.value,t,H(r))},unsetInitialValue:function(e){w(k.value,e)},setFieldInitialValue:ne,useFieldModel:L};function P(e){return Array.isArray(e)}function N(e,t){return Array.isArray(e)?e.forEach(t):t(e)}function _(e){Object.values(u.value).forEach((t=>{t&&N(t,e)}))}function U(e,t){m(e,t)}function $(e){p(e)}function D(e,r,{force:n}={force:!1}){var i;const o=u.value[e],l=H(r);if(!o)return void A(d,e,l);if(P(o)&&"checkbox"===(null===(i=o[0])||void 0===i?void 0:i.type)&&!Array.isArray(r)){const t=H(I(F(d,e)||[],r,void 0));return void A(d,e,t)}let s=r;P(o)||"checkbox"!==o.type||n||a||(s=H(I(F(d,e),r,t.unref(o.uncheckedValue)))),A(d,e,s)}function q(e){E(d).forEach((e=>{delete d[e]})),E(e).forEach((t=>{D(t,e[t])})),s.forEach((e=>e&&e.reset()))}function z(e){const{value:r}=Y(e);return t.watch(r,(()=>{b(t.unref(e))||ee({mode:"validated-only"})}),{deep:!0}),r}function L(e){return Array.isArray(e)?e.map(z):z(e)}function K(e,t){const r=u.value[e];r&&N(r,(e=>e.setTouched(t)))}function X(e){E(e).forEach((t=>{K(t,!!e[t])}))}function Q(e){a=!0,(null==e?void 0:e.values)?(T(e.values),q(null==e?void 0:e.values)):(T(B.value),q(B.value)),_((e=>e.resetField())),(null==e?void 0:e.touched)&&X(e.touched),$((null==e?void 0:e.errors)||{}),l.value=(null==e?void 0:e.submitCount)||0,t.nextTick((()=>{a=!1}))}function W(e,r){const n=t.markRaw(e),a=r;if(!u.value[a])return void(u.value[a]=n);const i=u.value[a];i&&!Array.isArray(i)&&(u.value[a]=[i]),u.value[a]=[...u.value[a],n]}function Z(e,t){const r=t,n=u.value[r];if(n)if(P(n)||e.id!==n.id){if(P(n)){const t=n.findIndex((t=>t.id===e.id));if(-1===t)return;n.splice(t,1),n.length||delete u.value[r]}}else delete u.value[r]}async function ee(e){if(_((e=>e.meta.validated=!0)),x.validateSchema)return x.validateSchema((null==e?void 0:e.mode)||"force");const r=await Promise.all(Object.values(u.value).map((r=>{const n=Array.isArray(r)?r[0]:r;return n?n.validate(e).then((e=>({key:t.unref(n.name),valid:e.valid,errors:e.errors}))):Promise.resolve({key:"",valid:!0,errors:[]})}))),n={},a={};for(const e of r)n[e.key]={valid:e.valid,errors:e.errors},e.errors.length&&(a[e.key]=e.errors[0]);return{valid:r.every((e=>e.valid)),results:n,errors:a}}async function te(e){const r=u.value[e];return r?Array.isArray(r)?r.map((e=>e.validate()))[0]:r.validate():(t.warn(`field with name ${e} was not found`),Promise.resolve({errors:[],valid:!0}))}function re(e,t){return function(r){return r instanceof Event&&(r.preventDefault(),r.stopPropagation()),X(E(u.value).reduce(((e,t)=>(e[t]=!0,e)),{})),i.value=!0,l.value++,ee().then((n=>{if(n.valid&&"function"==typeof e)return e(H(d),{evt:r,setErrors:$,setFieldError:U,setTouched:X,setFieldTouched:K,setValues:q,setFieldValue:D,resetForm:Q});n.valid||"function"!=typeof t||t({values:H(d),evt:r,errors:n.errors,results:n.results})})).then((e=>(i.value=!1,e)),(e=>{throw i.value=!1,e}))}}function ne(e,t){A(k.value,e,H(t))}async function ae(){const e=t.unref(R);if(!e)return{valid:!0,results:{},errors:{}};const r=c(e)?await async function(e,t){const r=await e.validate(t,{abortEarly:!1}).then((()=>[])).catch((e=>{if("ValidationError"!==e.name)throw e;return e.inner||[]})),n={},a={};for(const e of r){const t=e.errors;n[e.path]={valid:!t.length,errors:t},t.length&&(a[e.path]=t[0])}return{valid:!r.length,results:n,errors:a}}(e,d):await G(e,d,{names:O.value,bailsMap:V.value});return r}const ie=M(ae,5),oe=M(ae,5);const le=re(((e,{evt:t})=>{y(t)&&t.target.submit()}));return t.onMounted((()=>{(null==e?void 0:e.initialErrors)&&$(e.initialErrors),(null==e?void 0:e.initialTouched)&&X(e.initialTouched),(null==e?void 0:e.validateOnMount)?ee():x.validateSchema&&x.validateSchema("silent")})),t.isRef(R)&&t.watch(R,(()=>{var e;null===(e=x.validateSchema)||void 0===e||e.call(x,"validated-only")})),t.provide(o,x),{errors:h,meta:C,values:d,isSubmitting:i,submitCount:l,validate:ee,validateField:te,handleReset:()=>Q(),resetForm:Q,handleSubmit:re,submitForm:le,setFieldError:U,setErrors:$,setFieldValue:D,setValues:q,setFieldTouched:K,setTouched:X,useFieldModel:L}}const oe=t.defineComponent({name:"Form",inheritAttrs:!1,props:{as:{type:String,default:"form"},validationSchema:{type:Object,default:void 0},initialValues:{type:Object,default:void 0},initialErrors:{type:Object,default:void 0},initialTouched:{type:Object,default:void 0},validateOnMount:{type:Boolean,default:!1},onSubmit:{type:Function,default:void 0},onInvalidSubmit:{type:Function,default:void 0},keepValues:{type:Boolean,default:!1}},setup(e,r){const n=t.toRef(e,"initialValues"),a=t.toRef(e,"validationSchema"),u=t.toRef(e,"keepValues"),{errors:i,values:o,meta:l,isSubmitting:s,submitCount:d,validate:c,validateField:f,handleReset:v,resetForm:p,handleSubmit:m,setErrors:h,setFieldError:b,setFieldValue:O,setValues:V,setFieldTouched:F,setTouched:A}=ie({validationSchema:a.value?a:void 0,initialValues:n,initialErrors:e.initialErrors,initialTouched:e.initialTouched,validateOnMount:e.validateOnMount,keepValuesOnUnmount:u}),j=m(((e,{evt:t})=>{y(t)&&t.target.submit()}),e.onInvalidSubmit),w=e.onSubmit?m(e.onSubmit,e.onInvalidSubmit):j;function E(e){g(e)&&e.preventDefault(),v(),"function"==typeof r.attrs.onReset&&r.attrs.onReset()}function S(t,r){return m("function"!=typeof t||r?r:t,e.onInvalidSubmit)(t)}function k(){return{meta:l.value,errors:i.value,values:o,isSubmitting:s.value,submitCount:d.value,validate:c,validateField:f,handleSubmit:S,handleReset:v,submitForm:j,setErrors:h,setFieldError:b,setFieldValue:O,setValues:V,setFieldTouched:F,setTouched:A,resetForm:p}}return r.expose({setFieldError:b,setErrors:h,setFieldValue:O,setValues:V,setFieldTouched:F,setTouched:A,resetForm:p,validate:c,validateField:f}),function(){const n="form"===e.as?e.as:t.resolveDynamicComponent(e.as),a=C(n,r,k);if(!e.as)return a;const u="form"===e.as?{novalidate:!0}:{};return t.h(n,Object.assign(Object.assign(Object.assign({},u),r.attrs),{onSubmit:w,onReset:E}),a)}}}),le=oe;function se(e){const r=S(o,void 0),a=t.ref([]),u=()=>{},i={fields:a,remove:u,push:u,swap:u,insert:u,update:u,replace:u,prepend:u,move:u};if(!r)return k("FieldArray requires being a child of `<Form/>` or `useForm` being called before it. Array fields may not work correctly"),i;if(!t.unref(e))return k("FieldArray requires a field path to be provided, did you forget to pass the `name` prop?"),i;const l=r.fieldArrays.find((r=>t.unref(r.path)===t.unref(e)));if(l)return l;let s=0;function d(){const n=F(null==r?void 0:r.values,t.unref(e),[])||[];a.value=n.map(f),c()}function c(){const e=a.value.length;for(let t=0;t<e;t++){const r=a.value[t];r.isFirst=0===t,r.isLast=t===e-1}}function f(n){const u=s++,i={key:u,value:t.computed({get(){const i=F(null==r?void 0:r.values,t.unref(e),[])||[],o=a.value.findIndex((e=>e.key===u));return-1===o?n:i[o]},set(e){const t=a.value.findIndex((e=>e.key===u));-1!==t?v(t,e):k("Attempting to update a non-existent array item")}}),isFirst:!1,isLast:!1};return i}function v(n,a){const u=t.unref(e),i=F(null==r?void 0:r.values,u);!Array.isArray(i)||i.length-1<n||null==r||r.setFieldValue(`${u}[${n}]`,a)}d();const p={fields:a,remove:function(n){const u=t.unref(e),i=F(null==r?void 0:r.values,u);if(!i||!Array.isArray(i))return;const o=[...i];o.splice(n,1),null==r||r.unsetInitialValue(u+`[${n}]`),null==r||r.setFieldValue(u,o),a.value.splice(n,1),c()},push:function(u){const i=t.unref(e),o=F(null==r?void 0:r.values,i),l=n(o)?[]:o;if(!Array.isArray(l))return;const s=[...l];s.push(u),null==r||r.stageInitialValue(i+`[${s.length-1}]`,u),null==r||r.setFieldValue(i,s),a.value.push(f(u)),c()},swap:function(n,u){const i=t.unref(e),o=F(null==r?void 0:r.values,i);if(!Array.isArray(o)||!(n in o)||!(u in o))return;const l=[...o],s=[...a.value],d=l[n];l[n]=l[u],l[u]=d;const f=s[n];s[n]=s[u],s[u]=f,null==r||r.setFieldValue(i,l),a.value=s,c()},insert:function(n,u){const i=t.unref(e),o=F(null==r?void 0:r.values,i);if(!Array.isArray(o)||o.length<n)return;const l=[...o],s=[...a.value];l.splice(n,0,u),s.splice(n,0,f(u)),null==r||r.setFieldValue(i,l),a.value=s,c()},update:v,replace:function(n){const a=t.unref(e);null==r||r.setFieldValue(a,n),d()},prepend:function(u){const i=t.unref(e),o=F(null==r?void 0:r.values,i),l=n(o)?[]:o;if(!Array.isArray(l))return;const s=[u,...l];null==r||r.stageInitialValue(i+`[${s.length-1}]`,u),null==r||r.setFieldValue(i,s),a.value.unshift(f(u)),c()},move:function(u,i){const o=t.unref(e),l=F(null==r?void 0:r.values,o),s=n(l)?[]:[...l];if(!Array.isArray(l)||!(u in l)||!(i in l))return;const d=[...a.value],f=d[u];d.splice(u,1),d.splice(i,0,f);const v=s[u];s.splice(u,1),s.splice(i,0,v),null==r||r.setFieldValue(o,s),a.value=d,c()}};return r.fieldArrays.push(Object.assign({path:e,reset:d},p)),t.onBeforeUnmount((()=>{const n=r.fieldArrays.findIndex((r=>t.unref(r.path)===t.unref(e)));n>=0&&r.fieldArrays.splice(n,1)})),p}const de=t.defineComponent({name:"FieldArray",inheritAttrs:!1,props:{name:{type:String,required:!0}},setup(e,r){const{push:n,remove:a,swap:u,insert:i,replace:o,update:l,prepend:s,move:d,fields:c}=se(t.toRef(e,"name"));function f(){return{fields:c.value,push:n,remove:a,swap:u,insert:i,update:l,replace:o,prepend:s,move:d}}return r.expose({push:n,remove:a,swap:u,insert:i,update:l,replace:o,prepend:s,move:d}),()=>C(void 0,r,f)}}),ce=t.defineComponent({name:"ErrorMessage",props:{as:{type:String,default:void 0},name:{type:String,required:!0}},setup(e,r){const n=t.inject(o,void 0),a=t.computed((()=>null==n?void 0:n.errors.value[e.name]));function u(){return{message:a.value}}return()=>{if(!a.value)return;const n=e.as?t.resolveDynamicComponent(e.as):e.as,i=C(n,r,u),o=Object.assign({role:"alert"},r.attrs);return n||!Array.isArray(i)&&i||!(null==i?void 0:i.length)?!Array.isArray(i)&&i||(null==i?void 0:i.length)?t.h(n,o,i):t.h(n||"span",o,a.value):i}}});e.ErrorMessage=ce,e.Field=ae,e.FieldArray=de,e.FieldContextKey=l,e.Form=le,e.FormContextKey=o,e.IS_ABSENT=s,e.configure=q,e.defineRule=function(e,t){!function(e,t){if(r(t))return;throw new Error(`Extension Error: The validator '${e}' must be a function.`)}(e,t),i[e]=t},e.useField=Z,e.useFieldArray=se,e.useFieldError=function(e){const r=S(o),n=e?void 0:t.inject(l);return t.computed((()=>e?null==r?void 0:r.errors.value[t.unref(e)]:null==n?void 0:n.errorMessage.value))},e.useFieldValue=function(e){const r=S(o),n=e?void 0:t.inject(l);return t.computed((()=>e?F(null==r?void 0:r.values,t.unref(e)):t.unref(null==n?void 0:n.value)))},e.useForm=ie,e.useFormErrors=function(){const e=S(o);return e||k("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>(null==e?void 0:e.errors.value)||{}))},e.useFormValues=function(){const e=S(o);return e||k("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>(null==e?void 0:e.values)||{}))},e.useIsFieldDirty=function(e){const r=S(o);let n=e?void 0:t.inject(l);return t.computed((()=>(e&&(n=B(null==r?void 0:r.fieldsByPath.value[t.unref(e)])),n?n.meta.dirty:(k(`field with name ${t.unref(e)} was not found`),!1))))},e.useIsFieldTouched=function(e){const r=S(o);let n=e?void 0:t.inject(l);return t.computed((()=>(e&&(n=B(null==r?void 0:r.fieldsByPath.value[t.unref(e)])),n?n.meta.touched:(k(`field with name ${t.unref(e)} was not found`),!1))))},e.useIsFieldValid=function(e){const r=S(o);let n=e?void 0:t.inject(l);return t.computed((()=>(e&&(n=B(null==r?void 0:r.fieldsByPath.value[t.unref(e)])),n?n.meta.valid:(k(`field with name ${t.unref(e)} was not found`),!1))))},e.useIsFormDirty=function(){const e=S(o);return e||k("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>{var t;return null!==(t=null==e?void 0:e.meta.value.dirty)&&void 0!==t&&t}))},e.useIsFormTouched=function(){const e=S(o);return e||k("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>{var t;return null!==(t=null==e?void 0:e.meta.value.touched)&&void 0!==t&&t}))},e.useIsFormValid=function(){const e=S(o);return e||k("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>{var t;return null!==(t=null==e?void 0:e.meta.value.valid)&&void 0!==t&&t}))},e.useIsSubmitting=function(){const e=S(o);return e||k("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>{var t;return null!==(t=null==e?void 0:e.isSubmitting.value)&&void 0!==t&&t}))},e.useResetForm=function(){const e=S(o);return e||k("No vee-validate <Form /> or `useForm` was detected in the component tree"),function(t){if(e)return e.resetForm(t)}},e.useSubmitCount=function(){const e=S(o);return e||k("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>{var t;return null!==(t=null==e?void 0:e.submitCount.value)&&void 0!==t?t:0}))},e.useSubmitForm=function(e){const t=S(o);t||k("No vee-validate <Form /> or `useForm` was detected in the component tree");const r=t?t.handleSubmit(e):void 0;return function(e){if(r)return r(e)}},e.useValidateField=function(e){const r=S(o);let n=e?void 0:t.inject(l);return function(){return e&&(n=B(null==r?void 0:r.fieldsByPath.value[t.unref(e)])),n?n.validate():(k(`field with name ${t.unref(e)} was not found`),Promise.resolve({errors:[],valid:!0}))}},e.useValidateForm=function(){const e=S(o);return e||k("No vee-validate <Form /> or `useForm` was detected in the component tree"),function(){return e?e.validate():Promise.resolve({results:{},errors:{},valid:!0})}},e.validate=z,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
6
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).VeeValidate={},e.Vue)}(this,(function(e,t){"use strict";function n(e){return"function"==typeof e}function r(e){return null==e}const a=e=>null!==e&&!!e&&"object"==typeof e&&!Array.isArray(e);function i(e){return Number(e)>=0}const u={};const o=Symbol("vee-validate-form"),l=Symbol("vee-validate-field-instance"),s=Symbol("Default empty value");function d(e){return n(e)&&!!e.__locatorRef}function c(e){return!!e&&n(e.validate)}function f(e){return"checkbox"===e||"radio"===e}function v(e){return Array.isArray(e)?0===e.length:a(e)&&0===Object.keys(e).length}function p(e){return/^\[.+\]$/i.test(e)}function m(e){return"SELECT"===e.tagName}function h(e,t){return!function(e,t){const n=![!1,null,void 0,0].includes(t.multiple)&&!Number.isNaN(t.multiple);return"select"===e&&"multiple"in t&&n}(e,t)&&"file"!==t.type&&!f(t.type)}function y(e){return g(e)&&e.target&&"submit"in e.target}function g(e){return!!e&&(!!("undefined"!=typeof Event&&n(Event)&&e instanceof Event)||!(!e||!e.srcElement))}function b(e,t){return t in e&&e[t]!==s}function O(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){if(e.constructor!==t.constructor)return!1;var n,r,a;if(Array.isArray(e)){if((n=e.length)!=t.length)return!1;for(r=n;0!=r--;)if(!O(e[r],t[r]))return!1;return!0}if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(r of e.entries())if(!t.has(r[0]))return!1;for(r of e.entries())if(!O(r[1],t.get(r[0])))return!1;return!0}if(e instanceof File&&t instanceof File)return e.size===t.size&&(e.name===t.name&&(e.lastModified===t.lastModified&&e.type===t.type));if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(r of e.entries())if(!t.has(r[0]))return!1;return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if((n=e.length)!=t.length)return!1;for(r=n;0!=r--;)if(e[r]!==t[r])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if((n=(a=Object.keys(e)).length)!==Object.keys(t).length)return!1;for(r=n;0!=r--;)if(!Object.prototype.hasOwnProperty.call(t,a[r]))return!1;for(r=n;0!=r--;){var i=a[r];if(!O(e[i],t[i]))return!1}return!0}return e!=e&&t!=t}var V=function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){if(t.constructor!==n.constructor)return!1;var r,a,i;if(Array.isArray(t)){if((r=t.length)!=n.length)return!1;for(a=r;0!=a--;)if(!e(t[a],n[a]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if((r=(i=Object.keys(t)).length)!==Object.keys(n).length)return!1;for(a=r;0!=a--;)if(!Object.prototype.hasOwnProperty.call(n,i[a]))return!1;for(a=r;0!=a--;){var u=i[a];if(!e(t[u],n[u]))return!1}return!0}return t!=t&&n!=n};function F(e){return p(e)?e.replace(/\[|\]/gi,""):e}function A(e,t,n){if(!e)return n;if(p(t))return e[F(t)];return(t||"").split(/\.|\[(\d+)\]/).filter(Boolean).reduce(((e,t)=>{return(a(r=e)||Array.isArray(r))&&t in e?e[t]:n;var r}),e)}function j(e,t,n){if(p(t))return void(e[F(t)]=n);const a=t.split(/\.|\[(\d+)\]/).filter(Boolean);let u=e;for(let e=0;e<a.length;e++){if(e===a.length-1)return void(u[a[e]]=n);a[e]in u&&!r(u[a[e]])||(u[a[e]]=i(a[e+1])?[]:{}),u=u[a[e]]}}function w(e,t){Array.isArray(e)&&i(t)?e.splice(Number(t),1):a(e)&&delete e[t]}function E(e,t){if(p(t))return void delete e[F(t)];const n=t.split(/\.|\[(\d+)\]/).filter(Boolean);let a=e;for(let e=0;e<n.length;e++){if(e===n.length-1){w(a,n[e]);break}if(!(n[e]in a)||r(a[n[e]]))break;a=a[n[e]]}const i=n.map(((t,r)=>A(e,n.slice(0,r).join("."))));for(let t=i.length-1;t>=0;t--)v(i[t])&&(0!==t?w(i[t-1],n[t-1]):w(e,n[0]))}function S(e){return Object.keys(e)}function k(e,n){const r=t.getCurrentInstance();return(null==r?void 0:r.provides[e])||t.inject(e,n)}function B(e){t.warn(`[vee-validate]: ${e}`)}function I(e){return Array.isArray(e)?e[0]:e}function M(e,t,n){if(Array.isArray(e)){const n=[...e],r=n.findIndex((e=>V(e,t)));return r>=0?n.splice(r,1):n.push(t),n}return V(e,t)?n:t}function T(e,t=0){let n=null,r=[];return function(...a){return n&&window.clearTimeout(n),n=window.setTimeout((()=>{const t=e(...a);r.forEach((e=>e(t))),r=[]}),t),new Promise((e=>r.push(e)))}}function C(e,t){return a(t)&&t.number?function(e){const t=parseFloat(e);return isNaN(t)?e:t}(e):e}function R(e,t){let n;return async function(...r){const a=e(...r);n=a;const i=await a;return a!==n||(n=void 0,t(i,r)),i}}const x=(e,t,n)=>t.slots.default?"string"!=typeof e&&e?{default:()=>{var e,r;return null===(r=(e=t.slots).default)||void 0===r?void 0:r.call(e,n())}}:t.slots.default(n()):t.slots.default;function P(e){if(N(e))return e._value}function N(e){return"_value"in e}function _(e){if(!g(e))return e;const t=e.target;if(f(t.type)&&N(t))return P(t);if("file"===t.type&&t.files){const e=Array.from(t.files);return t.multiple?e:e[0]}if(m(n=t)&&n.multiple)return Array.from(t.options).filter((e=>e.selected&&!e.disabled)).map(P);var n;if(m(t)){const e=Array.from(t.options).find((e=>e.selected));return e?P(e):t.value}return t.value}function U(e){const t={};return Object.defineProperty(t,"_$$isNormalized",{value:!0,writable:!1,enumerable:!1,configurable:!1}),e?a(e)&&e._$$isNormalized?e:a(e)?Object.keys(e).reduce(((t,n)=>{const r=function(e){if(!0===e)return[];if(Array.isArray(e))return e;if(a(e))return e;return[e]}(e[n]);return!1!==e[n]&&(t[n]=$(r)),t}),t):"string"!=typeof e?t:e.split("|").reduce(((e,t)=>{const n=D(t);return n.name?(e[n.name]=$(n.params),e):e}),t):t}function $(e){const t=e=>"string"==typeof e&&"@"===e[0]?function(e){const t=t=>A(t,e)||t[e];return t.__locatorRef=e,t}(e.slice(1)):e;return Array.isArray(e)?e.map(t):e instanceof RegExp?[e]:Object.keys(e).reduce(((n,r)=>(n[r]=t(e[r]),n)),{})}const D=e=>{let t=[];const n=e.split(":")[0];return e.includes(":")&&(t=e.split(":").slice(1).join(":").split(",")),{name:n,params:t}};let z=Object.assign({},{generateMessage:({field:e})=>`${e} is not valid.`,bails:!0,validateOnBlur:!0,validateOnChange:!0,validateOnInput:!1,validateOnModelUpdate:!0});const q=()=>z,L=e=>{z=Object.assign(Object.assign({},z),e)};async function K(e,t,r={}){const a=null==r?void 0:r.bails,i={name:(null==r?void 0:r.name)||"{field}",rules:t,bails:null==a||a,formData:(null==r?void 0:r.values)||{}},u=await async function(e,t){if(c(e.rules))return async function(e,t,n){var r;return{errors:await t.validate(e,{abortEarly:null===(r=n.bails)||void 0===r||r}).then((()=>[])).catch((e=>{if("ValidationError"===e.name)return e.errors;throw e}))}}(t,e.rules,{bails:e.bails});if(n(e.rules)||Array.isArray(e.rules)){const n={field:e.name,form:e.formData,value:t},r=Array.isArray(e.rules)?e.rules:[e.rules],a=r.length,i=[];for(let u=0;u<a;u++){const a=r[u],o=await a(t,n);if("string"!=typeof o&&o)continue;const l="string"==typeof o?o:X(n);if(i.push(l),e.bails)return{errors:i}}return{errors:i}}const r=Object.assign(Object.assign({},e),{rules:U(e.rules)}),a=[],i=Object.keys(r.rules),u=i.length;for(let n=0;n<u;n++){const u=i[n],o=await G(r,t,{name:u,params:r.rules[u]});if(o.error&&(a.push(o.error),e.bails))return{errors:a}}return{errors:a}}(i,e),o=u.errors;return{errors:o,valid:!o.length}}async function G(e,t,n){const r=(a=n.name,u[a]);var a;if(!r)throw new Error(`No such validator '${n.name}' exists.`);const i=function(e,t){const n=e=>d(e)?e(t):e;if(Array.isArray(e))return e.map(n);return Object.keys(e).reduce(((t,r)=>(t[r]=n(e[r]),t)),{})}(n.params,e.formData),o={field:e.name,value:t,form:e.formData,rule:Object.assign(Object.assign({},n),{params:i})},l=await r(t,i,o);return"string"==typeof l?{error:l}:{error:l?void 0:X(o)}}function X(e){const t=q().generateMessage;return t?t(e):"Field is invalid"}async function H(e,t,n){const r=S(e).map((async r=>{var a,i,u;const o=await K(A(t,r),e[r],{name:(null===(a=null==n?void 0:n.names)||void 0===a?void 0:a[r])||r,values:t,bails:null===(u=null===(i=null==n?void 0:n.bailsMap)||void 0===i?void 0:i[r])||void 0===u||u});return Object.assign(Object.assign({},o),{path:r})}));let a=!0;const i=await Promise.all(r),u={},o={};for(const e of i)u[e.path]={valid:e.valid,errors:e.errors},e.valid||(a=!1,o[e.path]=e.errors[0]);return{valid:a,results:u,errors:o}}function J(e,t,n){"object"==typeof n.value&&(n.value=Q(n.value)),n.enumerable&&!n.get&&!n.set&&n.configurable&&n.writable&&"__proto__"!==t?e[t]=n.value:Object.defineProperty(e,t,n)}function Q(e){if("object"!=typeof e)return e;var t,n,r,a=0,i=Object.prototype.toString.call(e);if("[object Object]"===i?r=Object.create(e.__proto__||null):"[object Array]"===i?r=Array(e.length):"[object Set]"===i?(r=new Set,e.forEach((function(e){r.add(Q(e))}))):"[object Map]"===i?(r=new Map,e.forEach((function(e,t){r.set(Q(t),Q(e))}))):"[object Date]"===i?r=new Date(+e):"[object RegExp]"===i?r=new RegExp(e.source,e.flags):"[object DataView]"===i?r=new e.constructor(Q(e.buffer)):"[object ArrayBuffer]"===i?r=e.slice(0):"Array]"===i.slice(-6)&&(r=new e.constructor(e)),r){for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)J(r,n[a],Object.getOwnPropertyDescriptor(e,n[a]));for(a=0,n=Object.getOwnPropertyNames(e);a<n.length;a++)Object.hasOwnProperty.call(r,t=n[a])&&r[t]===e[t]||J(r,t,Object.getOwnPropertyDescriptor(e,t))}return r||e}let W=0;function Y(e,n){const{value:r,initialValue:a,setInitialValue:i}=Z(e,n.modelValue,!n.standalone),{errorMessage:u,errors:l,setErrors:s}=function(e,n){const r=n?k(o,void 0):void 0;function a(e){return e?Array.isArray(e)?e:[e]:[]}if(!r){const e=t.ref([]);return{errors:e,errorMessage:t.computed((()=>e.value[0])),setErrors:t=>{e.value=a(t)}}}const i=t.computed((()=>r.errorBag.value[t.unref(e)]||[]));return{errors:i,errorMessage:t.computed((()=>i.value[0])),setErrors:n=>{r.setFieldErrorBag(t.unref(e),a(n))}}}(e,!n.standalone),d=function(e,n,r){const a=t.reactive({touched:!1,pending:!1,valid:!0,validated:!!t.unref(r).length,initialValue:t.computed((()=>t.unref(n))),dirty:t.computed((()=>!O(t.unref(e),t.unref(n))))});return t.watch(r,(e=>{a.valid=!e.length}),{immediate:!0,flush:"sync"}),a}(r,a,l);return{id:W>=Number.MAX_SAFE_INTEGER?0:++W,path:e,value:r,initialValue:a,meta:d,errors:l,errorMessage:u,setState:function(e){var t;"value"in e&&(r.value=e.value),"errors"in e&&s(e.errors),"touched"in e&&(d.touched=null!==(t=e.touched)&&void 0!==t?t:d.touched),"initialValue"in e&&i(e.initialValue)}}}function Z(e,n,r=!0){const a=!0===r?k(o,void 0):void 0,i=t.ref(t.unref(n));function u(){return a?A(a.meta.value.initialValues,t.unref(e),t.unref(i)):t.unref(i)}function l(n){a?a.stageInitialValue(t.unref(e),n,!0):i.value=n}const s=t.computed(u);if(!a){return{value:t.ref(u()),initialValue:s,setInitialValue:l}}const d=n?t.unref(n):A(a.values,t.unref(e),t.unref(s));a.stageInitialValue(t.unref(e),d,!0);return{value:t.computed({get:()=>A(a.values,t.unref(e)),set(n){a.setFieldValue(t.unref(e),n)}}),initialValue:s,setInitialValue:l}}function ee(e,n,r){return f(null==r?void 0:r.type)?function(e,n,r){const a=(null==r?void 0:r.standalone)?void 0:k(o),i=null==r?void 0:r.checkedValue,u=null==r?void 0:r.uncheckedValue;function l(e){const n=e.handleChange,r=t.computed((()=>{const n=t.unref(e.value),r=t.unref(i);return Array.isArray(n)?n.findIndex((e=>O(e,r)))>=0:O(r,n)}));function o(o,l=!0){var s;if(r.value===(null===(s=null==o?void 0:o.target)||void 0===s?void 0:s.checked))return void(l&&e.validate());let d=_(o);a||(d=M(t.unref(e.value),t.unref(i),t.unref(u))),n(d,l)}return Object.assign(Object.assign({},e),{checked:r,checkedValue:i,uncheckedValue:u,handleChange:o})}return l(te(e,n,r))}(e,n,r):te(e,n,r)}function te(e,r,a){const{initialValue:i,validateOnMount:u,bails:f,type:v,checkedValue:p,label:m,validateOnValueUpdate:h,uncheckedValue:y,standalone:g,keepValueOnUnmount:b,modelPropName:V,syncVModel:F}=function(e,t){const n=()=>({initialValue:void 0,validateOnMount:!1,bails:!0,rules:"",label:e,validateOnValueUpdate:!0,standalone:!1,keepValueOnUnmount:void 0,modelPropName:"modelValue",syncVModel:!0});if(!t)return n();const r="valueProp"in t?t.valueProp:t.checkedValue;return Object.assign(Object.assign(Object.assign({},n()),t||{}),{checkedValue:r})}(t.unref(e),a),j=g?void 0:k(o);let w=!1;const{id:E,value:B,initialValue:I,meta:M,setState:T,errors:x,errorMessage:P}=Y(e,{modelValue:i,standalone:g});F&&function({prop:e,value:n,handleChange:r}){const a=t.getCurrentInstance();if(!a)return;const i=e||"modelValue",u=`update:${i}`;if(!(i in a.props))return;t.watch(n,(e=>{O(e,ne(a,i))||a.emit(u,e)})),t.watch((()=>ne(a,i)),(e=>{if(e===s&&void 0===n.value)return;const t=e===s?void 0:e;O(t,C(n.value,a.props.modelModifiers))||r(t)}))}({value:B,prop:V,handleChange:q});const N=t.computed((()=>{let a=t.unref(r);const i=t.unref(null==j?void 0:j.schema);return i&&!c(i)&&(a=function(e,t){if(!e)return;return e[t]}(i,t.unref(e))||a),c(a)||n(a)||Array.isArray(a)?a:U(a)}));async function $(n){var r,a;return(null==j?void 0:j.validateSchema)?null!==(r=(await j.validateSchema(n)).results[t.unref(e)])&&void 0!==r?r:{valid:!0,errors:[]}:K(B.value,N.value,{name:t.unref(m)||t.unref(e),values:null!==(a=null==j?void 0:j.values)&&void 0!==a?a:{},bails:f})}const D=R((async()=>(M.pending=!0,M.validated=!0,$("validated-only"))),(e=>(w&&(e.valid=!0,e.errors=[]),T({errors:e.errors}),M.pending=!1,e))),z=R((async()=>$("silent")),(e=>(w&&(e.valid=!0),M.valid=e.valid,e)));function q(e,t=!0){const n=_(e);B.value=n,!h&&t&&D()}let L;t.onMounted((()=>{if(u)return D();j&&j.validateSchema||z()}));let G=Q(B.value);function X(){L=t.watch(B,((e,t)=>{if(O(e,t)&&O(e,G))return;(h?D:z)(),G=Q(e)}),{deep:!0})}function H(e){var n;null==L||L();const r=e&&"value"in e?e.value:I.value;T({value:Q(r),initialValue:Q(r),touched:null!==(n=null==e?void 0:e.touched)&&void 0!==n&&n,errors:(null==e?void 0:e.errors)||[]}),M.pending=!1,M.validated=!1,z(),t.nextTick((()=>{X()}))}X();const J={id:E,name:e,label:m,value:B,meta:M,errors:x,errorMessage:P,type:v,checkedValue:p,uncheckedValue:y,bails:f,keepValueOnUnmount:b,resetField:H,handleReset:()=>H(),validate:function(e){return"silent"===(null==e?void 0:e.mode)?z():D()},handleChange:q,handleBlur:()=>{M.touched=!0},setState:T,setTouched:function(e){M.touched=e},setErrors:function(e){T({errors:Array.isArray(e)?e:[e]})},setValue:function(e){B.value=e}};if(t.provide(l,J),t.isRef(r)&&"function"!=typeof t.unref(r)&&t.watch(r,((e,t)=>{O(e,t)||(M.validated?D():z())}),{deep:!0}),!j)return J;j.register(J),t.onBeforeUnmount((()=>{w=!0,j.unregister(J)}));const W=t.computed((()=>{const e=N.value;return!e||n(e)||c(e)||Array.isArray(e)?{}:Object.keys(e).reduce(((t,n)=>{const r=(a=e[n],Array.isArray(a)?a.filter(d):S(a).filter((e=>d(a[e]))).map((e=>a[e]))).map((e=>e.__locatorRef)).reduce(((e,t)=>{const n=A(j.values,t)||j.values[t];return void 0!==n&&(e[t]=n),e}),{});var a;return Object.assign(t,r),t}),{})}));return t.watch(W,((e,t)=>{if(!Object.keys(e).length)return;!O(e,t)&&(M.validated?D():z())})),J}function ne(e,t){return e.props[t]}function re(e,t){let n=e.as||"";return e.as||t.slots.default||(n="input"),n}function ae(e,t){return f(t.attrs.type)?b(e,"modelValue")?e.modelValue:void 0:b(e,"modelValue")?e.modelValue:t.attrs.value}const ie=t.defineComponent({name:"Field",inheritAttrs:!1,props:{as:{type:[String,Object],default:void 0},name:{type:String,required:!0},rules:{type:[Object,String,Function],default:void 0},validateOnMount:{type:Boolean,default:!1},validateOnBlur:{type:Boolean,default:void 0},validateOnChange:{type:Boolean,default:void 0},validateOnInput:{type:Boolean,default:void 0},validateOnModelUpdate:{type:Boolean,default:void 0},bails:{type:Boolean,default:()=>q().bails},label:{type:String,default:void 0},uncheckedValue:{type:null,default:void 0},modelValue:{type:null,default:s},modelModifiers:{type:null,default:()=>({})},"onUpdate:modelValue":{type:null,default:void 0},standalone:{type:Boolean,default:!1},keepValue:{type:Boolean,default:void 0}},setup(e,n){const r=t.toRef(e,"rules"),a=t.toRef(e,"name"),i=t.toRef(e,"label"),u=t.toRef(e,"uncheckedValue"),o=t.toRef(e,"keepValue"),{errors:l,value:s,errorMessage:d,validate:c,handleChange:v,handleBlur:p,setTouched:m,resetField:y,handleReset:g,meta:b,checked:O,setErrors:V}=ee(a,r,{validateOnMount:e.validateOnMount,bails:e.bails,standalone:e.standalone,type:n.attrs.type,initialValue:ae(e,n),checkedValue:n.attrs.value,uncheckedValue:u,label:i,validateOnValueUpdate:!1,keepValueOnUnmount:o}),F=function(e,t=!0){v(e,t),n.emit("update:modelValue",s.value)},A=function(e){(e=>{f(n.attrs.type)||(s.value=_(e))})(e),n.emit("update:modelValue",s.value)},j=t.computed((()=>{const{validateOnInput:t,validateOnChange:r,validateOnBlur:a,validateOnModelUpdate:i}=function(e){var t,n,r,a;const{validateOnInput:i,validateOnChange:u,validateOnBlur:o,validateOnModelUpdate:l}=q();return{validateOnInput:null!==(t=e.validateOnInput)&&void 0!==t?t:i,validateOnChange:null!==(n=e.validateOnChange)&&void 0!==n?n:u,validateOnBlur:null!==(r=e.validateOnBlur)&&void 0!==r?r:o,validateOnModelUpdate:null!==(a=e.validateOnModelUpdate)&&void 0!==a?a:l}}(e),u=[p,n.attrs.onBlur,a?c:void 0].filter(Boolean),o=[e=>F(e,t),n.attrs.onInput].filter(Boolean),l=[e=>F(e,r),n.attrs.onChange].filter(Boolean),d={name:e.name,onBlur:u,onInput:o,onChange:l,"onUpdate:modelValue":e=>F(e,i)};f(n.attrs.type)&&O&&(d.checked=O.value);return h(re(e,n),n.attrs)&&(d.value=s.value),d}));function w(){return{field:j.value,value:s.value,meta:b,errors:l.value,errorMessage:d.value,validate:c,resetField:y,handleChange:F,handleInput:A,handleReset:g,handleBlur:p,setTouched:m,setErrors:V}}return n.expose({setErrors:V,setTouched:m,reset:y,validate:c,handleChange:v}),()=>{const r=t.resolveDynamicComponent(re(e,n)),a=x(r,n,w);return r?t.h(r,Object.assign(Object.assign({},n.attrs),j.value),a):a}}});let ue=0;function oe(e){var n;const r=ue++;let a=!1;const i=t.ref({}),u=t.ref(!1),l=t.ref(0),s=[],d=t.reactive(Q(t.unref(null==e?void 0:e.initialValues)||{})),{errorBag:f,setErrorBag:p,setFieldErrorBag:m}=function(e){const n=t.ref({});function r(e){return Array.isArray(e)?e:e?[e]:[]}function a(e,t){t?n.value[e]=r(t):delete n.value[e]}function i(e){n.value=S(e).reduce(((t,n)=>{const a=e[n];return a&&(t[n]=r(a)),t}),{})}e&&i(e);return{errorBag:n,setErrorBag:i,setFieldErrorBag:a}}(null==e?void 0:e.initialErrors),h=t.computed((()=>S(f.value).reduce(((e,t)=>{const n=f.value[t];return n&&n.length&&(e[t]=n[0]),e}),{})));function g(e){const t=i.value[e];return Array.isArray(t)?t[0]:t}function b(e){return!!i.value[e]}const V=t.computed((()=>S(i.value).reduce(((e,n)=>{const r=g(n);return r&&(e[n]=t.unref(r.label||r.name)||""),e}),{}))),F=t.computed((()=>S(i.value).reduce(((e,t)=>{var n;const r=g(t);return r&&(e[t]=null===(n=r.bails)||void 0===n||n),e}),{}))),w=Object.assign({},(null==e?void 0:e.initialErrors)||{}),k=null!==(n=null==e?void 0:e.keepValuesOnUnmount)&&void 0!==n&&n,{initialValues:B,originalInitialValues:I,setInitialValues:C}=function(e,n,r){const a=t.ref(Q(t.unref(r))||{}),i=t.ref(Q(t.unref(r))||{});function u(t,r=!1){a.value=Q(t),i.value=Q(t),r&&S(e.value).forEach((t=>{const r=e.value[t],i=Array.isArray(r)?r.some((e=>e.meta.touched)):null==r?void 0:r.meta.touched;if(!r||i)return;const u=A(a.value,t);j(n,t,Q(u))}))}t.isRef(r)&&t.watch(r,(e=>{u(e,!0)}),{deep:!0});return{initialValues:a,originalInitialValues:i,setInitialValues:u}}(i,d,null==e?void 0:e.initialValues),x=function(e,n,r,a){const i={touched:"some",pending:"some",valid:"every"},u=t.computed((()=>!O(n,t.unref(r))));function o(){const t=Object.values(e.value).flat(1).filter(Boolean);return S(i).reduce(((e,n)=>{const r=i[n];return e[n]=t[r]((e=>e.meta[n])),e}),{})}const l=t.reactive(o());return t.watchEffect((()=>{const e=o();l.touched=e.touched,l.valid=e.valid,l.pending=e.pending})),t.computed((()=>Object.assign(Object.assign({initialValues:t.unref(r)},l),{valid:l.valid&&!S(a.value).length,dirty:u.value})))}(i,d,I,h),P=null==e?void 0:e.validationSchema,N=T(se,5),_=T(se,5),U=R((async e=>"silent"===await e?N():_()),((e,[t])=>{const n=$.fieldsByPath.value||{},r=S($.errorBag.value);return[...new Set([...S(e.results),...S(n),...r])].reduce(((r,a)=>{const i=n[a],u=(e.results[a]||{errors:[]}).errors,o={errors:u,valid:!u.length};if(r.results[a]=o,o.valid||(r.errors[a]=o.errors[0]),!i)return L(a,u),r;if(z(i,(e=>e.meta.valid=o.valid)),"silent"===t)return r;const l=Array.isArray(i)?i.some((e=>e.meta.validated)):i.meta.validated;return"validated-only"!==t||l?(z(i,(e=>e.setState({errors:o.errors}))),r):r}),{valid:e.valid,results:{},errors:{}})})),$={formId:r,fieldsByPath:i,values:d,errorBag:f,errors:h,schema:P,submitCount:l,meta:x,isSubmitting:u,fieldArrays:s,keepValuesOnUnmount:k,validateSchema:t.unref(P)?U:void 0,validate:ae,register:function(e){const n=t.unref(e.name);ne(e,n),t.isRef(e.name)&&t.watch(e.name,(async(n,r)=>{await t.nextTick(),re(e,r),ne(e,n),(h.value[r]||h.value[n])&&(L(r,void 0),ie(n)),await t.nextTick(),b(r)||E(d,r)}));const r=t.unref(e.errorMessage);r&&(null==w?void 0:w[n])!==r&&ie(n);delete w[n]},unregister:function(e){const n=t.unref(e.name),r=i.value[n],a=!!r&&D(r);re(e,n),t.nextTick((()=>{var u;const o=null!==(u=t.unref(e.keepValueOnUnmount))&&void 0!==u?u:t.unref(k),l=A(d,n);if(a&&(r===i.value[n]||!i.value[n])&&Array.isArray(l)&&!o){const r=l.findIndex((n=>O(n,t.unref(e.checkedValue))));if(r>-1){const e=[...l];e.splice(r,1),G(n,e,{force:!0})}}if(!b(n)){if(L(n,void 0),o)return;if(a&&!v(A(d,n)))return;E(d,n)}}))},setFieldErrorBag:m,validateField:ie,setFieldValue:G,setValues:X,setErrors:K,setFieldError:L,setFieldTouched:Y,setTouched:ee,resetForm:te,handleSubmit:oe,stageInitialValue:function(t,n,r=!1){j(d,t,n),le(t,n),r&&!(null==e?void 0:e.initialValues)&&j(I.value,t,Q(n))},unsetInitialValue:function(e){E(B.value,e)},setFieldInitialValue:le,useFieldModel:W};function D(e){return Array.isArray(e)}function z(e,t){return Array.isArray(e)?e.forEach(t):t(e)}function q(e){Object.values(i.value).forEach((t=>{t&&z(t,e)}))}function L(e,t){m(e,t)}function K(e){p(e)}function G(e,n,{force:r}={force:!1}){var u;const o=i.value[e],l=Q(n);if(!o)return void j(d,e,l);if(D(o)&&"checkbox"===(null===(u=o[0])||void 0===u?void 0:u.type)&&!Array.isArray(n)){const t=Q(M(A(d,e)||[],n,void 0));return void j(d,e,t)}let s=n;D(o)||"checkbox"!==o.type||r||a||(s=Q(M(A(d,e),n,t.unref(o.uncheckedValue)))),j(d,e,s)}function X(e){S(d).forEach((e=>{delete d[e]})),S(e).forEach((t=>{G(t,e[t])})),s.forEach((e=>e&&e.reset()))}function J(e){const{value:n}=Z(e);return t.watch(n,(()=>{b(t.unref(e))||ae({mode:"validated-only"})}),{deep:!0}),n}function W(e){return Array.isArray(e)?e.map(J):J(e)}function Y(e,t){const n=i.value[e];n&&z(n,(e=>e.setTouched(t)))}function ee(e){S(e).forEach((t=>{Y(t,!!e[t])}))}function te(e){a=!0,(null==e?void 0:e.values)?(C(e.values),X(null==e?void 0:e.values)):(C(I.value),X(I.value)),q((e=>e.resetField())),(null==e?void 0:e.touched)&&ee(e.touched),K((null==e?void 0:e.errors)||{}),l.value=(null==e?void 0:e.submitCount)||0,t.nextTick((()=>{a=!1}))}function ne(e,n){const r=t.markRaw(e),a=n;if(!i.value[a])return void(i.value[a]=r);const u=i.value[a];u&&!Array.isArray(u)&&(i.value[a]=[u]),i.value[a]=[...i.value[a],r]}function re(e,t){const n=t,r=i.value[n];if(r)if(D(r)||e.id!==r.id){if(D(r)){const t=r.findIndex((t=>t.id===e.id));if(-1===t)return;r.splice(t,1),r.length||delete i.value[n]}}else delete i.value[n]}async function ae(e){if(q((e=>e.meta.validated=!0)),$.validateSchema)return $.validateSchema((null==e?void 0:e.mode)||"force");const n=await Promise.all(Object.values(i.value).map((n=>{const r=Array.isArray(n)?n[0]:n;return r?r.validate(e).then((e=>({key:t.unref(r.name),valid:e.valid,errors:e.errors}))):Promise.resolve({key:"",valid:!0,errors:[]})}))),r={},a={};for(const e of n)r[e.key]={valid:e.valid,errors:e.errors},e.errors.length&&(a[e.key]=e.errors[0]);return{valid:n.every((e=>e.valid)),results:r,errors:a}}async function ie(e){const n=i.value[e];return n?Array.isArray(n)?n.map((e=>e.validate()))[0]:n.validate():(t.warn(`field with name ${e} was not found`),Promise.resolve({errors:[],valid:!0}))}function oe(e,t){return function(n){return n instanceof Event&&(n.preventDefault(),n.stopPropagation()),ee(S(i.value).reduce(((e,t)=>(e[t]=!0,e)),{})),u.value=!0,l.value++,ae().then((r=>{if(r.valid&&"function"==typeof e)return e(Q(d),{evt:n,setErrors:K,setFieldError:L,setTouched:ee,setFieldTouched:Y,setValues:X,setFieldValue:G,resetForm:te});r.valid||"function"!=typeof t||t({values:Q(d),evt:n,errors:r.errors,results:r.results})})).then((e=>(u.value=!1,e)),(e=>{throw u.value=!1,e}))}}function le(e,t){j(B.value,e,Q(t))}async function se(){const e=t.unref(P);if(!e)return{valid:!0,results:{},errors:{}};const n=c(e)?await async function(e,t){const n=await e.validate(t,{abortEarly:!1}).then((()=>[])).catch((e=>{if("ValidationError"!==e.name)throw e;return e.inner||[]})),r={},a={};for(const e of n){const t=e.errors;r[e.path]={valid:!t.length,errors:t},t.length&&(a[e.path]=t[0])}return{valid:!n.length,results:r,errors:a}}(e,d):await H(e,d,{names:V.value,bailsMap:F.value});return n}const de=oe(((e,{evt:t})=>{y(t)&&t.target.submit()}));return t.onMounted((()=>{(null==e?void 0:e.initialErrors)&&K(e.initialErrors),(null==e?void 0:e.initialTouched)&&ee(e.initialTouched),(null==e?void 0:e.validateOnMount)?ae():$.validateSchema&&$.validateSchema("silent")})),t.isRef(P)&&t.watch(P,(()=>{var e;null===(e=$.validateSchema)||void 0===e||e.call($,"validated-only")})),t.provide(o,$),{errors:h,meta:x,values:d,isSubmitting:u,submitCount:l,validate:ae,validateField:ie,handleReset:()=>te(),resetForm:te,handleSubmit:oe,submitForm:de,setFieldError:L,setErrors:K,setFieldValue:G,setValues:X,setFieldTouched:Y,setTouched:ee,useFieldModel:W}}const le=t.defineComponent({name:"Form",inheritAttrs:!1,props:{as:{type:String,default:"form"},validationSchema:{type:Object,default:void 0},initialValues:{type:Object,default:void 0},initialErrors:{type:Object,default:void 0},initialTouched:{type:Object,default:void 0},validateOnMount:{type:Boolean,default:!1},onSubmit:{type:Function,default:void 0},onInvalidSubmit:{type:Function,default:void 0},keepValues:{type:Boolean,default:!1}},setup(e,n){const r=t.toRef(e,"initialValues"),a=t.toRef(e,"validationSchema"),i=t.toRef(e,"keepValues"),{errors:u,values:o,meta:l,isSubmitting:s,submitCount:d,validate:c,validateField:f,handleReset:v,resetForm:p,handleSubmit:m,setErrors:h,setFieldError:b,setFieldValue:O,setValues:V,setFieldTouched:F,setTouched:A}=oe({validationSchema:a.value?a:void 0,initialValues:r,initialErrors:e.initialErrors,initialTouched:e.initialTouched,validateOnMount:e.validateOnMount,keepValuesOnUnmount:i}),j=m(((e,{evt:t})=>{y(t)&&t.target.submit()}),e.onInvalidSubmit),w=e.onSubmit?m(e.onSubmit,e.onInvalidSubmit):j;function E(e){g(e)&&e.preventDefault(),v(),"function"==typeof n.attrs.onReset&&n.attrs.onReset()}function S(t,n){return m("function"!=typeof t||n?n:t,e.onInvalidSubmit)(t)}function k(){return{meta:l.value,errors:u.value,values:o,isSubmitting:s.value,submitCount:d.value,validate:c,validateField:f,handleSubmit:S,handleReset:v,submitForm:j,setErrors:h,setFieldError:b,setFieldValue:O,setValues:V,setFieldTouched:F,setTouched:A,resetForm:p}}return n.expose({setFieldError:b,setErrors:h,setFieldValue:O,setValues:V,setFieldTouched:F,setTouched:A,resetForm:p,validate:c,validateField:f}),function(){const r="form"===e.as?e.as:t.resolveDynamicComponent(e.as),a=x(r,n,k);if(!e.as)return a;const i="form"===e.as?{novalidate:!0}:{};return t.h(r,Object.assign(Object.assign(Object.assign({},i),n.attrs),{onSubmit:w,onReset:E}),a)}}}),se=le;function de(e){const n=k(o,void 0),a=t.ref([]),i=()=>{},u={fields:a,remove:i,push:i,swap:i,insert:i,update:i,replace:i,prepend:i,move:i};if(!n)return B("FieldArray requires being a child of `<Form/>` or `useForm` being called before it. Array fields may not work correctly"),u;if(!t.unref(e))return B("FieldArray requires a field path to be provided, did you forget to pass the `name` prop?"),u;const l=n.fieldArrays.find((n=>t.unref(n.path)===t.unref(e)));if(l)return l;let s=0;function d(){const r=A(null==n?void 0:n.values,t.unref(e),[])||[];a.value=r.map(f),c()}function c(){const e=a.value.length;for(let t=0;t<e;t++){const n=a.value[t];n.isFirst=0===t,n.isLast=t===e-1}}function f(r){const i=s++,u={key:i,value:t.computed({get(){const u=A(null==n?void 0:n.values,t.unref(e),[])||[],o=a.value.findIndex((e=>e.key===i));return-1===o?r:u[o]},set(e){const t=a.value.findIndex((e=>e.key===i));-1!==t?v(t,e):B("Attempting to update a non-existent array item")}}),isFirst:!1,isLast:!1};return u}function v(r,a){const i=t.unref(e),u=A(null==n?void 0:n.values,i);!Array.isArray(u)||u.length-1<r||null==n||n.setFieldValue(`${i}[${r}]`,a)}d();const p={fields:a,remove:function(r){const i=t.unref(e),u=A(null==n?void 0:n.values,i);if(!u||!Array.isArray(u))return;const o=[...u];o.splice(r,1),null==n||n.unsetInitialValue(i+`[${r}]`),null==n||n.setFieldValue(i,o),a.value.splice(r,1),c()},push:function(i){const u=t.unref(e),o=A(null==n?void 0:n.values,u),l=r(o)?[]:o;if(!Array.isArray(l))return;const s=[...l];s.push(i),null==n||n.stageInitialValue(u+`[${s.length-1}]`,i),null==n||n.setFieldValue(u,s),a.value.push(f(i)),c()},swap:function(r,i){const u=t.unref(e),o=A(null==n?void 0:n.values,u);if(!Array.isArray(o)||!(r in o)||!(i in o))return;const l=[...o],s=[...a.value],d=l[r];l[r]=l[i],l[i]=d;const f=s[r];s[r]=s[i],s[i]=f,null==n||n.setFieldValue(u,l),a.value=s,c()},insert:function(r,i){const u=t.unref(e),o=A(null==n?void 0:n.values,u);if(!Array.isArray(o)||o.length<r)return;const l=[...o],s=[...a.value];l.splice(r,0,i),s.splice(r,0,f(i)),null==n||n.setFieldValue(u,l),a.value=s,c()},update:v,replace:function(r){const a=t.unref(e);null==n||n.setFieldValue(a,r),d()},prepend:function(i){const u=t.unref(e),o=A(null==n?void 0:n.values,u),l=r(o)?[]:o;if(!Array.isArray(l))return;const s=[i,...l];null==n||n.stageInitialValue(u+`[${s.length-1}]`,i),null==n||n.setFieldValue(u,s),a.value.unshift(f(i)),c()},move:function(i,u){const o=t.unref(e),l=A(null==n?void 0:n.values,o),s=r(l)?[]:[...l];if(!Array.isArray(l)||!(i in l)||!(u in l))return;const d=[...a.value],f=d[i];d.splice(i,1),d.splice(u,0,f);const v=s[i];s.splice(i,1),s.splice(u,0,v),null==n||n.setFieldValue(o,s),a.value=d,c()}};return n.fieldArrays.push(Object.assign({path:e,reset:d},p)),t.onBeforeUnmount((()=>{const r=n.fieldArrays.findIndex((n=>t.unref(n.path)===t.unref(e)));r>=0&&n.fieldArrays.splice(r,1)})),p}const ce=t.defineComponent({name:"FieldArray",inheritAttrs:!1,props:{name:{type:String,required:!0}},setup(e,n){const{push:r,remove:a,swap:i,insert:u,replace:o,update:l,prepend:s,move:d,fields:c}=de(t.toRef(e,"name"));function f(){return{fields:c.value,push:r,remove:a,swap:i,insert:u,update:l,replace:o,prepend:s,move:d}}return n.expose({push:r,remove:a,swap:i,insert:u,update:l,replace:o,prepend:s,move:d}),()=>x(void 0,n,f)}}),fe=t.defineComponent({name:"ErrorMessage",props:{as:{type:String,default:void 0},name:{type:String,required:!0}},setup(e,n){const r=t.inject(o,void 0),a=t.computed((()=>null==r?void 0:r.errors.value[e.name]));function i(){return{message:a.value}}return()=>{if(!a.value)return;const r=e.as?t.resolveDynamicComponent(e.as):e.as,u=x(r,n,i),o=Object.assign({role:"alert"},n.attrs);return r||!Array.isArray(u)&&u||!(null==u?void 0:u.length)?!Array.isArray(u)&&u||(null==u?void 0:u.length)?t.h(r,o,u):t.h(r||"span",o,a.value):u}}});e.ErrorMessage=fe,e.Field=ie,e.FieldArray=ce,e.FieldContextKey=l,e.Form=se,e.FormContextKey=o,e.IS_ABSENT=s,e.configure=L,e.defineRule=function(e,t){!function(e,t){if(n(t))return;throw new Error(`Extension Error: The validator '${e}' must be a function.`)}(e,t),u[e]=t},e.useField=ee,e.useFieldArray=de,e.useFieldError=function(e){const n=k(o),r=e?void 0:t.inject(l);return t.computed((()=>e?null==n?void 0:n.errors.value[t.unref(e)]:null==r?void 0:r.errorMessage.value))},e.useFieldValue=function(e){const n=k(o),r=e?void 0:t.inject(l);return t.computed((()=>e?A(null==n?void 0:n.values,t.unref(e)):t.unref(null==r?void 0:r.value)))},e.useForm=oe,e.useFormErrors=function(){const e=k(o);return e||B("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>(null==e?void 0:e.errors.value)||{}))},e.useFormValues=function(){const e=k(o);return e||B("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>(null==e?void 0:e.values)||{}))},e.useIsFieldDirty=function(e){const n=k(o);let r=e?void 0:t.inject(l);return t.computed((()=>(e&&(r=I(null==n?void 0:n.fieldsByPath.value[t.unref(e)])),r?r.meta.dirty:(B(`field with name ${t.unref(e)} was not found`),!1))))},e.useIsFieldTouched=function(e){const n=k(o);let r=e?void 0:t.inject(l);return t.computed((()=>(e&&(r=I(null==n?void 0:n.fieldsByPath.value[t.unref(e)])),r?r.meta.touched:(B(`field with name ${t.unref(e)} was not found`),!1))))},e.useIsFieldValid=function(e){const n=k(o);let r=e?void 0:t.inject(l);return t.computed((()=>(e&&(r=I(null==n?void 0:n.fieldsByPath.value[t.unref(e)])),r?r.meta.valid:(B(`field with name ${t.unref(e)} was not found`),!1))))},e.useIsFormDirty=function(){const e=k(o);return e||B("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>{var t;return null!==(t=null==e?void 0:e.meta.value.dirty)&&void 0!==t&&t}))},e.useIsFormTouched=function(){const e=k(o);return e||B("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>{var t;return null!==(t=null==e?void 0:e.meta.value.touched)&&void 0!==t&&t}))},e.useIsFormValid=function(){const e=k(o);return e||B("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>{var t;return null!==(t=null==e?void 0:e.meta.value.valid)&&void 0!==t&&t}))},e.useIsSubmitting=function(){const e=k(o);return e||B("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>{var t;return null!==(t=null==e?void 0:e.isSubmitting.value)&&void 0!==t&&t}))},e.useResetForm=function(){const e=k(o);return e||B("No vee-validate <Form /> or `useForm` was detected in the component tree"),function(t){if(e)return e.resetForm(t)}},e.useSubmitCount=function(){const e=k(o);return e||B("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>{var t;return null!==(t=null==e?void 0:e.submitCount.value)&&void 0!==t?t:0}))},e.useSubmitForm=function(e){const t=k(o);t||B("No vee-validate <Form /> or `useForm` was detected in the component tree");const n=t?t.handleSubmit(e):void 0;return function(e){if(n)return n(e)}},e.useValidateField=function(e){const n=k(o);let r=e?void 0:t.inject(l);return function(){return e&&(r=I(null==n?void 0:n.fieldsByPath.value[t.unref(e)])),r?r.validate():(B(`field with name ${t.unref(e)} was not found`),Promise.resolve({errors:[],valid:!0}))}},e.useValidateForm=function(){const e=k(o);return e||B("No vee-validate <Form /> or `useForm` was detected in the component tree"),function(){return e?e.validate():Promise.resolve({results:{},errors:{},valid:!0})}},e.validate=K,Object.defineProperty(e,"__esModule",{value:!0})}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vee-validate",
|
|
3
|
-
"version": "4.6.
|
|
3
|
+
"version": "4.6.8",
|
|
4
4
|
"description": "Form Validation for Vue.js",
|
|
5
5
|
"author": "Abdelrahman Awad <logaretm1@gmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -33,5 +33,5 @@
|
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@vue/devtools-api": "^6.1.4"
|
|
35
35
|
},
|
|
36
|
-
"gitHead": "
|
|
36
|
+
"gitHead": "b2bfdeeb6414db020c4c17dc00c5a445f0472f1d"
|
|
37
37
|
}
|