@acorex/components 3.0.3 → 3.0.4

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.
@@ -28,7 +28,7 @@ export class AXValidatableComponent extends AXBaseComponent {
28
28
  return this.__validation;
29
29
  }
30
30
  validate() {
31
- if (this.__validation !== undefined) {
31
+ if (this.__validation !== undefined && (this.__validation.rules || []).length > 0) {
32
32
  const result = this.__validation.validate(this[this.__valueField]);
33
33
  result.then(c => {
34
34
  if (c.result) {
@@ -46,40 +46,44 @@ export class AXValidatableComponent extends AXBaseComponent {
46
46
  }
47
47
  clearValidationStyle(element, clear = false) {
48
48
  var _a, _b, _c, _d, _e, _f, _g;
49
- const formGroup = element.closest('.form-group');
50
- const formItem = ((_a = formGroup) === null || _a === void 0 ? void 0 : _a.querySelector('.form-item')) || element.closest('.form-item') || element.querySelector('.form-item');
51
- ;
52
- const label = (_b = formGroup) === null || _b === void 0 ? void 0 : _b.querySelector('.form-group-label');
53
- const parent = ((_c = formItem) === null || _c === void 0 ? void 0 : _c.parentElement) || element.parentElement;
54
- (_d = formItem) === null || _d === void 0 ? void 0 : _d.classList.remove('success-state');
55
- (_e = formItem) === null || _e === void 0 ? void 0 : _e.classList.remove('error-state');
56
- //formItem?.classList.remove('required-state');
57
- if (!clear) {
58
- (_f = formItem) === null || _f === void 0 ? void 0 : _f.classList.add('success-state');
59
- }
60
- (_g = label) === null || _g === void 0 ? void 0 : _g.classList.remove('error-text');
61
- if (parent.querySelector('span.error-text')) {
62
- parent.removeChild(parent.querySelector('span.error-text'));
49
+ if (this.__validation !== undefined && (this.__validation.rules || []).length > 0) {
50
+ const formGroup = element.closest('.form-group');
51
+ const formItem = ((_a = formGroup) === null || _a === void 0 ? void 0 : _a.querySelector('.form-item')) || element.closest('.form-item') || element.querySelector('.form-item');
52
+ ;
53
+ const label = (_b = formGroup) === null || _b === void 0 ? void 0 : _b.querySelector('.form-group-label');
54
+ const parent = ((_c = formItem) === null || _c === void 0 ? void 0 : _c.parentElement) || element.parentElement;
55
+ (_d = formItem) === null || _d === void 0 ? void 0 : _d.classList.remove('success-state');
56
+ (_e = formItem) === null || _e === void 0 ? void 0 : _e.classList.remove('error-state');
57
+ //formItem?.classList.remove('required-state');
58
+ if (!clear) {
59
+ (_f = formItem) === null || _f === void 0 ? void 0 : _f.classList.add('success-state');
60
+ }
61
+ (_g = label) === null || _g === void 0 ? void 0 : _g.classList.remove('error-text');
62
+ if (parent.querySelector('span.error-text')) {
63
+ parent.removeChild(parent.querySelector('span.error-text'));
64
+ }
63
65
  }
64
66
  }
65
67
  applyValidationStyle(element, v) {
66
68
  var _a, _b, _c, _d, _e, _f;
67
- const formGroup = element.closest('.form-group');
68
- const formItem = ((_a = formGroup) === null || _a === void 0 ? void 0 : _a.querySelector('.form-item')) || element.closest('.form-item') || element.querySelector('.form-item');
69
- const label = (_b = formGroup) === null || _b === void 0 ? void 0 : _b.querySelector('.form-group-label');
70
- const parent = ((_c = formItem) === null || _c === void 0 ? void 0 : _c.parentElement) || element.parentElement;
71
- (_d = formItem) === null || _d === void 0 ? void 0 : _d.classList.add('error-state');
72
- (_e = formItem) === null || _e === void 0 ? void 0 : _e.classList.remove('success-state');
73
- if (parent.querySelector('span.error-text')) {
74
- parent.removeChild(parent.querySelector('span.error-text'));
75
- }
76
- if (this.__validation.showMessage) {
77
- const span = document.createElement('span');
78
- span.innerText = v.message;
79
- span.classList.add('ax', 'error-text');
80
- parent.appendChild(span);
69
+ if (this.__validation !== undefined && (this.__validation.rules || []).length > 0) {
70
+ const formGroup = element.closest('.form-group');
71
+ const formItem = ((_a = formGroup) === null || _a === void 0 ? void 0 : _a.querySelector('.form-item')) || element.closest('.form-item') || element.querySelector('.form-item');
72
+ const label = (_b = formGroup) === null || _b === void 0 ? void 0 : _b.querySelector('.form-group-label');
73
+ const parent = ((_c = formItem) === null || _c === void 0 ? void 0 : _c.parentElement) || element.parentElement;
74
+ (_d = formItem) === null || _d === void 0 ? void 0 : _d.classList.add('error-state');
75
+ (_e = formItem) === null || _e === void 0 ? void 0 : _e.classList.remove('success-state');
76
+ if (parent.querySelector('span.error-text')) {
77
+ parent.removeChild(parent.querySelector('span.error-text'));
78
+ }
79
+ if (this.__validation.showMessage) {
80
+ const span = document.createElement('span');
81
+ span.innerText = v.message;
82
+ span.classList.add('ax', 'error-text');
83
+ parent.appendChild(span);
84
+ }
85
+ (_f = label) === null || _f === void 0 ? void 0 : _f.classList.add('error-text');
81
86
  }
82
- (_f = label) === null || _f === void 0 ? void 0 : _f.classList.add('error-text');
83
87
  }
84
88
  }
85
89
  __decorate([
@@ -309,4 +313,4 @@ __decorate([
309
313
  Input(),
310
314
  __metadata("design:type", Boolean)
311
315
  ], AXBaseDropdownComponent.prototype, "showDropDownButton", void 0);
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi9iYXNlL2VsZW1lbnQuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBcUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUF5QixZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV6RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBd0IsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJcEUsTUFBTSxPQUFnQixlQUFlO0lBRW5DO1FBREEsUUFBRyxHQUFXLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUVsQyxDQUFDO0NBQ0Y7QUFHRCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsWUFBaUI7Q0FFNUQ7QUEyQkQsTUFBTSxPQUFnQixzQkFBdUIsU0FBUSxlQUFlO0lBQXBFOztRQUVVLGlCQUFZLEdBQVcsT0FBTyxDQUFDO1FBTXZDLGFBQVEsR0FBVyxDQUFDLENBQUM7SUEwRXZCLENBQUM7SUF4RVcsY0FBYyxDQUN0QixVQUFzQixFQUN0QixVQUFrQixFQUNsQixVQUF3QjtRQUV4QixJQUFJLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDaEQsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUM7UUFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUM7UUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUNyQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9B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TUFBTSxPQUFnQix1QkFBd0IsU0FBUSxlQUFlO0lBQXJFOztRQVNFLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFHMUIsYUFBUSxHQUFXLENBQUMsQ0FBQztRQUdyQix1QkFBa0IsR0FBWSxJQUFJLENBQUM7SUFJckMsQ0FBQztDQUFBO0FBaEJDO0lBREMsS0FBSyxFQUFFOzt5REFDVTtBQUdsQjtJQURDLEtBQUssRUFBRTs7cURBQ1k7QUFHcEI7SUFEQyxLQUFLLEVBQUU7OzBEQUNrQjtBQUcxQjtJQURDLEtBQUssRUFBRTs7eURBQ2E7QUFHckI7SUFEQyxLQUFLLEVBQUU7O21FQUMyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgQ29udGVudENoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYVmFsaWRhdGlvbkNvbXBvbmVudCwgQVhWYWxpZGF0aW9uIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi92YWxpZGF0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24uY2xhc3MnO1xyXG5pbXBvcnQgeyBBWEh0bWxVdGlsIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcclxuaW1wb3J0IHsgQVhFdmVudCwgQVhIdG1sRXZlbnQsIEFYVmFsdWVFdmVudCB9IGZyb20gJy4vZXZlbnRzLmNsYXNzJztcclxuXHJcbmV4cG9ydCB0eXBlIEFYRWxlbWVudFNpemUgPSAneHMnIHwgJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWEJhc2VDb21wb25lbnQge1xyXG4gIHVpZDogc3RyaW5nID0gQVhIdG1sVXRpbC5nZXRVSUQoKTtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcbn1cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgQVhCYXNlSW5wdXRDaGFuZ2VFdmVudCBleHRlbmRzIEFYVmFsdWVFdmVudDxhbnk+IHtcclxuICBpc1VzZXJDaGFuZ2U/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYQmFzZVNpemFibGVDb21wb25lbnQge1xyXG4gIHNpemU6IEFYRWxlbWVudFNpemU7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQVhCYXNlSW50ZXJhY3RpdmVDb21wb25lbnQge1xyXG4gIGRpc2FibGVkOiBib29sZWFuO1xyXG4gIHRhYkluZGV4OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQVhCYXNlSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VJbnRlcmFjdGl2ZUNvbXBvbmVudCB7XHJcbiAgcmVhZG9ubHk6IGJvb2xlYW47XHJcbiAgZm9jdXMoKTogdm9pZDtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQVhCYXNlVmFsdWVDb21wb25lbnQ8VD4gZXh0ZW5kcyBBWEJhc2VJbnB1dENvbXBvbmVudCB7XHJcbiAgb25WYWx1ZUNoYW5nZWQ/OiBFdmVudEVtaXR0ZXI8QVhWYWx1ZUV2ZW50PFQ+PjtcclxuICB2YWx1ZUNoYW5nZT86IEV2ZW50RW1pdHRlcjxUPjtcclxuICB2YWx1ZTogVDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBWEJhc2VDbGlja2FibGVDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VJbnRlcmFjdGl2ZUNvbXBvbmVudCB7XHJcbiAgY2xpY2s6IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxNb3VzZUV2ZW50Pj47XHJcbn1cclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFZhbGlkYXRhYmxlQ29tcG9uZW50IGV4dGVuZHMgQVhCYXNlQ29tcG9uZW50IHtcclxuXHJcbiAgcHJpdmF0ZSBfX3ZhbHVlRmllbGQ6IHN0cmluZyA9ICd2YWx1ZSc7XHJcbiAgcHJpdmF0ZSBfX25hdGl2ZUVsZW1lbnQ6IEhUTUxFbGVtZW50O1xyXG4gIHByaXZhdGUgX192YWxpZGF0aW9uOiBBWFZhbGlkYXRpb247XHJcblxyXG5cclxuICBASW5wdXQoKVxyXG4gIHRhYkluZGV4OiBudW1iZXIgPSAwO1xyXG5cclxuICBwcm90ZWN0ZWQgaW5pdFZhbGlkYXRpb24oXHJcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgdmFsdWVGaWVsZDogc3RyaW5nLFxyXG4gICAgdmFsaWRhdGlvbjogQVhWYWxpZGF0aW9uXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9fbmF0aXZlRWxlbWVudCA9IGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMuX192YWx1ZUZpZWxkID0gdmFsdWVGaWVsZDtcclxuICAgIHRoaXMuX192YWxpZGF0aW9uID0gdmFsaWRhdGlvbjtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpc1t0aGlzLl9fdmFsdWVGaWVsZF1cclxuICAgIGlmICgoIUFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlKSB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCkpXHJcbiAgICAgIHRoaXMudmFsaWRhdGUoKTtcclxuICB9XHJcblxyXG4gIGdldCB2YWxpZGF0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX192YWxpZGF0aW9uO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUoKTogUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0PiB7XHJcbiAgICBpZiAodGhpcy5fX3ZhbGlkYXRpb24gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9fdmFsaWRhdGlvbi52YWxpZGF0ZSh0aGlzW3RoaXMuX192YWx1ZUZpZWxkXSk7XHJcbiAgICAgIHJlc3VsdC50aGVuKGMgPT4ge1xyXG4gICAgICAgIGlmIChjLnJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5jbGVhclZhbGlkYXRpb25TdHlsZSh0aGlzLl9fbmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5hcHBseVZhbGlkYXRpb25TdHlsZSh0aGlzLl9fbmF0aXZlRWxlbWVudCwgYyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzdWx0OiB0cnVlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHByb3RlY3RlZCBjbGVhclZhbGlkYXRpb25TdHlsZShlbGVtZW50OiBIVE1MRWxlbWVudCwgY2xlYXI6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gZWxlbWVudC5jbG9zZXN0KCcuZm9ybS1ncm91cCcpO1xyXG4gICAgY29uc3QgZm9ybUl0ZW0gPSBmb3JtR3JvdXA/LnF1ZXJ5U2VsZWN0b3IoJy5mb3JtLWl0ZW0nKSB8fCBlbGVtZW50LmNsb3Nlc3QoJy5mb3JtLWl0ZW0nKSB8fCBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mb3JtLWl0ZW0nKTs7XHJcbiAgICBjb25zdCBsYWJlbCA9IGZvcm1Hcm91cD8ucXVlcnlTZWxlY3RvcignLmZvcm0tZ3JvdXAtbGFiZWwnKTtcclxuICAgIGNvbnN0IHBhcmVudCA9IGZvcm1JdGVtPy5wYXJlbnRFbGVtZW50IHx8IGVsZW1lbnQucGFyZW50RWxlbWVudDtcclxuXHJcbiAgICBmb3JtSXRlbT8uY2xhc3NMaXN0LnJlbW92ZSgnc3VjY2Vzcy1zdGF0ZScpO1xyXG4gICAgZm9ybUl0ZW0/LmNsYXNzTGlzdC5yZW1vdmUoJ2Vycm9yLXN0YXRlJyk7XHJcbiAgICAvL2Zvcm1JdGVtPy5jbGFzc0xpc3QucmVtb3ZlKCdyZXF1aXJlZC1zdGF0ZScpO1xyXG4gICAgaWYgKCFjbGVhcikge1xyXG4gICAgICBmb3JtSXRlbT8uY2xhc3NMaXN0LmFkZCgnc3VjY2Vzcy1zdGF0ZScpO1xyXG4gICAgfVxyXG4gICAgbGFiZWw/LmNsYXNzTGlzdC5yZW1vdmUoJ2Vycm9yLXRleHQnKTtcclxuICAgIGlmIChwYXJlbnQucXVlcnlTZWxlY3Rvcignc3Bhbi5lcnJvci10ZXh0JykpIHtcclxuICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHBhcmVudC5xdWVyeVNlbGVjdG9yKCdzcGFuLmVycm9yLXRleHQnKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYXBwbHlWYWxpZGF0aW9uU3R5bGUoZWxlbWVudDogSFRNTEVsZW1lbnQsIHY6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZvcm1Hcm91cCA9IGVsZW1lbnQuY2xvc2VzdCgnLmZvcm0tZ3JvdXAnKTtcclxuICAgIGNvbnN0IGZvcm1JdGVtID0gZm9ybUdyb3VwPy5xdWVyeVNlbGVjdG9yKCcuZm9ybS1pdGVtJykgfHwgZWxlbWVudC5jbG9zZXN0KCcuZm9ybS1pdGVtJykgfHwgZWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZm9ybS1pdGVtJyk7XHJcbiAgICBjb25zdCBsYWJlbCA9IGZvcm1Hcm91cD8ucXVlcnlTZWxlY3RvcignLmZvcm0tZ3JvdXAtbGFiZWwnKTtcclxuICAgIGNvbnN0IHBhcmVudCA9IGZvcm1JdGVtPy5wYXJlbnRFbGVtZW50IHx8IGVsZW1lbnQucGFyZW50RWxlbWVudDtcclxuICAgIGZvcm1JdGVtPy5jbGFzc0xpc3QuYWRkKCdlcnJvci1zdGF0ZScpO1xyXG4gICAgZm9ybUl0ZW0/LmNsYXNzTGlzdC5yZW1vdmUoJ3N1Y2Nlc3Mtc3RhdGUnKTtcclxuICAgIGlmIChwYXJlbnQucXVlcnlTZWxlY3Rvcignc3Bhbi5lcnJvci10ZXh0JykpIHtcclxuICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHBhcmVudC5xdWVyeVNlbGVjdG9yKCdzcGFuLmVycm9yLXRleHQnKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fX3ZhbGlkYXRpb24uc2hvd01lc3NhZ2UpIHtcclxuICAgICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgICAgc3Bhbi5pbm5lclRleHQgPSB2Lm1lc3NhZ2U7XHJcbiAgICAgIHNwYW4uY2xhc3NMaXN0LmFkZCgnYXgnLCAnZXJyb3ItdGV4dCcpO1xyXG4gICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoc3Bhbik7XHJcbiAgICB9XHJcbiAgICBsYWJlbD8uY2xhc3NMaXN0LmFkZCgnZXJyb3ItdGV4dCcpO1xyXG4gIH1cclxufVxyXG5cclxuXHJcblxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYQmFzZVRleHRDb21wb25lbnQgZXh0ZW5kcyBBWFZhbGlkYXRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQVhCYXNlU2l6YWJsZUNvbXBvbmVudCwgQVhCYXNlVmFsdWVDb21wb25lbnQ8c3RyaW5nPiB7XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmlucHV0KSB7XHJcbiAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5vbmtleXVwID0gKGUpID0+IHtcclxuICAgICAgICB0aGlzLnVzZXJDaGFuZ2UgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSAoZS50YXJnZXQgYXMgYW55KS52YWx1ZTtcclxuICAgICAgICB0aGlzLm9ua2V5LmVtaXQoZSk7XHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5vbmtleWRvd24gPSAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMudXNlckNoYW5nZSA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMudmFsdWUgPSAoZS50YXJnZXQgYXMgYW55KS52YWx1ZTtcclxuICAgICAgICB0aGlzLm9ua2V5LmVtaXQoZSk7XHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5vbmtleXByZXNzID0gKGUpID0+IHtcclxuICAgICAgICB0aGlzLnVzZXJDaGFuZ2UgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLnZhbHVlID0gKGUudGFyZ2V0IGFzIGFueSkudmFsdWU7XHJcbiAgICAgICAgdGhpcy5vbmtleS5lbWl0KGUpO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFZhbGlkYXRpb24odGhpcy5yZWYsICd2YWx1ZScsIHRoaXMudmFsaWRhdGlvbik7XHJcbiAgfVxyXG5cclxuXHJcbiAgQElucHV0KClcclxuICB0YWJJbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIEBDb250ZW50Q2hpbGQoJ2lucHV0JywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBpbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChBWFZhbGlkYXRpb24sIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHJpdmF0ZSBfY29udGVudFZhbGlkYXRpb246IEFYVmFsaWRhdGlvbjtcclxuXHJcbiAgcHJpdmF0ZSBfdmFsaWRhdGlvbjogQVhWYWxpZGF0aW9uO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgdmFsaWRhdGlvbigpOiBBWFZhbGlkYXRpb24ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRpb24gPyB0aGlzLl92YWxpZGF0aW9uIDogdGhpcy5fY29udGVudFZhbGlkYXRpb247XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IHZhbGlkYXRpb24odjogQVhWYWxpZGF0aW9uKSB7XHJcbiAgICB0aGlzLl92YWxpZGF0aW9uID0gdjtcclxuICAgIHRoaXMuaW5pdFZhbGlkYXRpb24odGhpcy5yZWYsICd2YWx1ZScsIHYpO1xyXG4gIH1cclxuXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHRleHRBbGlnbjogJ3JpZ2h0JyB8ICdsZWZ0JyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNpemU6ICd4cycgfCAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnID0gJ21kJztcclxuXHJcbiAgQElucHV0KClcclxuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG5cclxuICB1c2VyQ2hhbmdlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcm90ZWN0ZWQgcmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9ua2V5OiBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBvbkJsdXI6IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxFdmVudD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxFdmVudD4+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8QVhIdG1sRXZlbnQ8RXZlbnQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhIdG1sRXZlbnQ8RXZlbnQ+PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgb25WYWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWEJhc2VJbnB1dENoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhCYXNlSW5wdXRDaGFuZ2VFdmVudD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cclxuICBASW5wdXQoKVxyXG4gIGljb246IHN0cmluZyA9ICcnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGFsbG93Q2xlYXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcbiAgcHVibGljIHNldCB2YWx1ZSh2OiBzdHJpbmcpIHtcclxuICAgIGlmICh2ICE9PSB0aGlzLl92YWx1ZSkge1xyXG4gICAgICBjb25zdCBvbGQgPSB0aGlzLl92YWx1ZTtcclxuICAgICAgdGhpcy5fdmFsdWUgPSB2O1xyXG5cclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHYpO1xyXG4gICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICB2YWx1ZTogdixcclxuICAgICAgICBvbGRWYWx1ZTogb2xkLFxyXG4gICAgICAgIGlzVXNlckNoYW5nZTogdGhpcy51c2VyQ2hhbmdlXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnVzZXJDaGFuZ2UgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jbGVhclZhbGlkYXRpb25TdHlsZSh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQsIHYgPyBmYWxzZSA6IHRydWUpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb2N1cygpIHtcclxuICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXIoKSB7XHJcbiAgICB0aGlzLnVzZXJDaGFuZ2UgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMudmFsdWUgPSBudWxsO1xyXG4gICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gbnVsbDtcclxuICB9XHJcblxyXG4gIGlzRm9jdXNlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBzZXRUZXh0QWxpZ24oKSB7XHJcbiAgICBpZiAodGhpcy50ZXh0QWxpZ24gPT09ICdsZWZ0Jykge1xyXG4gICAgICByZXR1cm4gJ3RleHQtbGVmdCc7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50ZXh0QWxpZ24gPT09ICdyaWdodCcpIHtcclxuICAgICAgcmV0dXJuICd0ZXh0LXJpZ2h0JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUlucHV0Qmx1cihlOiBFdmVudCkge1xyXG4gICAgdGhpcy5vbkJsdXIuZW1pdCh7XHJcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgIGh0bWxFdmVudDogZVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVJbnB1dEZvY3VzKGU6IEV2ZW50KSB7XHJcbiAgICB0aGlzLm9uRm9jdXMuZW1pdCh7XHJcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgIGh0bWxFdmVudDogZVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhCYXNlQnV0dG9uQ29tcG9uZW50IGV4dGVuZHMgQVhCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQVhCYXNlQ2xpY2thYmxlQ29tcG9uZW50LCBBWEJhc2VTaXphYmxlQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KClcclxuICBkaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgY2xpY2s6IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxNb3VzZUV2ZW50Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYSHRtbEV2ZW50PE1vdXNlRXZlbnQ+PigpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNpemU6IEFYRWxlbWVudFNpemU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdGFiSW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG59XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhCYXNlRHJvcGRvd25Db21wb25lbnQgZXh0ZW5kcyBBWEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBWEJhc2VJbnRlcmFjdGl2ZUNvbXBvbmVudCwgQVhCYXNlU2l6YWJsZUNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2l6ZTogQVhFbGVtZW50U2l6ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBmaXRQYXJlbnQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHRhYkluZGV4OiBudW1iZXIgPSAwO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dEcm9wRG93bkJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGFic3RyYWN0IGNsb3NlKCk7XHJcbiAgYWJzdHJhY3Qgb3BlbigpO1xyXG59XHJcbiJdfQ==
316
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi9iYXNlL2VsZW1lbnQuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBcUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUF5QixZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV6RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBd0IsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJcEUsTUFBTSxPQUFnQixlQUFlO0lBRW5DO1FBREEsUUFBRyxHQUFXLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUVsQyxDQUFDO0NBQ0Y7QUFHRCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsWUFBaUI7Q0FFNUQ7QUEyQkQsTUFBTSxPQUFnQixzQkFBdUIsU0FBUSxlQUFlO0lBQXBFOztRQUVVLGlCQUFZLEdBQVcsT0FBTyxDQUFDO1FBTXZDLGFBQVEsR0FBVyxDQUFDLENBQUM7SUE4RXZCLENBQUM7SUE1RVcsY0FBYyxDQUN0QixVQUFzQixFQUN0QixVQUFrQixFQUNsQixVQUF3QjtRQUV4QixJQUFJLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDaEQsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUM7UUFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUM7UUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUNyQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9B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Q1U7QUFHbEI7SUFEQyxLQUFLLEVBQUU7O3VEQUNvQjtBQUk1QjtJQURDLEtBQUssRUFBRTs7O2dEQUdQO0FBNERILE1BQU0sT0FBZ0IscUJBQXNCLFNBQVEsZUFBZTtJQUFuRTs7UUFNRSxVQUFLLEdBQTBDLElBQUksWUFBWSxFQUEyQixDQUFDO1FBTTNGLGFBQVEsR0FBVyxDQUFDLENBQUM7SUFFdkIsQ0FBQztDQUFBO0FBWEM7SUFEQyxLQUFLLEVBQUU7O3VEQUNVO0FBR2xCO0lBREMsTUFBTSxFQUFFOzhCQUNGLFlBQVk7b0RBQXdFO0FBRzNGO0lBREMsS0FBSyxFQUFFOzttREFDWTtBQUdwQjtJQURDLEtBQUssRUFBRTs7dURBQ2E7QUFJdkIsTUFBTSxPQUFnQix1QkFBd0IsU0FBUSxlQUFlO0lBQXJFOztRQVNFLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFHMUIsYUFBUSxHQUFXLENBQUMsQ0FBQztRQUdyQix1QkFBa0IsR0FBWSxJQUFJLENBQUM7SUFJckMsQ0FBQztDQUFBO0FBaEJDO0lBREMsS0FBSyxFQUFFOzt5REFDVTtBQUdsQjtJQURDLEtBQUssRUFBRTs7cURBQ1k7QUFHcEI7SUFEQyxLQUFLLEVBQUU7OzBEQUNrQjtBQUcxQjtJQURDLEtBQUssRUFBRTs7eURBQ2E7QUFHckI7SUFEQyxLQUFLLEVBQUU7O21FQUMyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgQ29udGVudENoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYVmFsaWRhdGlvbkNvbXBvbmVudCwgQVhWYWxpZGF0aW9uIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi92YWxpZGF0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24uY2xhc3MnO1xyXG5pbXBvcnQgeyBBWEh0bWxVdGlsIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcclxuaW1wb3J0IHsgQVhFdmVudCwgQVhIdG1sRXZlbnQsIEFYVmFsdWVFdmVudCB9IGZyb20gJy4vZXZlbnRzLmNsYXNzJztcclxuXHJcbmV4cG9ydCB0eXBlIEFYRWxlbWVudFNpemUgPSAneHMnIHwgJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWEJhc2VDb21wb25lbnQge1xyXG4gIHVpZDogc3RyaW5nID0gQVhIdG1sVXRpbC5nZXRVSUQoKTtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcbn1cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgQVhCYXNlSW5wdXRDaGFuZ2VFdmVudCBleHRlbmRzIEFYVmFsdWVFdmVudDxhbnk+IHtcclxuICBpc1VzZXJDaGFuZ2U/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYQmFzZVNpemFibGVDb21wb25lbnQge1xyXG4gIHNpemU6IEFYRWxlbWVudFNpemU7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQVhCYXNlSW50ZXJhY3RpdmVDb21wb25lbnQge1xyXG4gIGRpc2FibGVkOiBib29sZWFuO1xyXG4gIHRhYkluZGV4OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQVhCYXNlSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VJbnRlcmFjdGl2ZUNvbXBvbmVudCB7XHJcbiAgcmVhZG9ubHk6IGJvb2xlYW47XHJcbiAgZm9jdXMoKTogdm9pZDtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQVhCYXNlVmFsdWVDb21wb25lbnQ8VD4gZXh0ZW5kcyBBWEJhc2VJbnB1dENvbXBvbmVudCB7XHJcbiAgb25WYWx1ZUNoYW5nZWQ/OiBFdmVudEVtaXR0ZXI8QVhWYWx1ZUV2ZW50PFQ+PjtcclxuICB2YWx1ZUNoYW5nZT86IEV2ZW50RW1pdHRlcjxUPjtcclxuICB2YWx1ZTogVDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBWEJhc2VDbGlja2FibGVDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VJbnRlcmFjdGl2ZUNvbXBvbmVudCB7XHJcbiAgY2xpY2s6IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxNb3VzZUV2ZW50Pj47XHJcbn1cclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFZhbGlkYXRhYmxlQ29tcG9uZW50IGV4dGVuZHMgQVhCYXNlQ29tcG9uZW50IHtcclxuXHJcbiAgcHJpdmF0ZSBfX3ZhbHVlRmllbGQ6IHN0cmluZyA9ICd2YWx1ZSc7XHJcbiAgcHJpdmF0ZSBfX25hdGl2ZUVsZW1lbnQ6IEhUTUxFbGVtZW50O1xyXG4gIHByaXZhdGUgX192YWxpZGF0aW9uOiBBWFZhbGlkYXRpb247XHJcblxyXG5cclxuICBASW5wdXQoKVxyXG4gIHRhYkluZGV4OiBudW1iZXIgPSAwO1xyXG5cclxuICBwcm90ZWN0ZWQgaW5pdFZhbGlkYXRpb24oXHJcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgdmFsdWVGaWVsZDogc3RyaW5nLFxyXG4gICAgdmFsaWRhdGlvbjogQVhWYWxpZGF0aW9uXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9fbmF0aXZlRWxlbWVudCA9IGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMuX192YWx1ZUZpZWxkID0gdmFsdWVGaWVsZDtcclxuICAgIHRoaXMuX192YWxpZGF0aW9uID0gdmFsaWRhdGlvbjtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpc1t0aGlzLl9fdmFsdWVGaWVsZF1cclxuICAgIGlmICgoIUFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlKSB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCkpXHJcbiAgICAgIHRoaXMudmFsaWRhdGUoKTtcclxuICB9XHJcblxyXG4gIGdldCB2YWxpZGF0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX192YWxpZGF0aW9uO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUoKTogUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0PiB7XHJcbiAgICBpZiAodGhpcy5fX3ZhbGlkYXRpb24gIT09IHVuZGVmaW5lZCAmJiAodGhpcy5fX3ZhbGlkYXRpb24ucnVsZXMgfHwgW10pLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fX3ZhbGlkYXRpb24udmFsaWRhdGUodGhpc1t0aGlzLl9fdmFsdWVGaWVsZF0pO1xyXG4gICAgICByZXN1bHQudGhlbihjID0+IHtcclxuICAgICAgICBpZiAoYy5yZXN1bHQpIHtcclxuICAgICAgICAgIHRoaXMuY2xlYXJWYWxpZGF0aW9uU3R5bGUodGhpcy5fX25hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYXBwbHlWYWxpZGF0aW9uU3R5bGUodGhpcy5fX25hdGl2ZUVsZW1lbnQsIGMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IHJlc3VsdDogdHJ1ZSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwcm90ZWN0ZWQgY2xlYXJWYWxpZGF0aW9uU3R5bGUoZWxlbWVudDogSFRNTEVsZW1lbnQsIGNsZWFyOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGlmICh0aGlzLl9fdmFsaWRhdGlvbiAhPT0gdW5kZWZpbmVkICYmICh0aGlzLl9fdmFsaWRhdGlvbi5ydWxlcyB8fCBbXSkubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBmb3JtR3JvdXAgPSBlbGVtZW50LmNsb3Nlc3QoJy5mb3JtLWdyb3VwJyk7XHJcbiAgICAgIGNvbnN0IGZvcm1JdGVtID0gZm9ybUdyb3VwPy5xdWVyeVNlbGVjdG9yKCcuZm9ybS1pdGVtJykgfHwgZWxlbWVudC5jbG9zZXN0KCcuZm9ybS1pdGVtJykgfHwgZWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZm9ybS1pdGVtJyk7O1xyXG4gICAgICBjb25zdCBsYWJlbCA9IGZvcm1Hcm91cD8ucXVlcnlTZWxlY3RvcignLmZvcm0tZ3JvdXAtbGFiZWwnKTtcclxuICAgICAgY29uc3QgcGFyZW50ID0gZm9ybUl0ZW0/LnBhcmVudEVsZW1lbnQgfHwgZWxlbWVudC5wYXJlbnRFbGVtZW50O1xyXG5cclxuICAgICAgZm9ybUl0ZW0/LmNsYXNzTGlzdC5yZW1vdmUoJ3N1Y2Nlc3Mtc3RhdGUnKTtcclxuICAgICAgZm9ybUl0ZW0/LmNsYXNzTGlzdC5yZW1vdmUoJ2Vycm9yLXN0YXRlJyk7XHJcbiAgICAgIC8vZm9ybUl0ZW0/LmNsYXNzTGlzdC5yZW1vdmUoJ3JlcXVpcmVkLXN0YXRlJyk7XHJcbiAgICAgIGlmICghY2xlYXIpIHtcclxuICAgICAgICBmb3JtSXRlbT8uY2xhc3NMaXN0LmFkZCgnc3VjY2Vzcy1zdGF0ZScpO1xyXG4gICAgICB9XHJcbiAgICAgIGxhYmVsPy5jbGFzc0xpc3QucmVtb3ZlKCdlcnJvci10ZXh0Jyk7XHJcbiAgICAgIGlmIChwYXJlbnQucXVlcnlTZWxlY3Rvcignc3Bhbi5lcnJvci10ZXh0JykpIHtcclxuICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQocGFyZW50LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4uZXJyb3ItdGV4dCcpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFwcGx5VmFsaWRhdGlvblN0eWxlKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCB2OiBBWFZhbGlkYXRpb25SdWxlUmVzdWx0KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fX3ZhbGlkYXRpb24gIT09IHVuZGVmaW5lZCAmJiAodGhpcy5fX3ZhbGlkYXRpb24ucnVsZXMgfHwgW10pLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgZm9ybUdyb3VwID0gZWxlbWVudC5jbG9zZXN0KCcuZm9ybS1ncm91cCcpO1xyXG4gICAgICBjb25zdCBmb3JtSXRlbSA9IGZvcm1Hcm91cD8ucXVlcnlTZWxlY3RvcignLmZvcm0taXRlbScpIHx8IGVsZW1lbnQuY2xvc2VzdCgnLmZvcm0taXRlbScpIHx8IGVsZW1lbnQucXVlcnlTZWxlY3RvcignLmZvcm0taXRlbScpO1xyXG4gICAgICBjb25zdCBsYWJlbCA9IGZvcm1Hcm91cD8ucXVlcnlTZWxlY3RvcignLmZvcm0tZ3JvdXAtbGFiZWwnKTtcclxuICAgICAgY29uc3QgcGFyZW50ID0gZm9ybUl0ZW0/LnBhcmVudEVsZW1lbnQgfHwgZWxlbWVudC5wYXJlbnRFbGVtZW50O1xyXG4gICAgICBmb3JtSXRlbT8uY2xhc3NMaXN0LmFkZCgnZXJyb3Itc3RhdGUnKTtcclxuICAgICAgZm9ybUl0ZW0/LmNsYXNzTGlzdC5yZW1vdmUoJ3N1Y2Nlc3Mtc3RhdGUnKTtcclxuICAgICAgaWYgKHBhcmVudC5xdWVyeVNlbGVjdG9yKCdzcGFuLmVycm9yLXRleHQnKSkge1xyXG4gICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChwYXJlbnQucXVlcnlTZWxlY3Rvcignc3Bhbi5lcnJvci10ZXh0JykpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLl9fdmFsaWRhdGlvbi5zaG93TWVzc2FnZSkge1xyXG4gICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICAgICAgc3Bhbi5pbm5lclRleHQgPSB2Lm1lc3NhZ2U7XHJcbiAgICAgICAgc3Bhbi5jbGFzc0xpc3QuYWRkKCdheCcsICdlcnJvci10ZXh0Jyk7XHJcbiAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKHNwYW4pO1xyXG4gICAgICB9XHJcbiAgICAgIGxhYmVsPy5jbGFzc0xpc3QuYWRkKCdlcnJvci10ZXh0Jyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5cclxuXHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhCYXNlVGV4dENvbXBvbmVudCBleHRlbmRzIEFYVmFsaWRhdGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBWEJhc2VTaXphYmxlQ29tcG9uZW50LCBBWEJhc2VWYWx1ZUNvbXBvbmVudDxzdHJpbmc+IHtcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuaW5wdXQpIHtcclxuICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50Lm9ua2V5dXAgPSAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMudXNlckNoYW5nZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IChlLnRhcmdldCBhcyBhbnkpLnZhbHVlO1xyXG4gICAgICAgIHRoaXMub25rZXkuZW1pdChlKTtcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50Lm9ua2V5ZG93biA9IChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy51c2VyQ2hhbmdlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IChlLnRhcmdldCBhcyBhbnkpLnZhbHVlO1xyXG4gICAgICAgIHRoaXMub25rZXkuZW1pdChlKTtcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50Lm9ua2V5cHJlc3MgPSAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMudXNlckNoYW5nZSA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMudmFsdWUgPSAoZS50YXJnZXQgYXMgYW55KS52YWx1ZTtcclxuICAgICAgICB0aGlzLm9ua2V5LmVtaXQoZSk7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0VmFsaWRhdGlvbih0aGlzLnJlZiwgJ3ZhbHVlJywgdGhpcy52YWxpZGF0aW9uKTtcclxuICB9XHJcblxyXG5cclxuICBASW5wdXQoKVxyXG4gIHRhYkluZGV4OiBudW1iZXIgPSAwO1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgQENvbnRlbnRDaGlsZCgnaW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGlucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG5cclxuICBAQ29udGVudENoaWxkKEFYVmFsaWRhdGlvbiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBwcml2YXRlIF9jb250ZW50VmFsaWRhdGlvbjogQVhWYWxpZGF0aW9uO1xyXG5cclxuICBwcml2YXRlIF92YWxpZGF0aW9uOiBBWFZhbGlkYXRpb247XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCB2YWxpZGF0aW9uKCk6IEFYVmFsaWRhdGlvbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGlvbiA/IHRoaXMuX3ZhbGlkYXRpb24gOiB0aGlzLl9jb250ZW50VmFsaWRhdGlvbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgdmFsaWRhdGlvbih2OiBBWFZhbGlkYXRpb24pIHtcclxuICAgIHRoaXMuX3ZhbGlkYXRpb24gPSB2O1xyXG4gICAgdGhpcy5pbml0VmFsaWRhdGlvbih0aGlzLnJlZiwgJ3ZhbHVlJywgdik7XHJcbiAgfVxyXG5cclxuXHJcbiAgQElucHV0KClcclxuICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdGV4dEFsaWduOiAncmlnaHQnIHwgJ2xlZnQnIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2l6ZTogJ3hzJyB8ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCcgPSAnbWQnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcblxyXG4gIHVzZXJDaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByb3RlY3RlZCByZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgb25rZXk6IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9uQmx1cjogRXZlbnRFbWl0dGVyPEFYSHRtbEV2ZW50PEV2ZW50Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYSHRtbEV2ZW50PEV2ZW50Pj4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxFdmVudD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxFdmVudD4+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBvblZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYQmFzZUlucHV0Q2hhbmdlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWEJhc2VJbnB1dENoYW5nZUV2ZW50PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaWNvbjogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYWxsb3dDbGVhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF92YWx1ZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IHZhbHVlKHY6IHN0cmluZykge1xyXG4gICAgaWYgKHYgIT09IHRoaXMuX3ZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IG9sZCA9IHRoaXMuX3ZhbHVlO1xyXG4gICAgICB0aGlzLl92YWx1ZSA9IHY7XHJcblxyXG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodik7XHJcbiAgICAgIHRoaXMub25WYWx1ZUNoYW5nZWQuZW1pdCh7XHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIHZhbHVlOiB2LFxyXG4gICAgICAgIG9sZFZhbHVlOiBvbGQsXHJcbiAgICAgICAgaXNVc2VyQ2hhbmdlOiB0aGlzLnVzZXJDaGFuZ2VcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudXNlckNoYW5nZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNsZWFyVmFsaWRhdGlvblN0eWxlKHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudCwgdiA/IGZhbHNlIDogdHJ1ZSk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvY3VzKCkge1xyXG4gICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBjbGVhcigpIHtcclxuICAgIHRoaXMudXNlckNoYW5nZSA9IHRydWU7XHJcblxyXG4gICAgdGhpcy52YWx1ZSA9IG51bGw7XHJcbiAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgaXNGb2N1c2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudCA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcclxuICB9XHJcblxyXG4gIHNldFRleHRBbGlnbigpIHtcclxuICAgIGlmICh0aGlzLnRleHRBbGlnbiA9PT0gJ2xlZnQnKSB7XHJcbiAgICAgIHJldHVybiAndGV4dC1sZWZ0JztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnRleHRBbGlnbiA9PT0gJ3JpZ2h0Jykge1xyXG4gICAgICByZXR1cm4gJ3RleHQtcmlnaHQnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlSW5wdXRCbHVyKGU6IEV2ZW50KSB7XHJcbiAgICB0aGlzLm9uQmx1ci5lbWl0KHtcclxuICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudCxcclxuICAgICAgaHRtbEV2ZW50OiBlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUlucHV0Rm9jdXMoZTogRXZlbnQpIHtcclxuICAgIHRoaXMub25Gb2N1cy5lbWl0KHtcclxuICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudCxcclxuICAgICAgaHRtbEV2ZW50OiBlXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWEJhc2VCdXR0b25Db21wb25lbnQgZXh0ZW5kcyBBWEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBWEJhc2VDbGlja2FibGVDb21wb25lbnQsIEFYQmFzZVNpemFibGVDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGRpc2FibGVkOiBib29sZWFuO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBjbGljazogRXZlbnRFbWl0dGVyPEFYSHRtbEV2ZW50PE1vdXNlRXZlbnQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhIdG1sRXZlbnQ8TW91c2VFdmVudD4+KCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2l6ZTogQVhFbGVtZW50U2l6ZTtcclxuXHJcbiAgQElucHV0KClcclxuICB0YWJJbmRleDogbnVtYmVyID0gMDtcclxuXHJcbn1cclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWEJhc2VEcm9wZG93bkNvbXBvbmVudCBleHRlbmRzIEFYQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFYQmFzZUludGVyYWN0aXZlQ29tcG9uZW50LCBBWEJhc2VTaXphYmxlQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KClcclxuICBkaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KClcclxuICBzaXplOiBBWEVsZW1lbnRTaXplO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGZpdFBhcmVudDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdGFiSW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2hvd0Ryb3BEb3duQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgYWJzdHJhY3QgY2xvc2UoKTtcclxuICBhYnN0cmFjdCBvcGVuKCk7XHJcbn1cclxuIl19
@@ -43,7 +43,7 @@ var AXValidatableComponent = /** @class */ (function (_super) {
43
43
  });
44
44
  AXValidatableComponent.prototype.validate = function () {
45
45
  var _this = this;
46
- if (this.__validation !== undefined) {
46
+ if (this.__validation !== undefined && (this.__validation.rules || []).length > 0) {
47
47
  var result = this.__validation.validate(this[this.__valueField]);
48
48
  result.then(function (c) {
49
49
  if (c.result) {
@@ -62,40 +62,44 @@ var AXValidatableComponent = /** @class */ (function (_super) {
62
62
  AXValidatableComponent.prototype.clearValidationStyle = function (element, clear) {
63
63
  if (clear === void 0) { clear = false; }
64
64
  var _a, _b, _c, _d, _e, _f, _g;
65
- var formGroup = element.closest('.form-group');
66
- var formItem = ((_a = formGroup) === null || _a === void 0 ? void 0 : _a.querySelector('.form-item')) || element.closest('.form-item') || element.querySelector('.form-item');
67
- ;
68
- var label = (_b = formGroup) === null || _b === void 0 ? void 0 : _b.querySelector('.form-group-label');
69
- var parent = ((_c = formItem) === null || _c === void 0 ? void 0 : _c.parentElement) || element.parentElement;
70
- (_d = formItem) === null || _d === void 0 ? void 0 : _d.classList.remove('success-state');
71
- (_e = formItem) === null || _e === void 0 ? void 0 : _e.classList.remove('error-state');
72
- //formItem?.classList.remove('required-state');
73
- if (!clear) {
74
- (_f = formItem) === null || _f === void 0 ? void 0 : _f.classList.add('success-state');
75
- }
76
- (_g = label) === null || _g === void 0 ? void 0 : _g.classList.remove('error-text');
77
- if (parent.querySelector('span.error-text')) {
78
- parent.removeChild(parent.querySelector('span.error-text'));
65
+ if (this.__validation !== undefined && (this.__validation.rules || []).length > 0) {
66
+ var formGroup = element.closest('.form-group');
67
+ var formItem = ((_a = formGroup) === null || _a === void 0 ? void 0 : _a.querySelector('.form-item')) || element.closest('.form-item') || element.querySelector('.form-item');
68
+ ;
69
+ var label = (_b = formGroup) === null || _b === void 0 ? void 0 : _b.querySelector('.form-group-label');
70
+ var parent_1 = ((_c = formItem) === null || _c === void 0 ? void 0 : _c.parentElement) || element.parentElement;
71
+ (_d = formItem) === null || _d === void 0 ? void 0 : _d.classList.remove('success-state');
72
+ (_e = formItem) === null || _e === void 0 ? void 0 : _e.classList.remove('error-state');
73
+ //formItem?.classList.remove('required-state');
74
+ if (!clear) {
75
+ (_f = formItem) === null || _f === void 0 ? void 0 : _f.classList.add('success-state');
76
+ }
77
+ (_g = label) === null || _g === void 0 ? void 0 : _g.classList.remove('error-text');
78
+ if (parent_1.querySelector('span.error-text')) {
79
+ parent_1.removeChild(parent_1.querySelector('span.error-text'));
80
+ }
79
81
  }
80
82
  };
81
83
  AXValidatableComponent.prototype.applyValidationStyle = function (element, v) {
82
84
  var _a, _b, _c, _d, _e, _f;
83
- var formGroup = element.closest('.form-group');
84
- var formItem = ((_a = formGroup) === null || _a === void 0 ? void 0 : _a.querySelector('.form-item')) || element.closest('.form-item') || element.querySelector('.form-item');
85
- var label = (_b = formGroup) === null || _b === void 0 ? void 0 : _b.querySelector('.form-group-label');
86
- var parent = ((_c = formItem) === null || _c === void 0 ? void 0 : _c.parentElement) || element.parentElement;
87
- (_d = formItem) === null || _d === void 0 ? void 0 : _d.classList.add('error-state');
88
- (_e = formItem) === null || _e === void 0 ? void 0 : _e.classList.remove('success-state');
89
- if (parent.querySelector('span.error-text')) {
90
- parent.removeChild(parent.querySelector('span.error-text'));
91
- }
92
- if (this.__validation.showMessage) {
93
- var span = document.createElement('span');
94
- span.innerText = v.message;
95
- span.classList.add('ax', 'error-text');
96
- parent.appendChild(span);
85
+ if (this.__validation !== undefined && (this.__validation.rules || []).length > 0) {
86
+ var formGroup = element.closest('.form-group');
87
+ var formItem = ((_a = formGroup) === null || _a === void 0 ? void 0 : _a.querySelector('.form-item')) || element.closest('.form-item') || element.querySelector('.form-item');
88
+ var label = (_b = formGroup) === null || _b === void 0 ? void 0 : _b.querySelector('.form-group-label');
89
+ var parent_2 = ((_c = formItem) === null || _c === void 0 ? void 0 : _c.parentElement) || element.parentElement;
90
+ (_d = formItem) === null || _d === void 0 ? void 0 : _d.classList.add('error-state');
91
+ (_e = formItem) === null || _e === void 0 ? void 0 : _e.classList.remove('success-state');
92
+ if (parent_2.querySelector('span.error-text')) {
93
+ parent_2.removeChild(parent_2.querySelector('span.error-text'));
94
+ }
95
+ if (this.__validation.showMessage) {
96
+ var span = document.createElement('span');
97
+ span.innerText = v.message;
98
+ span.classList.add('ax', 'error-text');
99
+ parent_2.appendChild(span);
100
+ }
101
+ (_f = label) === null || _f === void 0 ? void 0 : _f.classList.add('error-text');
97
102
  }
98
- (_f = label) === null || _f === void 0 ? void 0 : _f.classList.add('error-text');
99
103
  };
100
104
  __decorate([
101
105
  Input(),
@@ -348,4 +352,4 @@ var AXBaseDropdownComponent = /** @class */ (function (_super) {
348
352
  return AXBaseDropdownComponent;
349
353
  }(AXBaseComponent));
350
354
  export { AXBaseDropdownComponent };
351
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi9iYXNlL2VsZW1lbnQuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBcUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUF5QixZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV6RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBd0IsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJcEU7SUFFRTtRQURBLFFBQUcsR0FBVyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFbEMsQ0FBQztJQUNILHNCQUFDO0FBQUQsQ0FBQyxBQUpELElBSUM7O0FBR0Q7SUFBNEMsMENBQWlCO0lBQTdEOztJQUVBLENBQUM7SUFBRCw2QkFBQztBQUFELENBQUMsQUFGRCxDQUE0QyxZQUFZLEdBRXZEOztBQTJCRDtJQUFxRCwwQ0FBZTtJQUFwRTtRQUFBLHFFQWtGQztRQWhGUyxrQkFBWSxHQUFXLE9BQU8sQ0FBQztRQU12QyxjQUFRLEdBQVcsQ0FBQyxDQUFDOztJQTBFdkIsQ0FBQztJQXhFVywrQ0FBYyxHQUF4QixVQUNFLFVBQXNCLEVBQ3RCLFVBQWtCLEVBQ2xCLFVBQXdCO1FBRXhCLElBQUksQ0FBQyxlQUFlLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQztRQUMvQixJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ3JDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFP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QixtQkFBbUI7QUFnS3pDO0lBQW9ELHlDQUFlO0lBQW5FO1FBQUEscUVBY0M7UUFSQyxXQUFLLEdBQTBDLElBQUksWUFBWSxFQUEyQixDQUFDO1FBTTNGLGNBQVEsR0FBVyxDQUFDLENBQUM7O0lBRXZCLENBQUM7SUFYQztRQURDLEtBQUssRUFBRTs7MkRBQ1U7SUFHbEI7UUFEQyxNQUFNLEVBQUU7a0NBQ0YsWUFBWTt3REFBd0U7SUFHM0Y7UUFEQyxLQUFLLEVBQUU7O3VEQUNZO0lBR3BCO1FBREMsS0FBSyxFQUFFOzsyREFDYTtJQUV2Qiw0QkFBQztDQUFBLEFBZEQsQ0FBb0QsZUFBZSxHQWNsRTtTQWRxQixxQkFBcUI7QUFnQjNDO0lBQXNELDJDQUFlO0lBQXJFO1FBQUEscUVBbUJDO1FBVkMsZUFBUyxHQUFZLElBQUksQ0FBQztRQUcxQixjQUFRLEdBQVcsQ0FBQyxDQUFDO1FBR3JCLHdCQUFrQixHQUFZLElBQUksQ0FBQzs7SUFJckMsQ0FBQztJQWhCQztRQURDLEtBQUssRUFBRTs7NkRBQ1U7SUFHbEI7UUFEQyxLQUFLLEVBQUU7O3lEQUNZO0lBR3BCO1FBREMsS0FBSyxFQUFFOzs4REFDa0I7SUFHMUI7UUFEQyxLQUFLLEVBQUU7OzZEQUNhO0lBR3JCO1FBREMsS0FBSyxFQUFFOzt1RUFDMkI7SUFJckMsOEJBQUM7Q0FBQSxBQW5CRCxDQUFzRCxlQUFlLEdBbUJwRTtTQW5CcUIsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDaGFuZ2VEZXRlY3RvclJlZiwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBDb250ZW50Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQVhWYWxpZGF0aW9uQ29tcG9uZW50LCBBWFZhbGlkYXRpb24gfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB9IGZyb20gJy4uL3ZhbGlkYXRpb24vdmFsaWRhdGlvbi5jbGFzcyc7XHJcbmltcG9ydCB7IEFYSHRtbFV0aWwgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xyXG5pbXBvcnQgeyBBWEV2ZW50LCBBWEh0bWxFdmVudCwgQVhWYWx1ZUV2ZW50IH0gZnJvbSAnLi9ldmVudHMuY2xhc3MnO1xyXG5cclxuZXhwb3J0IHR5cGUgQVhFbGVtZW50U2l6ZSA9ICd4cycgfCAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYQmFzZUNvbXBvbmVudCB7XHJcbiAgdWlkOiBzdHJpbmcgPSBBWEh0bWxVdGlsLmdldFVJRCgpO1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gIH1cclxufVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBBWEJhc2VJbnB1dENoYW5nZUV2ZW50IGV4dGVuZHMgQVhWYWx1ZUV2ZW50PGFueT4ge1xyXG4gIGlzVXNlckNoYW5nZT86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQVhCYXNlU2l6YWJsZUNvbXBvbmVudCB7XHJcbiAgc2l6ZTogQVhFbGVtZW50U2l6ZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBWEJhc2VJbnRlcmFjdGl2ZUNvbXBvbmVudCB7XHJcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgdGFiSW5kZXg6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBWEJhc2VJbnB1dENvbXBvbmVudCBleHRlbmRzIEFYQmFzZUludGVyYWN0aXZlQ29tcG9uZW50IHtcclxuICByZWFkb25seTogYm9vbGVhbjtcclxuICBmb2N1cygpOiB2b2lkO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBWEJhc2VWYWx1ZUNvbXBvbmVudDxUPiBleHRlbmRzIEFYQmFzZUlucHV0Q29tcG9uZW50IHtcclxuICBvblZhbHVlQ2hhbmdlZD86IEV2ZW50RW1pdHRlcjxBWFZhbHVlRXZlbnQ8VD4+O1xyXG4gIHZhbHVlQ2hhbmdlPzogRXZlbnRFbWl0dGVyPFQ+O1xyXG4gIHZhbHVlOiBUO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYQmFzZUNsaWNrYWJsZUNvbXBvbmVudCBleHRlbmRzIEFYQmFzZUludGVyYWN0aXZlQ29tcG9uZW50IHtcclxuICBjbGljazogRXZlbnRFbWl0dGVyPEFYSHRtbEV2ZW50PE1vdXNlRXZlbnQ+PjtcclxufVxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYVmFsaWRhdGFibGVDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VDb21wb25lbnQge1xyXG5cclxuICBwcml2YXRlIF9fdmFsdWVGaWVsZDogc3RyaW5nID0gJ3ZhbHVlJztcclxuICBwcml2YXRlIF9fbmF0aXZlRWxlbWVudDogSFRNTEVsZW1lbnQ7XHJcbiAgcHJpdmF0ZSBfX3ZhbGlkYXRpb246IEFYVmFsaWRhdGlvbjtcclxuXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdGFiSW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG4gIHByb3RlY3RlZCBpbml0VmFsaWRhdGlvbihcclxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICB2YWx1ZUZpZWxkOiBzdHJpbmcsXHJcbiAgICB2YWxpZGF0aW9uOiBBWFZhbGlkYXRpb25cclxuICApIHtcclxuICAgIHRoaXMuX19uYXRpdmVFbGVtZW50ID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5fX3ZhbHVlRmllbGQgPSB2YWx1ZUZpZWxkO1xyXG4gICAgdGhpcy5fX3ZhbGlkYXRpb24gPSB2YWxpZGF0aW9uO1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzW3RoaXMuX192YWx1ZUZpZWxkXVxyXG4gICAgaWYgKCghQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUpIHx8IChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSlcclxuICAgICAgdGhpcy52YWxpZGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZhbGlkYXRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fX3ZhbGlkYXRpb247XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZSgpOiBQcm9taXNlPEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQ+IHtcclxuICAgIGlmICh0aGlzLl9fdmFsaWRhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX192YWxpZGF0aW9uLnZhbGlkYXRlKHRoaXNbdGhpcy5fX3ZhbHVlRmllbGRdKTtcclxuICAgICAgcmVzdWx0LnRoZW4oYyA9PiB7XHJcbiAgICAgICAgaWYgKGMucmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLmNsZWFyVmFsaWRhdGlvblN0eWxlKHRoaXMuX19uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmFwcGx5VmFsaWRhdGlvblN0eWxlKHRoaXMuX19uYXRpdmVFbGVtZW50LCBjKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoeyByZXN1bHQ6IHRydWUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJvdGVjdGVkIGNsZWFyVmFsaWRhdGlvblN0eWxlKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjbGVhcjogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBmb3JtR3JvdXAgPSBlbGVtZW50LmNsb3Nlc3QoJy5mb3JtLWdyb3VwJyk7XHJcbiAgICBjb25zdCBmb3JtSXRlbSA9IGZvcm1Hcm91cD8ucXVlcnlTZWxlY3RvcignLmZvcm0taXRlbScpIHx8IGVsZW1lbnQuY2xvc2VzdCgnLmZvcm0taXRlbScpIHx8IGVsZW1lbnQucXVlcnlTZWxlY3RvcignLmZvcm0taXRlbScpOztcclxuICAgIGNvbnN0IGxhYmVsID0gZm9ybUdyb3VwPy5xdWVyeVNlbGVjdG9yKCcuZm9ybS1ncm91cC1sYWJlbCcpO1xyXG4gICAgY29uc3QgcGFyZW50ID0gZm9ybUl0ZW0/LnBhcmVudEVsZW1lbnQgfHwgZWxlbWVudC5wYXJlbnRFbGVtZW50O1xyXG5cclxuICAgIGZvcm1JdGVtPy5jbGFzc0xpc3QucmVtb3ZlKCdzdWNjZXNzLXN0YXRlJyk7XHJcbiAgICBmb3JtSXRlbT8uY2xhc3NMaXN0LnJlbW92ZSgnZXJyb3Itc3RhdGUnKTtcclxuICAgIC8vZm9ybUl0ZW0/LmNsYXNzTGlzdC5yZW1vdmUoJ3JlcXVpcmVkLXN0YXRlJyk7XHJcbiAgICBpZiAoIWNsZWFyKSB7XHJcbiAgICAgIGZvcm1JdGVtPy5jbGFzc0xpc3QuYWRkKCdzdWNjZXNzLXN0YXRlJyk7XHJcbiAgICB9XHJcbiAgICBsYWJlbD8uY2xhc3NMaXN0LnJlbW92ZSgnZXJyb3ItdGV4dCcpO1xyXG4gICAgaWYgKHBhcmVudC5xdWVyeVNlbGVjdG9yKCdzcGFuLmVycm9yLXRleHQnKSkge1xyXG4gICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQocGFyZW50LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4uZXJyb3ItdGV4dCcpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBhcHBseVZhbGlkYXRpb25TdHlsZShlbGVtZW50OiBIVE1MRWxlbWVudCwgdjogQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCk6IHZvaWQge1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gZWxlbWVudC5jbG9zZXN0KCcuZm9ybS1ncm91cCcpO1xyXG4gICAgY29uc3QgZm9ybUl0ZW0gPSBmb3JtR3JvdXA/LnF1ZXJ5U2VsZWN0b3IoJy5mb3JtLWl0ZW0nKSB8fCBlbGVtZW50LmNsb3Nlc3QoJy5mb3JtLWl0ZW0nKSB8fCBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mb3JtLWl0ZW0nKTtcclxuICAgIGNvbnN0IGxhYmVsID0gZm9ybUdyb3VwPy5xdWVyeVNlbGVjdG9yKCcuZm9ybS1ncm91cC1sYWJlbCcpO1xyXG4gICAgY29uc3QgcGFyZW50ID0gZm9ybUl0ZW0/LnBhcmVudEVsZW1lbnQgfHwgZWxlbWVudC5wYXJlbnRFbGVtZW50O1xyXG4gICAgZm9ybUl0ZW0/LmNsYXNzTGlzdC5hZGQoJ2Vycm9yLXN0YXRlJyk7XHJcbiAgICBmb3JtSXRlbT8uY2xhc3NMaXN0LnJlbW92ZSgnc3VjY2Vzcy1zdGF0ZScpO1xyXG4gICAgaWYgKHBhcmVudC5xdWVyeVNlbGVjdG9yKCdzcGFuLmVycm9yLXRleHQnKSkge1xyXG4gICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQocGFyZW50LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4uZXJyb3ItdGV4dCcpKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9fdmFsaWRhdGlvbi5zaG93TWVzc2FnZSkge1xyXG4gICAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgICBzcGFuLmlubmVyVGV4dCA9IHYubWVzc2FnZTtcclxuICAgICAgc3Bhbi5jbGFzc0xpc3QuYWRkKCdheCcsICdlcnJvci10ZXh0Jyk7XHJcbiAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChzcGFuKTtcclxuICAgIH1cclxuICAgIGxhYmVsPy5jbGFzc0xpc3QuYWRkKCdlcnJvci10ZXh0Jyk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuXHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhCYXNlVGV4dENvbXBvbmVudCBleHRlbmRzIEFYVmFsaWRhdGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBWEJhc2VTaXphYmxlQ29tcG9uZW50LCBBWEJhc2VWYWx1ZUNvbXBvbmVudDxzdHJpbmc+IHtcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuaW5wdXQpIHtcclxuICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50Lm9ua2V5dXAgPSAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMudXNlckNoYW5nZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IChlLnRhcmdldCBhcyBhbnkpLnZhbHVlO1xyXG4gICAgICAgIHRoaXMub25rZXkuZW1pdChlKTtcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50Lm9ua2V5ZG93biA9IChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy51c2VyQ2hhbmdlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IChlLnRhcmdldCBhcyBhbnkpLnZhbHVlO1xyXG4gICAgICAgIHRoaXMub25rZXkuZW1pdChlKTtcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50Lm9ua2V5cHJlc3MgPSAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMudXNlckNoYW5nZSA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMudmFsdWUgPSAoZS50YXJnZXQgYXMgYW55KS52YWx1ZTtcclxuICAgICAgICB0aGlzLm9ua2V5LmVtaXQoZSk7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0VmFsaWRhdGlvbih0aGlzLnJlZiwgJ3ZhbHVlJywgdGhpcy52YWxpZGF0aW9uKTtcclxuICB9XHJcblxyXG5cclxuICBASW5wdXQoKVxyXG4gIHRhYkluZGV4OiBudW1iZXIgPSAwO1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgQENvbnRlbnRDaGlsZCgnaW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGlucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG5cclxuICBAQ29udGVudENoaWxkKEFYVmFsaWRhdGlvbiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBwcml2YXRlIF9jb250ZW50VmFsaWRhdGlvbjogQVhWYWxpZGF0aW9uO1xyXG5cclxuICBwcml2YXRlIF92YWxpZGF0aW9uOiBBWFZhbGlkYXRpb247XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCB2YWxpZGF0aW9uKCk6IEFYVmFsaWRhdGlvbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGlvbiA/IHRoaXMuX3ZhbGlkYXRpb24gOiB0aGlzLl9jb250ZW50VmFsaWRhdGlvbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgdmFsaWRhdGlvbih2OiBBWFZhbGlkYXRpb24pIHtcclxuICAgIHRoaXMuX3ZhbGlkYXRpb24gPSB2O1xyXG4gICAgdGhpcy5pbml0VmFsaWRhdGlvbih0aGlzLnJlZiwgJ3ZhbHVlJywgdik7XHJcbiAgfVxyXG5cclxuXHJcbiAgQElucHV0KClcclxuICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdGV4dEFsaWduOiAncmlnaHQnIHwgJ2xlZnQnIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2l6ZTogJ3hzJyB8ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCcgPSAnbWQnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcblxyXG4gIHVzZXJDaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByb3RlY3RlZCByZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgb25rZXk6IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9uQmx1cjogRXZlbnRFbWl0dGVyPEFYSHRtbEV2ZW50PEV2ZW50Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYSHRtbEV2ZW50PEV2ZW50Pj4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxFdmVudD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxFdmVudD4+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBvblZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYQmFzZUlucHV0Q2hhbmdlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWEJhc2VJbnB1dENoYW5nZUV2ZW50PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaWNvbjogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYWxsb3dDbGVhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF92YWx1ZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IHZhbHVlKHY6IHN0cmluZykge1xyXG4gICAgaWYgKHYgIT09IHRoaXMuX3ZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IG9sZCA9IHRoaXMuX3ZhbHVlO1xyXG4gICAgICB0aGlzLl92YWx1ZSA9IHY7XHJcblxyXG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodik7XHJcbiAgICAgIHRoaXMub25WYWx1ZUNoYW5nZWQuZW1pdCh7XHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIHZhbHVlOiB2LFxyXG4gICAgICAgIG9sZFZhbHVlOiBvbGQsXHJcbiAgICAgICAgaXNVc2VyQ2hhbmdlOiB0aGlzLnVzZXJDaGFuZ2VcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudXNlckNoYW5nZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNsZWFyVmFsaWRhdGlvblN0eWxlKHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudCwgdiA/IGZhbHNlIDogdHJ1ZSk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvY3VzKCkge1xyXG4gICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBjbGVhcigpIHtcclxuICAgIHRoaXMudXNlckNoYW5nZSA9IHRydWU7XHJcblxyXG4gICAgdGhpcy52YWx1ZSA9IG51bGw7XHJcbiAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgaXNGb2N1c2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudCA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcclxuICB9XHJcblxyXG4gIHNldFRleHRBbGlnbigpIHtcclxuICAgIGlmICh0aGlzLnRleHRBbGlnbiA9PT0gJ2xlZnQnKSB7XHJcbiAgICAgIHJldHVybiAndGV4dC1sZWZ0JztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnRleHRBbGlnbiA9PT0gJ3JpZ2h0Jykge1xyXG4gICAgICByZXR1cm4gJ3RleHQtcmlnaHQnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlSW5wdXRCbHVyKGU6IEV2ZW50KSB7XHJcbiAgICB0aGlzLm9uQmx1ci5lbWl0KHtcclxuICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudCxcclxuICAgICAgaHRtbEV2ZW50OiBlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUlucHV0Rm9jdXMoZTogRXZlbnQpIHtcclxuICAgIHRoaXMub25Gb2N1cy5lbWl0KHtcclxuICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudCxcclxuICAgICAgaHRtbEV2ZW50OiBlXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWEJhc2VCdXR0b25Db21wb25lbnQgZXh0ZW5kcyBBWEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBWEJhc2VDbGlja2FibGVDb21wb25lbnQsIEFYQmFzZVNpemFibGVDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGRpc2FibGVkOiBib29sZWFuO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBjbGljazogRXZlbnRFbWl0dGVyPEFYSHRtbEV2ZW50PE1vdXNlRXZlbnQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhIdG1sRXZlbnQ8TW91c2VFdmVudD4+KCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2l6ZTogQVhFbGVtZW50U2l6ZTtcclxuXHJcbiAgQElucHV0KClcclxuICB0YWJJbmRleDogbnVtYmVyID0gMDtcclxuXHJcbn1cclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWEJhc2VEcm9wZG93bkNvbXBvbmVudCBleHRlbmRzIEFYQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFYQmFzZUludGVyYWN0aXZlQ29tcG9uZW50LCBBWEJhc2VTaXphYmxlQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KClcclxuICBkaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KClcclxuICBzaXplOiBBWEVsZW1lbnRTaXplO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGZpdFBhcmVudDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdGFiSW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2hvd0Ryb3BEb3duQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgYWJzdHJhY3QgY2xvc2UoKTtcclxuICBhYnN0cmFjdCBvcGVuKCk7XHJcbn1cclxuIl19
355
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi9iYXNlL2VsZW1lbnQuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBcUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUF5QixZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV6RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBd0IsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJcEU7SUFFRTtRQURBLFFBQUcsR0FBVyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFbEMsQ0FBQztJQUNILHNCQUFDO0FBQUQsQ0FBQyxBQUpELElBSUM7O0FBR0Q7SUFBNEMsMENBQWlCO0lBQTdEOztJQUVBLENBQUM7SUFBRCw2QkFBQztBQUFELENBQUMsQUFGRCxDQUE0QyxZQUFZLEdBRXZEOztBQTJCRDtJQUFxRCwwQ0FBZTtJQUFwRTtRQUFBLHFFQXNGQztRQXBGUyxrQkFBWSxHQUFXLE9BQU8sQ0FBQztRQU12QyxjQUFRLEdBQVcsQ0FBQyxDQUFDOztJQThFdkIsQ0FBQztJQTVFVywrQ0FBYyxHQUF4QixVQUNFLFVBQXNCLEVBQ3RCLFVBQWtCLEVBQ2xCLFVBQXdCO1FBRXhCLElBQUksQ0FBQyxlQUFlLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQztRQUMvQixJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ3JDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFP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RCxlQUFlLEdBbUJwRTtTQW5CcUIsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDaGFuZ2VEZXRlY3RvclJlZiwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBDb250ZW50Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQVhWYWxpZGF0aW9uQ29tcG9uZW50LCBBWFZhbGlkYXRpb24gfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB9IGZyb20gJy4uL3ZhbGlkYXRpb24vdmFsaWRhdGlvbi5jbGFzcyc7XHJcbmltcG9ydCB7IEFYSHRtbFV0aWwgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xyXG5pbXBvcnQgeyBBWEV2ZW50LCBBWEh0bWxFdmVudCwgQVhWYWx1ZUV2ZW50IH0gZnJvbSAnLi9ldmVudHMuY2xhc3MnO1xyXG5cclxuZXhwb3J0IHR5cGUgQVhFbGVtZW50U2l6ZSA9ICd4cycgfCAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYQmFzZUNvbXBvbmVudCB7XHJcbiAgdWlkOiBzdHJpbmcgPSBBWEh0bWxVdGlsLmdldFVJRCgpO1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gIH1cclxufVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBBWEJhc2VJbnB1dENoYW5nZUV2ZW50IGV4dGVuZHMgQVhWYWx1ZUV2ZW50PGFueT4ge1xyXG4gIGlzVXNlckNoYW5nZT86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQVhCYXNlU2l6YWJsZUNvbXBvbmVudCB7XHJcbiAgc2l6ZTogQVhFbGVtZW50U2l6ZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBWEJhc2VJbnRlcmFjdGl2ZUNvbXBvbmVudCB7XHJcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgdGFiSW5kZXg6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBWEJhc2VJbnB1dENvbXBvbmVudCBleHRlbmRzIEFYQmFzZUludGVyYWN0aXZlQ29tcG9uZW50IHtcclxuICByZWFkb25seTogYm9vbGVhbjtcclxuICBmb2N1cygpOiB2b2lkO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBWEJhc2VWYWx1ZUNvbXBvbmVudDxUPiBleHRlbmRzIEFYQmFzZUlucHV0Q29tcG9uZW50IHtcclxuICBvblZhbHVlQ2hhbmdlZD86IEV2ZW50RW1pdHRlcjxBWFZhbHVlRXZlbnQ8VD4+O1xyXG4gIHZhbHVlQ2hhbmdlPzogRXZlbnRFbWl0dGVyPFQ+O1xyXG4gIHZhbHVlOiBUO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYQmFzZUNsaWNrYWJsZUNvbXBvbmVudCBleHRlbmRzIEFYQmFzZUludGVyYWN0aXZlQ29tcG9uZW50IHtcclxuICBjbGljazogRXZlbnRFbWl0dGVyPEFYSHRtbEV2ZW50PE1vdXNlRXZlbnQ+PjtcclxufVxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYVmFsaWRhdGFibGVDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VDb21wb25lbnQge1xyXG5cclxuICBwcml2YXRlIF9fdmFsdWVGaWVsZDogc3RyaW5nID0gJ3ZhbHVlJztcclxuICBwcml2YXRlIF9fbmF0aXZlRWxlbWVudDogSFRNTEVsZW1lbnQ7XHJcbiAgcHJpdmF0ZSBfX3ZhbGlkYXRpb246IEFYVmFsaWRhdGlvbjtcclxuXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdGFiSW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG4gIHByb3RlY3RlZCBpbml0VmFsaWRhdGlvbihcclxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICB2YWx1ZUZpZWxkOiBzdHJpbmcsXHJcbiAgICB2YWxpZGF0aW9uOiBBWFZhbGlkYXRpb25cclxuICApIHtcclxuICAgIHRoaXMuX19uYXRpdmVFbGVtZW50ID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5fX3ZhbHVlRmllbGQgPSB2YWx1ZUZpZWxkO1xyXG4gICAgdGhpcy5fX3ZhbGlkYXRpb24gPSB2YWxpZGF0aW9uO1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzW3RoaXMuX192YWx1ZUZpZWxkXVxyXG4gICAgaWYgKCghQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUpIHx8IChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSlcclxuICAgICAgdGhpcy52YWxpZGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZhbGlkYXRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fX3ZhbGlkYXRpb247XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZSgpOiBQcm9taXNlPEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQ+IHtcclxuICAgIGlmICh0aGlzLl9fdmFsaWRhdGlvbiAhPT0gdW5kZWZpbmVkICYmICh0aGlzLl9fdmFsaWRhdGlvbi5ydWxlcyB8fCBbXSkubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9fdmFsaWRhdGlvbi52YWxpZGF0ZSh0aGlzW3RoaXMuX192YWx1ZUZpZWxkXSk7XHJcbiAgICAgIHJlc3VsdC50aGVuKGMgPT4ge1xyXG4gICAgICAgIGlmIChjLnJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5jbGVhclZhbGlkYXRpb25TdHlsZSh0aGlzLl9fbmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5hcHBseVZhbGlkYXRpb25TdHlsZSh0aGlzLl9fbmF0aXZlRWxlbWVudCwgYyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzdWx0OiB0cnVlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHByb3RlY3RlZCBjbGVhclZhbGlkYXRpb25TdHlsZShlbGVtZW50OiBIVE1MRWxlbWVudCwgY2xlYXI6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgaWYgKHRoaXMuX192YWxpZGF0aW9uICE9PSB1bmRlZmluZWQgJiYgKHRoaXMuX192YWxpZGF0aW9uLnJ1bGVzIHx8IFtdKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IGVsZW1lbnQuY2xvc2VzdCgnLmZvcm0tZ3JvdXAnKTtcclxuICAgICAgY29uc3QgZm9ybUl0ZW0gPSBmb3JtR3JvdXA/LnF1ZXJ5U2VsZWN0b3IoJy5mb3JtLWl0ZW0nKSB8fCBlbGVtZW50LmNsb3Nlc3QoJy5mb3JtLWl0ZW0nKSB8fCBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mb3JtLWl0ZW0nKTs7XHJcbiAgICAgIGNvbnN0IGxhYmVsID0gZm9ybUdyb3VwPy5xdWVyeVNlbGVjdG9yKCcuZm9ybS1ncm91cC1sYWJlbCcpO1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSBmb3JtSXRlbT8ucGFyZW50RWxlbWVudCB8fCBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XHJcblxyXG4gICAgICBmb3JtSXRlbT8uY2xhc3NMaXN0LnJlbW92ZSgnc3VjY2Vzcy1zdGF0ZScpO1xyXG4gICAgICBmb3JtSXRlbT8uY2xhc3NMaXN0LnJlbW92ZSgnZXJyb3Itc3RhdGUnKTtcclxuICAgICAgLy9mb3JtSXRlbT8uY2xhc3NMaXN0LnJlbW92ZSgncmVxdWlyZWQtc3RhdGUnKTtcclxuICAgICAgaWYgKCFjbGVhcikge1xyXG4gICAgICAgIGZvcm1JdGVtPy5jbGFzc0xpc3QuYWRkKCdzdWNjZXNzLXN0YXRlJyk7XHJcbiAgICAgIH1cclxuICAgICAgbGFiZWw/LmNsYXNzTGlzdC5yZW1vdmUoJ2Vycm9yLXRleHQnKTtcclxuICAgICAgaWYgKHBhcmVudC5xdWVyeVNlbGVjdG9yKCdzcGFuLmVycm9yLXRleHQnKSkge1xyXG4gICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChwYXJlbnQucXVlcnlTZWxlY3Rvcignc3Bhbi5lcnJvci10ZXh0JykpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYXBwbHlWYWxpZGF0aW9uU3R5bGUoZWxlbWVudDogSFRNTEVsZW1lbnQsIHY6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9fdmFsaWRhdGlvbiAhPT0gdW5kZWZpbmVkICYmICh0aGlzLl9fdmFsaWRhdGlvbi5ydWxlcyB8fCBbXSkubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBmb3JtR3JvdXAgPSBlbGVtZW50LmNsb3Nlc3QoJy5mb3JtLWdyb3VwJyk7XHJcbiAgICAgIGNvbnN0IGZvcm1JdGVtID0gZm9ybUdyb3VwPy5xdWVyeVNlbGVjdG9yKCcuZm9ybS1pdGVtJykgfHwgZWxlbWVudC5jbG9zZXN0KCcuZm9ybS1pdGVtJykgfHwgZWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZm9ybS1pdGVtJyk7XHJcbiAgICAgIGNvbnN0IGxhYmVsID0gZm9ybUdyb3VwPy5xdWVyeVNlbGVjdG9yKCcuZm9ybS1ncm91cC1sYWJlbCcpO1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSBmb3JtSXRlbT8ucGFyZW50RWxlbWVudCB8fCBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XHJcbiAgICAgIGZvcm1JdGVtPy5jbGFzc0xpc3QuYWRkKCdlcnJvci1zdGF0ZScpO1xyXG4gICAgICBmb3JtSXRlbT8uY2xhc3NMaXN0LnJlbW92ZSgnc3VjY2Vzcy1zdGF0ZScpO1xyXG4gICAgICBpZiAocGFyZW50LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4uZXJyb3ItdGV4dCcpKSB7XHJcbiAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHBhcmVudC5xdWVyeVNlbGVjdG9yKCdzcGFuLmVycm9yLXRleHQnKSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuX192YWxpZGF0aW9uLnNob3dNZXNzYWdlKSB7XHJcbiAgICAgICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgICAgICBzcGFuLmlubmVyVGV4dCA9IHYubWVzc2FnZTtcclxuICAgICAgICBzcGFuLmNsYXNzTGlzdC5hZGQoJ2F4JywgJ2Vycm9yLXRleHQnKTtcclxuICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoc3Bhbik7XHJcbiAgICAgIH1cclxuICAgICAgbGFiZWw/LmNsYXNzTGlzdC5hZGQoJ2Vycm9yLXRleHQnKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG5cclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWEJhc2VUZXh0Q29tcG9uZW50IGV4dGVuZHMgQVhWYWxpZGF0YWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFYQmFzZVNpemFibGVDb21wb25lbnQsIEFYQmFzZVZhbHVlQ29tcG9uZW50PHN0cmluZz4ge1xyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dCkge1xyXG4gICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQub25rZXl1cCA9IChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy51c2VyQ2hhbmdlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnZhbHVlID0gKGUudGFyZ2V0IGFzIGFueSkudmFsdWU7XHJcbiAgICAgICAgdGhpcy5vbmtleS5lbWl0KGUpO1xyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQub25rZXlkb3duID0gKGUpID0+IHtcclxuICAgICAgICB0aGlzLnVzZXJDaGFuZ2UgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLnZhbHVlID0gKGUudGFyZ2V0IGFzIGFueSkudmFsdWU7XHJcbiAgICAgICAgdGhpcy5vbmtleS5lbWl0KGUpO1xyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQub25rZXlwcmVzcyA9IChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy51c2VyQ2hhbmdlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IChlLnRhcmdldCBhcyBhbnkpLnZhbHVlO1xyXG4gICAgICAgIHRoaXMub25rZXkuZW1pdChlKTtcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRWYWxpZGF0aW9uKHRoaXMucmVmLCAndmFsdWUnLCB0aGlzLnZhbGlkYXRpb24pO1xyXG4gIH1cclxuXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdGFiSW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBAQ29udGVudENoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgaW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoQVhWYWxpZGF0aW9uLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHByaXZhdGUgX2NvbnRlbnRWYWxpZGF0aW9uOiBBWFZhbGlkYXRpb247XHJcblxyXG4gIHByaXZhdGUgX3ZhbGlkYXRpb246IEFYVmFsaWRhdGlvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IHZhbGlkYXRpb24oKTogQVhWYWxpZGF0aW9uIHtcclxuICAgIHJldHVybiB0aGlzLl92YWxpZGF0aW9uID8gdGhpcy5fdmFsaWRhdGlvbiA6IHRoaXMuX2NvbnRlbnRWYWxpZGF0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCB2YWxpZGF0aW9uKHY6IEFYVmFsaWRhdGlvbikge1xyXG4gICAgdGhpcy5fdmFsaWRhdGlvbiA9IHY7XHJcbiAgICB0aGlzLmluaXRWYWxpZGF0aW9uKHRoaXMucmVmLCAndmFsdWUnLCB2KTtcclxuICB9XHJcblxyXG5cclxuICBASW5wdXQoKVxyXG4gIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICB0ZXh0QWxpZ246ICdyaWdodCcgfCAnbGVmdCcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQElucHV0KClcclxuICBzaXplOiAneHMnIHwgJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJyA9ICdtZCc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcclxuXHJcbiAgdXNlckNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJvdGVjdGVkIHJlZjogRWxlbWVudFJlZikge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBvbmtleTogRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgb25CbHVyOiBFdmVudEVtaXR0ZXI8QVhIdG1sRXZlbnQ8RXZlbnQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhIdG1sRXZlbnQ8RXZlbnQ+PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgb25Gb2N1czogRXZlbnRFbWl0dGVyPEFYSHRtbEV2ZW50PEV2ZW50Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYSHRtbEV2ZW50PEV2ZW50Pj4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9uVmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhCYXNlSW5wdXRDaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYQmFzZUlucHV0Q2hhbmdlRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHJcbiAgQElucHV0KClcclxuICBpY29uOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQElucHV0KClcclxuICBhbGxvd0NsZWFyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX3ZhbHVlOiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgdmFsdWUodjogc3RyaW5nKSB7XHJcbiAgICBpZiAodiAhPT0gdGhpcy5fdmFsdWUpIHtcclxuICAgICAgY29uc3Qgb2xkID0gdGhpcy5fdmFsdWU7XHJcbiAgICAgIHRoaXMuX3ZhbHVlID0gdjtcclxuXHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2KTtcclxuICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlZC5lbWl0KHtcclxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgdmFsdWU6IHYsXHJcbiAgICAgICAgb2xkVmFsdWU6IG9sZCxcclxuICAgICAgICBpc1VzZXJDaGFuZ2U6IHRoaXMudXNlckNoYW5nZVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy51c2VyQ2hhbmdlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2xlYXJWYWxpZGF0aW9uU3R5bGUodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LCB2ID8gZmFsc2UgOiB0cnVlKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9jdXMoKSB7XHJcbiAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIGNsZWFyKCkge1xyXG4gICAgdGhpcy51c2VyQ2hhbmdlID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLnZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBpc0ZvY3VzZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50ID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgc2V0VGV4dEFsaWduKCkge1xyXG4gICAgaWYgKHRoaXMudGV4dEFsaWduID09PSAnbGVmdCcpIHtcclxuICAgICAgcmV0dXJuICd0ZXh0LWxlZnQnO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudGV4dEFsaWduID09PSAncmlnaHQnKSB7XHJcbiAgICAgIHJldHVybiAndGV4dC1yaWdodCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVJbnB1dEJsdXIoZTogRXZlbnQpIHtcclxuICAgIHRoaXMub25CbHVyLmVtaXQoe1xyXG4gICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICBodG1sRXZlbnQ6IGVcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlSW5wdXRGb2N1cyhlOiBFdmVudCkge1xyXG4gICAgdGhpcy5vbkZvY3VzLmVtaXQoe1xyXG4gICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICBodG1sRXZlbnQ6IGVcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYQmFzZUJ1dHRvbkNvbXBvbmVudCBleHRlbmRzIEFYQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFYQmFzZUNsaWNrYWJsZUNvbXBvbmVudCwgQVhCYXNlU2l6YWJsZUNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGNsaWNrOiBFdmVudEVtaXR0ZXI8QVhIdG1sRXZlbnQ8TW91c2VFdmVudD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxNb3VzZUV2ZW50Pj4oKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzaXplOiBBWEVsZW1lbnRTaXplO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHRhYkluZGV4OiBudW1iZXIgPSAwO1xyXG5cclxufVxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYQmFzZURyb3Bkb3duQ29tcG9uZW50IGV4dGVuZHMgQVhCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQVhCYXNlSW50ZXJhY3RpdmVDb21wb25lbnQsIEFYQmFzZVNpemFibGVDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGRpc2FibGVkOiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNpemU6IEFYRWxlbWVudFNpemU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZml0UGFyZW50OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICB0YWJJbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgQElucHV0KClcclxuICBzaG93RHJvcERvd25CdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBhYnN0cmFjdCBjbG9zZSgpO1xyXG4gIGFic3RyYWN0IG9wZW4oKTtcclxufVxyXG4iXX0=
@@ -241,7 +241,7 @@ class AXValidatableComponent extends AXBaseComponent {
241
241
  return this.__validation;
242
242
  }
243
243
  validate() {
244
- if (this.__validation !== undefined) {
244
+ if (this.__validation !== undefined && (this.__validation.rules || []).length > 0) {
245
245
  const result = this.__validation.validate(this[this.__valueField]);
246
246
  result.then(c => {
247
247
  if (c.result) {
@@ -259,40 +259,44 @@ class AXValidatableComponent extends AXBaseComponent {
259
259
  }
260
260
  clearValidationStyle(element, clear = false) {
261
261
  var _a, _b, _c, _d, _e, _f, _g;
262
- const formGroup = element.closest('.form-group');
263
- const formItem = ((_a = formGroup) === null || _a === void 0 ? void 0 : _a.querySelector('.form-item')) || element.closest('.form-item') || element.querySelector('.form-item');
264
- ;
265
- const label = (_b = formGroup) === null || _b === void 0 ? void 0 : _b.querySelector('.form-group-label');
266
- const parent = ((_c = formItem) === null || _c === void 0 ? void 0 : _c.parentElement) || element.parentElement;
267
- (_d = formItem) === null || _d === void 0 ? void 0 : _d.classList.remove('success-state');
268
- (_e = formItem) === null || _e === void 0 ? void 0 : _e.classList.remove('error-state');
269
- //formItem?.classList.remove('required-state');
270
- if (!clear) {
271
- (_f = formItem) === null || _f === void 0 ? void 0 : _f.classList.add('success-state');
272
- }
273
- (_g = label) === null || _g === void 0 ? void 0 : _g.classList.remove('error-text');
274
- if (parent.querySelector('span.error-text')) {
275
- parent.removeChild(parent.querySelector('span.error-text'));
262
+ if (this.__validation !== undefined && (this.__validation.rules || []).length > 0) {
263
+ const formGroup = element.closest('.form-group');
264
+ const formItem = ((_a = formGroup) === null || _a === void 0 ? void 0 : _a.querySelector('.form-item')) || element.closest('.form-item') || element.querySelector('.form-item');
265
+ ;
266
+ const label = (_b = formGroup) === null || _b === void 0 ? void 0 : _b.querySelector('.form-group-label');
267
+ const parent = ((_c = formItem) === null || _c === void 0 ? void 0 : _c.parentElement) || element.parentElement;
268
+ (_d = formItem) === null || _d === void 0 ? void 0 : _d.classList.remove('success-state');
269
+ (_e = formItem) === null || _e === void 0 ? void 0 : _e.classList.remove('error-state');
270
+ //formItem?.classList.remove('required-state');
271
+ if (!clear) {
272
+ (_f = formItem) === null || _f === void 0 ? void 0 : _f.classList.add('success-state');
273
+ }
274
+ (_g = label) === null || _g === void 0 ? void 0 : _g.classList.remove('error-text');
275
+ if (parent.querySelector('span.error-text')) {
276
+ parent.removeChild(parent.querySelector('span.error-text'));
277
+ }
276
278
  }
277
279
  }
278
280
  applyValidationStyle(element, v) {
279
281
  var _a, _b, _c, _d, _e, _f;
280
- const formGroup = element.closest('.form-group');
281
- const formItem = ((_a = formGroup) === null || _a === void 0 ? void 0 : _a.querySelector('.form-item')) || element.closest('.form-item') || element.querySelector('.form-item');
282
- const label = (_b = formGroup) === null || _b === void 0 ? void 0 : _b.querySelector('.form-group-label');
283
- const parent = ((_c = formItem) === null || _c === void 0 ? void 0 : _c.parentElement) || element.parentElement;
284
- (_d = formItem) === null || _d === void 0 ? void 0 : _d.classList.add('error-state');
285
- (_e = formItem) === null || _e === void 0 ? void 0 : _e.classList.remove('success-state');
286
- if (parent.querySelector('span.error-text')) {
287
- parent.removeChild(parent.querySelector('span.error-text'));
288
- }
289
- if (this.__validation.showMessage) {
290
- const span = document.createElement('span');
291
- span.innerText = v.message;
292
- span.classList.add('ax', 'error-text');
293
- parent.appendChild(span);
294
- }
295
- (_f = label) === null || _f === void 0 ? void 0 : _f.classList.add('error-text');
282
+ if (this.__validation !== undefined && (this.__validation.rules || []).length > 0) {
283
+ const formGroup = element.closest('.form-group');
284
+ const formItem = ((_a = formGroup) === null || _a === void 0 ? void 0 : _a.querySelector('.form-item')) || element.closest('.form-item') || element.querySelector('.form-item');
285
+ const label = (_b = formGroup) === null || _b === void 0 ? void 0 : _b.querySelector('.form-group-label');
286
+ const parent = ((_c = formItem) === null || _c === void 0 ? void 0 : _c.parentElement) || element.parentElement;
287
+ (_d = formItem) === null || _d === void 0 ? void 0 : _d.classList.add('error-state');
288
+ (_e = formItem) === null || _e === void 0 ? void 0 : _e.classList.remove('success-state');
289
+ if (parent.querySelector('span.error-text')) {
290
+ parent.removeChild(parent.querySelector('span.error-text'));
291
+ }
292
+ if (this.__validation.showMessage) {
293
+ const span = document.createElement('span');
294
+ span.innerText = v.message;
295
+ span.classList.add('ax', 'error-text');
296
+ parent.appendChild(span);
297
+ }
298
+ (_f = label) === null || _f === void 0 ? void 0 : _f.classList.add('error-text');
299
+ }
296
300
  }
297
301
  }
298
302
  __decorate([