@klippa/ngx-enhancy-forms 0.1.1 → 2.0.0

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,8 +1,14 @@
1
- import { Component, Input, ViewChild } from '@angular/core';
1
+ import { Component, InjectionToken, Input, Optional, ViewChild } from '@angular/core';
2
2
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { isNullOrUndefined, stringIsSetAndNotEmpty } from '../../util/values';
4
4
  import { invalidDateKey } from '../../validators/dateValidator';
5
5
  import { ValueAccessorBase } from "../value-accessor-base/value-accessor-base.component";
6
+ import { MAT_DATE_FORMATS, MAT_NATIVE_DATE_FORMATS } from "@angular/material/core";
7
+ export const KLP_DATE_FORMATS = new InjectionToken('klp.form.date.formats');
8
+ export function matDateFormatsFactory(component, dateFormats) {
9
+ var _a;
10
+ return (_a = dateFormats === null || dateFormats === void 0 ? void 0 : dateFormats(component.format)) !== null && _a !== void 0 ? _a : MAT_NATIVE_DATE_FORMATS;
11
+ }
6
12
  export class DatepickerComponent extends ValueAccessorBase {
7
13
  constructor() {
8
14
  super(...arguments);
@@ -85,6 +91,10 @@ DatepickerComponent.decorators = [
85
91
  template: "<div class=\"componentContainer\" [ngClass]=\"{showErrors: isInErrorState()}\">\n\t<mat-form-field [floatLabel]=\"'never'\">\n\t\t<input\n\t\t\t#nativeInput\n\t\t\tmatInput\n\t\t\t[matDatepicker]=\"picker\"\n\t\t\t[(ngModel)]=\"valueForMaterialDatePicker\"\n\t\t\t(dateInput)=\"dateChanged($event)\"\n\t\t\t(input)=\"nativeValueChanged($event)\"\n\t\t\t[min]=\"minDateStartOfDay\"\n\t\t\t[max]=\"maxDateEndOfDay\"\n\t\t\t[placeholder]=\"placeholder\"\n\t\t\t(click)=\"picker.open()\"\n\t\t\t(blur)=\"touch()\"\n\t\t>\n\t\t<mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n\t\t<mat-datepicker #picker\n\t\t></mat-datepicker>\n\t</mat-form-field>\n\t<button *ngIf=\"clearable\" class=\"clearButton\" (click)=\"resetToNull()\">\u00D7</button>\n</div>\n",
86
92
  providers: [
87
93
  { provide: NG_VALUE_ACCESSOR, useExisting: DatepickerComponent, multi: true },
94
+ { provide: MAT_DATE_FORMATS,
95
+ deps: [DatepickerComponent, [new Optional(), KLP_DATE_FORMATS]],
96
+ useFactory: matDateFormatsFactory,
97
+ }
88
98
  ],
89
99
  styles: [":host{display:block}:host ::ng-deep mat-form-field{display:block;height:100%}:host ::ng-deep mat-form-field.mat-focused .mat-form-field-label,:host ::ng-deep mat-form-field .mat-form-field-label{color:#adadad}:host ::ng-deep .mat-datepicker-toggle-active{color:#666}:host ::ng-deep .mat-form-field-wrapper{padding-bottom:none}:host ::ng-deep .mat-form-field-flex{flex-direction:row-reverse}:host ::ng-deep .mat-form-field-infix{border-top:none}:host ::ng-deep .mat-form-field-suffix{margin-right:.625rem}:host ::ng-deep .mat-form-field-suffix:hover .mat-button-focus-overlay{opacity:.1}:host ::ng-deep .mat-form-field-underline{display:none}.componentContainer{-moz-transition:all .2s ease-in;-ms-transition:all .2s ease-in;-o-transition:all .2s ease-in;-webkit-transition:all .2s ease-in;border:1px solid #e6ecf5;border-radius:2px;box-shadow:none;color:#888da8;display:block;font-size:14px;height:42px;padding:.375rem .625rem;position:relative;transition:all .2s ease-in;width:100%}.componentContainer::-webkit-input-placeholder{color:#adadad}.componentContainer:-moz-placeholder,.componentContainer::-moz-placeholder{color:#adadad}.componentContainer:-ms-input-placeholder{color:#adadad}.componentContainer:focus{border-color:#3ed778;box-shadow:none;outline:0 none}.componentContainer.input-sm{height:30px}.componentContainer.input-lg{height:50px}.componentContainer.error{background-color:#ffeff4;border-color:#ff3c7e}.componentContainer.valid{background-color:#ebfaeb;border-color:#37c936;color:#278d26}.componentContainer.showErrors{border-color:#ff8000}.componentContainer .clearButton{align-items:center;background:none;border:none;bottom:0;color:#7b7b7b;display:flex;font-size:18px;position:absolute;right:1.25rem;top:0}"]
90
100
  },] }
