vee-validate 3.4.7 → 3.4.11

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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * vee-validate v3.4.7
2
+ * vee-validate v3.4.11
3
3
  * (c) 2021 Abdelrahman Awad
4
4
  * @license MIT
5
5
  */
@@ -67,7 +67,9 @@ var alpha$1 = {
67
67
  uk: /^[А-ЩЬЮЯЄІЇҐ]*$/i,
68
68
  ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,
69
69
  az: /^[A-ZÇƏĞİıÖŞÜ]*$/i,
70
- el: /^[Α-ώ]*$/i
70
+ el: /^[Α-ώ]*$/i,
71
+ ja: /^[A-Z\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\uFF00-\uFFEF\u4E00-\u9FAF]*$/i,
72
+ he: /^[A-Z\u05D0-\u05EA']*$/i
71
73
  };
72
74
  var alphaSpaces = {
73
75
  en: /^[A-Z\s]*$/i,
@@ -92,7 +94,9 @@ var alphaSpaces = {
92
94
  uk: /^[А-ЩЬЮЯЄІЇҐ\s]*$/i,
93
95
  ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ\s]*$/,
94
96
  az: /^[A-ZÇƏĞİıÖŞÜ\s]*$/i,
95
- el: /^[Α-ώ\s]*$/i
97
+ el: /^[Α-ώ\s]*$/i,
98
+ ja: /^[A-Z\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\uFF00-\uFFEF\u4E00-\u9FAF\s]*$/i,
99
+ he: /^[A-Z\u05D0-\u05EA'\s]*$/i
96
100
  };
97
101
  var alphanumeric = {
98
102
  en: /^[0-9A-Z]*$/i,
@@ -117,7 +121,9 @@ var alphanumeric = {
117
121
  uk: /^[0-9А-ЩЬЮЯЄІЇҐ]*$/i,
118
122
  ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,
119
123
  az: /^[0-9A-ZÇƏĞİıÖŞÜ]*$/i,
120
- el: /^[0-9Α-ώ]*$/i
124
+ el: /^[0-9Α-ώ]*$/i,
125
+ ja: /^[0-9A-Z\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\uFF00-\uFFEF\u4E00-\u9FAF]*$/i,
126
+ he: /^[0-9A-Z\u05D0-\u05EA']*$/i
121
127
  };
122
128
  var alphaDash = {
123
129
  en: /^[0-9A-Z_-]*$/i,
@@ -142,7 +148,9 @@ var alphaDash = {
142
148
  uk: /^[0-9А-ЩЬЮЯЄІЇҐ_-]*$/i,
143
149
  ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ_-]*$/,
144
150
  az: /^[0-9A-ZÇƏĞİıÖŞÜ_-]*$/i,
145
- el: /^[0-9Α-ώ_-]*$/i
151
+ el: /^[0-9Α-ώ_-]*$/i,
152
+ ja: /^[0-9A-Z\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\uFF00-\uFFEF\u4E00-\u9FAF_-]*$/i,
153
+ he: /^[0-9A-Z\u05D0-\u05EA'_-]*$/i
146
154
  };
147
155
 
148
156
  var validate$s = function (value, _a) {
@@ -1384,6 +1392,7 @@ function validate(value, rules, options) {
1384
1392
  });
1385
1393
  return [2 /*return*/, {
1386
1394
  valid: result.valid,
1395
+ required: result.required,
1387
1396
  errors: errors,
1388
1397
  failedRules: failedRules,
1389
1398
  regenerateMap: regenerateMap
@@ -1398,15 +1407,16 @@ function validate(value, rules, options) {
1398
1407
  function _validate(field, value, _a) {
1399
1408
  var _b = (_a === void 0 ? {} : _a).isInitial, isInitial = _b === void 0 ? false : _b;
1400
1409
  return __awaiter(this, void 0, void 0, function () {
1401
- var _c, shouldSkip, errors, rules, length, i, rule, result;
1410
+ var _c, shouldSkip, required, errors, rules, length, i, rule, result;
1402
1411
  return __generator(this, function (_d) {
1403
1412
  switch (_d.label) {
1404
1413
  case 0: return [4 /*yield*/, _shouldSkip(field, value)];
1405
1414
  case 1:
1406
- _c = _d.sent(), shouldSkip = _c.shouldSkip, errors = _c.errors;
1415
+ _c = _d.sent(), shouldSkip = _c.shouldSkip, required = _c.required, errors = _c.errors;
1407
1416
  if (shouldSkip) {
1408
1417
  return [2 /*return*/, {
1409
1418
  valid: !errors.length,
1419
+ required: required,
1410
1420
  errors: errors
1411
1421
  }];
1412
1422
  }
@@ -1431,6 +1441,7 @@ function _validate(field, value, _a) {
1431
1441
  if (field.bails) {
1432
1442
  return [2 /*return*/, {
1433
1443
  valid: false,
1444
+ required: required,
1434
1445
  errors: errors
1435
1446
  }];
1436
1447
  }
@@ -1441,6 +1452,7 @@ function _validate(field, value, _a) {
1441
1452
  return [3 /*break*/, 2];
1442
1453
  case 5: return [2 /*return*/, {
1443
1454
  valid: !errors.length,
1455
+ required: required,
1444
1456
  errors: errors
1445
1457
  }];
1446
1458
  }
@@ -1458,7 +1470,6 @@ function _shouldSkip(field, value) {
1458
1470
  errors = [];
1459
1471
  isEmpty = isNullOrUndefined(value) || value === '' || isEmptyArray(value);
1460
1472
  isEmptyAndOptional = isEmpty && field.skipIfEmpty;
1461
- isRequired = false;
1462
1473
  i = 0;
1463
1474
  _a.label = 1;
1464
1475
  case 1:
@@ -1473,8 +1484,8 @@ function _shouldSkip(field, value) {
1473
1484
  if (!isObject(result)) {
1474
1485
  throw new Error('Require rules has to return an object (see docs)');
1475
1486
  }
1476
- if (result.required) {
1477
- isRequired = true;
1487
+ if (result.required !== undefined) {
1488
+ isRequired = result.required;
1478
1489
  }
1479
1490
  if (!result.valid && result.error) {
1480
1491
  errors.push(result.error);
@@ -1482,6 +1493,7 @@ function _shouldSkip(field, value) {
1482
1493
  if (field.bails) {
1483
1494
  return [2 /*return*/, {
1484
1495
  shouldSkip: true,
1496
+ required: result.required,
1485
1497
  errors: errors
1486
1498
  }];
1487
1499
  }
@@ -1494,6 +1506,7 @@ function _shouldSkip(field, value) {
1494
1506
  if (isEmpty && !isRequired && !field.skipIfEmpty) {
1495
1507
  return [2 /*return*/, {
1496
1508
  shouldSkip: false,
1509
+ required: isRequired,
1497
1510
  errors: errors
1498
1511
  }];
1499
1512
  }
@@ -1501,12 +1514,14 @@ function _shouldSkip(field, value) {
1501
1514
  if (!field.bails && !isEmptyAndOptional) {
1502
1515
  return [2 /*return*/, {
1503
1516
  shouldSkip: false,
1517
+ required: isRequired,
1504
1518
  errors: errors
1505
1519
  }];
1506
1520
  }
1507
1521
  // skip if the field is not required and has an empty value.
1508
1522
  return [2 /*return*/, {
1509
1523
  shouldSkip: !isRequired && isEmpty,
1524
+ required: isRequired,
1510
1525
  errors: errors
1511
1526
  }];
1512
1527
  }
@@ -1652,7 +1667,11 @@ function fillTargetValues(params, crossTable) {
1652
1667
  return values;
1653
1668
  }
1654
1669
 
1655
- var es6 = function equal(a, b) {
1670
+ // do not edit .js files directly - edit src/index.jst
1671
+
1672
+
1673
+
1674
+ var fastDeepEqual = function equal(a, b) {
1656
1675
  if (a === b) return true;
1657
1676
 
1658
1677
  if (a && b && typeof a == 'object' && typeof b == 'object') {
@@ -1668,30 +1687,6 @@ var es6 = function equal(a, b) {
1668
1687
  }
1669
1688
 
1670
1689
 
1671
- if ((a instanceof Map) && (b instanceof Map)) {
1672
- if (a.size !== b.size) return false;
1673
- for (i of a.entries())
1674
- if (!b.has(i[0])) return false;
1675
- for (i of a.entries())
1676
- if (!equal(i[1], b.get(i[0]))) return false;
1677
- return true;
1678
- }
1679
-
1680
- if ((a instanceof Set) && (b instanceof Set)) {
1681
- if (a.size !== b.size) return false;
1682
- for (i of a.entries())
1683
- if (!b.has(i[0])) return false;
1684
- return true;
1685
- }
1686
-
1687
- if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {
1688
- length = a.length;
1689
- if (length != b.length) return false;
1690
- for (i = length; i-- !== 0;)
1691
- if (a[i] !== b[i]) return false;
1692
- return true;
1693
- }
1694
-
1695
1690
 
1696
1691
  if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
1697
1692
  if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
@@ -2202,7 +2197,7 @@ var ValidationProvider = Vue.extend({
2202
2197
  rules: {
2203
2198
  deep: true,
2204
2199
  handler: function (val, oldVal) {
2205
- this._needsValidation = !es6(val, oldVal);
2200
+ this._needsValidation = !fastDeepEqual(val, oldVal);
2206
2201
  }
2207
2202
  }
2208
2203
  },
@@ -2286,7 +2281,7 @@ var ValidationProvider = Vue.extend({
2286
2281
  return;
2287
2282
  }
2288
2283
  var resolved = getConfig().useConstraintAttrs ? resolveRules(input) : {};
2289
- if (!es6(_this._resolvedRules, resolved)) {
2284
+ if (!fastDeepEqual(_this._resolvedRules, resolved)) {
2290
2285
  _this._needsValidation = true;
2291
2286
  }
2292
2287
  if (isHTMLNode(input)) {
@@ -2319,7 +2314,7 @@ var ValidationProvider = Vue.extend({
2319
2314
  syncValue: function (v) {
2320
2315
  var value = normalizeEventValue(v);
2321
2316
  this.value = value;
2322
- this.flags.changed = !es6(this.initialValue, value);
2317
+ this.flags.changed = !fastDeepEqual(this.initialValue, value);
2323
2318
  },
2324
2319
  reset: function () {
2325
2320
  var _this = this;
@@ -2372,6 +2367,11 @@ var ValidationProvider = Vue.extend({
2372
2367
  valid: result.valid,
2373
2368
  invalid: !result.valid
2374
2369
  });
2370
+ if (result.required !== undefined) {
2371
+ this.setFlags({
2372
+ required: result.required
2373
+ });
2374
+ }
2375
2375
  return [2 /*return*/, result];
2376
2376
  }
2377
2377
  });
@@ -2391,11 +2391,16 @@ var ValidationProvider = Vue.extend({
2391
2391
  invalid: !!errors.length,
2392
2392
  failed: !!errors.length,
2393
2393
  validated: true,
2394
- changed: !es6(this.value, this.initialValue)
2394
+ changed: !fastDeepEqual(this.value, this.initialValue)
2395
2395
  });
2396
2396
  },
2397
2397
  registerField: function () {
2398
2398
  updateRenderingContextRefs(this);
2399
+ },
2400
+ checkComputesRequiredState: function () {
2401
+ var rules = __assign(__assign({}, this._resolvedRules), this.normalizedRules);
2402
+ var isRequired = Object.keys(rules).some(RuleContainer.isRequireRule);
2403
+ return isRequired;
2399
2404
  }
2400
2405
  }
2401
2406
  });
@@ -2496,10 +2501,15 @@ function watchCrossFieldDep(ctx, depName, withHooks) {
2496
2501
  }
2497
2502
  if (!isCallable(ctx._veeWatchers[depName]) && providers[depName]) {
2498
2503
  ctx._veeWatchers[depName] = providers[depName].$watch('value', function () {
2504
+ var isComputesRequired = ctx.checkComputesRequiredState();
2499
2505
  if (ctx.flags.validated) {
2500
2506
  ctx._needsValidation = true;
2501
2507
  ctx.validate();
2502
2508
  }
2509
+ // Validate dependent field silently if it has rules with computesRequired
2510
+ if (isComputesRequired && !ctx.flags.validated) {
2511
+ ctx.validateSilent();
2512
+ }
2503
2513
  });
2504
2514
  }
2505
2515
  }
@@ -2785,7 +2795,7 @@ function withValidation(component, mapProps) {
2785
2795
  return hoc;
2786
2796
  }
2787
2797
 
2788
- var version = '3.4.7';
2798
+ var version = '3.4.11';
2789
2799
  // Install all rules.
2790
2800
  var RulesAsList = Object.keys(Rules).map(function (key) { return ({ schema: Rules[key], name: key }); });
2791
2801
  RulesAsList.forEach(function (_a) {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * vee-validate v3.4.7
2
+ * vee-validate v3.4.11
3
3
  * (c) 2021 Abdelrahman Awad
4
4
  * @license MIT
5
5
  */
@@ -75,7 +75,9 @@
75
75
  uk: /^[А-ЩЬЮЯЄІЇҐ]*$/i,
76
76
  ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,
77
77
  az: /^[A-ZÇƏĞİıÖŞÜ]*$/i,
78
- el: /^[Α-ώ]*$/i
78
+ el: /^[Α-ώ]*$/i,
79
+ ja: /^[A-Z\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\uFF00-\uFFEF\u4E00-\u9FAF]*$/i,
80
+ he: /^[A-Z\u05D0-\u05EA']*$/i
79
81
  };
80
82
  var alphaSpaces = {
81
83
  en: /^[A-Z\s]*$/i,
@@ -100,7 +102,9 @@
100
102
  uk: /^[А-ЩЬЮЯЄІЇҐ\s]*$/i,
101
103
  ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ\s]*$/,
102
104
  az: /^[A-ZÇƏĞİıÖŞÜ\s]*$/i,
103
- el: /^[Α-ώ\s]*$/i
105
+ el: /^[Α-ώ\s]*$/i,
106
+ ja: /^[A-Z\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\uFF00-\uFFEF\u4E00-\u9FAF\s]*$/i,
107
+ he: /^[A-Z\u05D0-\u05EA'\s]*$/i
104
108
  };
105
109
  var alphanumeric = {
106
110
  en: /^[0-9A-Z]*$/i,
@@ -125,7 +129,9 @@
125
129
  uk: /^[0-9А-ЩЬЮЯЄІЇҐ]*$/i,
126
130
  ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,
127
131
  az: /^[0-9A-ZÇƏĞİıÖŞÜ]*$/i,
128
- el: /^[0-9Α-ώ]*$/i
132
+ el: /^[0-9Α-ώ]*$/i,
133
+ ja: /^[0-9A-Z\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\uFF00-\uFFEF\u4E00-\u9FAF]*$/i,
134
+ he: /^[0-9A-Z\u05D0-\u05EA']*$/i
129
135
  };
130
136
  var alphaDash = {
131
137
  en: /^[0-9A-Z_-]*$/i,
@@ -150,7 +156,9 @@
150
156
  uk: /^[0-9А-ЩЬЮЯЄІЇҐ_-]*$/i,
151
157
  ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ_-]*$/,
152
158
  az: /^[0-9A-ZÇƏĞİıÖŞÜ_-]*$/i,
153
- el: /^[0-9Α-ώ_-]*$/i
159
+ el: /^[0-9Α-ώ_-]*$/i,
160
+ ja: /^[0-9A-Z\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\uFF00-\uFFEF\u4E00-\u9FAF_-]*$/i,
161
+ he: /^[0-9A-Z\u05D0-\u05EA'_-]*$/i
154
162
  };
155
163
 
156
164
  var validate$s = function (value, _a) {
@@ -1392,6 +1400,7 @@
1392
1400
  });
1393
1401
  return [2 /*return*/, {
1394
1402
  valid: result.valid,
1403
+ required: result.required,
1395
1404
  errors: errors,
1396
1405
  failedRules: failedRules,
1397
1406
  regenerateMap: regenerateMap
@@ -1406,15 +1415,16 @@
1406
1415
  function _validate(field, value, _a) {
1407
1416
  var _b = (_a === void 0 ? {} : _a).isInitial, isInitial = _b === void 0 ? false : _b;
1408
1417
  return __awaiter(this, void 0, void 0, function () {
1409
- var _c, shouldSkip, errors, rules, length, i, rule, result;
1418
+ var _c, shouldSkip, required, errors, rules, length, i, rule, result;
1410
1419
  return __generator(this, function (_d) {
1411
1420
  switch (_d.label) {
1412
1421
  case 0: return [4 /*yield*/, _shouldSkip(field, value)];
1413
1422
  case 1:
1414
- _c = _d.sent(), shouldSkip = _c.shouldSkip, errors = _c.errors;
1423
+ _c = _d.sent(), shouldSkip = _c.shouldSkip, required = _c.required, errors = _c.errors;
1415
1424
  if (shouldSkip) {
1416
1425
  return [2 /*return*/, {
1417
1426
  valid: !errors.length,
1427
+ required: required,
1418
1428
  errors: errors
1419
1429
  }];
1420
1430
  }
@@ -1439,6 +1449,7 @@
1439
1449
  if (field.bails) {
1440
1450
  return [2 /*return*/, {
1441
1451
  valid: false,
1452
+ required: required,
1442
1453
  errors: errors
1443
1454
  }];
1444
1455
  }
@@ -1449,6 +1460,7 @@
1449
1460
  return [3 /*break*/, 2];
1450
1461
  case 5: return [2 /*return*/, {
1451
1462
  valid: !errors.length,
1463
+ required: required,
1452
1464
  errors: errors
1453
1465
  }];
1454
1466
  }
@@ -1466,7 +1478,6 @@
1466
1478
  errors = [];
1467
1479
  isEmpty = isNullOrUndefined(value) || value === '' || isEmptyArray(value);
1468
1480
  isEmptyAndOptional = isEmpty && field.skipIfEmpty;
1469
- isRequired = false;
1470
1481
  i = 0;
1471
1482
  _a.label = 1;
1472
1483
  case 1:
@@ -1481,8 +1492,8 @@
1481
1492
  if (!isObject(result)) {
1482
1493
  throw new Error('Require rules has to return an object (see docs)');
1483
1494
  }
1484
- if (result.required) {
1485
- isRequired = true;
1495
+ if (result.required !== undefined) {
1496
+ isRequired = result.required;
1486
1497
  }
1487
1498
  if (!result.valid && result.error) {
1488
1499
  errors.push(result.error);
@@ -1490,6 +1501,7 @@
1490
1501
  if (field.bails) {
1491
1502
  return [2 /*return*/, {
1492
1503
  shouldSkip: true,
1504
+ required: result.required,
1493
1505
  errors: errors
1494
1506
  }];
1495
1507
  }
@@ -1502,6 +1514,7 @@
1502
1514
  if (isEmpty && !isRequired && !field.skipIfEmpty) {
1503
1515
  return [2 /*return*/, {
1504
1516
  shouldSkip: false,
1517
+ required: isRequired,
1505
1518
  errors: errors
1506
1519
  }];
1507
1520
  }
@@ -1509,12 +1522,14 @@
1509
1522
  if (!field.bails && !isEmptyAndOptional) {
1510
1523
  return [2 /*return*/, {
1511
1524
  shouldSkip: false,
1525
+ required: isRequired,
1512
1526
  errors: errors
1513
1527
  }];
1514
1528
  }
1515
1529
  // skip if the field is not required and has an empty value.
1516
1530
  return [2 /*return*/, {
1517
1531
  shouldSkip: !isRequired && isEmpty,
1532
+ required: isRequired,
1518
1533
  errors: errors
1519
1534
  }];
1520
1535
  }
@@ -1660,7 +1675,11 @@
1660
1675
  return values;
1661
1676
  }
1662
1677
 
1663
- var es6 = function equal(a, b) {
1678
+ // do not edit .js files directly - edit src/index.jst
1679
+
1680
+
1681
+
1682
+ var fastDeepEqual = function equal(a, b) {
1664
1683
  if (a === b) return true;
1665
1684
 
1666
1685
  if (a && b && typeof a == 'object' && typeof b == 'object') {
@@ -1676,30 +1695,6 @@
1676
1695
  }
1677
1696
 
1678
1697
 
1679
- if ((a instanceof Map) && (b instanceof Map)) {
1680
- if (a.size !== b.size) return false;
1681
- for (i of a.entries())
1682
- if (!b.has(i[0])) return false;
1683
- for (i of a.entries())
1684
- if (!equal(i[1], b.get(i[0]))) return false;
1685
- return true;
1686
- }
1687
-
1688
- if ((a instanceof Set) && (b instanceof Set)) {
1689
- if (a.size !== b.size) return false;
1690
- for (i of a.entries())
1691
- if (!b.has(i[0])) return false;
1692
- return true;
1693
- }
1694
-
1695
- if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {
1696
- length = a.length;
1697
- if (length != b.length) return false;
1698
- for (i = length; i-- !== 0;)
1699
- if (a[i] !== b[i]) return false;
1700
- return true;
1701
- }
1702
-
1703
1698
 
1704
1699
  if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
1705
1700
  if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
@@ -2210,7 +2205,7 @@
2210
2205
  rules: {
2211
2206
  deep: true,
2212
2207
  handler: function (val, oldVal) {
2213
- this._needsValidation = !es6(val, oldVal);
2208
+ this._needsValidation = !fastDeepEqual(val, oldVal);
2214
2209
  }
2215
2210
  }
2216
2211
  },
@@ -2294,7 +2289,7 @@
2294
2289
  return;
2295
2290
  }
2296
2291
  var resolved = getConfig().useConstraintAttrs ? resolveRules(input) : {};
2297
- if (!es6(_this._resolvedRules, resolved)) {
2292
+ if (!fastDeepEqual(_this._resolvedRules, resolved)) {
2298
2293
  _this._needsValidation = true;
2299
2294
  }
2300
2295
  if (isHTMLNode(input)) {
@@ -2327,7 +2322,7 @@
2327
2322
  syncValue: function (v) {
2328
2323
  var value = normalizeEventValue(v);
2329
2324
  this.value = value;
2330
- this.flags.changed = !es6(this.initialValue, value);
2325
+ this.flags.changed = !fastDeepEqual(this.initialValue, value);
2331
2326
  },
2332
2327
  reset: function () {
2333
2328
  var _this = this;
@@ -2380,6 +2375,11 @@
2380
2375
  valid: result.valid,
2381
2376
  invalid: !result.valid
2382
2377
  });
2378
+ if (result.required !== undefined) {
2379
+ this.setFlags({
2380
+ required: result.required
2381
+ });
2382
+ }
2383
2383
  return [2 /*return*/, result];
2384
2384
  }
2385
2385
  });
@@ -2399,11 +2399,16 @@
2399
2399
  invalid: !!errors.length,
2400
2400
  failed: !!errors.length,
2401
2401
  validated: true,
2402
- changed: !es6(this.value, this.initialValue)
2402
+ changed: !fastDeepEqual(this.value, this.initialValue)
2403
2403
  });
2404
2404
  },
2405
2405
  registerField: function () {
2406
2406
  updateRenderingContextRefs(this);
2407
+ },
2408
+ checkComputesRequiredState: function () {
2409
+ var rules = __assign(__assign({}, this._resolvedRules), this.normalizedRules);
2410
+ var isRequired = Object.keys(rules).some(RuleContainer.isRequireRule);
2411
+ return isRequired;
2407
2412
  }
2408
2413
  }
2409
2414
  });
@@ -2504,10 +2509,15 @@
2504
2509
  }
2505
2510
  if (!isCallable(ctx._veeWatchers[depName]) && providers[depName]) {
2506
2511
  ctx._veeWatchers[depName] = providers[depName].$watch('value', function () {
2512
+ var isComputesRequired = ctx.checkComputesRequiredState();
2507
2513
  if (ctx.flags.validated) {
2508
2514
  ctx._needsValidation = true;
2509
2515
  ctx.validate();
2510
2516
  }
2517
+ // Validate dependent field silently if it has rules with computesRequired
2518
+ if (isComputesRequired && !ctx.flags.validated) {
2519
+ ctx.validateSilent();
2520
+ }
2511
2521
  });
2512
2522
  }
2513
2523
  }
@@ -2793,7 +2803,7 @@
2793
2803
  return hoc;
2794
2804
  }
2795
2805
 
2796
- var version = '3.4.7';
2806
+ var version = '3.4.11';
2797
2807
  // Install all rules.
2798
2808
  var RulesAsList = Object.keys(Rules).map(function (key) { return ({ schema: Rules[key], name: key }); });
2799
2809
  RulesAsList.forEach(function (_a) {