@@ -92,9 +102,10 @@ DatepickerComponent.decorators = [
92
102
  DatepickerComponent.propDecorators = {
93
103
  minDate: [{ type: Input }],
94
104
  maxDate: [{ type: Input }],
105
+ format: [{ type: Input }],
95
106
  placeholder: [{ type: Input }],
96
107
  clearable: [{ type: Input }],
97
108
  nativeInputRef: [{ type: ViewChild, args: ['nativeInput',] }],
98
109
  datePickerRef: [{ type: ViewChild, args: ['picker',] }]
99
110
  };
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvbmd4LWVuaGFuY3ktZm9ybXMvbmd4LWVuaGFuY3ktZm9ybXMvcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsS0FBSyxFQUFpQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWhFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBVXZGLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxpQkFBK0M7SUFSeEY7O1FBU2lCLFlBQU8sR0FBUyxTQUFTLENBQUM7UUFDMUIsWUFBTyxHQUFTLFNBQVMsQ0FBQztRQUMxQixnQkFBVyxHQUFHLGFBQWEsQ0FBQztRQUM1QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBS2xDLHNCQUFpQixHQUFTLFNBQVMsQ0FBQztRQUNwQyxvQkFBZSxHQUFTLFNBQVMsQ0FBQztJQTRFbkMsQ0FBQztJQXJFQSxXQUFXLENBQUMsT0FBc0I7UUFDakMsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUM5QztRQUNELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMs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TCxLQUFLO3dCQUNMLEtBQUs7NkJBRUwsU0FBUyxTQUFDLGFBQWE7NEJBQ3ZCLFNBQVMsU0FBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQsIHN0cmluZ0lzU2V0QW5kTm90RW1wdHkgfSBmcm9tICcuLi8uLi91dGlsL3ZhbHVlcyc7XG5pbXBvcnQgeyBpbnZhbGlkRGF0ZUtleSB9IGZyb20gJy4uLy4uL3ZhbGlkYXRvcnMvZGF0ZVZhbGlkYXRvcic7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQge1ZhbHVlQWNjZXNzb3JCYXNlfSBmcm9tIFwiLi4vdmFsdWUtYWNjZXNzb3ItYmFzZS92YWx1ZS1hY2Nlc3Nvci1iYXNlLmNvbXBvbmVudFwiO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdrbHAtZm9ybS1kYXRlcGlja2VyJyxcblx0dGVtcGxhdGVVcmw6ICcuL2RhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG5cdHByb3ZpZGVyczogW1xuXHRcdHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBEYXRlcGlja2VyQ29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9LFxuXHRdLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlcGlja2VyQ29tcG9uZW50IGV4dGVuZHMgVmFsdWVBY2Nlc3NvckJhc2U8RGF0ZSB8IHR5cGVvZiBpbnZhbGlkRGF0ZUtleT4ge1xuXHRASW5wdXQoKSBwdWJsaWMgbWluRGF0ZTogRGF0ZSA9IHVuZGVmaW5lZDtcblx0QElucHV0KCkgcHVibGljIG1heERhdGU6IERhdGUgPSB1bmRlZmluZWQ7XG5cdEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlciA9ICdTZWxlY3QgZGF0ZSc7XG5cdEBJbnB1dCgpIHB1YmxpYyBjbGVhcmFibGUgPSBmYWxzZTtcblxuXHRAVmlld0NoaWxkKCduYXRpdmVJbnB1dCcpIG5hdGl2ZUlucHV0UmVmOiBFbGVtZW50UmVmO1xuXHRAVmlld0NoaWxkKCdwaWNrZXInKSBkYXRlUGlja2VyUmVmOiBNYXREYXRlcGlja2VyPERhdGU+O1xuXG5cdG1pbkRhdGVTdGFydE9mRGF5OiBEYXRlID0gdW5kZWZpbmVkO1xuXHRtYXhEYXRlRW5kT2ZEYXk6IERhdGUgPSB1bmRlZmluZWQ7XG5cblx0Ly8gdGhpcyBpcyBwYXNzZWQgYXMgbmdtb2RlbCBhbmQgaXMgdXNlZCB0byBzZXQgdGhlIGluaXRhbCBkYXRlLiBCdXQgd2UgYWxzb1xuXHQvLyB1c2UgaW5wdXQgYW5kIG5hdGl2ZUlucHV0IGNhbGxiYWNrcyB0byBleHRlbmQgdGhlIHZhbGlkYXRpb24gbG9naWMgc28gd2Vcblx0Ly8gY2FuIGRlc3Rpbmd1aXNoIGJldHdlZW4gZW1wdHkgYW5kIGludmFsaWQgZGF0ZXMuXG5cdHZhbHVlRm9yTWF0ZXJpYWxEYXRlUGlja2VyOiBEYXRlO1xuXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcblx0XHRpZiAoY2hhbmdlcy5taW5EYXRlKSB7XG5cdFx0XHR0aGlzLnNldE1pbkRhdGUoY2hhbmdlcy5taW5EYXRlLmN1cnJlbnRWYWx1ZSk7XG5cdFx0fVxuXHRcdGlmIChjaGFuZ2VzLm1heERhdGUpIHtcblx0XHRcdHRoaXMuc2V0TWF4RGF0ZShjaGFuZ2VzLm1heERhdGUuY3VycmVudFZhbHVlKTtcblx0XHR9XG5cdH1cblxuXHRzZXRNaW5EYXRlKG1pbkRhdGU6IERhdGUpIHtcblx0XHRpZiAobWluRGF0ZSkge1xuXHRcdFx0dGhpcy5taW5EYXRlU3RhcnRPZkRheSA9IG5ldyBEYXRlKG1pbkRhdGUpO1xuXHRcdFx0dGhpcy5taW5EYXRlU3RhcnRPZkRheS5zZXRIb3VycygwLCAwLCAwLCAwKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5taW5EYXRlU3RhcnRPZkRheSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblxuXHRzZXRNYXhEYXRlKG1heERhdGU6IERhdGUpIHtcblx0XHRpZiAobWF4RGF0ZSkge1xuXHRcdFx0dGhpcy5tYXhEYXRlRW5kT2ZEYXkgPSBuZXcgRGF0ZShtYXhEYXRlKTtcblx0XHRcdHRoaXMubWF4RGF0ZUVuZE9mRGF5LnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMubWF4RGF0ZUVuZE9mRGF5ID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXG5cdC8vIGRhdGVDaGFuZ2VkIGlzIGNhbGxlZCB3aGVuIHRoZSBvdXRwdXQgb2YgdGhlIGRhdGVwaWNrZXIgaXMgY2hhbmdlZCBhbmRcblx0Ly8gcGFyc2VkIGNvcnJlY3RseS4gSWYgdGhlIGRhdGUgaXMgaW52YWxpZCwgaXQgd2lsbCBiZSBjYWxsZWQgdGhlIGZpcnN0IHRpbWVcblx0Ly8gd2l0aCBudWxsIGJ1dCBuZXZlciBhZ2FpbiB1bnRpbCBhIHZhbGlkIGlucHV0IGlzIHByb3ZpZGVkLlxuXHRkYXRlQ2hhbmdlZChldmVudDogYW55KSB7XG5cdFx0Y29uc3QgbmF0aXZlSW5wdXRWYWx1ZSA9IHRoaXMubmF0aXZlSW5wdXRSZWYubmF0aXZlRWxlbWVudC52YWx1ZTtcblx0XHRjb25zdCBkYXRlID0gZXZlbnQudmFsdWU7XG5cdFx0aWYgKGlzTnVsbE9yVW5kZWZpbmVkKGRhdGUpICYmIHN0cmluZ0lzU2V0QW5kTm90RW1wdHkobmF0aXZlSW5wdXRWYWx1ZSkpIHtcblx0XHRcdHRoaXMuc2V0SW5uZXJWYWx1ZUFuZE5vdGlmeShpbnZhbGlkRGF0ZUtleSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0SW5uZXJWYWx1ZUFuZE5vdGlmeShkYXRlKTtcblx0XHR9XG5cdH1cblxuXHR3cml0ZVZhbHVlKHZhbHVlOiBEYXRlIHwgdHlwZW9mIGludmFsaWREYXRlS2V5KSB7XG5cdFx0c3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSk7XG5cdFx0dGhpcy52YWx1ZUZvck1hdGVyaWFsRGF0ZVBpY2tlciA9IHZhbHVlID09PSBpbnZhbGlkRGF0ZUtleSA/IG51bGwgOiB2YWx1ZTtcblx0fVxuXG5cdC8vIG5hdGl2ZVZhbHVlQ2hhbmdlZCBpcyBjYWxsZWQgd2hlbiB0aGUgaW50ZXJuYWwgdGV4dCB2YWx1ZSBjaGFuZ2VzLCBidXQgbm90XG5cdC8vIHdoZW4gdGhlIGRhdGUgaXMgY2hhbmdlZCB2aWEgdGhlIGRhdGUgcGlja2VyLiBXZSBuZWVkIHRoaXMgc28gdGhhdCB3ZSBjYW5cblx0Ly8gZGV0ZXJtaW5lIGlmIHRoZSBkYXRlcGlja2VyIGlzIGVtcHR5IG9yIGludmFsaWQuXG5cdG5hdGl2ZVZhbHVlQ2hhbmdlZChldmVudDogYW55KSB7XG5cdFx0Y29uc3QgbmF0aXZlSW5wdXRWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcblx0XHRjb25zdCBkYXRlID0gdGhpcy52YWx1ZUZvck1hdGVyaWFsRGF0ZVBpY2tlcjtcblxuXHRcdGlmICh0aGlzLmRhdGVQaWNrZXJSZWYub3BlbmVkKSB7XG5cdFx0XHQvLyBpZiB0aGUgdXNlciBpcyB0eXBpbmcgaW5zdGVhZCBvZiB1c2luZyB0aGUgcGlja2VyLCBjbG9zZSBpdC5cblx0XHRcdHRoaXMuZGF0ZVBpY2tlclJlZi5jbG9zZSgpO1xuXHRcdH1cblxuXHRcdGlmIChpc051bGxPclVuZGVmaW5lZChkYXRlKSAmJiBzdHJpbmdJc1NldEFuZE5vdEVtcHR5KG5hdGl2ZUlucHV0VmFsdWUpKSB7XG5cdFx0XHR0aGlzLnNldElubmVyVmFsdWVBbmROb3RpZnkoaW52YWxpZERhdGVLZXkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldElubmVyVmFsdWVBbmROb3RpZnkoZGF0ZSk7XG5cdFx0fVxuXHR9XG5cblx0cmVzZXRUb051bGwoKSB7XG5cdFx0dGhpcy5zZXRJbm5lclZhbHVlQW5kTm90aWZ5KG51bGwpO1xuXHRcdHRoaXMudmFsdWVGb3JNYXRlcmlhbERhdGVQaWNrZXIgPSBudWxsO1xuXHRcdHRoaXMubmF0aXZlSW5wdXRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9IG51bGw7XG5cdH1cbn1cbiJdfQ==
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvbmd4LWVuaGFuY3ktZm9ybXMvbmd4LWVuaGFuY3ktZm9ybXMvcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixTQUFTLEVBSVQsY0FBYyxFQUNkLEtBQUssRUFDTCxRQUFRLEVBRVIsU0FBUyxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUMsaUJBQWlCLEVBQWMsc0JBQXNCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFaEUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDdkYsT0FBTyxFQUFDLGdCQUFnQixFQUFFLHVCQUF1QixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFHakYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQWlCLHVCQUF1QixDQUFDLENBQUM7QUFFNUYsTUFBTSxVQUFVLHFCQUFxQixDQUFDLFNBQThCLEVBQUUsV0FBNEI7O0lBQ2pHLGFBQU8sV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFHLFNBQVMsQ0FBQyxNQUFNLG9DQUFLLHVCQUF1QixDQUFDO0FBQ25FLENBQUM7QUFjRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsaUJBQStDO0lBWnhGOztRQWFpQixZQUFPLEdBQVMsU0FBUyxDQUFDO1FBQzFCLFlBQU8sR0FBUyxTQUFTLENBQUM7UUFFMUIsZ0JBQVcsR0FBRyxhQUFhLENBQUM7UUFDNUIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUtsQyxzQkFBaUIsR0FBUyxTQUFTLENBQUM7UUFDcEMsb0JBQWUsR0FBUyxTQUFTLENBQUM7SUE0RW5DLENBQUM7SUFyRUEsV0FBVyxDQUFDLE9BQXNCO1FBQ2pDLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDOUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzlDO0lBQ0YsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFhO1FBQ3ZCLElBQUksT0FBTyxFQUFFO1lBQ1osSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDNUM7YUFBTTtZQUNOLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7U0FDbkM7SUFDRixDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWE7UUFDdkIsSUFBSSxPQUFPLEVBQUU7WUFDWixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQy9DO2FBQU07WUFDTixJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQztTQUNqQztJQUNGLENBQUM7SUFFRCx5RUFBeUU7SUFDekUsNkVBQTZFO0lBQzdFLDZEQUE2RDtJQUM3RCxXQUFXLENBQUMsS0FBVTtRQUNyQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUNqRSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3pCLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksc0JBQXNCLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUN4RSxJQUFJLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDNUM7YUFBTTtZQUNOLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsQztJQUNGLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBbUM7UUFDN0MsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsMEJBQTBCLEdBQUcsS0FBSyxLQUFLLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDM0UsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSw0RUFBNEU7SUFDNUUsbURBQW1EO0lBQ25ELGtCQUFrQixDQUFDLEtBQVU7UUFDNUIsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUM1QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUM7UUFFN0MsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRTtZQUM5QiwrREFBK0Q7WUFDL0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUMzQjtRQUVELElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksc0JBQXNCLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUN4RSxJQUFJLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDNUM7YUFBTTtZQUNOLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsQztJQUNGLENBQUM7SUFFRCxXQUFXO1FBQ1YsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUM7UUFDdkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNoRCxDQUFDOzs7WUFsR0QsU0FBUyxTQUFDO2dCQUNWLFFBQVEsRUFBRSxxQkFBcUI7Z0JBQy9CLG14QkFBMEM7Z0JBRTFDLFNBQVMsRUFBRTtvQkFDVixFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtvQkFDN0UsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCO3dCQUMxQixJQUFJLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQzt3QkFDL0QsVUFBVSxFQUFFLHFCQUFxQjtxQkFDakM7aUJBQ0Q7O2FBQ0Q7OztzQkFFQyxLQUFLO3NCQUNMLEtBQUs7cUJBQ0wsS0FBSzswQkFDTCxLQUFLO3dCQUNMLEtBQUs7NkJBRUwsU0FBUyxTQUFDLGFBQWE7NEJBQ3ZCLFNBQVMsU0FBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRFbGVtZW50UmVmLFxuXHRIb3N0LFxuXHRJbmplY3QsXG5cdEluamVjdGlvblRva2VuLFxuXHRJbnB1dCxcblx0T3B0aW9uYWwsXG5cdFNpbXBsZUNoYW5nZXMsXG5cdFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbENvbnRhaW5lciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7aXNOdWxsT3JVbmRlZmluZWQsIGlzVmFsdWVTZXQsIHN0cmluZ0lzU2V0QW5kTm90RW1wdHl9IGZyb20gJy4uLy4uL3V0aWwvdmFsdWVzJztcbmltcG9ydCB7IGludmFsaWREYXRlS2V5IH0gZnJvbSAnLi4vLi4vdmFsaWRhdG9ycy9kYXRlVmFsaWRhdG9yJztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7VmFsdWVBY2Nlc3NvckJhc2V9IGZyb20gXCIuLi92YWx1ZS1hY2Nlc3Nvci1iYXNlL3ZhbHVlLWFjY2Vzc29yLWJhc2UuY29tcG9uZW50XCI7XG5pbXBvcnQge01BVF9EQVRFX0ZPUk1BVFMsIE1BVF9OQVRJVkVfREFURV9GT1JNQVRTfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xuaW1wb3J0IHtLbHBEYXRlRm9ybWF0c30gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbmV4cG9ydCBjb25zdCBLTFBfREFURV9GT1JNQVRTID0gbmV3IEluamVjdGlvblRva2VuPEtscERhdGVGb3JtYXRzPigna2xwLmZvcm0uZGF0ZS5mb3JtYXRzJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXREYXRlRm9ybWF0c0ZhY3RvcnkoY29tcG9uZW50OiBEYXRlcGlja2VyQ29tcG9uZW50LCBkYXRlRm9ybWF0cz86IEtscERhdGVGb3JtYXRzKSB7XG5cdHJldHVybiBkYXRlRm9ybWF0cz8uKGNvbXBvbmVudC5mb3JtYXQpID8/IE1BVF9OQVRJVkVfREFURV9GT1JNQVRTO1xufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdrbHAtZm9ybS1kYXRlcGlja2VyJyxcblx0dGVtcGxhdGVVcmw6ICcuL2RhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG5cdHByb3ZpZGVyczogW1xuXHRcdHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBEYXRlcGlja2VyQ29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9LFxuXHRcdHsgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUyxcblx0XHRcdGRlcHM6IFtEYXRlcGlja2VyQ29tcG9uZW50LCBbbmV3IE9wdGlvbmFsKCksIEtMUF9EQVRFX0ZPUk1BVFNdXSxcblx0XHRcdHVzZUZhY3Rvcnk6IG1hdERhdGVGb3JtYXRzRmFjdG9yeSxcblx0XHR9XG5cdF0sXG59KVxuZXhwb3J0IGNsYXNzIERhdGVwaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBWYWx1ZUFjY2Vzc29yQmFzZTxEYXRlIHwgdHlwZW9mIGludmFsaWREYXRlS2V5PiB7XG5cdEBJbnB1dCgpIHB1YmxpYyBtaW5EYXRlOiBEYXRlID0gdW5kZWZpbmVkO1xuXHRASW5wdXQoKSBwdWJsaWMgbWF4RGF0ZTogRGF0ZSA9IHVuZGVmaW5lZDtcblx0QElucHV0KCkgcHVibGljIGZvcm1hdDogc3RyaW5nO1xuXHRASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXIgPSAnU2VsZWN0IGRhdGUnO1xuXHRASW5wdXQoKSBwdWJsaWMgY2xlYXJhYmxlID0gZmFsc2U7XG5cblx0QFZpZXdDaGlsZCgnbmF0aXZlSW5wdXQnKSBuYXRpdmVJbnB1dFJlZjogRWxlbWVudFJlZjtcblx0QFZpZXdDaGlsZCgncGlja2VyJykgZGF0ZVBpY2tlclJlZjogTWF0RGF0ZXBpY2tlcjxEYXRlPjtcblxuXHRtaW5EYXRlU3RhcnRPZkRheTogRGF0ZSA9IHVuZGVmaW5lZDtcblx0bWF4RGF0ZUVuZE9mRGF5OiBEYXRlID0gdW5kZWZpbmVkO1xuXG5cdC8vIHRoaXMgaXMgcGFzc2VkIGFzIG5nbW9kZWwgYW5kIGlzIHVzZWQgdG8gc2V0IHRoZSBpbml0YWwgZGF0ZS4gQnV0IHdlIGFsc29cblx0Ly8gdXNlIGlucHV0IGFuZCBuYXRpdmVJbnB1dCBjYWxsYmFja3MgdG8gZXh0ZW5kIHRoZSB2YWxpZGF0aW9uIGxvZ2ljIHNvIHdlXG5cdC8vIGNhbiBkZXN0aW5ndWlzaCBiZXR3ZWVuIGVtcHR5IGFuZCBpbnZhbGlkIGRhdGVzLlxuXHR2YWx1ZUZvck1hdGVyaWFsRGF0ZVBpY2tlcjogRGF0ZTtcblxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG5cdFx0aWYgKGNoYW5nZXMubWluRGF0ZSkge1xuXHRcdFx0dGhpcy5zZXRNaW5EYXRlKGNoYW5nZXMubWluRGF0ZS5jdXJyZW50VmFsdWUpO1xuXHRcdH1cblx0XHRpZiAoY2hhbmdlcy5tYXhEYXRlKSB7XG5cdFx0XHR0aGlzLnNldE1heERhdGUoY2hhbmdlcy5tYXhEYXRlLmN1cnJlbnRWYWx1ZSk7XG5cdFx0fVxuXHR9XG5cblx0c2V0TWluRGF0ZShtaW5EYXRlOiBEYXRlKSB7XG5cdFx0aWYgKG1pbkRhdGUpIHtcblx0XHRcdHRoaXMubWluRGF0ZVN0YXJ0T2ZEYXkgPSBuZXcgRGF0ZShtaW5EYXRlKTtcblx0XHRcdHRoaXMubWluRGF0ZVN0YXJ0T2ZEYXkuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMubWluRGF0ZVN0YXJ0T2ZEYXkgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9XG5cblx0c2V0TWF4RGF0ZShtYXhEYXRlOiBEYXRlKSB7XG5cdFx0aWYgKG1heERhdGUpIHtcblx0XHRcdHRoaXMubWF4RGF0ZUVuZE9mRGF5ID0gbmV3IERhdGUobWF4RGF0ZSk7XG5cdFx0XHR0aGlzLm1heERhdGVFbmRPZkRheS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm1heERhdGVFbmRPZkRheSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblxuXHQvLyBkYXRlQ2hhbmdlZCBpcyBjYWxsZWQgd2hlbiB0aGUgb3V0cHV0IG9mIHRoZSBkYXRlcGlja2VyIGlzIGNoYW5nZWQgYW5kXG5cdC8vIHBhcnNlZCBjb3JyZWN0bHkuIElmIHRoZSBkYXRlIGlzIGludmFsaWQsIGl0IHdpbGwgYmUgY2FsbGVkIHRoZSBmaXJzdCB0aW1lXG5cdC8vIHdpdGggbnVsbCBidXQgbmV2ZXIgYWdhaW4gdW50aWwgYSB2YWxpZCBpbnB1dCBpcyBwcm92aWRlZC5cblx0ZGF0ZUNoYW5nZWQoZXZlbnQ6IGFueSkge1xuXHRcdGNvbnN0IG5hdGl2ZUlucHV0VmFsdWUgPSB0aGlzLm5hdGl2ZUlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG5cdFx0Y29uc3QgZGF0ZSA9IGV2ZW50LnZhbHVlO1xuXHRcdGlmIChpc051bGxPclVuZGVmaW5lZChkYXRlKSAmJiBzdHJpbmdJc1NldEFuZE5vdEVtcHR5KG5hdGl2ZUlucHV0VmFsdWUpKSB7XG5cdFx0XHR0aGlzLnNldElubmVyVmFsdWVBbmROb3RpZnkoaW52YWxpZERhdGVLZXkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldElubmVyVmFsdWVBbmROb3RpZnkoZGF0ZSk7XG5cdFx0fVxuXHR9XG5cblx0d3JpdGVWYWx1ZSh2YWx1ZTogRGF0ZSB8IHR5cGVvZiBpbnZhbGlkRGF0ZUtleSkge1xuXHRcdHN1cGVyLndyaXRlVmFsdWUodmFsdWUpO1xuXHRcdHRoaXMudmFsdWVGb3JNYXRlcmlhbERhdGVQaWNrZXIgPSB2YWx1ZSA9PT0gaW52YWxpZERhdGVLZXkgPyBudWxsIDogdmFsdWU7XG5cdH1cblxuXHQvLyBuYXRpdmVWYWx1ZUNoYW5nZWQgaXMgY2FsbGVkIHdoZW4gdGhlIGludGVybmFsIHRleHQgdmFsdWUgY2hhbmdlcywgYnV0IG5vdFxuXHQvLyB3aGVuIHRoZSBkYXRlIGlzIGNoYW5nZWQgdmlhIHRoZSBkYXRlIHBpY2tlci4gV2UgbmVlZCB0aGlzIHNvIHRoYXQgd2UgY2FuXG5cdC8vIGRldGVybWluZSBpZiB0aGUgZGF0ZXBpY2tlciBpcyBlbXB0eSBvciBpbnZhbGlkLlxuXHRuYXRpdmVWYWx1ZUNoYW5nZWQoZXZlbnQ6IGFueSkge1xuXHRcdGNvbnN0IG5hdGl2ZUlucHV0VmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG5cdFx0Y29uc3QgZGF0ZSA9IHRoaXMudmFsdWVGb3JNYXRlcmlhbERhdGVQaWNrZXI7XG5cblx0XHRpZiAodGhpcy5kYXRlUGlja2VyUmVmLm9wZW5lZCkge1xuXHRcdFx0Ly8gaWYgdGhlIHVzZXIgaXMgdHlwaW5nIGluc3RlYWQgb2YgdXNpbmcgdGhlIHBpY2tlciwgY2xvc2UgaXQuXG5cdFx0XHR0aGlzLmRhdGVQaWNrZXJSZWYuY2xvc2UoKTtcblx0XHR9XG5cblx0XHRpZiAoaXNOdWxsT3JVbmRlZmluZWQoZGF0ZSkgJiYgc3RyaW5nSXNTZXRBbmROb3RFbXB0eShuYXRpdmVJbnB1dFZhbHVlKSkge1xuXHRcdFx0dGhpcy5zZXRJbm5lclZhbHVlQW5kTm90aWZ5KGludmFsaWREYXRlS2V5KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXRJbm5lclZhbHVlQW5kTm90aWZ5KGRhdGUpO1xuXHRcdH1cblx0fVxuXG5cdHJlc2V0VG9OdWxsKCkge1xuXHRcdHRoaXMuc2V0SW5uZXJWYWx1ZUFuZE5vdGlmeShudWxsKTtcblx0XHR0aGlzLnZhbHVlRm9yTWF0ZXJpYWxEYXRlUGlja2VyID0gbnVsbDtcblx0XHR0aGlzLm5hdGl2ZUlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBudWxsO1xuXHR9XG59XG4iXX0=
@@ -2,7 +2,7 @@ import { Component, Host, Inject, InjectionToken, Input, Optional, ViewChild } f
2
2
  import { FormComponent } from "../form.component";
3
3
  export const FORM_ERROR_MESSAGES = new InjectionToken('form.error.messages');
4
4
  export const DEFAULT_ERROR_MESSAGES = {
5
- min: "use a number larger than %min%",
5
+ min: "Use a number larger than %min%",
6
6
  max: "Use a number smaller than %max%",
7
7
  required: "This field is required",
8
8
  email: "Use a valid email address",
@@ -76,7 +76,7 @@ export class FormElementComponent {
76
76
  }
77
77
  getErrorMessages(key) {
78
78
  var _a, _b, _c;
79
- return (_c = (_b = (_a = this.customMessages)[key]) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : this.errorMessages[key];
79
+ return (_c = (_b = (_a = this.customMessages) === null || _a === void 0 ? void 0 : _a[key]) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : this.errorMessages[key];
80
80
  }
81
81
  }
82
82
  FormElementComponent.decorators = [
@@ -97,4 +97,4 @@ FormElementComponent.propDecorators = {
97
97
  swapInputAndCaption: [{ type: Input }],
98
98
  internalComponentRef: [{ type: ViewChild, args: ['internalComponentRef',] }]
99
99
  };
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9uZ3gtZW5oYW5jeS1mb3Jtcy9uZ3gtZW5oYW5jeS1mb3Jtcy9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjLyIsInNvdXJjZXMiOlsibGliL2Zvcm0vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxJQUFJLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV0SCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFJaEQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQXNCLHFCQUFxQixDQUFDLENBQUM7QUFFbEcsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQXNCO0lBQ3hELEdBQUcsRUFBRSxnQ0FBZ0M7SUFDckMsR0FBRyxFQUFFLGlDQUFpQztJQUN0QyxRQUFRLEVBQUUsd0JBQXdCO0lBQ2xDLEtBQUssRUFBRSwyQkFBMkI7SUFDbEMsU0FBUyxFQUFFLGdEQUFnRDtJQUMzRCxTQUFTLEVBQUUsaURBQWlEO0lBQzVELE9BQU8sRUFBRSx5QkFBeUI7SUFDbEMsYUFBYSxFQUFFLHNCQUFzQjtJQUNyQyxJQUFJLEVBQUUsb0JBQW9CO0NBQzFCLENBQUE7QUFPRCxNQUFNLE9BQU8sb0JBQW9CO0lBWWhDLFlBQzZCLE1BQXFCLEVBQ0EsY0FBbUM7UUFEeEQsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNBLG1CQUFjLEdBQWQsY0FBYyxDQUFxQjtRQVhyRSxjQUFTLEdBQThCLFlBQVksQ0FBQztRQUNwRCxtQkFBYyxHQUEyQixhQUFhLENBQUM7UUFDdkQsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBSTlDLGtCQUFh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LElBQUksQ0FBQyxjQUFjLEVBQUMsR0FBRyxDQUFDLHFGQUFRLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEUsQ0FBQzs7O1lBckZELFNBQVMsU0FBQztnQkFDVixRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixzcEVBQTRDOzthQUU1Qzs7O1lBdEJPLGFBQWEsdUJBb0NsQixJQUFJLFlBQUksUUFBUTs0Q0FDaEIsTUFBTSxTQUFDLG1CQUFtQixjQUFHLFFBQVE7OztzQkFadEMsS0FBSzt3QkFDTCxLQUFLOzZCQUNMLEtBQUs7a0NBQ0wsS0FBSzttQ0FDTCxTQUFTLFNBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3QsIEluamVjdCwgSW5qZWN0aW9uVG9rZW4sIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Rm9ybUNvbXBvbmVudH0gZnJvbSBcIi4uL2Zvcm0uY29tcG9uZW50XCI7XG5pbXBvcnQge0N1c3RvbUVycm9yTWVzc2FnZXMsIEZvcm1FcnJvck1lc3NhZ2VzfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7aXNPYnNlcnZhYmxlfSBmcm9tIFwicnhqc1wiO1xuXG5leHBvcnQgY29uc3QgRk9STV9FUlJPUl9NRVNTQUdFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDdXN0b21FcnJvck1lc3NhZ2VzPignZm9ybS5lcnJvci5tZXNzYWdlcycpO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9FUlJPUl9NRVNTQUdFUzogRm9ybUVycm9yTWVzc2FnZXMgPSB7XG5cdG1pbjogXCJ1c2UgYSBudW1iZXIgbGFyZ2VyIHRoYW4gJW1pbiVcIixcblx0bWF4OiBcIlVzZSBhIG51bWJlciBzbWFsbGVyIHRoYW4gJW1heCVcIixcblx0cmVxdWlyZWQ6IFwiVGhpcyBmaWVsZCBpcyByZXF1aXJlZFwiLFxuXHRlbWFpbDogXCJVc2UgYSB2YWxpZCBlbWFpbCBhZGRyZXNzXCIsXG5cdG1pbkxlbmd0aDogXCJIYXMgdG8gYmUgbG9uZ2VyIHRoYW4gJW1pbkxlbmd0aCUgY2hhcmFjdGVyKHMpXCIsXG5cdG1heExlbmd0aDogXCJIYXMgdG8gYmUgc2hvcnRlciB0aGFuICVtYXhMZW5ndGglIGNoYXJhY3RlcihzKVwiLFxuXHRwYXR0ZXJuOiBcIlRoaXMgaW5wdXQgaXMgbm90IHZhbGlkXCIsXG5cdG1hdGNoUGFzc3dvcmQ6IFwiUGFzc3dvcmRzIG11c3QgbWF0Y2hcIixcblx0ZGF0ZTogXCJFbnRlciBhIHZhbGlkIGRhdGVcIixcbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAna2xwLWZvcm0tZWxlbWVudCcsXG5cdHRlbXBsYXRlVXJsOiAnLi9mb3JtLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi9mb3JtLWVsZW1lbnQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUVsZW1lbnRDb21wb25lbnQge1xuXHRwdWJsaWMgYXR0YWNoZWRDb250cm9sOiBBYnN0cmFjdENvbnRyb2w7XG5cdEBJbnB1dCgpIHB1YmxpYyBjYXB0aW9uOiBTdHJpbmc7XG5cdEBJbnB1dCgpIHB1YmxpYyBkaXJlY3Rpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcgPSAnaG9yaXpvbnRhbCc7XG5cdEBJbnB1dCgpIHB1YmxpYyBjYXB0aW9uU3BhY2luZzogJ3BlcmNlbnRhZ2VzJyB8ICdub25lJyA9ICdwZXJjZW50YWdlcyc7XG5cdEBJbnB1dCgpIHB1YmxpYyBzd2FwSW5wdXRBbmRDYXB0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cdEBWaWV3Q2hpbGQoJ2ludGVybmFsQ29tcG9uZW50UmVmJykgcHVibGljIGludGVybmFsQ29tcG9uZW50UmVmOiBFbGVtZW50UmVmO1xuXG5cdHB1YmxpYyBjYXB0aW9uUmVmOiBFbGVtZW50UmVmO1xuXHRwdWJsaWMgZXJyb3JNZXNzYWdlczogRm9ybUVycm9yTWVzc2FnZXMgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTO1xuXHRwdWJsaWMgY3VzdG9tRXJyb3JIYW5kbGVyczogQXJyYXk8eyBlcnJvcjogc3RyaW5nOyB0ZW1wbGF0ZVJlZjogRWxlbWVudFJlZiB9PiA9IFtdO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdEBIb3N0KCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBwYXJlbnQ6IEZvcm1Db21wb25lbnQsXG5cdFx0QEluamVjdChGT1JNX0VSUk9SX01FU1NBR0VTKSBAT3B0aW9uYWwoKSBwcml2YXRlIGN1c3RvbU1lc3NhZ2VzOiBDdXN0b21FcnJvck1lc3NhZ2VzXG5cdCkge1xuXHR9XG5cblx0cHVibGljIHN1YnN0aXR1dGVQYXJhbWV0ZXJzKG1lc3NhZ2U6IHN0cmluZywgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgYW55Pik6IHN0cmluZyB7XG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpLnJlZHVjZSgobXNnLCBrZXkpID0+IHtcblx0XHRcdHJldHVybiBtc2cucmVwbGFjZShgJSR7a2V5fSVgLCBwYXJhbWV0ZXJzW2tleV0pO1xuXHRcdH0sIG1lc3NhZ2UpO1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyQ29udHJvbChmb3JtQ29udHJvbDogRm9ybUNvbnRyb2wpIHtcblx0XHR0aGlzLmF0dGFjaGVkQ29udHJvbCA9IGZvcm1Db250cm9sO1xuXHRcdHRoaXMucGFyZW50LnJlZ2lzdGVyQ29udHJvbChmb3JtQ29udHJvbCwgdGhpcyk7XG5cdH1cblxuXHRwdWJsaWMgdW5yZWdpc3RlckNvbnRyb2woZm9ybUNvbnRyb2w6IEZvcm1Db250cm9sKSB7XG5cdFx0dGhpcy5hdHRhY2hlZENvbnRyb2wgPSBudWxsO1xuXHRcdHRoaXMucGFyZW50LnVucmVnaXN0ZXJDb250cm9sKGZvcm1Db250cm9sKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRBdHRhY2hlZENvbnRyb2woKSB7XG5cdFx0cmV0dXJuIHRoaXMuYXR0YWNoZWRDb250cm9sO1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyRXJyb3JIYW5kbGVyKGVycm9yOiBzdHJpbmcsIHRlbXBsYXRlUmVmOiBFbGVtZW50UmVmKSB7XG5cdFx0dGhpcy5jdXN0b21FcnJvckhhbmRsZXJzLnB1c2goeyBlcnJvciwgdGVtcGxhdGVSZWYgfSk7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJDYXB0aW9uKHRlbXBsYXRlUmVmOiBFbGVtZW50UmVmKSB7XG5cdFx0dGhpcy5jYXB0aW9uUmVmID0gdGVtcGxhdGVSZWY7XG5cdH1cblxuXHRnZXRFcnJvclRvU2hvdygpIHtcblx0XHRpZiAodGhpcy5hdHRhY2hlZENvbnRyb2w/LnRvdWNoZWQgPT09IHRydWUgJiYgdGhpcy5hdHRhY2hlZENvbnRyb2w/LmVycm9ycykge1xuXHRcdFx0cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuYXR0YWNoZWRDb250cm9sPy5lcnJvcnMpWzBdO1xuXHRcdH1cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdGdldEN1c3RvbUVycm9ySGFuZGxlcihlcnJvcjogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuY3VzdG9tRXJyb3JIYW5kbGVycy5maW5kKChlKSA9PiBlLmVycm9yID09PSBlcnJvcik7XG5cdH1cblxuXHRzaG93RGVmYXVsdEVycm9yKGVycm9yOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRFcnJvclRvU2hvdygpID09PSBlcnJvciAmJiAhdGhpcy5jdXN0b21FcnJvckhhbmRsZXJzLnNvbWUoKGUpID0+IGUuZXJyb3IgPT09IGVycm9yKTtcblx0fVxuXG5cdGdldFNjcm9sbGFibGVQYXJlbnQobm9kZSkge1xuXHRcdGlmIChub2RlID09IG51bGwpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRpZiAobm9kZS5zY3JvbGxIZWlnaHQgPiBub2RlLmNsaWVudEhlaWdodCkge1xuXHRcdFx0cmV0dXJuIG5vZGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0aGlzLmdldFNjcm9sbGFibGVQYXJlbnQobm9kZS5wYXJlbnROb2RlKTtcblx0XHR9XG5cdH1cblxuXHRzY3JvbGxUbygpIHtcblx0XHR0aGlzLmludGVybmFsQ29tcG9uZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcodHJ1ZSk7XG5cdFx0Ly8gdG8gZ2l2ZSBzb21lIGJyZWF0aGluZyByb29tLCB3ZSBzY3JvbGwgMTAwcHggbW9yZSB0byB0aGUgdG9wXG5cdFx0dGhpcy5nZXRTY3JvbGxhYmxlUGFyZW50KHRoaXMuaW50ZXJuYWxDb21wb25lbnRSZWYubmF0aXZlRWxlbWVudCk/LnNjcm9sbEJ5KDAsIC0xMDApO1xuXHR9XG5cblx0Z2V0RXJyb3JNZXNzYWdlcyhrZXk6IGtleW9mIEZvcm1FcnJvck1lc3NhZ2VzKSB7XG5cdFx0cmV0dXJuIHRoaXMuY3VzdG9tTWVzc2FnZXNba2V5XT8uKCkgPz8gdGhpcy5lcnJvck1lc3NhZ2VzW2tleV07XG5cdH1cbn1cbiJdfQ==
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9uZ3gtZW5oYW5jeS1mb3Jtcy9uZ3gtZW5oYW5jeS1mb3Jtcy9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjLyIsInNvdXJjZXMiOlsibGliL2Zvcm0vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxJQUFJLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV0SCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFHaEQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQXNCLHFCQUFxQixDQUFDLENBQUM7QUFFbEcsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQXNCO0lBQ3hELEdBQUcsRUFBRSxnQ0FBZ0M7SUFDckMsR0FBRyxFQUFFLGlDQUFpQztJQUN0QyxRQUFRLEVBQUUsd0JBQXdCO0lBQ2xDLEtBQUssRUFBRSwyQkFBMkI7SUFDbEMsU0FBUyxFQUFFLGdEQUFnRDtJQUMzRCxTQUFTLEVBQUUsaURBQWlEO0lBQzVELE9BQU8sRUFBRSx5QkFBeUI7SUFDbEMsYUFBYSxFQUFFLHNCQUFzQjtJQUNyQyxJQUFJLEVBQUUsb0JBQW9CO0NBQzFCLENBQUE7QUFPRCxNQUFNLE9BQU8sb0JBQW9CO0lBWWhDLFlBQzZCLE1BQXFCLEVBQ0EsY0FBbUM7UUFEeEQsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNBLG1CQUFjLEdBQWQsY0FBYyxDQUFxQjtRQVhyRSxjQUFTLEdBQThCLFlBQVksQ0FBQztRQUNwRCxtQkFBYyxHQUEyQixhQUFhLENBQUM7UUFDdkQsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBSTlDLGtCQUFh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LENBQUMsY0FBYywwQ0FBRyxHQUFHLHNGQUFTLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEUsQ0FBQzs7O1lBckZELFNBQVMsU0FBQztnQkFDVixRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixzcEVBQTRDOzthQUU1Qzs7O1lBckJPLGFBQWEsdUJBbUNsQixJQUFJLFlBQUksUUFBUTs0Q0FDaEIsTUFBTSxTQUFDLG1CQUFtQixjQUFHLFFBQVE7OztzQkFadEMsS0FBSzt3QkFDTCxLQUFLOzZCQUNMLEtBQUs7a0NBQ0wsS0FBSzttQ0FDTCxTQUFTLFNBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3QsIEluamVjdCwgSW5qZWN0aW9uVG9rZW4sIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Rm9ybUNvbXBvbmVudH0gZnJvbSBcIi4uL2Zvcm0uY29tcG9uZW50XCI7XG5pbXBvcnQge0N1c3RvbUVycm9yTWVzc2FnZXMsIEZvcm1FcnJvck1lc3NhZ2VzfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxuZXhwb3J0IGNvbnN0IEZPUk1fRVJST1JfTUVTU0FHRVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48Q3VzdG9tRXJyb3JNZXNzYWdlcz4oJ2Zvcm0uZXJyb3IubWVzc2FnZXMnKTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVJST1JfTUVTU0FHRVM6IEZvcm1FcnJvck1lc3NhZ2VzID0ge1xuXHRtaW46IFwiVXNlIGEgbnVtYmVyIGxhcmdlciB0aGFuICVtaW4lXCIsXG5cdG1heDogXCJVc2UgYSBudW1iZXIgc21hbGxlciB0aGFuICVtYXglXCIsXG5cdHJlcXVpcmVkOiBcIlRoaXMgZmllbGQgaXMgcmVxdWlyZWRcIixcblx0ZW1haWw6IFwiVXNlIGEgdmFsaWQgZW1haWwgYWRkcmVzc1wiLFxuXHRtaW5MZW5ndGg6IFwiSGFzIHRvIGJlIGxvbmdlciB0aGFuICVtaW5MZW5ndGglIGNoYXJhY3RlcihzKVwiLFxuXHRtYXhMZW5ndGg6IFwiSGFzIHRvIGJlIHNob3J0ZXIgdGhhbiAlbWF4TGVuZ3RoJSBjaGFyYWN0ZXIocylcIixcblx0cGF0dGVybjogXCJUaGlzIGlucHV0IGlzIG5vdCB2YWxpZFwiLFxuXHRtYXRjaFBhc3N3b3JkOiBcIlBhc3N3b3JkcyBtdXN0IG1hdGNoXCIsXG5cdGRhdGU6IFwiRW50ZXIgYSB2YWxpZCBkYXRlXCIsXG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2tscC1mb3JtLWVsZW1lbnQnLFxuXHR0ZW1wbGF0ZVVybDogJy4vZm9ybS1lbGVtZW50LmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vZm9ybS1lbGVtZW50LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1FbGVtZW50Q29tcG9uZW50IHtcblx0cHVibGljIGF0dGFjaGVkQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuXHRASW5wdXQoKSBwdWJsaWMgY2FwdGlvbjogU3RyaW5nO1xuXHRASW5wdXQoKSBwdWJsaWMgZGlyZWN0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnID0gJ2hvcml6b250YWwnO1xuXHRASW5wdXQoKSBwdWJsaWMgY2FwdGlvblNwYWNpbmc6ICdwZXJjZW50YWdlcycgfCAnbm9uZScgPSAncGVyY2VudGFnZXMnO1xuXHRASW5wdXQoKSBwdWJsaWMgc3dhcElucHV0QW5kQ2FwdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXHRAVmlld0NoaWxkKCdpbnRlcm5hbENvbXBvbmVudFJlZicpIHB1YmxpYyBpbnRlcm5hbENvbXBvbmVudFJlZjogRWxlbWVudFJlZjtcblxuXHRwdWJsaWMgY2FwdGlvblJlZjogRWxlbWVudFJlZjtcblx0cHVibGljIGVycm9yTWVzc2FnZXM6IEZvcm1FcnJvck1lc3NhZ2VzID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUztcblx0cHVibGljIGN1c3RvbUVycm9ySGFuZGxlcnM6IEFycmF5PHsgZXJyb3I6IHN0cmluZzsgdGVtcGxhdGVSZWY6IEVsZW1lbnRSZWYgfT4gPSBbXTtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRASG9zdCgpIEBPcHRpb25hbCgpIHByaXZhdGUgcGFyZW50OiBGb3JtQ29tcG9uZW50LFxuXHRcdEBJbmplY3QoRk9STV9FUlJPUl9NRVNTQUdFUykgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjdXN0b21NZXNzYWdlczogQ3VzdG9tRXJyb3JNZXNzYWdlc1xuXHQpIHtcblx0fVxuXG5cdHB1YmxpYyBzdWJzdGl0dXRlUGFyYW1ldGVycyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBzdHJpbmcge1xuXHRcdHJldHVybiBPYmplY3Qua2V5cyhwYXJhbWV0ZXJzKS5yZWR1Y2UoKG1zZywga2V5KSA9PiB7XG5cdFx0XHRyZXR1cm4gbXNnLnJlcGxhY2UoYCUke2tleX0lYCwgcGFyYW1ldGVyc1trZXldKTtcblx0XHR9LCBtZXNzYWdlKTtcblx0fVxuXG5cdHB1YmxpYyByZWdpc3RlckNvbnRyb2woZm9ybUNvbnRyb2w6IEZvcm1Db250cm9sKSB7XG5cdFx0dGhpcy5hdHRhY2hlZENvbnRyb2wgPSBmb3JtQ29udHJvbDtcblx0XHR0aGlzLnBhcmVudC5yZWdpc3RlckNvbnRyb2woZm9ybUNvbnRyb2wsIHRoaXMpO1xuXHR9XG5cblx0cHVibGljIHVucmVnaXN0ZXJDb250cm9sKGZvcm1Db250cm9sOiBGb3JtQ29udHJvbCkge1xuXHRcdHRoaXMuYXR0YWNoZWRDb250cm9sID0gbnVsbDtcblx0XHR0aGlzLnBhcmVudC51bnJlZ2lzdGVyQ29udHJvbChmb3JtQ29udHJvbCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0QXR0YWNoZWRDb250cm9sKCkge1xuXHRcdHJldHVybiB0aGlzLmF0dGFjaGVkQ29udHJvbDtcblx0fVxuXG5cdHB1YmxpYyByZWdpc3RlckVycm9ySGFuZGxlcihlcnJvcjogc3RyaW5nLCB0ZW1wbGF0ZVJlZjogRWxlbWVudFJlZikge1xuXHRcdHRoaXMuY3VzdG9tRXJyb3JIYW5kbGVycy5wdXNoKHsgZXJyb3IsIHRlbXBsYXRlUmVmIH0pO1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyQ2FwdGlvbih0ZW1wbGF0ZVJlZjogRWxlbWVudFJlZikge1xuXHRcdHRoaXMuY2FwdGlvblJlZiA9IHRlbXBsYXRlUmVmO1xuXHR9XG5cblx0Z2V0RXJyb3JUb1Nob3coKSB7XG5cdFx0aWYgKHRoaXMuYXR0YWNoZWRDb250cm9sPy50b3VjaGVkID09PSB0cnVlICYmIHRoaXMuYXR0YWNoZWRDb250cm9sPy5lcnJvcnMpIHtcblx0XHRcdHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmF0dGFjaGVkQ29udHJvbD8uZXJyb3JzKVswXTtcblx0XHR9XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHRnZXRDdXN0b21FcnJvckhhbmRsZXIoZXJyb3I6IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLmN1c3RvbUVycm9ySGFuZGxlcnMuZmluZCgoZSkgPT4gZS5lcnJvciA9PT0gZXJyb3IpO1xuXHR9XG5cblx0c2hvd0RlZmF1bHRFcnJvcihlcnJvcjogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0RXJyb3JUb1Nob3coKSA9PT0gZXJyb3IgJiYgIXRoaXMuY3VzdG9tRXJyb3JIYW5kbGVycy5zb21lKChlKSA9PiBlLmVycm9yID09PSBlcnJvcik7XG5cdH1cblxuXHRnZXRTY3JvbGxhYmxlUGFyZW50KG5vZGUpIHtcblx0XHRpZiAobm9kZSA9PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0aWYgKG5vZGUuc2Nyb2xsSGVpZ2h0ID4gbm9kZS5jbGllbnRIZWlnaHQpIHtcblx0XHRcdHJldHVybiBub2RlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRTY3JvbGxhYmxlUGFyZW50KG5vZGUucGFyZW50Tm9kZSk7XG5cdFx0fVxuXHR9XG5cblx0c2Nyb2xsVG8oKSB7XG5cdFx0dGhpcy5pbnRlcm5hbENvbXBvbmVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHRydWUpO1xuXHRcdC8vIHRvIGdpdmUgc29tZSBicmVhdGhpbmcgcm9vbSwgd2Ugc2Nyb2xsIDEwMHB4IG1vcmUgdG8gdGhlIHRvcFxuXHRcdHRoaXMuZ2V0U2Nyb2xsYWJsZVBhcmVudCh0aGlzLmludGVybmFsQ29tcG9uZW50UmVmLm5hdGl2ZUVsZW1lbnQpPy5zY3JvbGxCeSgwLCAtMTAwKTtcblx0fVxuXG5cdGdldEVycm9yTWVzc2FnZXMoa2V5OiBrZXlvZiBGb3JtRXJyb3JNZXNzYWdlcykge1xuXHRcdHJldHVybiB0aGlzLmN1c3RvbU1lc3NhZ2VzPy5ba2V5XT8uKCkgPz8gdGhpcy5lcnJvck1lc3NhZ2VzW2tleV07XG5cdH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvbmd4LWVuaGFuY3ktZm9ybXMvbmd4LWVuaGFuY3ktZm9ybXMvcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy8iLCJzb3VyY2VzIjpbImxpYi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBGb3JtRXJyb3JNZXNzYWdlcyB7XG5cdG1pbjogc3RyaW5nO1xuXHRtYXg6IHN0cmluZztcblx0cmVxdWlyZWQ6IHN0cmluZztcblx0ZW1haWw6IHN0cmluZztcblx0bWluTGVuZ3RoOiBzdHJpbmc7XG5cdG1heExlbmd0aDogc3RyaW5nO1xuXHRwYXR0ZXJuOiBzdHJpbmc7XG5cdG1hdGNoUGFzc3dvcmQ6IHN0cmluZztcblx0ZGF0ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBDdXN0b21FcnJvck1lc3NhZ2VzID0gUmVjb3JkPGtleW9mIEZvcm1FcnJvck1lc3NhZ2VzLCAoKSA9PiBzdHJpbmc+O1xuXG4vLyBJJ2QgcmF0aGVyIHNwZWNpZnkgdGhlIHR5cGVzIGFuZCBjcmVhdGUgdGhlIGFib3ZlIGludGVyZmFjZSBmcm9tIHRob3NlLCBidXQgdHMgd29uJ3QgZG8gdGhhdC5cbmV4cG9ydCB0eXBlIEVycm9yVHlwZXMgPSBrZXlvZiBGb3JtRXJyb3JNZXNzYWdlcyB8ICdtZXNzYWdlJztcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvbmd4LWVuaGFuY3ktZm9ybXMvbmd4LWVuaGFuY3ktZm9ybXMvcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy8iLCJzb3VyY2VzIjpbImxpYi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNYXREYXRlRm9ybWF0c30gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBGb3JtRXJyb3JNZXNzYWdlcyB7XG5cdG1pbjogc3RyaW5nO1xuXHRtYXg6IHN0cmluZztcblx0cmVxdWlyZWQ6IHN0cmluZztcblx0ZW1haWw6IHN0cmluZztcblx0bWluTGVuZ3RoOiBzdHJpbmc7XG5cdG1heExlbmd0aDogc3RyaW5nO1xuXHRwYXR0ZXJuOiBzdHJpbmc7XG5cdG1hdGNoUGFzc3dvcmQ6IHN0cmluZztcblx0ZGF0ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBDdXN0b21FcnJvck1lc3NhZ2VzID0gUmVjb3JkPGtleW9mIEZvcm1FcnJvck1lc3NhZ2VzLCAoKSA9PiBzdHJpbmc+O1xuZXhwb3J0IHR5cGUgS2xwRGF0ZUZvcm1hdHMgPSAoZm9ybWF0OiBzdHJpbmcpID0+IE1hdERhdGVGb3JtYXRzO1xuXG4vLyBJJ2QgcmF0aGVyIHNwZWNpZnkgdGhlIHR5cGVzIGFuZCBjcmVhdGUgdGhlIGFib3ZlIGludGVyZmFjZSBmcm9tIHRob3NlLCBidXQgdHMgd29uJ3QgZG8gdGhhdC5cbmV4cG9ydCB0eXBlIEVycm9yVHlwZXMgPSBrZXlvZiBGb3JtRXJyb3JNZXNzYWdlcyB8ICdtZXNzYWdlJztcbiJdfQ==
@@ -4,9 +4,9 @@ import { FormGroup, FormArray, FormControl, ControlContainer, NG_VALUE_ACCESSOR,
4
4
  import { isString } from 'lodash';
5
5
  import { SortablejsModule } from 'ngx-sortablejs';
6
6
  import { NgSelectModule } from '@ng-select/ng-select';
7
+ import { MAT_NATIVE_DATE_FORMATS, MAT_DATE_FORMATS, MatNativeDateModule } from '@angular/material/core';
7
8
  import { MatDatepickerModule } from '@angular/material/datepicker';
8
9
  import { MatFormFieldModule } from '@angular/material/form-field';
9
- import { MatNativeDateModule } from '@angular/material/core';
10
10
  import { MatInputModule } from '@angular/material/input';
11
11
  import { MatButtonModule } from '@angular/material/button';
12
12
 
@@ -81,7 +81,7 @@ FormComponent.propDecorators = {
81
81
 
82
82
  const FORM_ERROR_MESSAGES = new InjectionToken('form.error.messages');
83
83
  const DEFAULT_ERROR_MESSAGES = {
84
- min: "use a number larger than %min%",
84
+ min: "Use a number larger than %min%",
85
85
  max: "Use a number smaller than %max%",
86
86
  required: "This field is required",
87
87
  email: "Use a valid email address",
@@ -155,7 +155,7 @@ class FormElementComponent {
155
155
  }
156
156
  getErrorMessages(key) {
157
157
  var _a, _b, _c;
158
- return (_c = (_b = (_a = this.customMessages)[key]) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : this.errorMessages[key];
158
+ return (_c = (_b = (_a = this.customMessages) === null || _a === void 0 ? void 0 : _a[key]) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : this.errorMessages[key];
159
159
  }
160
160
  }
161
161
  FormElementComponent.decorators = [
@@ -613,6 +613,11 @@ function dateValidator(control) {
613
613
  return invalid ? { date: control.value } : null;
614
614
  }
615
615
 
616
+ const KLP_DATE_FORMATS = new InjectionToken('klp.form.date.formats');
617
+ function matDateFormatsFactory(component, dateFormats) {
618
+ var _a;
619
+ return (_a = dateFormats === null || dateFormats === void 0 ? void 0 : dateFormats(component.format)) !== null && _a !== void 0 ? _a : MAT_NATIVE_DATE_FORMATS;
620
+ }
616
621
  class DatepickerComponent extends ValueAccessorBase {
617
622
  constructor() {
618
623
  super(...arguments);
@@ -695,6 +700,10 @@ DatepickerComponent.decorators = [
695
700
  template: "<div class=\"componentContainer\" [ngClass]=\"{showErrors: isInErrorState()}\">\n\t<mat-form-field [floatLabel]=\"'never'\">\n\t\t<input\n\t\t\t#nativeInput\n\t\t\tmatInput\n\t\t\t[matDatepicker]=\"picker\"\n\t\t\t[(ngModel)]=\"valueForMaterialDatePicker\"\n\t\t\t(dateInput)=\"dateChanged($event)\"\n\t\t\t(input)=\"nativeValueChanged($event)\"\n\t\t\t[min]=\"minDateStartOfDay\"\n\t\t\t[max]=\"maxDateEndOfDay\"\n\t\t\t[placeholder]=\"placeholder\"\n\t\t\t(click)=\"picker.open()\"\n\t\t\t(blur)=\"touch()\"\n\t\t>\n\t\t<mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n\t\t<mat-datepicker #picker\n\t\t></mat-datepicker>\n\t</mat-form-field>\n\t<button *ngIf=\"clearable\" class=\"clearButton\" (click)=\"resetToNull()\">\u00D7</button>\n</div>\n",
696
701
  providers: [
697
702
  { provide: NG_VALUE_ACCESSOR, useExisting: DatepickerComponent, multi: true },
703
+ { provide: MAT_DATE_FORMATS,
704
+ deps: [DatepickerComponent, [new Optional(), KLP_DATE_FORMATS]],
705
+ useFactory: matDateFormatsFactory,
706
+ }
698
707
  ],
699
708
  styles: [":host{display:block}:host ::ng-deep mat-form-field{display:block;height:100%}:host ::ng-deep mat-form-field.mat-focused .mat-form-field-label,:host ::ng-deep mat-form-field .mat-form-field-label{color:#adadad}:host ::ng-deep .mat-datepicker-toggle-active{color:#666}:host ::ng-deep .mat-form-field-wrapper{padding-bottom:none}:host ::ng-deep .mat-form-field-flex{flex-direction:row-reverse}:host ::ng-deep .mat-form-field-infix{border-top:none}:host ::ng-deep .mat-form-field-suffix{margin-right:.625rem}:host ::ng-deep .mat-form-field-suffix:hover .mat-button-focus-overlay{opacity:.1}:host ::ng-deep .mat-form-field-underline{display:none}.componentContainer{-moz-transition:all .2s ease-in;-ms-transition:all .2s ease-in;-o-transition:all .2s ease-in;-webkit-transition:all .2s ease-in;border:1px solid #e6ecf5;border-radius:2px;box-shadow:none;color:#888da8;display:block;font-size:14px;height:42px;padding:.375rem .625rem;position:relative;transition:all .2s ease-in;width:100%}.componentContainer::-webkit-input-placeholder{color:#adadad}.componentContainer:-moz-placeholder,.componentContainer::-moz-placeholder{color:#adadad}.componentContainer:-ms-input-placeholder{color:#adadad}.componentContainer:focus{border-color:#3ed778;box-shadow:none;outline:0 none}.componentContainer.input-sm{height:30px}.componentContainer.input-lg{height:50px}.componentContainer.error{background-color:#ffeff4;border-color:#ff3c7e}.componentContainer.valid{background-color:#ebfaeb;border-color:#37c936;color:#278d26}.componentContainer.showErrors{border-color:#ff8000}.componentContainer .clearButton{align-items:center;background:none;border:none;bottom:0;color:#7b7b7b;display:flex;font-size:18px;position:absolute;right:1.25rem;top:0}"]
700
709
  },] }
@@ -702,6 +711,7 @@ DatepickerComponent.decorators = [
702
711
  DatepickerComponent.propDecorators = {
703
712
  minDate: [{ type: Input }],
704
713
  maxDate: [{ type: Input }],
714
+ format: [{ type: Input }],
705
715
  placeholder: [{ type: Input }],
706
716
  clearable: [{ type: Input }],
707
717
  nativeInputRef: [{ type: ViewChild, args: ['nativeInput',] }],
@@ -779,5 +789,5 @@ NgxEnhancyFormsModule.decorators = [
779
789
  * Generated bundle index. Do not edit.
780
790
  */
781
791
 
782
- export { ButtonComponent, CheckboxComponent, DEFAULT_ERROR_MESSAGES, DatepickerComponent, EmailInputComponent, FORM_ERROR_MESSAGES, FormCaptionComponent, FormComponent, FormElementComponent, FormErrorComponent, FormSubmitButtonComponent, LoadingIndicatorComponent, NgxEnhancyFormsModule, NumberInputComponent, PasswordFieldComponent, SelectComponent, SortableItemsComponent, TextInputComponent, ToggleComponent, ValueAccessorBase, dateValidator, invalidDateKey, MaterialModule as ɵa };
792
+ export { ButtonComponent, CheckboxComponent, DEFAULT_ERROR_MESSAGES, DatepickerComponent, EmailInputComponent, FORM_ERROR_MESSAGES, FormCaptionComponent, FormComponent, FormElementComponent, FormErrorComponent, FormSubmitButtonComponent, KLP_DATE_FORMATS, LoadingIndicatorComponent, NgxEnhancyFormsModule, NumberInputComponent, PasswordFieldComponent, SelectComponent, SortableItemsComponent, TextInputComponent, ToggleComponent, ValueAccessorBase, dateValidator, invalidDateKey, matDateFormatsFactory, MaterialModule as ɵa };
783
793
  //# sourceMappingURL=klippa-ngx-enhancy-forms.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"klippa-ngx-enhancy-forms.js","sources":["../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-element/form-element.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/util/values.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/value-accessor-base/value-accessor-base.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/button/button.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/checkbox/checkbox.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/email/email-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/loading-indicator/loading-indicator.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/number-input/number-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/password-field/password-field.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/select/select.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/sortable-items/sortable-items.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/text-input/text-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/toggle/toggle.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-caption/form-caption.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-error/form-error.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-submit-button/form-submit-button.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/validators/dateValidator.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/datepicker/datepicker.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/material.module.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/ngx-enhancy-forms.module.ts","../../../../projects/klippa/ngx-enhancy-forms/src/public-api.ts","../../../../projects/klippa/ngx-enhancy-forms/src/klippa-ngx-enhancy-forms.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { FormArray, FormControl, FormGroup } from '@angular/forms';\nimport {FormElementComponent} from \"./form-element/form-element.component\";\n\n@Component({\n\tselector: 'klp-form',\n\ttemplateUrl: './form.component.html',\n\tstyleUrls: ['./form.component.scss'],\n})\nexport class FormComponent {\n\t@Input() public formGroup: FormGroup;\n\n\t// we keep track of what form controls are actually rendered. Only those count when looking at form validation\n\tprivate activeControls: Array<{\n\t\tformControl: FormControl;\n\t\tformElement: FormElementComponent;\n\t}> = [];\n\n\tpublic registerControl(formControl: FormControl, formElement: FormElementComponent) {\n\t\tthis.activeControls.push({ formControl, formElement });\n\t}\n\n\tpublic unregisterControl(formControl: FormControl) {\n\t\tthis.activeControls = this.activeControls.filter((e) => e.formControl !== formControl);\n\t}\n\n\tprivate disableInactiveFormGroupControls(formGroup: FormGroup) {\n\t\tObject.values(formGroup.controls).forEach((value) => {\n\t\t\tif (value instanceof FormGroup) {\n\t\t\t\tthis.disableInactiveFormGroupControls(value);\n\t\t\t} else if (value instanceof FormArray) {\n\t\t\t\tthis.disableInactiveFormArrayControls(value);\n\t\t\t} else if (value instanceof FormControl) {\n\t\t\t\tthis.disableInactiveFormControl(value);\n\t\t\t}\n\t\t});\n\t}\n\tprivate disableInactiveFormArrayControls(formArray: FormArray) {\n\t\tformArray.controls.forEach((value) => {\n\t\t\tif (value instanceof FormGroup) {\n\t\t\t\tthis.disableInactiveFormGroupControls(value);\n\t\t\t} else if (value instanceof FormArray) {\n\t\t\t\tthis.disableInactiveFormArrayControls(value);\n\t\t\t} else if (value instanceof FormControl) {\n\t\t\t\tthis.disableInactiveFormControl(value);\n\t\t\t}\n\t\t});\n\t}\n\tprivate disableInactiveFormControl(control: FormControl) {\n\t\tif (this.activeControls.some((e) => e.formControl === control)) {\n\t\t\tcontrol.enable();\n\t\t} else {\n\t\t\tcontrol.disable();\n\t\t}\n\t}\n\n\ttrySubmit(): Promise<any> {\n\t\tthis.formGroup.markAllAsTouched();\n\t\tthis.disableInactiveFormGroupControls(this.formGroup);\n\t\tif (this.formGroup.valid) {\n\t\t\treturn Promise.resolve(this.formGroup.value);\n\t\t} else {\n\t\t\tthis.activeControls.find((e) => !e.formControl.valid)?.formElement?.scrollTo();\n\t\t\treturn Promise.reject('Not all fields are valid');\n\t\t}\n\t}\n}\n","import {Component, ElementRef, Host, Inject, InjectionToken, Input, OnInit, Optional, ViewChild} from '@angular/core';\nimport { AbstractControl, FormControl } from '@angular/forms';\nimport {FormComponent} from \"../form.component\";\nimport {CustomErrorMessages, FormErrorMessages} from \"../../types\";\nimport {isObservable} from \"rxjs\";\n\nexport const FORM_ERROR_MESSAGES = new InjectionToken<CustomErrorMessages>('form.error.messages');\n\nexport const DEFAULT_ERROR_MESSAGES: FormErrorMessages = {\n\tmin: \"use a number larger than %min%\",\n\tmax: \"Use a number smaller than %max%\",\n\trequired: \"This field is required\",\n\temail: \"Use a valid email address\",\n\tminLength: \"Has to be longer than %minLength% character(s)\",\n\tmaxLength: \"Has to be shorter than %maxLength% character(s)\",\n\tpattern: \"This input is not valid\",\n\tmatchPassword: \"Passwords must match\",\n\tdate: \"Enter a valid date\",\n}\n\n@Component({\n\tselector: 'klp-form-element',\n\ttemplateUrl: './form-element.component.html',\n\tstyleUrls: ['./form-element.component.scss'],\n})\nexport class FormElementComponent {\n\tpublic attachedControl: AbstractControl;\n\t@Input() public caption: String;\n\t@Input() public direction: 'horizontal' | 'vertical' = 'horizontal';\n\t@Input() public captionSpacing: 'percentages' | 'none' = 'percentages';\n\t@Input() public swapInputAndCaption: boolean = false;\n\t@ViewChild('internalComponentRef') public internalComponentRef: ElementRef;\n\n\tpublic captionRef: ElementRef;\n\tpublic errorMessages: FormErrorMessages = DEFAULT_ERROR_MESSAGES;\n\tpublic customErrorHandlers: Array<{ error: string; templateRef: ElementRef }> = [];\n\n\tconstructor(\n\t\t@Host() @Optional() private parent: FormComponent,\n\t\t@Inject(FORM_ERROR_MESSAGES) @Optional() private customMessages: CustomErrorMessages\n\t) {\n\t}\n\n\tpublic substituteParameters(message: string, parameters: Record<string, any>): string {\n\t\treturn Object.keys(parameters).reduce((msg, key) => {\n\t\t\treturn msg.replace(`%${key}%`, parameters[key]);\n\t\t}, message);\n\t}\n\n\tpublic registerControl(formControl: FormControl) {\n\t\tthis.attachedControl = formControl;\n\t\tthis.parent.registerControl(formControl, this);\n\t}\n\n\tpublic unregisterControl(formControl: FormControl) {\n\t\tthis.attachedControl = null;\n\t\tthis.parent.unregisterControl(formControl);\n\t}\n\n\tpublic getAttachedControl() {\n\t\treturn this.attachedControl;\n\t}\n\n\tpublic registerErrorHandler(error: string, templateRef: ElementRef) {\n\t\tthis.customErrorHandlers.push({ error, templateRef });\n\t}\n\n\tpublic registerCaption(templateRef: ElementRef) {\n\t\tthis.captionRef = templateRef;\n\t}\n\n\tgetErrorToShow() {\n\t\tif (this.attachedControl?.touched === true && this.attachedControl?.errors) {\n\t\t\treturn Object.keys(this.attachedControl?.errors)[0];\n\t\t}\n\t\treturn null;\n\t}\n\n\tgetCustomErrorHandler(error: string) {\n\t\treturn this.customErrorHandlers.find((e) => e.error === error);\n\t}\n\n\tshowDefaultError(error: string) {\n\t\treturn this.getErrorToShow() === error && !this.customErrorHandlers.some((e) => e.error === error);\n\t}\n\n\tgetScrollableParent(node) {\n\t\tif (node == null) {\n\t\t\treturn null;\n\t\t}\n\t\tif (node.scrollHeight > node.clientHeight) {\n\t\t\treturn node;\n\t\t} else {\n\t\t\treturn this.getScrollableParent(node.parentNode);\n\t\t}\n\t}\n\n\tscrollTo() {\n\t\tthis.internalComponentRef.nativeElement.scrollIntoView(true);\n\t\t// to give some breathing room, we scroll 100px more to the top\n\t\tthis.getScrollableParent(this.internalComponentRef.nativeElement)?.scrollBy(0, -100);\n\t}\n\n\tgetErrorMessages(key: keyof FormErrorMessages) {\n\t\treturn this.customMessages[key]?.() ?? this.errorMessages[key];\n\t}\n}\n","import { isString } from 'lodash';\n\nexport function stringIsSetAndNotEmpty(s: string) {\n\treturn isString(s) && s.length > 0;\n}\n\nexport function isNullOrUndefined(value: any) {\n\treturn value === null || value === undefined;\n}\n\nexport function numberIsSet(value: any) {\n\treturn isValueSet(value) && typeof value === 'number';\n}\n\nexport function isValueSet(value: any) {\n\treturn value !== null && value !== undefined;\n}\n\nexport function stringOrArrayIsSetAndEmpty(value: any[] | string) {\n\treturn value !== null && value !== undefined && value.length === 0;\n}\n\nexport function useIfStringIsSet(s: string) {\n\tif (stringIsSetAndNotEmpty(s)) {\n\t\treturn s;\n\t}\n\treturn undefined;\n}\n\nexport function useIfArrayIsSetWithOneItem(a: Array<any>): any {\n\tif (!isNullOrUndefined(a) && a.length === 1) {\n\t\treturn a[0];\n\t}\n\treturn undefined;\n}\n\nexport function convertParentToChild<C>(originalClass: any, newClass: C): C {\n\treturn Object.assign(newClass, originalClass);\n}\n\nexport function truncateString(s: string, length: number) {\n\tif (s.length < length) {\n\t\treturn s;\n\t}\n\treturn s.substring(0, length) + '...';\n}\n","import { ControlContainer, ControlValueAccessor, FormControl } from '@angular/forms';\nimport { Component, Host, Input, Optional } from '@angular/core';\nimport { FormElementComponent } from '../../form/form-element/form-element.component';\nimport { isNullOrUndefined, stringIsSetAndNotEmpty } from '../../util/values';\n\n/**\n * This component is a base in order to create a component that supports ngModel.\n * Some important things to know about it:\n *\n * innerValue = your own inner state, which you should use to store the current state of what ngModel should be.\n * writeValue() = called by angular, when ngModel is changed from OUTSIDE of the component. Feel free to patch this method if you need inner logic to happen when ngModel is altered from the outside. Always remember to also call the super.writeValue if you do!\n * setInnerValueAndNotify() = call this when you want your ngModel to be updated from INSIDE of your component, and provide it to the OUTSIDE.\n * ngOnInit() = Used to support the angular reactive forms framework. If you use ngOnInit in your own component (which happens fairly often) you must not forget to call the super.ngOnInit() method.\n */\n\n@Component({\n\tselector: '',\n\ttemplate: '',\n})\nexport class ValueAccessorBase<T> implements ControlValueAccessor {\n\tpublic innerValue: T;\n\tpublic changed = new Array<(value: T) => void>();\n\tprivate touched = new Array<() => void>();\n\n\t@Input() public disabled = false;\n\t// we support both providing just the formControlName and the full formControl\n\t@Input() public formControlName: string = null;\n\t@Input() public formControl: FormControl = null;\n\n\tprivate attachedFormControl: FormControl;\n\n\tconstructor(\n\t\t@Host() @Optional() protected parent: FormElementComponent,\n\t\t@Host() @Optional() protected controlContainer: ControlContainer\n\t) {}\n\n\tngOnInit() {\n\t\tif (this.formControl) {\n\t\t\tthis.attachedFormControl = this.formControl;\n\t\t} else if (stringIsSetAndNotEmpty(this.formControlName)) {\n\t\t\tthis.attachedFormControl = this.controlContainer?.control.get(this.formControlName) as FormControl;\n\t\t\tif (isNullOrUndefined(this.attachedFormControl)) {\n\t\t\t\tthrow new Error(`Form element '${this.formControlName}' with caption '${this.parent?.caption}' is not declared in your FormGroup.`);\n\t\t\t}\n\t\t}\n\t\tif (this.attachedFormControl) {\n\t\t\tthis.disabled = this.attachedFormControl.disabled;\n\t\t\tthis.attachedFormControl.statusChanges.subscribe(() => {\n\t\t\t\tthis.disabled = this.attachedFormControl.disabled;\n\t\t\t});\n\t\t\tthis.parent?.registerControl(this.attachedFormControl);\n\t\t}\n\t}\n\n\tisInErrorState() {\n\t\treturn this.attachedFormControl && this.attachedFormControl.status === 'INVALID' && this.attachedFormControl.touched;\n\t}\n\n\tngOnDestroy() {\n\t\tif (this.attachedFormControl) {\n\t\t\tthis.parent?.unregisterControl(this.attachedFormControl);\n\t\t}\n\t}\n\n\ttouch() {\n\t\tthis.touched.forEach((f) => f());\n\t}\n\n\twriteValue(value: T) {\n\t\tthis.innerValue = value;\n\t}\n\n\tregisterOnChange(fn: (value: T) => void) {\n\t\tthis.changed.push(fn);\n\t}\n\n\tregisterOnTouched(fn: () => void) {\n\t\tthis.touched.push(fn);\n\t}\n\n\tsetInnerValueAndNotify(value) {\n\t\tthis.innerValue = value;\n\t\tthis.changed.forEach((fn) => fn(value));\n\t}\n\n\tresetToNull() {\n\t\tthis.setInnerValueAndNotify(null);\n\t}\n}\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n\tselector: 'klp-form-button',\n\ttemplateUrl: './button.component.html',\n\tstyleUrls: ['./button.component.scss'],\n})\nexport class ButtonComponent {\n\t@Input() variant:\n\t\t| 'white'\n\t\t| 'greenFilled'\n\t\t| 'greenOutlined'\n\t\t| 'greenLink'\n\t\t| 'contextMenuItem'\n\t\t| 'redFilled'\n\t\t| 'redOutlined'\n\t\t| 'orangeFilled' = 'white';\n\t@Input() size: 'small' | 'medium' | 'large' = 'medium';\n\t@Input() fullWidth = false;\n\t@Input() hasBorder = true;\n\t@Input() disabled = false;\n\t@Input() isLoading = false;\n\t@Input() type: 'button' | 'submit' = 'button';\n\n\t@HostBinding('class._fullWidth') get _() {\n\t\treturn this.fullWidth;\n\t}\n\n\tonClick(event: Event) {\n\t\tif (this.disabled) {\n\t\t\tevent.stopPropagation();\n\t\t}\n\t}\n}\n","import { Component, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ValueAccessorBase } from '../value-accessor-base/value-accessor-base.component';\n\n@Component({\n\tselector: 'klp-form-checkbox',\n\ttemplateUrl: './checkbox.component.html',\n\tstyleUrls: ['./checkbox.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true }],\n})\nexport class CheckboxComponent extends ValueAccessorBase<boolean> {\n\t@Input() caption: string;\n\t@Input() disabled: boolean;\n}\n","import { Component, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n\tselector: 'klp-form-email-input',\n\ttemplateUrl: './email-input.component.html',\n\tstyleUrls: ['./email-input.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: EmailInputComponent, multi: true }],\n})\nexport class EmailInputComponent extends ValueAccessorBase<string> {\n\t@Input() placeholder = '';\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n\tselector: 'klp-form-loading-indicator',\n\ttemplateUrl: './loading-indicator.component.html',\n\tstyleUrls: ['./loading-indicator.component.scss'],\n})\nexport class LoadingIndicatorComponent {\n\t@Input() public variant: '3dots' | 'spinner' | 'textInput' | 'picker' = '3dots';\n\t@Input() public size: 'tiny' | 'small' | 'medium' | 'large' | 'huge' = 'medium';\n}\n","import { Component, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n\tselector: 'klp-form-number-input',\n\ttemplateUrl: './number-input.component.html',\n\tstyleUrls: ['./number-input.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: NumberInputComponent, multi: true }],\n})\nexport class NumberInputComponent extends ValueAccessorBase<string> {\n\t@Input() placeholder: string;\n}\n","import {Component, Input} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n\tselector: 'klp-form-password-field',\n\ttemplateUrl: './password-field.component.html',\n\tstyleUrls: ['./password-field.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: PasswordFieldComponent, multi: true }],\n})\nexport class PasswordFieldComponent extends ValueAccessorBase<string> {\n\t@Input() placeholder = 'Password';\n}\n","import { Component, Host, Input, OnInit, Optional } from '@angular/core';\nimport { ControlContainer, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\nimport {FormElementComponent} from \"../../form/form-element/form-element.component\";\n\nexport type AppSelectOptions = Array<{\n\tid: any;\n\tname: string;\n\tdescription?: string;\n\tdisabled?: boolean;\n}>;\n\n@Component({\n\tselector: 'klp-form-select',\n\ttemplateUrl: './select.component.html',\n\tstyleUrls: ['./select.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: SelectComponent, multi: true }],\n})\nexport class SelectComponent extends ValueAccessorBase<string | string[]> {\n\t@Input() placeholder: string = 'Pick an option';\n\t@Input() options: AppSelectOptions;\n\t@Input() multiple = false;\n\t@Input() clearable = true;\n\t@Input() public dropdownPosition: string;\n\t@Input() public customSearchFn: (term: string, item: { id: string; name: string; description: string }) => boolean;\n\n\tconstructor(\n\t\t@Optional() @Host() protected parent: FormElementComponent,\n\t\t@Optional() @Host() protected controlContainer: ControlContainer,\n\t) {\n\t\tsuper(parent, controlContainer);\n\t}\n}\n","import { Component, ContentChild, Input, TemplateRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n\tselector: 'klp-form-sortable-items',\n\ttemplateUrl: './sortable-items.component.html',\n\tstyleUrls: ['./sortable-items.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: SortableItemsComponent, multi: true }],\n})\nexport class SortableItemsComponent extends ValueAccessorBase<Array<any>> {\n\t@ContentChild(TemplateRef) template;\n\t@Input() sortableItemSize: 'sm' | 'lg' = 'lg';\n\n\titemsOrderChanged = () => {\n\t\tthis.setInnerValueAndNotify(this.innerValue);\n\t};\n}\n","import { Component, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n\tselector: 'klp-form-text-input',\n\ttemplateUrl: './text-input.component.html',\n\tstyleUrls: ['./text-input.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: TextInputComponent, multi: true }],\n})\nexport class TextInputComponent extends ValueAccessorBase<string> {\n\t@Input() placeholder: string;\n\t@Input() type: 'text' | 'password' = 'text';\n}\n","import { Component, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n\tselector: 'klp-form-toggle',\n\ttemplateUrl: './toggle.component.html',\n\tstyleUrls: ['./toggle.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: ToggleComponent, multi: true }],\n})\nexport class ToggleComponent extends ValueAccessorBase<boolean> {}\n","import { Component, ElementRef, Host, OnInit, Optional, ViewChild } from '@angular/core';\nimport {FormElementComponent} from \"../form-element/form-element.component\";\nimport {isNullOrUndefined} from \"../../util/values\";\n\n@Component({\n\tselector: 'klp-form-caption',\n\ttemplateUrl: './form-caption.component.html',\n\tstyleUrls: ['./form-caption.component.scss'],\n})\nexport class FormCaptionComponent implements OnInit {\n\t@ViewChild('contentRef') public contentRef: ElementRef;\n\n\tconstructor(@Host() @Optional() private parent: FormElementComponent) {}\n\n\tngOnInit(): void {\n\t\t// this is being run next cycle, because we dont want to fail if the order of components is as follows:\n\t\t// <app-form-error />\n\t\t// <some-input />\n\t\t// That would fail, because the logic of the form error is run first, and at that moment, the `some-input` isnt registered yet\n\t\tsetTimeout(() => {\n\t\t\tconst attachedControl = this.parent.getAttachedControl();\n\t\t\tthis.parent.registerCaption(this.contentRef);\n\t\t\tif (isNullOrUndefined(attachedControl)) {\n\t\t\t\tthrow new Error('You added a Form Caption component without an attached Form Control');\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Component, ElementRef, Host, Input, OnInit, Optional, ViewChild } from '@angular/core';\nimport {FormElementComponent} from \"../form-element/form-element.component\";\nimport {isNullOrUndefined} from \"../../util/values\";\nimport {ErrorTypes} from \"../../types\";\n\n@Component({\n\tselector: 'klp-form-error',\n\ttemplateUrl: './form-error.component.html',\n\tstyleUrls: ['./form-error.component.scss'],\n})\nexport class FormErrorComponent implements OnInit {\n\t@Input() error: ErrorTypes;\n\tpublic showError = false;\n\t@ViewChild('contentRef') public contentRef: ElementRef;\n\tconstructor(@Host() @Optional() private parent: FormElementComponent) {}\n\n\tngOnInit(): void {\n\t\t// this is being run next cycle, because we dont want to fail if the order of components is as follows:\n\t\t// <app-form-error />\n\t\t// <some-input />\n\t\t// That would fail, because the logic of the form error is run first, and at that moment, the `some-input` isnt registered yet\n\t\tsetTimeout(() => {\n\t\t\tconst attachedControl = this.parent.getAttachedControl();\n\t\t\tthis.parent.registerErrorHandler(this.error, this.contentRef);\n\t\t\tif (isNullOrUndefined(attachedControl)) {\n\t\t\t\tthrow new Error('You added a Form Error component without an attached Form Control');\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Component, Host, HostBinding, Input, Optional } from '@angular/core';\nimport {FormComponent} from \"../form.component\";\n\n@Component({\n\tselector: 'klp-form-submit-button',\n\ttemplateUrl: './form-submit-button.component.html',\n\tstyleUrls: ['./form-submit-button.component.scss'],\n})\nexport class FormSubmitButtonComponent {\n\t@Input() public isLoading = false;\n\t@Input() fullWidth = false;\n\t@Input() variant: 'greenFilled' | 'redFilled' = 'greenFilled';\n\t@Input() public submitCallback: (any) => Promise<void>;\n\n\t@HostBinding('class._fullWidth') get _() {\n\t\treturn this.fullWidth;\n\t}\n\n\tconstructor(@Host() @Optional() private parentForm: FormComponent) {}\n\n\tsubmitForm() {\n\t\tthis.parentForm\n\t\t\t.trySubmit()\n\t\t\t.then((value) => {\n\t\t\t\tthis.isLoading = true;\n\t\t\t\tthis.submitCallback(value)\n\t\t\t\t\t.then(() => (this.isLoading = false))\n\t\t\t\t\t.catch(() => (this.isLoading = false));\n\t\t\t})\n\t\t\t.catch(() => {}); // swallow the error, the framework will scroll to the field that needs attention\n\t}\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport const invalidDateKey = '--invalid_date--';\n\nexport function dateValidator(control: AbstractControl): ValidationErrors | null {\n\tconst invalid = control.value === invalidDateKey;\n\treturn invalid ? { date: control.value } : null;\n}\n","import {Component, ElementRef, Input, SimpleChanges, ViewChild} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport { isNullOrUndefined, stringIsSetAndNotEmpty } from '../../util/values';\nimport { invalidDateKey } from '../../validators/dateValidator';\nimport { MatDatepicker } from '@angular/material/datepicker';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n\tselector: 'klp-form-datepicker',\n\ttemplateUrl: './datepicker.component.html',\n\tstyleUrls: ['./datepicker.component.scss'],\n\tproviders: [\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: DatepickerComponent, multi: true },\n\t],\n})\nexport class DatepickerComponent extends ValueAccessorBase<Date | typeof invalidDateKey> {\n\t@Input() public minDate: Date = undefined;\n\t@Input() public maxDate: Date = undefined;\n\t@Input() public placeholder = 'Select date';\n\t@Input() public clearable = false;\n\n\t@ViewChild('nativeInput') nativeInputRef: ElementRef;\n\t@ViewChild('picker') datePickerRef: MatDatepicker<Date>;\n\n\tminDateStartOfDay: Date = undefined;\n\tmaxDateEndOfDay: Date = undefined;\n\n\t// this is passed as ngmodel and is used to set the inital date. But we also\n\t// use input and nativeInput callbacks to extend the validation logic so we\n\t// can destinguish between empty and invalid dates.\n\tvalueForMaterialDatePicker: Date;\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (changes.minDate) {\n\t\t\tthis.setMinDate(changes.minDate.currentValue);\n\t\t}\n\t\tif (changes.maxDate) {\n\t\t\tthis.setMaxDate(changes.maxDate.currentValue);\n\t\t}\n\t}\n\n\tsetMinDate(minDate: Date) {\n\t\tif (minDate) {\n\t\t\tthis.minDateStartOfDay = new Date(minDate);\n\t\t\tthis.minDateStartOfDay.setHours(0, 0, 0, 0);\n\t\t} else {\n\t\t\tthis.minDateStartOfDay = undefined;\n\t\t}\n\t}\n\n\tsetMaxDate(maxDate: Date) {\n\t\tif (maxDate) {\n\t\t\tthis.maxDateEndOfDay = new Date(maxDate);\n\t\t\tthis.maxDateEndOfDay.setHours(23, 59, 59, 999);\n\t\t} else {\n\t\t\tthis.maxDateEndOfDay = undefined;\n\t\t}\n\t}\n\n\t// dateChanged is called when the output of the datepicker is changed and\n\t// parsed correctly. If the date is invalid, it will be called the first time\n\t// with null but never again until a valid input is provided.\n\tdateChanged(event: any) {\n\t\tconst nativeInputValue = this.nativeInputRef.nativeElement.value;\n\t\tconst date = event.value;\n\t\tif (isNullOrUndefined(date) && stringIsSetAndNotEmpty(nativeInputValue)) {\n\t\t\tthis.setInnerValueAndNotify(invalidDateKey);\n\t\t} else {\n\t\t\tthis.setInnerValueAndNotify(date);\n\t\t}\n\t}\n\n\twriteValue(value: Date | typeof invalidDateKey) {\n\t\tsuper.writeValue(value);\n\t\tthis.valueForMaterialDatePicker = value === invalidDateKey ? null : value;\n\t}\n\n\t// nativeValueChanged is called when the internal text value changes, but not\n\t// when the date is changed via the date picker. We need this so that we can\n\t// determine if the datepicker is empty or invalid.\n\tnativeValueChanged(event: any) {\n\t\tconst nativeInputValue = event.target.value;\n\t\tconst date = this.valueForMaterialDatePicker;\n\n\t\tif (this.datePickerRef.opened) {\n\t\t\t// if the user is typing instead of using the picker, close it.\n\t\t\tthis.datePickerRef.close();\n\t\t}\n\n\t\tif (isNullOrUndefined(date) && stringIsSetAndNotEmpty(nativeInputValue)) {\n\t\t\tthis.setInnerValueAndNotify(invalidDateKey);\n\t\t} else {\n\t\t\tthis.setInnerValueAndNotify(date);\n\t\t}\n\t}\n\n\tresetToNull() {\n\t\tthis.setInnerValueAndNotify(null);\n\t\tthis.valueForMaterialDatePicker = null;\n\t\tthis.nativeInputRef.nativeElement.value = null;\n\t}\n}\n","// material.module.ts\n\nimport { NgModule } from '@angular/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\n\n@NgModule({\n\timports: [MatDatepickerModule, MatFormFieldModule, MatNativeDateModule, MatInputModule, MatButtonModule],\n\texports: [MatDatepickerModule, MatFormFieldModule, MatNativeDateModule, MatInputModule, MatButtonModule],\n\tproviders: [MatDatepickerModule],\n})\nexport class MaterialModule {}\n","import { NgModule } from '@angular/core';\nimport {CommonModule} from \"@angular/common\";\nimport {FormsModule} from \"@angular/forms\";\nimport {ValueAccessorBase} from \"./elements/value-accessor-base/value-accessor-base.component\";\nimport {ButtonComponent} from \"./elements/button/button.component\";\nimport {CheckboxComponent} from \"./elements/checkbox/checkbox.component\";\nimport {EmailInputComponent} from \"./elements/email/email-input.component\";\nimport {LoadingIndicatorComponent} from \"./elements/loading-indicator/loading-indicator.component\";\nimport {NumberInputComponent} from \"./elements/number-input/number-input.component\";\nimport {PasswordFieldComponent} from \"./elements/password-field/password-field.component\";\nimport {SelectComponent} from \"./elements/select/select.component\";\nimport {SortableItemsComponent} from \"./elements/sortable-items/sortable-items.component\";\nimport {TextInputComponent} from \"./elements/text-input/text-input.component\";\nimport {ToggleComponent} from \"./elements/toggle/toggle.component\";\nimport {FormCaptionComponent} from \"./form/form-caption/form-caption.component\";\nimport {FormElementComponent} from \"./form/form-element/form-element.component\";\nimport {FormErrorComponent} from \"./form/form-error/form-error.component\";\nimport {FormSubmitButtonComponent} from \"./form/form-submit-button/form-submit-button.component\";\nimport {FormComponent} from \"./form/form.component\";\nimport {SortablejsModule} from \"ngx-sortablejs\";\nimport {NgSelectModule} from \"@ng-select/ng-select\";\nimport {DatepickerComponent} from \"./elements/datepicker/datepicker.component\";\nimport {MaterialModule} from \"./material.module\";\n\n\n\n@NgModule({\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tNgSelectModule,\n\t\tSortablejsModule,\n\t\tMaterialModule,\n\t],\n\tdeclarations: [\n\t\tValueAccessorBase,\n\t\tButtonComponent,\n\t\tCheckboxComponent,\n\t\tDatepickerComponent,\n\t\tEmailInputComponent,\n\t\tLoadingIndicatorComponent,\n\t\tNumberInputComponent,\n\t\tPasswordFieldComponent,\n\t\tSelectComponent,\n\t\tSortableItemsComponent,\n\t\tTextInputComponent,\n\t\tToggleComponent,\n\t\tFormCaptionComponent,\n\t\tFormElementComponent,\n\t\tFormErrorComponent,\n\t\tFormSubmitButtonComponent,\n\t\tFormComponent,\n\t],\n\texports: [\n\t\tValueAccessorBase,\n\t\tButtonComponent,\n\t\tDatepickerComponent,\n\t\tCheckboxComponent,\n\t\tEmailInputComponent,\n\t\tLoadingIndicatorComponent,\n\t\tNumberInputComponent,\n\t\tPasswordFieldComponent,\n\t\tSelectComponent,\n\t\tSortableItemsComponent,\n\t\tTextInputComponent,\n\t\tToggleComponent,\n\t\tFormCaptionComponent,\n\t\tFormElementComponent,\n\t\tFormErrorComponent,\n\t\tFormSubmitButtonComponent,\n\t\tFormComponent,\n\t]\n})\nexport class NgxEnhancyFormsModule { }\n","/*\n * Public API Surface of ngx-enhancy-forms\n */\n\nexport * from './lib/ngx-enhancy-forms.module';\n\nexport * from './lib/elements/button/button.component';\nexport * from './lib/elements/checkbox/checkbox.component';\nexport * from './lib/elements/datepicker/datepicker.component';\nexport * from './lib/elements/email/email-input.component';\nexport * from './lib/elements/loading-indicator/loading-indicator.component';\nexport * from './lib/elements/number-input/number-input.component';\nexport * from './lib/elements/password-field/password-field.component';\nexport * from './lib/elements/select/select.component';\nexport * from './lib/elements/sortable-items/sortable-items.component';\nexport * from './lib/elements/text-input/text-input.component';\nexport * from './lib/elements/toggle/toggle.component';\nexport * from './lib/elements/value-accessor-base/value-accessor-base.component';\n\nexport * from './lib/form/form.component';\nexport * from './lib/form/form-caption/form-caption.component';\nexport * from './lib/form/form-element/form-element.component';\nexport * from './lib/form/form-error/form-error.component';\nexport * from './lib/form/form-submit-button/form-submit-button.component';\n\nexport * from './lib/validators/dateValidator';\n\nexport * from './lib/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {MaterialModule as ɵa} from './lib/material.module';"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"klippa-ngx-enhancy-forms.js","sources":["../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-element/form-element.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/util/values.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/value-accessor-base/value-accessor-base.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/button/button.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/checkbox/checkbox.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/email/email-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/loading-indicator/loading-indicator.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/number-input/number-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/password-field/password-field.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/select/select.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/sortable-items/sortable-items.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/text-input/text-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/toggle/toggle.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-caption/form-caption.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-error/form-error.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-submit-button/form-submit-button.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/validators/dateValidator.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/datepicker/datepicker.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/material.module.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/ngx-enhancy-forms.module.ts","../../../../projects/klippa/ngx-enhancy-forms/src/public-api.ts","../../../../projects/klippa/ngx-enhancy-forms/src/klippa-ngx-enhancy-forms.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { FormArray, FormControl, FormGroup } from '@angular/forms';\nimport {FormElementComponent} from \"./form-element/form-element.component\";\n\n@Component({\n\tselector: 'klp-form',\n\ttemplateUrl: './form.component.html',\n\tstyleUrls: ['./form.component.scss'],\n})\nexport class FormComponent {\n\t@Input() public formGroup: FormGroup;\n\n\t// we keep track of what form controls are actually rendered. Only those count when looking at form validation\n\tprivate activeControls: Array<{\n\t\tformControl: FormControl;\n\t\tformElement: FormElementComponent;\n\t}> = [];\n\n\tpublic registerControl(formControl: FormControl, formElement: FormElementComponent) {\n\t\tthis.activeControls.push({ formControl, formElement });\n\t}\n\n\tpublic unregisterControl(formControl: FormControl) {\n\t\tthis.activeControls = this.activeControls.filter((e) => e.formControl !== formControl);\n\t}\n\n\tprivate disableInactiveFormGroupControls(formGroup: FormGroup) {\n\t\tObject.values(formGroup.controls).forEach((value) => {\n\t\t\tif (value instanceof FormGroup) {\n\t\t\t\tthis.disableInactiveFormGroupControls(value);\n\t\t\t} else if (value instanceof FormArray) {\n\t\t\t\tthis.disableInactiveFormArrayControls(value);\n\t\t\t} else if (value instanceof FormControl) {\n\t\t\t\tthis.disableInactiveFormControl(value);\n\t\t\t}\n\t\t});\n\t}\n\tprivate disableInactiveFormArrayControls(formArray: FormArray) {\n\t\tformArray.controls.forEach((value) => {\n\t\t\tif (value instanceof FormGroup) {\n\t\t\t\tthis.disableInactiveFormGroupControls(value);\n\t\t\t} else if (value instanceof FormArray) {\n\t\t\t\tthis.disableInactiveFormArrayControls(value);\n\t\t\t} else if (value instanceof FormControl) {\n\t\t\t\tthis.disableInactiveFormControl(value);\n\t\t\t}\n\t\t});\n\t}\n\tprivate disableInactiveFormControl(control: FormControl) {\n\t\tif (this.activeControls.some((e) => e.formControl === control)) {\n\t\t\tcontrol.enable();\n\t\t} else {\n\t\t\tcontrol.disable();\n\t\t}\n\t}\n\n\ttrySubmit(): Promise<any> {\n\t\tthis.formGroup.markAllAsTouched();\n\t\tthis.disableInactiveFormGroupControls(this.formGroup);\n\t\tif (this.formGroup.valid) {\n\t\t\treturn Promise.resolve(this.formGroup.value);\n\t\t} else {\n\t\t\tthis.activeControls.find((e) => !e.formControl.valid)?.formElement?.scrollTo();\n\t\t\treturn Promise.reject('Not all fields are valid');\n\t\t}\n\t}\n}\n","import {Component, ElementRef, Host, Inject, InjectionToken, Input, OnInit, Optional, ViewChild} from '@angular/core';\nimport { AbstractControl, FormControl } from '@angular/forms';\nimport {FormComponent} from \"../form.component\";\nimport {CustomErrorMessages, FormErrorMessages} from \"../../types\";\n\nexport const FORM_ERROR_MESSAGES = new InjectionToken<CustomErrorMessages>('form.error.messages');\n\nexport const DEFAULT_ERROR_MESSAGES: FormErrorMessages = {\n\tmin: \"Use a number larger than %min%\",\n\tmax: \"Use a number smaller than %max%\",\n\trequired: \"This field is required\",\n\temail: \"Use a valid email address\",\n\tminLength: \"Has to be longer than %minLength% character(s)\",\n\tmaxLength: \"Has to be shorter than %maxLength% character(s)\",\n\tpattern: \"This input is not valid\",\n\tmatchPassword: \"Passwords must match\",\n\tdate: \"Enter a valid date\",\n}\n\n@Component({\n\tselector: 'klp-form-element',\n\ttemplateUrl: './form-element.component.html',\n\tstyleUrls: ['./form-element.component.scss'],\n})\nexport class FormElementComponent {\n\tpublic attachedControl: AbstractControl;\n\t@Input() public caption: String;\n\t@Input() public direction: 'horizontal' | 'vertical' = 'horizontal';\n\t@Input() public captionSpacing: 'percentages' | 'none' = 'percentages';\n\t@Input() public swapInputAndCaption: boolean = false;\n\t@ViewChild('internalComponentRef') public internalComponentRef: ElementRef;\n\n\tpublic captionRef: ElementRef;\n\tpublic errorMessages: FormErrorMessages = DEFAULT_ERROR_MESSAGES;\n\tpublic customErrorHandlers: Array<{ error: string; templateRef: ElementRef }> = [];\n\n\tconstructor(\n\t\t@Host() @Optional() private parent: FormComponent,\n\t\t@Inject(FORM_ERROR_MESSAGES) @Optional() private customMessages: CustomErrorMessages\n\t) {\n\t}\n\n\tpublic substituteParameters(message: string, parameters: Record<string, any>): string {\n\t\treturn Object.keys(parameters).reduce((msg, key) => {\n\t\t\treturn msg.replace(`%${key}%`, parameters[key]);\n\t\t}, message);\n\t}\n\n\tpublic registerControl(formControl: FormControl) {\n\t\tthis.attachedControl = formControl;\n\t\tthis.parent.registerControl(formControl, this);\n\t}\n\n\tpublic unregisterControl(formControl: FormControl) {\n\t\tthis.attachedControl = null;\n\t\tthis.parent.unregisterControl(formControl);\n\t}\n\n\tpublic getAttachedControl() {\n\t\treturn this.attachedControl;\n\t}\n\n\tpublic registerErrorHandler(error: string, templateRef: ElementRef) {\n\t\tthis.customErrorHandlers.push({ error, templateRef });\n\t}\n\n\tpublic registerCaption(templateRef: ElementRef) {\n\t\tthis.captionRef = templateRef;\n\t}\n\n\tgetErrorToShow() {\n\t\tif (this.attachedControl?.touched === true && this.attachedControl?.errors) {\n\t\t\treturn Object.keys(this.attachedControl?.errors)[0];\n\t\t}\n\t\treturn null;\n\t}\n\n\tgetCustomErrorHandler(error: string) {\n\t\treturn this.customErrorHandlers.find((e) => e.error === error);\n\t}\n\n\tshowDefaultError(error: string) {\n\t\treturn this.getErrorToShow() === error && !this.customErrorHandlers.some((e) => e.error === error);\n\t}\n\n\tgetScrollableParent(node) {\n\t\tif (node == null) {\n\t\t\treturn null;\n\t\t}\n\t\tif (node.scrollHeight > node.clientHeight) {\n\t\t\treturn node;\n\t\t} else {\n\t\t\treturn this.getScrollableParent(node.parentNode);\n\t\t}\n\t}\n\n\tscrollTo() {\n\t\tthis.internalComponentRef.nativeElement.scrollIntoView(true);\n\t\t// to give some breathing room, we scroll 100px more to the top\n\t\tthis.getScrollableParent(this.internalComponentRef.nativeElement)?.scrollBy(0, -100);\n\t}\n\n\tgetErrorMessages(key: keyof FormErrorMessages) {\n\t\treturn this.customMessages?.[key]?.() ?? this.errorMessages[key];\n\t}\n}\n","import { isString } from 'lodash';\n\nexport function stringIsSetAndNotEmpty(s: string) {\n\treturn isString(s) && s.length > 0;\n}\n\nexport function isNullOrUndefined(value: any) {\n\treturn value === null || value === undefined;\n}\n\nexport function numberIsSet(value: any) {\n\treturn isValueSet(value) && typeof value === 'number';\n}\n\nexport function isValueSet(value: any) {\n\treturn value !== null && value !== undefined;\n}\n\nexport function stringOrArrayIsSetAndEmpty(value: any[] | string) {\n\treturn value !== null && value !== undefined && value.length === 0;\n}\n\nexport function useIfStringIsSet(s: string) {\n\tif (stringIsSetAndNotEmpty(s)) {\n\t\treturn s;\n\t}\n\treturn undefined;\n}\n\nexport function useIfArrayIsSetWithOneItem(a: Array<any>): any {\n\tif (!isNullOrUndefined(a) && a.length === 1) {\n\t\treturn a[0];\n\t}\n\treturn undefined;\n}\n\nexport function convertParentToChild<C>(originalClass: any, newClass: C): C {\n\treturn Object.assign(newClass, originalClass);\n}\n\nexport function truncateString(s: string, length: number) {\n\tif (s.length < length) {\n\t\treturn s;\n\t}\n\treturn s.substring(0, length) + '...';\n}\n","import { ControlContainer, ControlValueAccessor, FormControl } from '@angular/forms';\nimport { Component, Host, Input, Optional } from '@angular/core';\nimport { FormElementComponent } from '../../form/form-element/form-element.component';\nimport { isNullOrUndefined, stringIsSetAndNotEmpty } from '../../util/values';\n\n/**\n * This component is a base in order to create a component that supports ngModel.\n * Some important things to know about it:\n *\n * innerValue = your own inner state, which you should use to store the current state of what ngModel should be.\n * writeValue() = called by angular, when ngModel is changed from OUTSIDE of the component. Feel free to patch this method if you need inner logic to happen when ngModel is altered from the outside. Always remember to also call the super.writeValue if you do!\n * setInnerValueAndNotify() = call this when you want your ngModel to be updated from INSIDE of your component, and provide it to the OUTSIDE.\n * ngOnInit() = Used to support the angular reactive forms framework. If you use ngOnInit in your own component (which happens fairly often) you must not forget to call the super.ngOnInit() method.\n */\n\n@Component({\n\tselector: '',\n\ttemplate: '',\n})\nexport class ValueAccessorBase<T> implements ControlValueAccessor {\n\tpublic innerValue: T;\n\tpublic changed = new Array<(value: T) => void>();\n\tprivate touched = new Array<() => void>();\n\n\t@Input() public disabled = false;\n\t// we support both providing just the formControlName and the full formControl\n\t@Input() public formControlName: string = null;\n\t@Input() public formControl: FormControl = null;\n\n\tprivate attachedFormControl: FormControl;\n\n\tconstructor(\n\t\t@Host() @Optional() protected parent: FormElementComponent,\n\t\t@Host() @Optional() protected controlContainer: ControlContainer\n\t) {}\n\n\tngOnInit() {\n\t\tif (this.formControl) {\n\t\t\tthis.attachedFormControl = this.formControl;\n\t\t} else if (stringIsSetAndNotEmpty(this.formControlName)) {\n\t\t\tthis.attachedFormControl = this.controlContainer?.control.get(this.formControlName) as FormControl;\n\t\t\tif (isNullOrUndefined(this.attachedFormControl)) {\n\t\t\t\tthrow new Error(`Form element '${this.formControlName}' with caption '${this.parent?.caption}' is not declared in your FormGroup.`);\n\t\t\t}\n\t\t}\n\t\tif (this.attachedFormControl) {\n\t\t\tthis.disabled = this.attachedFormControl.disabled;\n\t\t\tthis.attachedFormControl.statusChanges.subscribe(() => {\n\t\t\t\tthis.disabled = this.attachedFormControl.disabled;\n\t\t\t});\n\t\t\tthis.parent?.registerControl(this.attachedFormControl);\n\t\t}\n\t}\n\n\tisInErrorState() {\n\t\treturn this.attachedFormControl && this.attachedFormControl.status === 'INVALID' && this.attachedFormControl.touched;\n\t}\n\n\tngOnDestroy() {\n\t\tif (this.attachedFormControl) {\n\t\t\tthis.parent?.unregisterControl(this.attachedFormControl);\n\t\t}\n\t}\n\n\ttouch() {\n\t\tthis.touched.forEach((f) => f());\n\t}\n\n\twriteValue(value: T) {\n\t\tthis.innerValue = value;\n\t}\n\n\tregisterOnChange(fn: (value: T) => void) {\n\t\tthis.changed.push(fn);\n\t}\n\n\tregisterOnTouched(fn: () => void) {\n\t\tthis.touched.push(fn);\n\t}\n\n\tsetInnerValueAndNotify(value) {\n\t\tthis.innerValue = value;\n\t\tthis.changed.forEach((fn) => fn(value));\n\t}\n\n\tresetToNull() {\n\t\tthis.setInnerValueAndNotify(null);\n\t}\n}\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n\tselector: 'klp-form-button',\n\ttemplateUrl: './button.component.html',\n\tstyleUrls: ['./button.component.scss'],\n})\nexport class ButtonComponent {\n\t@Input() variant:\n\t\t| 'white'\n\t\t| 'greenFilled'\n\t\t| 'greenOutlined'\n\t\t| 'greenLink'\n\t\t| 'contextMenuItem'\n\t\t| 'redFilled'\n\t\t| 'redOutlined'\n\t\t| 'orangeFilled' = 'white';\n\t@Input() size: 'small' | 'medium' | 'large' = 'medium';\n\t@Input() fullWidth = false;\n\t@Input() hasBorder = true;\n\t@Input() disabled = false;\n\t@Input() isLoading = false;\n\t@Input() type: 'button' | 'submit' = 'button';\n\n\t@HostBinding('class._fullWidth') get _() {\n\t\treturn this.fullWidth;\n\t}\n\n\tonClick(event: Event) {\n\t\tif (this.disabled) {\n\t\t\tevent.stopPropagation();\n\t\t}\n\t}\n}\n","import { Component, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ValueAccessorBase } from '../value-accessor-base/value-accessor-base.component';\n\n@Component({\n\tselector: 'klp-form-checkbox',\n\ttemplateUrl: './checkbox.component.html',\n\tstyleUrls: ['./checkbox.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true }],\n})\nexport class CheckboxComponent extends ValueAccessorBase<boolean> {\n\t@Input() caption: string;\n\t@Input() disabled: boolean;\n}\n","import { Component, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n\tselector: 'klp-form-email-input',\n\ttemplateUrl: './email-input.component.html',\n\tstyleUrls: ['./email-input.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: EmailInputComponent, multi: true }],\n})\nexport class EmailInputComponent extends ValueAccessorBase<string> {\n\t@Input() placeholder = '';\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n\tselector: 'klp-form-loading-indicator',\n\ttemplateUrl: './loading-indicator.component.html',\n\tstyleUrls: ['./loading-indicator.component.scss'],\n})\nexport class LoadingIndicatorComponent {\n\t@Input() public variant: '3dots' | 'spinner' | 'textInput' | 'picker' = '3dots';\n\t@Input() public size: 'tiny' | 'small' | 'medium' | 'large' | 'huge' = 'medium';\n}\n","import { Component, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n\tselector: 'klp-form-number-input',\n\ttemplateUrl: './number-input.component.html',\n\tstyleUrls: ['./number-input.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: NumberInputComponent, multi: true }],\n})\nexport class NumberInputComponent extends ValueAccessorBase<string> {\n\t@Input() placeholder: string;\n}\n","import {Component, Input} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n\tselector: 'klp-form-password-field',\n\ttemplateUrl: './password-field.component.html',\n\tstyleUrls: ['./password-field.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: PasswordFieldComponent, multi: true }],\n})\nexport class PasswordFieldComponent extends ValueAccessorBase<string> {\n\t@Input() placeholder = 'Password';\n}\n","import { Component, Host, Input, OnInit, Optional } from '@angular/core';\nimport { ControlContainer, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\nimport {FormElementComponent} from \"../../form/form-element/form-element.component\";\n\nexport type AppSelectOptions = Array<{\n\tid: any;\n\tname: string;\n\tdescription?: string;\n\tdisabled?: boolean;\n}>;\n\n@Component({\n\tselector: 'klp-form-select',\n\ttemplateUrl: './select.component.html',\n\tstyleUrls: ['./select.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: SelectComponent, multi: true }],\n})\nexport class SelectComponent extends ValueAccessorBase<string | string[]> {\n\t@Input() placeholder: string = 'Pick an option';\n\t@Input() options: AppSelectOptions;\n\t@Input() multiple = false;\n\t@Input() clearable = true;\n\t@Input() public dropdownPosition: string;\n\t@Input() public customSearchFn: (term: string, item: { id: string; name: string; description: string }) => boolean;\n\n\tconstructor(\n\t\t@Optional() @Host() protected parent: FormElementComponent,\n\t\t@Optional() @Host() protected controlContainer: ControlContainer,\n\t) {\n\t\tsuper(parent, controlContainer);\n\t}\n}\n","import { Component, ContentChild, Input, TemplateRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n\tselector: 'klp-form-sortable-items',\n\ttemplateUrl: './sortable-items.component.html',\n\tstyleUrls: ['./sortable-items.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: SortableItemsComponent, multi: true }],\n})\nexport class SortableItemsComponent extends ValueAccessorBase<Array<any>> {\n\t@ContentChild(TemplateRef) template;\n\t@Input() sortableItemSize: 'sm' | 'lg' = 'lg';\n\n\titemsOrderChanged = () => {\n\t\tthis.setInnerValueAndNotify(this.innerValue);\n\t};\n}\n","import { Component, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n\tselector: 'klp-form-text-input',\n\ttemplateUrl: './text-input.component.html',\n\tstyleUrls: ['./text-input.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: TextInputComponent, multi: true }],\n})\nexport class TextInputComponent extends ValueAccessorBase<string> {\n\t@Input() placeholder: string;\n\t@Input() type: 'text' | 'password' = 'text';\n}\n","import { Component, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n\tselector: 'klp-form-toggle',\n\ttemplateUrl: './toggle.component.html',\n\tstyleUrls: ['./toggle.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: ToggleComponent, multi: true }],\n})\nexport class ToggleComponent extends ValueAccessorBase<boolean> {}\n","import { Component, ElementRef, Host, OnInit, Optional, ViewChild } from '@angular/core';\nimport {FormElementComponent} from \"../form-element/form-element.component\";\nimport {isNullOrUndefined} from \"../../util/values\";\n\n@Component({\n\tselector: 'klp-form-caption',\n\ttemplateUrl: './form-caption.component.html',\n\tstyleUrls: ['./form-caption.component.scss'],\n})\nexport class FormCaptionComponent implements OnInit {\n\t@ViewChild('contentRef') public contentRef: ElementRef;\n\n\tconstructor(@Host() @Optional() private parent: FormElementComponent) {}\n\n\tngOnInit(): void {\n\t\t// this is being run next cycle, because we dont want to fail if the order of components is as follows:\n\t\t// <app-form-error />\n\t\t// <some-input />\n\t\t// That would fail, because the logic of the form error is run first, and at that moment, the `some-input` isnt registered yet\n\t\tsetTimeout(() => {\n\t\t\tconst attachedControl = this.parent.getAttachedControl();\n\t\t\tthis.parent.registerCaption(this.contentRef);\n\t\t\tif (isNullOrUndefined(attachedControl)) {\n\t\t\t\tthrow new Error('You added a Form Caption component without an attached Form Control');\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Component, ElementRef, Host, Input, OnInit, Optional, ViewChild } from '@angular/core';\nimport {FormElementComponent} from \"../form-element/form-element.component\";\nimport {isNullOrUndefined} from \"../../util/values\";\nimport {ErrorTypes} from \"../../types\";\n\n@Component({\n\tselector: 'klp-form-error',\n\ttemplateUrl: './form-error.component.html',\n\tstyleUrls: ['./form-error.component.scss'],\n})\nexport class FormErrorComponent implements OnInit {\n\t@Input() error: ErrorTypes;\n\tpublic showError = false;\n\t@ViewChild('contentRef') public contentRef: ElementRef;\n\tconstructor(@Host() @Optional() private parent: FormElementComponent) {}\n\n\tngOnInit(): void {\n\t\t// this is being run next cycle, because we dont want to fail if the order of components is as follows:\n\t\t// <app-form-error />\n\t\t// <some-input />\n\t\t// That would fail, because the logic of the form error is run first, and at that moment, the `some-input` isnt registered yet\n\t\tsetTimeout(() => {\n\t\t\tconst attachedControl = this.parent.getAttachedControl();\n\t\t\tthis.parent.registerErrorHandler(this.error, this.contentRef);\n\t\t\tif (isNullOrUndefined(attachedControl)) {\n\t\t\t\tthrow new Error('You added a Form Error component without an attached Form Control');\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Component, Host, HostBinding, Input, Optional } from '@angular/core';\nimport {FormComponent} from \"../form.component\";\n\n@Component({\n\tselector: 'klp-form-submit-button',\n\ttemplateUrl: './form-submit-button.component.html',\n\tstyleUrls: ['./form-submit-button.component.scss'],\n})\nexport class FormSubmitButtonComponent {\n\t@Input() public isLoading = false;\n\t@Input() fullWidth = false;\n\t@Input() variant: 'greenFilled' | 'redFilled' = 'greenFilled';\n\t@Input() public submitCallback: (any) => Promise<void>;\n\n\t@HostBinding('class._fullWidth') get _() {\n\t\treturn this.fullWidth;\n\t}\n\n\tconstructor(@Host() @Optional() private parentForm: FormComponent) {}\n\n\tsubmitForm() {\n\t\tthis.parentForm\n\t\t\t.trySubmit()\n\t\t\t.then((value) => {\n\t\t\t\tthis.isLoading = true;\n\t\t\t\tthis.submitCallback(value)\n\t\t\t\t\t.then(() => (this.isLoading = false))\n\t\t\t\t\t.catch(() => (this.isLoading = false));\n\t\t\t})\n\t\t\t.catch(() => {}); // swallow the error, the framework will scroll to the field that needs attention\n\t}\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport const invalidDateKey = '--invalid_date--';\n\nexport function dateValidator(control: AbstractControl): ValidationErrors | null {\n\tconst invalid = control.value === invalidDateKey;\n\treturn invalid ? { date: control.value } : null;\n}\n","import {\n\tComponent,\n\tElementRef,\n\tHost,\n\tInject,\n\tInjectionToken,\n\tInput,\n\tOptional,\n\tSimpleChanges,\n\tViewChild\n} from '@angular/core';\nimport {ControlContainer, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {isNullOrUndefined, isValueSet, stringIsSetAndNotEmpty} from '../../util/values';\nimport { invalidDateKey } from '../../validators/dateValidator';\nimport { MatDatepicker } from '@angular/material/datepicker';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\nimport {MAT_DATE_FORMATS, MAT_NATIVE_DATE_FORMATS} from \"@angular/material/core\";\nimport {KlpDateFormats} from \"../../types\";\n\nexport const KLP_DATE_FORMATS = new InjectionToken<KlpDateFormats>('klp.form.date.formats');\n\nexport function matDateFormatsFactory(component: DatepickerComponent, dateFormats?: KlpDateFormats) {\n\treturn dateFormats?.(component.format) ?? MAT_NATIVE_DATE_FORMATS;\n}\n\n@Component({\n\tselector: 'klp-form-datepicker',\n\ttemplateUrl: './datepicker.component.html',\n\tstyleUrls: ['./datepicker.component.scss'],\n\tproviders: [\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: DatepickerComponent, multi: true },\n\t\t{ provide: MAT_DATE_FORMATS,\n\t\t\tdeps: [DatepickerComponent, [new Optional(), KLP_DATE_FORMATS]],\n\t\t\tuseFactory: matDateFormatsFactory,\n\t\t}\n\t],\n})\nexport class DatepickerComponent extends ValueAccessorBase<Date | typeof invalidDateKey> {\n\t@Input() public minDate: Date = undefined;\n\t@Input() public maxDate: Date = undefined;\n\t@Input() public format: string;\n\t@Input() public placeholder = 'Select date';\n\t@Input() public clearable = false;\n\n\t@ViewChild('nativeInput') nativeInputRef: ElementRef;\n\t@ViewChild('picker') datePickerRef: MatDatepicker<Date>;\n\n\tminDateStartOfDay: Date = undefined;\n\tmaxDateEndOfDay: Date = undefined;\n\n\t// this is passed as ngmodel and is used to set the inital date. But we also\n\t// use input and nativeInput callbacks to extend the validation logic so we\n\t// can destinguish between empty and invalid dates.\n\tvalueForMaterialDatePicker: Date;\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (changes.minDate) {\n\t\t\tthis.setMinDate(changes.minDate.currentValue);\n\t\t}\n\t\tif (changes.maxDate) {\n\t\t\tthis.setMaxDate(changes.maxDate.currentValue);\n\t\t}\n\t}\n\n\tsetMinDate(minDate: Date) {\n\t\tif (minDate) {\n\t\t\tthis.minDateStartOfDay = new Date(minDate);\n\t\t\tthis.minDateStartOfDay.setHours(0, 0, 0, 0);\n\t\t} else {\n\t\t\tthis.minDateStartOfDay = undefined;\n\t\t}\n\t}\n\n\tsetMaxDate(maxDate: Date) {\n\t\tif (maxDate) {\n\t\t\tthis.maxDateEndOfDay = new Date(maxDate);\n\t\t\tthis.maxDateEndOfDay.setHours(23, 59, 59, 999);\n\t\t} else {\n\t\t\tthis.maxDateEndOfDay = undefined;\n\t\t}\n\t}\n\n\t// dateChanged is called when the output of the datepicker is changed and\n\t// parsed correctly. If the date is invalid, it will be called the first time\n\t// with null but never again until a valid input is provided.\n\tdateChanged(event: any) {\n\t\tconst nativeInputValue = this.nativeInputRef.nativeElement.value;\n\t\tconst date = event.value;\n\t\tif (isNullOrUndefined(date) && stringIsSetAndNotEmpty(nativeInputValue)) {\n\t\t\tthis.setInnerValueAndNotify(invalidDateKey);\n\t\t} else {\n\t\t\tthis.setInnerValueAndNotify(date);\n\t\t}\n\t}\n\n\twriteValue(value: Date | typeof invalidDateKey) {\n\t\tsuper.writeValue(value);\n\t\tthis.valueForMaterialDatePicker = value === invalidDateKey ? null : value;\n\t}\n\n\t// nativeValueChanged is called when the internal text value changes, but not\n\t// when the date is changed via the date picker. We need this so that we can\n\t// determine if the datepicker is empty or invalid.\n\tnativeValueChanged(event: any) {\n\t\tconst nativeInputValue = event.target.value;\n\t\tconst date = this.valueForMaterialDatePicker;\n\n\t\tif (this.datePickerRef.opened) {\n\t\t\t// if the user is typing instead of using the picker, close it.\n\t\t\tthis.datePickerRef.close();\n\t\t}\n\n\t\tif (isNullOrUndefined(date) && stringIsSetAndNotEmpty(nativeInputValue)) {\n\t\t\tthis.setInnerValueAndNotify(invalidDateKey);\n\t\t} else {\n\t\t\tthis.setInnerValueAndNotify(date);\n\t\t}\n\t}\n\n\tresetToNull() {\n\t\tthis.setInnerValueAndNotify(null);\n\t\tthis.valueForMaterialDatePicker = null;\n\t\tthis.nativeInputRef.nativeElement.value = null;\n\t}\n}\n","// material.module.ts\n\nimport { NgModule } from '@angular/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\n\n@NgModule({\n\timports: [MatDatepickerModule, MatFormFieldModule, MatNativeDateModule, MatInputModule, MatButtonModule],\n\texports: [MatDatepickerModule, MatFormFieldModule, MatNativeDateModule, MatInputModule, MatButtonModule],\n\tproviders: [MatDatepickerModule],\n})\nexport class MaterialModule {}\n","import { NgModule } from '@angular/core';\nimport {CommonModule} from \"@angular/common\";\nimport {FormsModule} from \"@angular/forms\";\nimport {ValueAccessorBase} from \"./elements/value-accessor-base/value-accessor-base.component\";\nimport {ButtonComponent} from \"./elements/button/button.component\";\nimport {CheckboxComponent} from \"./elements/checkbox/checkbox.component\";\nimport {EmailInputComponent} from \"./elements/email/email-input.component\";\nimport {LoadingIndicatorComponent} from \"./elements/loading-indicator/loading-indicator.component\";\nimport {NumberInputComponent} from \"./elements/number-input/number-input.component\";\nimport {PasswordFieldComponent} from \"./elements/password-field/password-field.component\";\nimport {SelectComponent} from \"./elements/select/select.component\";\nimport {SortableItemsComponent} from \"./elements/sortable-items/sortable-items.component\";\nimport {TextInputComponent} from \"./elements/text-input/text-input.component\";\nimport {ToggleComponent} from \"./elements/toggle/toggle.component\";\nimport {FormCaptionComponent} from \"./form/form-caption/form-caption.component\";\nimport {FormElementComponent} from \"./form/form-element/form-element.component\";\nimport {FormErrorComponent} from \"./form/form-error/form-error.component\";\nimport {FormSubmitButtonComponent} from \"./form/form-submit-button/form-submit-button.component\";\nimport {FormComponent} from \"./form/form.component\";\nimport {SortablejsModule} from \"ngx-sortablejs\";\nimport {NgSelectModule} from \"@ng-select/ng-select\";\nimport {DatepickerComponent} from \"./elements/datepicker/datepicker.component\";\nimport {MaterialModule} from \"./material.module\";\n\n\n\n@NgModule({\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tNgSelectModule,\n\t\tSortablejsModule,\n\t\tMaterialModule,\n\t],\n\tdeclarations: [\n\t\tValueAccessorBase,\n\t\tButtonComponent,\n\t\tCheckboxComponent,\n\t\tDatepickerComponent,\n\t\tEmailInputComponent,\n\t\tLoadingIndicatorComponent,\n\t\tNumberInputComponent,\n\t\tPasswordFieldComponent,\n\t\tSelectComponent,\n\t\tSortableItemsComponent,\n\t\tTextInputComponent,\n\t\tToggleComponent,\n\t\tFormCaptionComponent,\n\t\tFormElementComponent,\n\t\tFormErrorComponent,\n\t\tFormSubmitButtonComponent,\n\t\tFormComponent,\n\t],\n\texports: [\n\t\tValueAccessorBase,\n\t\tButtonComponent,\n\t\tDatepickerComponent,\n\t\tCheckboxComponent,\n\t\tEmailInputComponent,\n\t\tLoadingIndicatorComponent,\n\t\tNumberInputComponent,\n\t\tPasswordFieldComponent,\n\t\tSelectComponent,\n\t\tSortableItemsComponent,\n\t\tTextInputComponent,\n\t\tToggleComponent,\n\t\tFormCaptionComponent,\n\t\tFormElementComponent,\n\t\tFormErrorComponent,\n\t\tFormSubmitButtonComponent,\n\t\tFormComponent,\n\t]\n})\nexport class NgxEnhancyFormsModule { }\n","/*\n * Public API Surface of ngx-enhancy-forms\n */\n\nexport * from './lib/ngx-enhancy-forms.module';\n\nexport * from './lib/elements/button/button.component';\nexport * from './lib/elements/checkbox/checkbox.component';\nexport * from './lib/elements/datepicker/datepicker.component';\nexport * from './lib/elements/email/email-input.component';\nexport * from './lib/elements/loading-indicator/loading-indicator.component';\nexport * from './lib/elements/number-input/number-input.component';\nexport * from './lib/elements/password-field/password-field.component';\nexport * from './lib/elements/select/select.component';\nexport * from './lib/elements/sortable-items/sortable-items.component';\nexport * from './lib/elements/text-input/text-input.component';\nexport * from './lib/elements/toggle/toggle.component';\nexport * from './lib/elements/value-accessor-base/value-accessor-base.component';\n\nexport * from './lib/form/form.component';\nexport * from './lib/form/form-caption/form-caption.component';\nexport * from './lib/form/form-element/form-element.component';\nexport * from './lib/form/form-error/form-error.component';\nexport * from './lib/form/form-submit-button/form-submit-button.component';\n\nexport * from './lib/validators/dateValidator';\n\nexport * from './lib/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {MaterialModule as ɵa} from './lib/material.module';"],"names":[],"mappings":"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"}