@klippa/ngx-enhancy-forms 16.7.0 → 16.7.2

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.
@@ -54,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
54
54
  type: HostBinding,
55
55
  args: ['class._fullWidth']
56
56
  }] } });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsaXBwYS9uZ3gtZW5oYW5jeS1mb3Jtcy9zcmMvbGliL2VsZW1lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG1CQUFtQixDQUFDOzs7O0FBTzdDLE1BQU0sT0FBTyxlQUFlO0lBTDVCO1FBTVUsWUFBTyxHQVFJLE9BQU8sQ0FBQztRQUNuQixTQUFJLEdBQWlDLFFBQVEsQ0FBQztRQUM5QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLFNBQUksR0FBd0IsUUFBUSxDQUFDO0tBb0I5QztJQWpCQSxJQUFxQyxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFZO1FBQ3pCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsT0FBTztTQUNQO1FBRUQsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO2dCQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN4QixDQUFDLENBQUMsQ0FBQztTQUNIO0lBQ0YsQ0FBQzs4R0FsQ1csZUFBZTtrR0FBZixlQUFlLHlTQ1I1QixtaEJBa0JBOzsyRkRWYSxlQUFlO2tCQUwzQixTQUFTOytCQUNDLGlCQUFpQjs4QkFLbEIsT0FBTztzQkFBZixLQUFLO2dCQVNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUUrQixDQUFDO3NCQUFyQyxXQUFXO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2lzVmFsdWVTZXR9IGZyb20gXCIuLi8uLi91dGlsL3ZhbHVlc1wiO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdrbHAtZm9ybS1idXR0b24nLFxuXHR0ZW1wbGF0ZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vYnV0dG9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbXBvbmVudCB7XG5cdEBJbnB1dCgpIHZhcmlhbnQ6XG5cdFx0fCAnd2hpdGUnXG5cdFx0fCAnZ3JlZW5GaWxsZWQnXG5cdFx0fCAnZ3JlZW5PdXRsaW5lZCdcblx0XHR8ICdncmVlbkxpbmsnXG5cdFx0fCAnY29udGV4dE1lbnVJdGVtJ1xuXHRcdHwgJ3JlZEZpbGxlZCdcblx0XHR8ICdyZWRPdXRsaW5lZCdcblx0XHR8ICdvcmFuZ2VGaWxsZWQnID0gJ3doaXRlJztcblx0QElucHV0KCkgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyA9ICdtZWRpdW0nO1xuXHRASW5wdXQoKSBmdWxsV2lkdGggPSBmYWxzZTtcblx0QElucHV0KCkgaGFzQm9yZGVyID0gdHJ1ZTtcblx0QElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblx0QElucHV0KCkgaXNMb2FkaW5nID0gZmFsc2U7XG5cdEBJbnB1dCgpIHR5cGU6ICdidXR0b24nIHwgJ3N1Ym1pdCcgPSAnYnV0dG9uJztcblx0QElucHV0KCkgY2xpY2tDYWxsYmFjazogKGV2ZW50OiBFdmVudCkgPT4gUHJvbWlzZTxhbnk+O1xuXG5cdEBIb3N0QmluZGluZygnY2xhc3MuX2Z1bGxXaWR0aCcpIGdldCBfKCkge1xuXHRcdHJldHVybiB0aGlzLmZ1bGxXaWR0aDtcblx0fVxuXG5cdGFzeW5jIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG5cdFx0aWYgKHRoaXMuZGlzYWJsZWQpIHtcblx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmIChpc1ZhbHVlU2V0KHRoaXMuY2xpY2tDYWxsYmFjaykpIHtcblx0XHRcdHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcblx0XHRcdGF3YWl0IHRoaXMuY2xpY2tDYWxsYmFjayhldmVudCkuZmluYWxseSgoKSA9PiB7XG5cdFx0XHRcdHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cbn1cbiIsIjxidXR0b24gY2xhc3M9XCJidXR0b25GdW5kYW1lbnRhbHNcIlxuXHRbbmdDbGFzc109XCJbXG5cdFx0dmFyaWFudCxcblx0XHRzaXplLFxuXHRcdGZ1bGxXaWR0aCA/ICdmdWxsV2lkdGgnIDogJycsXG5cdFx0aGFzQm9yZGVyID8gJycgOiAnbm8tYm9yZGVyJyxcblx0XHRkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiAnJ1xuXHRdXCJcblx0W3R5cGVdPVwidHlwZVwiXG5cdChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuPlxuXHQ8ZGl2IGNsYXNzPVwiY2FwdGlvblwiIFtuZ0NsYXNzXT1cIntpbnZpc2libGU6IGlzTG9hZGluZ31cIj5cblx0XHQ8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cdDwvZGl2PlxuXHQ8ZGl2IGNsYXNzPVwibG9hZGluZ1NwaW5uZXJDb250YWluZXJcIiAqbmdJZj1cImlzTG9hZGluZ1wiPlxuXHRcdDxrbHAtZm9ybS1sb2FkaW5nLWluZGljYXRvciB2YXJpYW50PVwic3Bpbm5lclwiIHNpemU9XCJzbWFsbFwiPjwva2xwLWZvcm0tbG9hZGluZy1pbmRpY2F0b3I+XG5cdDwvZGl2PlxuPC9idXR0b24+XG4iXX0=
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsaXBwYS9uZ3gtZW5oYW5jeS1mb3Jtcy9zcmMvbGliL2VsZW1lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG1CQUFtQixDQUFDOzs7O0FBZ0I3QyxNQUFNLE9BQU8sZUFBZTtJQUw1QjtRQU1VLFlBQU8sR0FBa0IsT0FBTyxDQUFDO1FBQ2pDLFNBQUksR0FBaUMsUUFBUSxDQUFDO1FBQzlDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsU0FBSSxHQUF3QixRQUFRLENBQUM7S0FvQjlDO0lBakJBLElBQXFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQVk7UUFDekIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN4QixPQUFPO1NBQ1A7UUFFRCxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDO1NBQ0g7SUFDRixDQUFDOzhHQTFCVyxlQUFlO2tHQUFmLGVBQWUseVNDakI1QixtaEJBa0JBOzsyRkREYSxlQUFlO2tCQUwzQixTQUFTOytCQUNDLGlCQUFpQjs4QkFLbEIsT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUUrQixDQUFDO3NCQUFyQyxXQUFXO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2lzVmFsdWVTZXR9IGZyb20gXCIuLi8uLi91dGlsL3ZhbHVlc1wiO1xuXG5leHBvcnQgdHlwZSBCdXR0b25WYXJpYW50ID0gJ3doaXRlJ1xuXHRcdHwgJ2dyZWVuRmlsbGVkJ1xuXHRcdHwgJ2dyZWVuT3V0bGluZWQnXG5cdFx0fCAnZ3JlZW5MaW5rJ1xuXHRcdHwgJ2NvbnRleHRNZW51SXRlbSdcblx0XHR8ICdyZWRGaWxsZWQnXG5cdFx0fCAncmVkT3V0bGluZWQnXG5cdFx0fCAnb3JhbmdlRmlsbGVkJztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAna2xwLWZvcm0tYnV0dG9uJyxcblx0dGVtcGxhdGVVcmw6ICcuL2J1dHRvbi5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL2J1dHRvbi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBCdXR0b25Db21wb25lbnQge1xuXHRASW5wdXQoKSB2YXJpYW50OiBCdXR0b25WYXJpYW50ID0gJ3doaXRlJztcblx0QElucHV0KCkgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyA9ICdtZWRpdW0nO1xuXHRASW5wdXQoKSBmdWxsV2lkdGggPSBmYWxzZTtcblx0QElucHV0KCkgaGFzQm9yZGVyID0gdHJ1ZTtcblx0QElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblx0QElucHV0KCkgaXNMb2FkaW5nID0gZmFsc2U7XG5cdEBJbnB1dCgpIHR5cGU6ICdidXR0b24nIHwgJ3N1Ym1pdCcgPSAnYnV0dG9uJztcblx0QElucHV0KCkgY2xpY2tDYWxsYmFjazogKGV2ZW50OiBFdmVudCkgPT4gUHJvbWlzZTxhbnk+O1xuXG5cdEBIb3N0QmluZGluZygnY2xhc3MuX2Z1bGxXaWR0aCcpIGdldCBfKCkge1xuXHRcdHJldHVybiB0aGlzLmZ1bGxXaWR0aDtcblx0fVxuXG5cdGFzeW5jIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG5cdFx0aWYgKHRoaXMuZGlzYWJsZWQpIHtcblx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmIChpc1ZhbHVlU2V0KHRoaXMuY2xpY2tDYWxsYmFjaykpIHtcblx0XHRcdHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcblx0XHRcdGF3YWl0IHRoaXMuY2xpY2tDYWxsYmFjayhldmVudCkuZmluYWxseSgoKSA9PiB7XG5cdFx0XHRcdHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cbn1cbiIsIjxidXR0b24gY2xhc3M9XCJidXR0b25GdW5kYW1lbnRhbHNcIlxuXHRbbmdDbGFzc109XCJbXG5cdFx0dmFyaWFudCxcblx0XHRzaXplLFxuXHRcdGZ1bGxXaWR0aCA/ICdmdWxsV2lkdGgnIDogJycsXG5cdFx0aGFzQm9yZGVyID8gJycgOiAnbm8tYm9yZGVyJyxcblx0XHRkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiAnJ1xuXHRdXCJcblx0W3R5cGVdPVwidHlwZVwiXG5cdChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuPlxuXHQ8ZGl2IGNsYXNzPVwiY2FwdGlvblwiIFtuZ0NsYXNzXT1cIntpbnZpc2libGU6IGlzTG9hZGluZ31cIj5cblx0XHQ8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cdDwvZGl2PlxuXHQ8ZGl2IGNsYXNzPVwibG9hZGluZ1NwaW5uZXJDb250YWluZXJcIiAqbmdJZj1cImlzTG9hZGluZ1wiPlxuXHRcdDxrbHAtZm9ybS1sb2FkaW5nLWluZGljYXRvciB2YXJpYW50PVwic3Bpbm5lclwiIHNpemU9XCJzbWFsbFwiPjwva2xwLWZvcm0tbG9hZGluZy1pbmRpY2F0b3I+XG5cdDwvZGl2PlxuPC9idXR0b24+XG4iXX0=
@@ -42,6 +42,9 @@ export class SelectComponent extends ValueAccessorBase {
42
42
  this.focus = () => {
43
43
  this.ngSelect.focus();
44
44
  };
45
+ this.close = () => {
46
+ this.ngSelect.close();
47
+ };
45
48
  }
46
49
  ngAfterViewInit() {
47
50
  this.addPrefix();
@@ -222,4 +225,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
222
225
  type: ContentChild,
223
226
  args: [KlpSelectOptionTemplateDirective, { read: TemplateRef }]
224
227
  }] } });
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsaXBwYS9uZ3gtZW5oYW5jeS1mb3Jtcy9zcmMvbGliL2VsZW1lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRU4sU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBRVQsWUFBWSxFQUNaLElBQUksRUFDSixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBRXZGLE9BQU8sRUFBQyxVQUFVLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7O0FBV25FLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFNLDhCQUE4QixDQUFDLENBQUM7QUFHM0YsTUFBTSxPQUFPLGdDQUFnQzs4R0FBaEMsZ0NBQWdDO2tHQUFoQyxnQ0FBZ0M7OzJGQUFoQyxnQ0FBZ0M7a0JBRDVDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUU7O0FBUy9DLE1BQU0sT0FBTyxlQUFnQixTQUFRLGlCQUFvQztJQTBCeEUsWUFDK0IsTUFBNEIsRUFDNUIsZ0JBQWtDLEVBQ2YsWUFBaUIsRUFDMUQsS0FBaUI7UUFFekIsS0FBSyxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FB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QUNVLFFBQVE7c0JBQXhCLE1BQU07Z0JBQ1UsTUFBTTtzQkFBdEIsTUFBTTtnQkFDVSxPQUFPO3NCQUF2QixNQUFNO2dCQUNnQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ2tELGVBQWU7c0JBQXJGLFlBQVk7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0QWZ0ZXJWaWV3SW5pdCxcblx0Q29tcG9uZW50LFxuXHRDb250ZW50Q2hpbGQsXG5cdERpcmVjdGl2ZSxcblx0RWxlbWVudFJlZixcblx0RXZlbnRFbWl0dGVyLFxuXHRIb3N0LFxuXHRJbmplY3QsXG5cdEluamVjdGlvblRva2VuLFxuXHRJbnB1dCxcblx0T25DaGFuZ2VzLFxuXHRPcHRpb25hbCxcblx0T3V0cHV0LFxuXHRTaW1wbGVDaGFuZ2VzLFxuXHRUZW1wbGF0ZVJlZixcblx0Vmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sQ29udGFpbmVyLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtWYWx1ZUFjY2Vzc29yQmFzZX0gZnJvbSAnLi4vdmFsdWUtYWNjZXNzb3ItYmFzZS92YWx1ZS1hY2Nlc3Nvci1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQge0Zvcm1FbGVtZW50Q29tcG9uZW50fSBmcm9tICcuLi8uLi9mb3JtL2Zvcm0tZWxlbWVudC9mb3JtLWVsZW1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7aXNWYWx1ZVNldCwgc3RyaW5nSXNTZXRBbmRGaWxsZWR9IGZyb20gJy4uLy4uL3V0aWwvdmFsdWVzJztcblxuZXhwb3J0IHR5cGUgQXBwU2VsZWN0T3B0aW9ucyA9IEFycmF5PEFwcFNlbGVjdE9wdGlvbj47XG5leHBvcnQgdHlwZSBBcHBTZWxlY3RPcHRpb24gPSB7XG5cdGlkOiBhbnk7XG5cdG5hbWU6IHN0cmluZztcblx0ZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cdGFjdGl2ZT86IGJvb2xlYW47XG5cdGRpc2FibGVkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBTRUxFQ1RfVFJBTlNMQVRJT05TID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oJ2tscC5mb3JtLnNlbGVjdC50cmFuc2xhdGlvbnMnKTtcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2tscFNlbGVjdE9wdGlvblRwbF0nIH0pXG5leHBvcnQgY2xhc3MgS2xwU2VsZWN0T3B0aW9uVGVtcGxhdGVEaXJlY3RpdmUge31cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAna2xwLWZvcm0tc2VsZWN0Jyxcblx0dGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL3NlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuXHRwcm92aWRlcnM6IFt7cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBTZWxlY3RDb21wb25lbnQsIG11bHRpOiB0cnVlfV0sXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdENvbXBvbmVudCBleHRlbmRzIFZhbHVlQWNjZXNzb3JCYXNlPHN0cmluZyB8IHN0cmluZ1tdPiBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdHtcblx0QElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcblx0QElucHV0KCkgcHJlZml4OiBzdHJpbmc7XG5cdEBJbnB1dCgpIG9yaWVudGF0aW9uOiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnID0gJ2hvcml6b250YWwnO1xuXHRASW5wdXQoKSBvcHRpb25zOiBBcHBTZWxlY3RPcHRpb25zO1xuXHRASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xuXHRASW5wdXQoKSBtdWx0aXBsZURpc3BsYXllZEFzQW1vdW50ID0gZmFsc2U7XG5cdEBJbnB1dCgpIGNsZWFyYWJsZSA9IHRydWU7XG5cdEBJbnB1dCgpIHRydW5jYXRlT3B0aW9ucyA9IHRydWU7XG5cdEBJbnB1dCgpIHdpdGhTZXBhcmF0aW5nTGluZSA9IGZhbHNlO1xuXHRASW5wdXQoKSBzZWFyY2hhYmxlID0gdHJ1ZTtcblx0QElucHV0KCkgcHVibGljIGRyb3Bkb3duUG9zaXRpb246ICdhdXRvJyB8ICdib3R0b20nIHwgJ3RvcCcgfCAnbGVmdCcgfCAncmlnaHQnID0gbnVsbDtcblx0QElucHV0KCkgcHVibGljIGN1c3RvbVNlYXJjaEZuOiAodGVybTogc3RyaW5nLCBpdGVtOiB7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgZGVzY3JpcHRpb246IHN0cmluZyB9KSA9PiBib29sZWFuO1xuXHRASW5wdXQoKSBwdWJsaWMgZm9vdGVyRWxlbWVudDogVGVtcGxhdGVSZWY8YW55Pjtcblx0QE91dHB1dCgpIHB1YmxpYyBvblNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXHRAT3V0cHV0KCkgcHVibGljIG9uRW5kUmVhY2hlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblx0QE91dHB1dCgpIHB1YmxpYyBvbk9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblx0QE91dHB1dCgpIHB1YmxpYyBvbkNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblx0QE91dHB1dCgpIHB1YmxpYyBvbkJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cdEBPdXRwdXQoKSBwdWJsaWMgb25DbGVhciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblx0QFZpZXdDaGlsZCgnbmdTZWxlY3QnKSBuZ1NlbGVjdDtcblx0QENvbnRlbnRDaGlsZChLbHBTZWxlY3RPcHRpb25UZW1wbGF0ZURpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBjdXN0b21PcHRpb25UcGw6IFRlbXBsYXRlUmVmPGFueT47XG5cblx0cHJpdmF0ZSBsYXN0SXRlbUluZGV4UmVhY2hlZCA9IC0xO1xuXHRwdWJsaWMgZHJvcGRvd25Qb3NpdGlvblRvVXNlOiAnYXV0bycgfCAnYm90dG9tJyB8ICd0b3AnIHwgJ2xlZnQnIHwgJ3JpZ2h0JyA9ICdib3R0b20nO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdEBPcHRpb25hbCgpIEBIb3N0KCkgcHJvdGVjdGVkIHBhcmVudDogRm9ybUVsZW1lbnRDb21wb25lbnQsXG5cdFx0QE9wdGlvbmFsKCkgQEhvc3QoKSBwcm90ZWN0ZWQgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcblx0XHRASW5qZWN0KFNFTEVDVF9UUkFOU0xBVElPTlMpIEBPcHRpb25hbCgpIHByaXZhdGUgdHJhbnNsYXRpb25zOiBhbnksXG5cdFx0cHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZixcblx0KSB7XG5cdFx0c3VwZXIocGFyZW50LCBjb250cm9sQ29udGFpbmVyKTtcblx0fVxuXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLmFkZFByZWZpeCgpO1xuXHR9XG5cblxuXHRwcml2YXRlIGFkZFByZWZpeCgpOiB2b2lkIHtcblx0XHRpZiAoc3RyaW5nSXNTZXRBbmRGaWxsZWQodGhpcy5wcmVmaXgpKSB7XG5cdFx0XHRjb25zdCBjb250YWluZXIgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm5nLXNlbGVjdC1jb250YWluZXInKTtcblx0XHRcdGNvbnN0IG5ld05vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRcdG5ld05vZGUuY2xhc3NOYW1lID0gJ3ByZWZpeCc7XG5cdFx0XHRuZXdOb2RlLmlubmVyVGV4dCA9IHRoaXMucHJlZml4O1xuXHRcdFx0Y29udGFpbmVyLmluc2VydEJlZm9yZShuZXdOb2RlLCBjb250YWluZXIuY2hpbGRyZW5bMF0pO1xuXHRcdH1cblx0fVxuXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcblx0XHRpZiAoaXNWYWx1ZVNldChjaGFuZ2VzLm9wdGlvbnMpKSB7XG5cdFx0XHR0aGlzLmxhc3RJdGVtSW5kZXhSZWFjaGVkID0gLTE7XG5cdFx0XHR0aGlzLnNldFdpZHRoQmFzZWRPbk9wdGlvbnNXaWR0aHMoKTtcblx0XHR9XG5cdFx0dGhpcy5kcm9wZG93blBvc2l0aW9uVG9Vc2UgPSB0aGlzLmRyb3Bkb3duUG9zaXRpb247XG5cdH1cblxuXHRnZXREZWZhdWx0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcpOiAoeDogYW55KSA9PiBzdHJpbmcge1xuXHRcdHN3aXRjaCAoa2V5KSB7XG5cdFx0XHRjYXNlICdwbGFjZWhvbGRlcic6XG5cdFx0XHRcdHJldHVybiAoKSA9PiAnUGljayBhbiBvcHRpb24nO1xuXHRcdFx0Y2FzZSAnYW1vdW50U2VsZWN0ZWQnOlxuXHRcdFx0XHRyZXR1cm4gKGFtb3VudCkgPT4gYCR7YW1vdW50fSBzZWxlY3RlZGA7XG5cdFx0fVxuXHR9XG5cblx0Z2V0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcsIHBhcmFtczogYW55ID0gbnVsbCk6IHN0cmluZyB7XG5cdFx0aWYgKGtleSA9PT0gJ3BsYWNlaG9sZGVyJyAmJiBzdHJpbmdJc1NldEFuZEZpbGxlZCh0aGlzLnBsYWNlaG9sZGVyKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMucGxhY2Vob2xkZXI7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLnRyYW5zbGF0aW9ucz8uW2tleV0/LihwYXJhbXMpID8/IHRoaXMuZ2V0RGVmYXVsdFRyYW5zbGF0aW9uKGtleSkocGFyYW1zKTtcblx0fVxuXG5cdG9uU2Nyb2xsKGxhc3RJdGVtSW5kZXg6IG51bWJlcik6IHZvaWQge1xuXHRcdGNvbnN0IHZpc2libGVJdGVtcyA9IHRoaXMubmdTZWxlY3Q/Lml0ZW1zTGlzdD8uZmlsdGVyZWRJdGVtcz8ubGVuZ3RoID8/IDA7XG5cdFx0aWYgKHRoaXMubGFzdEl0ZW1JbmRleFJlYWNoZWQgPCBsYXN0SXRlbUluZGV4ICYmIGxhc3RJdGVtSW5kZXggPT09IHZpc2libGVJdGVtcykge1xuXHRcdFx0dGhpcy5vbkVuZFJlYWNoZWQuZW1pdCgpO1xuXHRcdH1cblx0XHR0aGlzLmxhc3RJdGVtSW5kZXhSZWFjaGVkID0gTWF0aC5tYXgobGFzdEl0ZW1JbmRleCwgdGhpcy5sYXN0SXRlbUluZGV4UmVhY2hlZCk7XG5cdFx0dGhpcy5zZXRXaWR0aEJhc2VkT25PcHRpb25zV2lkdGhzKCk7XG5cdH1cblxuXHRzZWFyY2hRdWVyeUNoYW5nZWQoc2VhcmNoUXVlcnk6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMub25TZWFyY2guZW1pdChzZWFyY2hRdWVyeSk7XG5cdH1cblxuXHRvbk9wZW4oKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyAmJiAhaXNWYWx1ZVNldCh0aGlzLmRyb3Bkb3duUG9zaXRpb24pKSB7XG5cdFx0XHR0aGlzLmRldGVybWluZURyb3Bkb3duUG9zaXRpb24oKTtcblx0XHR9XG5cdFx0Ly8gd2FpdGluZyBmb3IgdGhlIHRoaW5nIHRvIHJlbmRlciB1bnRpbCB3ZSBmaXJlIHRoZSBldmVudFxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0dGhpcy5vbk9wZW5lZC5lbWl0KCk7XG5cdFx0XHR0aGlzLnNldFdpZHRoQmFzZWRPbk9wdGlvbnNXaWR0aHMoKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgc2V0V2lkdGhCYXNlZE9uT3B0aW9uc1dpZHRocygpOiB2b2lkIHtcblx0XHRpZiAodGhpcy50cnVuY2F0ZU9wdGlvbnMgPT09IGZhbHNlKSB7XG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0Y29uc3Qgd2lkdGhzOiBBcnJheTxudW1iZXI+ID0gQXJyYXkuZnJvbSh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm5nLW9wdGlvbiBkaXYnKSkubWFwKFxuXHRcdFx0XHRcdChlOiBhbnkpID0+IGUuc2Nyb2xsV2lkdGgsXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGNvbnN0IG1heFdpZHRoID0gTWF0aC5tYXgoLi4ud2lkdGhzKTtcblx0XHRcdFx0Y29uc3QgZHJvcGRvd25QYW5lbCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCduZy1kcm9wZG93bi1wYW5lbCcpO1xuXHRcdFx0XHRpZiAoZHJvcGRvd25QYW5lbCkge1xuXHRcdFx0XHRcdGRyb3Bkb3duUGFuZWwuc3R5bGUud2lkdGggPSBgJHtNYXRoLm1heCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgsIG1heFdpZHRoICsgNDAsIGRyb3Bkb3duUGFuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpfXB4YDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCBsaW1pdGluZ1BhcmVudENvbnRhaW5lciA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudDtcblx0XHRcdFx0d2hpbGUgKGxpbWl0aW5nUGFyZW50Q29udGFpbmVyLnBhcmVudEVsZW1lbnQgJiYgIXRoaXMuaXNMaW1pdGluZ0NvbnRhaW5lcihsaW1pdGluZ1BhcmVudENvbnRhaW5lcikpIHtcblx0XHRcdFx0XHRsaW1pdGluZ1BhcmVudENvbnRhaW5lciA9IGxpbWl0aW5nUGFyZW50Q29udGFpbmVyLnBhcmVudEVsZW1lbnQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoZHJvcGRvd25QYW5lbCkge1xuXHRcdFx0XHRcdGNvbnN0IHNwYWNlSW5QYXJlbnQgPSBsaW1pdGluZ1BhcmVudENvbnRhaW5lci5jbGllbnRXaWR0aDtcblx0XHRcdFx0XHRjb25zdCBzcGFjZUxlZnRPZkVsUmVmID0gdGhpcy5lbFJlZj8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC0gbGltaXRpbmdQYXJlbnRDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcblx0XHRcdFx0XHRjb25zdCBzcGFjZVJpZ2h0T2ZFbFJlZiA9IHNwYWNlSW5QYXJlbnQgLSBzcGFjZUxlZnRPZkVsUmVmO1xuXHRcdFx0XHRcdGNvbnN0IHNoaWZ0VG9MZWZ0ID0gZHJvcGRvd25QYW5lbD8uY2xpZW50V2lkdGggLSBzcGFjZVJpZ2h0T2ZFbFJlZiArIDIwO1xuXHRcdFx0XHRcdGlmIChzaGlmdFRvTGVmdCA+IDApIHtcblx0XHRcdFx0XHRcdGRyb3Bkb3duUGFuZWwuc3R5bGUubGVmdCA9IGAtJHtzaGlmdFRvTGVmdH1weGA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGRldGVybWluZURyb3Bkb3duUG9zaXRpb24oKTogdm9pZCB7XG5cdFx0bGV0IGN1cnJlbnQgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0d2hpbGUgKGN1cnJlbnQucGFyZW50RWxlbWVudCAmJiAhdGhpcy5pc0xpbWl0aW5nQ29udGFpbmVyKGN1cnJlbnQpKSB7XG5cdFx0XHRjdXJyZW50ID0gY3VycmVudC5wYXJlbnRFbGVtZW50O1xuXHRcdH1cblx0XHRjb25zdCB0b3BTcGFjZSA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgLSBjdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcblx0XHRjb25zdCBib3R0b21TcGFjZSA9IGN1cnJlbnQuY2xpZW50SGVpZ2h0IC0gdG9wU3BhY2U7XG5cdFx0aWYgKGJvdHRvbVNwYWNlID49IDI4NSkge1xuXHRcdFx0dGhpcy5kcm9wZG93blBvc2l0aW9uVG9Vc2UgPSAnYm90dG9tJztcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5kcm9wZG93blBvc2l0aW9uVG9Vc2UgPSAndG9wJztcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGlzTGltaXRpbmdDb250YWluZXIoZWxlbWVudDogRWxlbWVudCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcblx0XHRpZiAoc3R5bGUub3ZlcmZsb3dZID09PSAnYXV0bycpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRpZiAoc3R5bGUub3ZlcmZsb3cgPT09ICdhdXRvJykge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGlmIChzdHlsZS5vdmVyZmxvd1kgPT09ICdzY3JvbGwnKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0aWYgKHN0eWxlLm92ZXJmbG93ID09PSAnc2Nyb2xsJykge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHB1YmxpYyBmb2N1cyA9ICgpOiB2b2lkID0+IHtcblx0XHR0aGlzLm5nU2VsZWN0LmZvY3VzKCk7XG5cdH1cblxuXHRwdWJsaWMgb25DbG9zZSgpOiB2b2lkIHtcblx0XHQvLyBHaXZlIGFuZ3VsYXIgYSBzZWNvbmQgdG8gcmVuZGVyIHRoZSBjbG9zZWQgc2l0dWF0aW9uIGJlZm9yZSBlbWl0dGluZyB0aGUgY2xvc2UgZXZlbnRcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMub25DbG9zZWQuZW1pdCgpO1xuXHRcdH0pO1xuXHR9XG59XG4iLCI8bmctc2VsZWN0XG5cdCNuZ1NlbGVjdFxuXHRbcGxhY2Vob2xkZXJdPVwiZ2V0VHJhbnNsYXRpb24oJ3BsYWNlaG9sZGVyJylcIlxuXHRiaW5kTGFiZWw9XCJuYW1lXCJcblx0YmluZFZhbHVlPVwiaWRcIlxuXHRbaXRlbXNdPVwib3B0aW9uc1wiXG5cdFtjbGVhcmFibGVdPVwiY2xlYXJhYmxlXCJcblx0WyhuZ01vZGVsKV09XCJpbm5lclZhbHVlXCJcblx0W25nQ2xhc3NdPVwie3Nob3dFcnJvcnM6IGlzSW5FcnJvclN0YXRlKCksIHZlcnRpY2FsT3JpZW50YXRpb246IG9yaWVudGF0aW9uID09PSAndmVydGljYWwnLCB0cnVuY2F0ZU9wdGlvbnM6IHRydW5jYXRlT3B0aW9ucywgd2l0aFNlcGFyYXRpbmdMaW5lOiB3aXRoU2VwYXJhdGluZ0xpbmV9XCJcblx0KGNoYW5nZSk9XCJzZXRJbm5lclZhbHVlQW5kTm90aWZ5KGlubmVyVmFsdWUpXCJcblx0W211bHRpcGxlXT1cIm11bHRpcGxlXCJcblx0W2Rpc2FibGVkXT1cImRpc2FibGVkXCJcblx0KGJsdXIpPVwidG91Y2goKTsgb25CbHVyLmVtaXQoKVwiXG5cdChjbGVhcik9XCJvbkNsZWFyLmVtaXQoKVwiXG5cdChzZWFyY2gpPVwic2VhcmNoUXVlcnlDaGFuZ2VkKCRldmVudC50ZXJtKVwiXG5cdFtzZWFyY2hhYmxlXT1cInNlYXJjaGFibGVcIlxuXHRbZHJvcGRvd25Qb3NpdGlvbl09XCJkcm9wZG93blBvc2l0aW9uVG9Vc2VcIlxuXHRbc2VhcmNoRm5dPVwiY3VzdG9tU2VhcmNoRm5cIlxuXHRbc2VsZWN0T25UYWJdPVwidHJ1ZVwiXG5cdFt2aXJ0dWFsU2Nyb2xsXT1cInRydWVcIlxuXHQoc2Nyb2xsKT1cIm9uU2Nyb2xsKCRldmVudC5lbmQpXCJcblx0KG9wZW4pPVwib25PcGVuKClcIlxuXHQoY2xvc2UpPVwib25DbG9zZSgpXCJcbj5cblx0PG5nLXRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiIG5nLW9wdGlvbi10bXA+XG5cdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbU9wdGlvblRwbFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbU9wdGlvblRwbFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aXRlbTogaXRlbX1cIj48L25nLWNvbnRhaW5lcj5cblx0XHQ8ZGl2IFthdHRyLmRhdGEtY3ldPVwiaXRlbS5pZFwiICpuZ0lmPVwiIWN1c3RvbU9wdGlvblRwbFwiPlxuXHRcdFx0e3sgaXRlbS5uYW1lIH19XG5cdFx0XHQ8ZGl2ICpuZ0lmPVwiaXRlbS5kZXNjcmlwdGlvblwiIGNsYXNzPVwiZHJvcGRvd24taXRlbS1kZXNjcmlwdGlvblwiPlxuXHRcdFx0XHR7eyBpdGVtLmRlc2NyaXB0aW9uIH19XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9uZy10ZW1wbGF0ZT5cblx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIm11bHRpcGxlICYmIG11bHRpcGxlRGlzcGxheWVkQXNBbW91bnQgJiYgaW5uZXJWYWx1ZT8ubGVuZ3RoID4gMVwiPlxuXHRcdDxuZy10ZW1wbGF0ZSBuZy1tdWx0aS1sYWJlbC10bXA+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwibmctdmFsdWVcIj5cblx0XHRcdFx0PHNwYW4gY2xhc3M9XCJuZy12YWx1ZS1sYWJlbFwiPnt7Z2V0VHJhbnNsYXRpb24oJ2Ftb3VudFNlbGVjdGVkJywgaW5uZXJWYWx1ZT8ubGVuZ3RoKX19PC9zcGFuPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9uZy10ZW1wbGF0ZT5cblx0PC9uZy1jb250YWluZXI+XG5cdDxuZy10ZW1wbGF0ZSBuZy1mb290ZXItdG1wICpuZ0lmPVwiZm9vdGVyRWxlbWVudFwiPlxuXHRcdDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9vdGVyRWxlbWVudFwiPjwvbmctY29udGFpbmVyPlxuXHQ8L25nLXRlbXBsYXRlPlxuPC9uZy1zZWxlY3Q+XG4iXX0=
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsaXBwYS9uZ3gtZW5oYW5jeS1mb3Jtcy9zcmMvbGliL2VsZW1lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRU4sU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBRVQsWUFBWSxFQUNaLElBQUksRUFDSixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBRXZGLE9BQU8sRUFBQyxVQUFVLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7O0FBV25FLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFNLDhCQUE4QixDQUFDLENBQUM7QUFHM0YsTUFBTSxPQUFPLGdDQUFnQzs4R0FBaEMsZ0NBQWdDO2tHQUFoQyxnQ0FBZ0M7OzJGQUFoQyxnQ0FBZ0M7a0JBRDVDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUU7O0FBUy9DLE1BQU0sT0FBTyxlQUFnQixTQUFRLGlCQUFvQztJQTBCeEUsWUFDK0IsTUFBNEIsRUFDNUIsZ0JBQWtDLEVBQ2YsWUFBaUIsRUFDMUQsS0FBaUI7UUFFekIsS0FBSyxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBTEYsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7UUFDNUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNmLGlCQUFZLEdBQVosWUFBWSxDQUFLO1FBQzFELFVBQUssR0FBTCxLQUFLLENBQVk7UUEzQmpCLGdCQUFXLEdBQThCLFlBQVksQ0FBQztRQUV0RCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLDhCQUF5QixHQUFHLEtBQUssQ0FBQztRQUNsQyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUMzQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ1gscUJBQWdCLEdBQWlELElBQUksQ0FBQztRQUdyRSxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN0QyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDeEMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDcEMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDcEMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDbEMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFJNUMseUJBQW9CLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0IsMEJBQXFCLEdBQWlELFFBQVEsQ0FBQztRQXVJL0UsVUFBSyxHQUFHLEdBQVMsRUFBRTtZQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQTtRQUNNLFVBQUssR0FBRyxHQUFTLEVBQUU7WUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUE7SUFuSUQsQ0FBQztJQUVELGVBQWU7UUFDZCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUdPLFNBQVM7UUFDaEIsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDakYsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QyxPQUFPLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztZQUM3QixPQUFPLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDaEMsU0FBUyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZEO0lBQ0YsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNqQyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNwRCxDQUFDO0lBRUQscUJBQXFCLENBQUMsR0FBVztRQUNoQyxRQUFRLEdBQUcsRUFBRTtZQUNaLEtBQUssYUFBYTtnQkFDakIsT0FBTyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztZQUMvQixLQUFLLGdCQUFnQjtnQkFDcEIsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxNQUFNLFdBQVcsQ0FBQztTQUN6QztJQUNGLENBQUM7SUFFRCxjQUFjLENBQUMsR0FBVyxFQUFFLFNBQWMsSUFBSTtRQUM3QyxJQUFJLEdBQUcsS0FBSyxhQUFhLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3BFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUN4QjtRQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxRQUFRLENBQUMsYUFBcUI7UUFDN0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDMUUsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsYUFBYSxJQUFJLGFBQWEsS0FBSyxZQUFZLEVBQUU7WUFDaEYsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN6QjtRQUNELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUMvRSxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsV0FBbUI7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELE1BQU07UUFDTCxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssWUFBWSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQzVFLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1NBQ2pDO1FBQ0QsMERBQTBEO1FBQzFELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVPLDRCQUE0QjtRQUNuQyxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssS0FBSyxFQUFFO1lBQ25DLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsTUFBTSxNQUFNLEdBQWtCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FDeEcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQ3pCLENBQUM7Z0JBQ0YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO2dCQUNyQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQztnQkFDbEYsSUFBSSxhQUFhLEVBQUU7b0JBQ2xCLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsUUFBUSxHQUFHLEVBQUUsRUFBRSxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2lCQUM5STtnQkFFRCxJQUFJLHVCQUF1QixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO2dCQUN2RCxPQUFPLHVCQUF1QixDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFO29CQUNuRyx1QkFBdUIsR0FBRyx1QkFBdUIsQ0FBQyxhQUFhLENBQUM7aUJBQ2hFO2dCQUVELElBQUksYUFBYSxFQUFFO29CQUNsQixNQUFNLGFBQWEsR0FBRyx1QkFBdUIsQ0FBQyxXQUFXLENBQUM7b0JBQzFELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLEdBQUcsdUJBQXVCLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLENBQUM7b0JBQ3ZJLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxHQUFHLGdCQUFnQixDQUFDO29CQUMzRCxNQUFNLFdBQVcsR0FBRyxhQUFhLEVBQUUsV0FBVyxHQUFHLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztvQkFDeEUsSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFO3dCQUNwQixhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLFdBQVcsSUFBSSxDQUFDO3FCQUMvQztpQkFDRDtZQUNGLENBQUMsQ0FBQyxDQUFDO1NBQ0g7SUFDRixDQUFDO0lBRU8seUJBQXlCO1FBQ2hDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ3ZDLE9BQU8sT0FBTyxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuRSxPQUFPLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztTQUNoQztRQUNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUM1RyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztRQUNwRCxJQUFJLFdBQVcsSUFBSSxHQUFHLEVBQUU7WUFDdkIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFFBQVEsQ0FBQztTQUN0QzthQUFNO1lBQ04sSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztTQUNuQztJQUNGLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxPQUFnQjtRQUMzQyxNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QyxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssTUFBTSxFQUFFO1lBQy9CLE9BQU8sSUFBSSxDQUFDO1NBQ1o7UUFDRCxJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssTUFBTSxFQUFFO1lBQzlCLE9BQU8sSUFBSSxDQUFDO1NBQ1o7UUFDRCxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDO1NBQ1o7UUFDRCxJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDO1NBQ1o7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7SUFTTSxPQUFPO1FBQ2IsdUZBQXVGO1FBQ3ZGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0EzS1csZUFBZSw4SUE2QmxCLG1CQUFtQjtrR0E3QmhCLGVBQWUsNmxCQUZoQixDQUFDLEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDLHVFQXVCdEUsZ0NBQWdDLDJCQUFVLFdBQVcsK0tDaEVwRSw2dERBNENBOzsyRkREYSxlQUFlO2tCQU4zQixTQUFTOytCQUNDLGlCQUFpQixhQUdoQixDQUFDLEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDOzswQkE2QmxGLFFBQVE7OzBCQUFJLElBQUk7OzBCQUNoQixRQUFROzswQkFBSSxJQUFJOzswQkFDaEIsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUFHLFFBQVE7cUVBNUI5QixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLHlCQUF5QjtzQkFBakMsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVyxRQUFRO3NCQUF4QixNQUFNO2dCQUNVLFlBQVk7c0JBQTVCLE1BQU07Z0JBQ1UsUUFBUTtzQkFBeEIsTUFBTTtnQkFDVSxRQUFRO3NCQUF4QixNQUFNO2dCQUNVLE1BQU07c0JBQXRCLE1BQU07Z0JBQ1UsT0FBTztzQkFBdkIsTUFBTTtnQkFDZ0IsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNrRCxlQUFlO3NCQUFyRixZQUFZO3VCQUFDLGdDQUFnQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEFmdGVyVmlld0luaXQsXG5cdENvbXBvbmVudCxcblx0Q29udGVudENoaWxkLFxuXHREaXJlY3RpdmUsXG5cdEVsZW1lbnRSZWYsXG5cdEV2ZW50RW1pdHRlcixcblx0SG9zdCxcblx0SW5qZWN0LFxuXHRJbmplY3Rpb25Ub2tlbixcblx0SW5wdXQsXG5cdE9uQ2hhbmdlcyxcblx0T3B0aW9uYWwsXG5cdE91dHB1dCxcblx0U2ltcGxlQ2hhbmdlcyxcblx0VGVtcGxhdGVSZWYsXG5cdFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbENvbnRhaW5lciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7VmFsdWVBY2Nlc3NvckJhc2V9IGZyb20gJy4uL3ZhbHVlLWFjY2Vzc29yLWJhc2UvdmFsdWUtYWNjZXNzb3ItYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3JtRWxlbWVudENvbXBvbmVudH0gZnJvbSAnLi4vLi4vZm9ybS9mb3JtLWVsZW1lbnQvZm9ybS1lbGVtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQge2lzVmFsdWVTZXQsIHN0cmluZ0lzU2V0QW5kRmlsbGVkfSBmcm9tICcuLi8uLi91dGlsL3ZhbHVlcyc7XG5cbmV4cG9ydCB0eXBlIEFwcFNlbGVjdE9wdGlvbnMgPSBBcnJheTxBcHBTZWxlY3RPcHRpb24+O1xuZXhwb3J0IHR5cGUgQXBwU2VsZWN0T3B0aW9uID0ge1xuXHRpZDogYW55O1xuXHRuYW1lOiBzdHJpbmc7XG5cdGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXHRhY3RpdmU/OiBib29sZWFuO1xuXHRkaXNhYmxlZD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgU0VMRUNUX1RSQU5TTEFUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnk+KCdrbHAuZm9ybS5zZWxlY3QudHJhbnNsYXRpb25zJyk7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1trbHBTZWxlY3RPcHRpb25UcGxdJyB9KVxuZXhwb3J0IGNsYXNzIEtscFNlbGVjdE9wdGlvblRlbXBsYXRlRGlyZWN0aXZlIHt9XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2tscC1mb3JtLXNlbGVjdCcsXG5cdHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi9zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcblx0cHJvdmlkZXJzOiBbe3Byb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogU2VsZWN0Q29tcG9uZW50LCBtdWx0aTogdHJ1ZX1dLFxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBWYWx1ZUFjY2Vzc29yQmFzZTxzdHJpbmcgfCBzdHJpbmdbXT4gaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXR7XG5cdEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cdEBJbnB1dCgpIHByZWZpeDogc3RyaW5nO1xuXHRASW5wdXQoKSBvcmllbnRhdGlvbjogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJyA9ICdob3Jpem9udGFsJztcblx0QElucHV0KCkgb3B0aW9uczogQXBwU2VsZWN0T3B0aW9ucztcblx0QElucHV0KCkgbXVsdGlwbGUgPSBmYWxzZTtcblx0QElucHV0KCkgbXVsdGlwbGVEaXNwbGF5ZWRBc0Ftb3VudCA9IGZhbHNlO1xuXHRASW5wdXQoKSBjbGVhcmFibGUgPSB0cnVlO1xuXHRASW5wdXQoKSB0cnVuY2F0ZU9wdGlvbnMgPSB0cnVlO1xuXHRASW5wdXQoKSB3aXRoU2VwYXJhdGluZ0xpbmUgPSBmYWxzZTtcblx0QElucHV0KCkgc2VhcmNoYWJsZSA9IHRydWU7XG5cdEBJbnB1dCgpIHB1YmxpYyBkcm9wZG93blBvc2l0aW9uOiAnYXV0bycgfCAnYm90dG9tJyB8ICd0b3AnIHwgJ2xlZnQnIHwgJ3JpZ2h0JyA9IG51bGw7XG5cdEBJbnB1dCgpIHB1YmxpYyBjdXN0b21TZWFyY2hGbjogKHRlcm06IHN0cmluZywgaXRlbTogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IGRlc2NyaXB0aW9uOiBzdHJpbmcgfSkgPT4gYm9vbGVhbjtcblx0QElucHV0KCkgcHVibGljIGZvb3RlckVsZW1lbnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cdEBPdXRwdXQoKSBwdWJsaWMgb25TZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblx0QE91dHB1dCgpIHB1YmxpYyBvbkVuZFJlYWNoZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cdEBPdXRwdXQoKSBwdWJsaWMgb25PcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cdEBPdXRwdXQoKSBwdWJsaWMgb25DbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cdEBPdXRwdXQoKSBwdWJsaWMgb25CbHVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXHRAT3V0cHV0KCkgcHVibGljIG9uQ2xlYXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cdEBWaWV3Q2hpbGQoJ25nU2VsZWN0JykgbmdTZWxlY3Q7XG5cdEBDb250ZW50Q2hpbGQoS2xwU2VsZWN0T3B0aW9uVGVtcGxhdGVEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgY3VzdG9tT3B0aW9uVHBsOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG5cdHByaXZhdGUgbGFzdEl0ZW1JbmRleFJlYWNoZWQgPSAtMTtcblx0cHVibGljIGRyb3Bkb3duUG9zaXRpb25Ub1VzZTogJ2F1dG8nIHwgJ2JvdHRvbScgfCAndG9wJyB8ICdsZWZ0JyB8ICdyaWdodCcgPSAnYm90dG9tJztcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRAT3B0aW9uYWwoKSBASG9zdCgpIHByb3RlY3RlZCBwYXJlbnQ6IEZvcm1FbGVtZW50Q29tcG9uZW50LFxuXHRcdEBPcHRpb25hbCgpIEBIb3N0KCkgcHJvdGVjdGVkIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG5cdFx0QEluamVjdChTRUxFQ1RfVFJBTlNMQVRJT05TKSBAT3B0aW9uYWwoKSBwcml2YXRlIHRyYW5zbGF0aW9uczogYW55LFxuXHRcdHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXG5cdCkge1xuXHRcdHN1cGVyKHBhcmVudCwgY29udHJvbENvbnRhaW5lcik7XG5cdH1cblxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5hZGRQcmVmaXgoKTtcblx0fVxuXG5cblx0cHJpdmF0ZSBhZGRQcmVmaXgoKTogdm9pZCB7XG5cdFx0aWYgKHN0cmluZ0lzU2V0QW5kRmlsbGVkKHRoaXMucHJlZml4KSkge1xuXHRcdFx0Y29uc3QgY29udGFpbmVyID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5uZy1zZWxlY3QtY29udGFpbmVyJyk7XG5cdFx0XHRjb25zdCBuZXdOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHRuZXdOb2RlLmNsYXNzTmFtZSA9ICdwcmVmaXgnO1xuXHRcdFx0bmV3Tm9kZS5pbm5lclRleHQgPSB0aGlzLnByZWZpeDtcblx0XHRcdGNvbnRhaW5lci5pbnNlcnRCZWZvcmUobmV3Tm9kZSwgY29udGFpbmVyLmNoaWxkcmVuWzBdKTtcblx0XHR9XG5cdH1cblxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG5cdFx0aWYgKGlzVmFsdWVTZXQoY2hhbmdlcy5vcHRpb25zKSkge1xuXHRcdFx0dGhpcy5sYXN0SXRlbUluZGV4UmVhY2hlZCA9IC0xO1xuXHRcdFx0dGhpcy5zZXRXaWR0aEJhc2VkT25PcHRpb25zV2lkdGhzKCk7XG5cdFx0fVxuXHRcdHRoaXMuZHJvcGRvd25Qb3NpdGlvblRvVXNlID0gdGhpcy5kcm9wZG93blBvc2l0aW9uO1xuXHR9XG5cblx0Z2V0RGVmYXVsdFRyYW5zbGF0aW9uKGtleTogc3RyaW5nKTogKHg6IGFueSkgPT4gc3RyaW5nIHtcblx0XHRzd2l0Y2ggKGtleSkge1xuXHRcdFx0Y2FzZSAncGxhY2Vob2xkZXInOlxuXHRcdFx0XHRyZXR1cm4gKCkgPT4gJ1BpY2sgYW4gb3B0aW9uJztcblx0XHRcdGNhc2UgJ2Ftb3VudFNlbGVjdGVkJzpcblx0XHRcdFx0cmV0dXJuIChhbW91bnQpID0+IGAke2Ftb3VudH0gc2VsZWN0ZWRgO1xuXHRcdH1cblx0fVxuXG5cdGdldFRyYW5zbGF0aW9uKGtleTogc3RyaW5nLCBwYXJhbXM6IGFueSA9IG51bGwpOiBzdHJpbmcge1xuXHRcdGlmIChrZXkgPT09ICdwbGFjZWhvbGRlcicgJiYgc3RyaW5nSXNTZXRBbmRGaWxsZWQodGhpcy5wbGFjZWhvbGRlcikpIHtcblx0XHRcdHJldHVybiB0aGlzLnBsYWNlaG9sZGVyO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy50cmFuc2xhdGlvbnM/LltrZXldPy4ocGFyYW1zKSA/PyB0aGlzLmdldERlZmF1bHRUcmFuc2xhdGlvbihrZXkpKHBhcmFtcyk7XG5cdH1cblxuXHRvblNjcm9sbChsYXN0SXRlbUluZGV4OiBudW1iZXIpOiB2b2lkIHtcblx0XHRjb25zdCB2aXNpYmxlSXRlbXMgPSB0aGlzLm5nU2VsZWN0Py5pdGVtc0xpc3Q/LmZpbHRlcmVkSXRlbXM/Lmxlbmd0aCA/PyAwO1xuXHRcdGlmICh0aGlzLmxhc3RJdGVtSW5kZXhSZWFjaGVkIDwgbGFzdEl0ZW1JbmRleCAmJiBsYXN0SXRlbUluZGV4ID09PSB2aXNpYmxlSXRlbXMpIHtcblx0XHRcdHRoaXMub25FbmRSZWFjaGVkLmVtaXQoKTtcblx0XHR9XG5cdFx0dGhpcy5sYXN0SXRlbUluZGV4UmVhY2hlZCA9IE1hdGgubWF4KGxhc3RJdGVtSW5kZXgsIHRoaXMubGFzdEl0ZW1JbmRleFJlYWNoZWQpO1xuXHRcdHRoaXMuc2V0V2lkdGhCYXNlZE9uT3B0aW9uc1dpZHRocygpO1xuXHR9XG5cblx0c2VhcmNoUXVlcnlDaGFuZ2VkKHNlYXJjaFF1ZXJ5OiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLm9uU2VhcmNoLmVtaXQoc2VhcmNoUXVlcnkpO1xuXHR9XG5cblx0b25PcGVuKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcgJiYgIWlzVmFsdWVTZXQodGhpcy5kcm9wZG93blBvc2l0aW9uKSkge1xuXHRcdFx0dGhpcy5kZXRlcm1pbmVEcm9wZG93blBvc2l0aW9uKCk7XG5cdFx0fVxuXHRcdC8vIHdhaXRpbmcgZm9yIHRoZSB0aGluZyB0byByZW5kZXIgdW50aWwgd2UgZmlyZSB0aGUgZXZlbnRcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMub25PcGVuZWQuZW1pdCgpO1xuXHRcdFx0dGhpcy5zZXRXaWR0aEJhc2VkT25PcHRpb25zV2lkdGhzKCk7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIHNldFdpZHRoQmFzZWRPbk9wdGlvbnNXaWR0aHMoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMudHJ1bmNhdGVPcHRpb25zID09PSBmYWxzZSkge1xuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHdpZHRoczogQXJyYXk8bnVtYmVyPiA9IEFycmF5LmZyb20odGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5uZy1vcHRpb24gZGl2JykpLm1hcChcblx0XHRcdFx0XHQoZTogYW55KSA9PiBlLnNjcm9sbFdpZHRoLFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCBtYXhXaWR0aCA9IE1hdGgubWF4KC4uLndpZHRocyk7XG5cdFx0XHRcdGNvbnN0IGRyb3Bkb3duUGFuZWwgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignbmctZHJvcGRvd24tcGFuZWwnKTtcblx0XHRcdFx0aWYgKGRyb3Bkb3duUGFuZWwpIHtcblx0XHRcdFx0XHRkcm9wZG93blBhbmVsLnN0eWxlLndpZHRoID0gYCR7TWF0aC5tYXgodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoLCBtYXhXaWR0aCArIDQwLCBkcm9wZG93blBhbmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKX1weGA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRsZXQgbGltaXRpbmdQYXJlbnRDb250YWluZXIgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRcdHdoaWxlIChsaW1pdGluZ1BhcmVudENvbnRhaW5lci5wYXJlbnRFbGVtZW50ICYmICF0aGlzLmlzTGltaXRpbmdDb250YWluZXIobGltaXRpbmdQYXJlbnRDb250YWluZXIpKSB7XG5cdFx0XHRcdFx0bGltaXRpbmdQYXJlbnRDb250YWluZXIgPSBsaW1pdGluZ1BhcmVudENvbnRhaW5lci5wYXJlbnRFbGVtZW50O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGRyb3Bkb3duUGFuZWwpIHtcblx0XHRcdFx0XHRjb25zdCBzcGFjZUluUGFyZW50ID0gbGltaXRpbmdQYXJlbnRDb250YWluZXIuY2xpZW50V2lkdGg7XG5cdFx0XHRcdFx0Y29uc3Qgc3BhY2VMZWZ0T2ZFbFJlZiA9IHRoaXMuZWxSZWY/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCAtIGxpbWl0aW5nUGFyZW50Q29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG5cdFx0XHRcdFx0Y29uc3Qgc3BhY2VSaWdodE9mRWxSZWYgPSBzcGFjZUluUGFyZW50IC0gc3BhY2VMZWZ0T2ZFbFJlZjtcblx0XHRcdFx0XHRjb25zdCBzaGlmdFRvTGVmdCA9IGRyb3Bkb3duUGFuZWw/LmNsaWVudFdpZHRoIC0gc3BhY2VSaWdodE9mRWxSZWYgKyAyMDtcblx0XHRcdFx0XHRpZiAoc2hpZnRUb0xlZnQgPiAwKSB7XG5cdFx0XHRcdFx0XHRkcm9wZG93blBhbmVsLnN0eWxlLmxlZnQgPSBgLSR7c2hpZnRUb0xlZnR9cHhgO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBkZXRlcm1pbmVEcm9wZG93blBvc2l0aW9uKCk6IHZvaWQge1xuXHRcdGxldCBjdXJyZW50ID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50O1xuXHRcdHdoaWxlIChjdXJyZW50LnBhcmVudEVsZW1lbnQgJiYgIXRoaXMuaXNMaW1pdGluZ0NvbnRhaW5lcihjdXJyZW50KSkge1xuXHRcdFx0Y3VycmVudCA9IGN1cnJlbnQucGFyZW50RWxlbWVudDtcblx0XHR9XG5cdFx0Y29uc3QgdG9wU3BhY2UgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIC0gY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XG5cdFx0Y29uc3QgYm90dG9tU3BhY2UgPSBjdXJyZW50LmNsaWVudEhlaWdodCAtIHRvcFNwYWNlO1xuXHRcdGlmIChib3R0b21TcGFjZSA+PSAyODUpIHtcblx0XHRcdHRoaXMuZHJvcGRvd25Qb3NpdGlvblRvVXNlID0gJ2JvdHRvbSc7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZHJvcGRvd25Qb3NpdGlvblRvVXNlID0gJ3RvcCc7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBpc0xpbWl0aW5nQ29udGFpbmVyKGVsZW1lbnQ6IEVsZW1lbnQpOiBib29sZWFuIHtcblx0XHRjb25zdCBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG5cdFx0aWYgKHN0eWxlLm92ZXJmbG93WSA9PT0gJ2F1dG8nKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0aWYgKHN0eWxlLm92ZXJmbG93ID09PSAnYXV0bycpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRpZiAoc3R5bGUub3ZlcmZsb3dZID09PSAnc2Nyb2xsJykge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGlmIChzdHlsZS5vdmVyZmxvdyA9PT0gJ3Njcm9sbCcpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRwdWJsaWMgZm9jdXMgPSAoKTogdm9pZCA9PiB7XG5cdFx0dGhpcy5uZ1NlbGVjdC5mb2N1cygpO1xuXHR9XG5cdHB1YmxpYyBjbG9zZSA9ICgpOiB2b2lkID0+IHtcblx0XHR0aGlzLm5nU2VsZWN0LmNsb3NlKCk7XG5cdH1cblxuXHRwdWJsaWMgb25DbG9zZSgpOiB2b2lkIHtcblx0XHQvLyBHaXZlIGFuZ3VsYXIgYSBzZWNvbmQgdG8gcmVuZGVyIHRoZSBjbG9zZWQgc2l0dWF0aW9uIGJlZm9yZSBlbWl0dGluZyB0aGUgY2xvc2UgZXZlbnRcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMub25DbG9zZWQuZW1pdCgpO1xuXHRcdH0pO1xuXHR9XG59XG4iLCI8bmctc2VsZWN0XG5cdCNuZ1NlbGVjdFxuXHRbcGxhY2Vob2xkZXJdPVwiZ2V0VHJhbnNsYXRpb24oJ3BsYWNlaG9sZGVyJylcIlxuXHRiaW5kTGFiZWw9XCJuYW1lXCJcblx0YmluZFZhbHVlPVwiaWRcIlxuXHRbaXRlbXNdPVwib3B0aW9uc1wiXG5cdFtjbGVhcmFibGVdPVwiY2xlYXJhYmxlXCJcblx0WyhuZ01vZGVsKV09XCJpbm5lclZhbHVlXCJcblx0W25nQ2xhc3NdPVwie3Nob3dFcnJvcnM6IGlzSW5FcnJvclN0YXRlKCksIHZlcnRpY2FsT3JpZW50YXRpb246IG9yaWVudGF0aW9uID09PSAndmVydGljYWwnLCB0cnVuY2F0ZU9wdGlvbnM6IHRydW5jYXRlT3B0aW9ucywgd2l0aFNlcGFyYXRpbmdMaW5lOiB3aXRoU2VwYXJhdGluZ0xpbmV9XCJcblx0KGNoYW5nZSk9XCJzZXRJbm5lclZhbHVlQW5kTm90aWZ5KGlubmVyVmFsdWUpXCJcblx0W211bHRpcGxlXT1cIm11bHRpcGxlXCJcblx0W2Rpc2FibGVkXT1cImRpc2FibGVkXCJcblx0KGJsdXIpPVwidG91Y2goKTsgb25CbHVyLmVtaXQoKVwiXG5cdChjbGVhcik9XCJvbkNsZWFyLmVtaXQoKVwiXG5cdChzZWFyY2gpPVwic2VhcmNoUXVlcnlDaGFuZ2VkKCRldmVudC50ZXJtKVwiXG5cdFtzZWFyY2hhYmxlXT1cInNlYXJjaGFibGVcIlxuXHRbZHJvcGRvd25Qb3NpdGlvbl09XCJkcm9wZG93blBvc2l0aW9uVG9Vc2VcIlxuXHRbc2VhcmNoRm5dPVwiY3VzdG9tU2VhcmNoRm5cIlxuXHRbc2VsZWN0T25UYWJdPVwidHJ1ZVwiXG5cdFt2aXJ0dWFsU2Nyb2xsXT1cInRydWVcIlxuXHQoc2Nyb2xsKT1cIm9uU2Nyb2xsKCRldmVudC5lbmQpXCJcblx0KG9wZW4pPVwib25PcGVuKClcIlxuXHQoY2xvc2UpPVwib25DbG9zZSgpXCJcbj5cblx0PG5nLXRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiIG5nLW9wdGlvbi10bXA+XG5cdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbU9wdGlvblRwbFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbU9wdGlvblRwbFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aXRlbTogaXRlbX1cIj48L25nLWNvbnRhaW5lcj5cblx0XHQ8ZGl2IFthdHRyLmRhdGEtY3ldPVwiaXRlbS5pZFwiICpuZ0lmPVwiIWN1c3RvbU9wdGlvblRwbFwiPlxuXHRcdFx0e3sgaXRlbS5uYW1lIH19XG5cdFx0XHQ8ZGl2ICpuZ0lmPVwiaXRlbS5kZXNjcmlwdGlvblwiIGNsYXNzPVwiZHJvcGRvd24taXRlbS1kZXNjcmlwdGlvblwiPlxuXHRcdFx0XHR7eyBpdGVtLmRlc2NyaXB0aW9uIH19XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9uZy10ZW1wbGF0ZT5cblx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIm11bHRpcGxlICYmIG11bHRpcGxlRGlzcGxheWVkQXNBbW91bnQgJiYgaW5uZXJWYWx1ZT8ubGVuZ3RoID4gMVwiPlxuXHRcdDxuZy10ZW1wbGF0ZSBuZy1tdWx0aS1sYWJlbC10bXA+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwibmctdmFsdWVcIj5cblx0XHRcdFx0PHNwYW4gY2xhc3M9XCJuZy12YWx1ZS1sYWJlbFwiPnt7Z2V0VHJhbnNsYXRpb24oJ2Ftb3VudFNlbGVjdGVkJywgaW5uZXJWYWx1ZT8ubGVuZ3RoKX19PC9zcGFuPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9uZy10ZW1wbGF0ZT5cblx0PC9uZy1jb250YWluZXI+XG5cdDxuZy10ZW1wbGF0ZSBuZy1mb290ZXItdG1wICpuZ0lmPVwiZm9vdGVyRWxlbWVudFwiPlxuXHRcdDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9vdGVyRWxlbWVudFwiPjwvbmctY29udGFpbmVyPlxuXHQ8L25nLXRlbXBsYXRlPlxuPC9uZy1zZWxlY3Q+XG4iXX0=
@@ -71,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
71
71
  type: HostBinding,
72
72
  args: ['class._fullWidth']
73
73
  }] } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zdWJtaXQtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsaXBwYS9uZ3gtZW5oYW5jeS1mb3Jtcy9zcmMvbGliL2Zvcm0vZm9ybS1zdWJtaXQtYnV0dG9uL2Zvcm0tc3VibWl0LWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tc3VibWl0LWJ1dHRvbi9mb3JtLXN1Ym1pdC1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFnQixtQkFBbUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDOzs7OztBQU9wRCxNQUFNLE9BQU8seUJBQXlCO0lBUXJDLElBQXFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxZQUF3QyxVQUF5QjtRQUF6QixlQUFVLEdBQVYsVUFBVSxDQUFlO1FBWGpELGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDekIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixZQUFPLEdBQWtELGFBQWEsQ0FBQztRQUNoRSxXQUFNLEdBQXVCLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNyRCxVQUFLLEdBQXVCLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQU9BLENBQUM7SUFFckUsS0FBSyxDQUFDLFVBQVU7UUFDZixJQUFJO1lBQ0gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDcEI7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNYLE9BQU87U0FDUDtRQUNELElBQUksQ0FBQyxVQUFVO2FBQ2IsU0FBUyxFQUFFO2FBQ1gsSUFBSSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxjQUFjLENBQUMsRUFBRSxFQUFFO1lBQ3BELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUMzRixJQUFJLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLEVBQUU7Z0JBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQzthQUNuRTtZQUNELE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUM1RSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsTUFBTSxDQUFDLENBQUM7WUFDVCxDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1osSUFBSSxDQUFDLEtBQUssbUJBQW1CLEVBQUU7Z0JBQzlCLE9BQU8sQ0FBQyxpRkFBaUY7YUFDekY7WUFDRCxNQUFNLENBQUMsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO1FBQ0osTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEIsQ0FBQzs4R0F4Q1cseUJBQXlCO2tHQUF6Qix5QkFBeUIsMFFDVHRDLG9TQVdBOzsyRkRGYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Msd0JBQXdCOzswQkFnQnJCLElBQUk7OzBCQUFJLFFBQVE7NENBWGIsU0FBUztzQkFBeEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFFK0IsQ0FBQztzQkFBckMsV0FBVzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3QsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUNvbXBvbmVudCwgaW52YWxpZEZpZWxkc1N5bWJvbH0gZnJvbSAnLi4vZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHtpc051bGxPclVuZGVmaW5lZH0gZnJvbSAnLi4vLi4vdXRpbC92YWx1ZXMnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdrbHAtZm9ybS1zdWJtaXQtYnV0dG9uJyxcblx0dGVtcGxhdGVVcmw6ICcuL2Zvcm0tc3VibWl0LWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL2Zvcm0tc3VibWl0LWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtU3VibWl0QnV0dG9uQ29tcG9uZW50IHtcblx0QElucHV0KCkgcHVibGljIGlzTG9hZGluZyA9IGZhbHNlO1xuXHRASW5wdXQoKSBmdWxsV2lkdGggPSBmYWxzZTtcblx0QElucHV0KCkgdmFyaWFudDogJ2dyZWVuRmlsbGVkJyB8ICdyZWRGaWxsZWQnIHwgJ2dyZWVuT3V0bGluZWQnID0gJ2dyZWVuRmlsbGVkJztcblx0QElucHV0KCkgcHVibGljIGJlZm9yZTogKCkgPT4gUHJvbWlzZTxhbnk+ID0gKCkgPT4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdEBJbnB1dCgpIHB1YmxpYyBhZnRlcjogKCkgPT4gUHJvbWlzZTxhbnk+ID0gKCkgPT4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdEBJbnB1dCgpIHB1YmxpYyBzdWJtaXRDYWxsYmFjazogKHJlbmRlcmVkQW5kRW5hYmxlZFZhbHVlczogb2JqZWN0LCByZW5kZXJlZEJ1dERpc2FibGVkVmFsdWVzOiBvYmplY3QpID0+IFByb21pc2U8YW55PjtcblxuXHRASG9zdEJpbmRpbmcoJ2NsYXNzLl9mdWxsV2lkdGgnKSBnZXQgXygpIHtcblx0XHRyZXR1cm4gdGhpcy5mdWxsV2lkdGg7XG5cdH1cblxuXHRjb25zdHJ1Y3RvcihASG9zdCgpIEBPcHRpb25hbCgpIHByaXZhdGUgcGFyZW50Rm9ybTogRm9ybUNvbXBvbmVudCkge31cblxuXHRhc3luYyBzdWJtaXRGb3JtKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRhd2FpdCB0aGlzLmJlZm9yZSgpO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5wYXJlbnRGb3JtXG5cdFx0XHQudHJ5U3VibWl0KClcblx0XHRcdC50aGVuKChbcmVuZGVyZWRBbmRFbmFibGVkVmFsdWVzLCByZW5kZXJlZFZhbHVlc10pID0+IHtcblx0XHRcdFx0dGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuXHRcdFx0XHRjb25zdCBzdWJtaXRDYWxsYmFja1Jlc3VsdCA9IHRoaXMuc3VibWl0Q2FsbGJhY2socmVuZGVyZWRBbmRFbmFibGVkVmFsdWVzLCByZW5kZXJlZFZhbHVlcyk7XG5cdFx0XHRcdGlmIChpc051bGxPclVuZGVmaW5lZChzdWJtaXRDYWxsYmFja1Jlc3VsdCkpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ05vIHByb21pc2UgaXMgcmV0dXJuZWQgaW4geW91ciBzdWJtaXQgZnVuY3Rpb24uJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHN1Ym1pdENhbGxiYWNrUmVzdWx0LnRoZW4oKCkgPT4gKHRoaXMuaXNMb2FkaW5nID0gZmFsc2UpKS5jYXRjaCgoZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG5cdFx0XHRcdFx0dGhyb3cgZTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKChlKSA9PiB7XG5cdFx0XHRcdGlmIChlID09PSBpbnZhbGlkRmllbGRzU3ltYm9sKSB7XG5cdFx0XHRcdFx0cmV0dXJuOyAvLyBzd2FsbG93IHRoZSBlcnJvciwgdGhlIGZyYW1ld29yayB3aWxsIHNjcm9sbCB0byB0aGUgZmllbGQgdGhhdCBuZWVkcyBhdHRlbnRpb25cblx0XHRcdFx0fVxuXHRcdFx0XHR0aHJvdyBlO1xuXHRcdFx0fSk7XG5cdFx0YXdhaXQgdGhpcy5hZnRlcigpO1xuXHR9XG59XG4iLCI8a2xwLWZvcm0tYnV0dG9uXG5cdFx0W3ZhcmlhbnRdPVwidmFyaWFudFwiXG5cdFx0KGNsaWNrKT1cInN1Ym1pdEZvcm0oKVwiXG5cdFx0W2Rpc2FibGVkXT1cImlzTG9hZGluZ1wiXG5cdFx0W2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIlxuXHRcdFtmdWxsV2lkdGhdPVwiZnVsbFdpZHRoXCJcblx0XHR0eXBlPVwic3VibWl0XCJcblx0XHRbbmdDbGFzc109XCJmdWxsV2lkdGggPyAnZnVsbFdpZHRoJyA6ICcnXCJcblx0PlxuXHQ8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2tscC1mb3JtLWJ1dHRvbj5cbiJdfQ==
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zdWJtaXQtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsaXBwYS9uZ3gtZW5oYW5jeS1mb3Jtcy9zcmMvbGliL2Zvcm0vZm9ybS1zdWJtaXQtYnV0dG9uL2Zvcm0tc3VibWl0LWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tc3VibWl0LWJ1dHRvbi9mb3JtLXN1Ym1pdC1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFnQixtQkFBbUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDOzs7OztBQWVwRCxNQUFNLE9BQU8seUJBQXlCO0lBUXJDLElBQXFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxZQUF3QyxVQUF5QjtRQUF6QixlQUFVLEdBQVYsVUFBVSxDQUFlO1FBWGpELGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDekIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixZQUFPLEdBQXdCLGFBQWEsQ0FBQztRQUN0QyxXQUFNLEdBQXVCLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNyRCxVQUFLLEdBQXVCLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQU9BLENBQUM7SUFFckUsS0FBSyxDQUFDLFVBQVU7UUFDZixJQUFJO1lBQ0gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDcEI7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNYLE9BQU87U0FDUDtRQUNELElBQUksQ0FBQyxVQUFVO2FBQ2IsU0FBUyxFQUFFO2FBQ1gsSUFBSSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxjQUFjLENBQUMsRUFBRSxFQUFFO1lBQ3BELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUMzRixJQUFJLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLEVBQUU7Z0JBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQzthQUNuRTtZQUNELE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUM1RSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsTUFBTSxDQUFDLENBQUM7WUFDVCxDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1osSUFBSSxDQUFDLEtBQUssbUJBQW1CLEVBQUU7Z0JBQzlCLE9BQU8sQ0FBQyxpRkFBaUY7YUFDekY7WUFDRCxNQUFNLENBQUMsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO1FBQ0osTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEIsQ0FBQzs4R0F4Q1cseUJBQXlCO2tHQUF6Qix5QkFBeUIsMFFDakJ0QyxvU0FXQTs7MkZETWEseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNDLHdCQUF3Qjs7MEJBZ0JyQixJQUFJOzswQkFBSSxRQUFROzRDQVhiLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBRStCLENBQUM7c0JBQXJDLFdBQVc7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0LCBIb3N0QmluZGluZywgSW5wdXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1Db21wb25lbnQsIGludmFsaWRGaWVsZHNTeW1ib2x9IGZyb20gJy4uL2Zvcm0uY29tcG9uZW50JztcbmltcG9ydCB7aXNOdWxsT3JVbmRlZmluZWR9IGZyb20gJy4uLy4uL3V0aWwvdmFsdWVzJztcbmltcG9ydCB7IEJ1dHRvblZhcmlhbnQgfSBmcm9tICcuLi8uLi9lbGVtZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCB0eXBlIFN1Ym1pdEJ1dHRvblZhcmlhbnQgPSBFeHRyYWN0PEJ1dHRvblZhcmlhbnQsXG5cdHwgJ2dyZWVuRmlsbGVkJ1xuXHR8ICdyZWRGaWxsZWQnXG5cdHwgJ2dyZWVuT3V0bGluZWQnXG5cdHwgJ3doaXRlJ1xuPjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAna2xwLWZvcm0tc3VibWl0LWJ1dHRvbicsXG5cdHRlbXBsYXRlVXJsOiAnLi9mb3JtLXN1Ym1pdC1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi9mb3JtLXN1Ym1pdC1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybVN1Ym1pdEJ1dHRvbkNvbXBvbmVudCB7XG5cdEBJbnB1dCgpIHB1YmxpYyBpc0xvYWRpbmcgPSBmYWxzZTtcblx0QElucHV0KCkgZnVsbFdpZHRoID0gZmFsc2U7XG5cdEBJbnB1dCgpIHZhcmlhbnQ6IFN1Ym1pdEJ1dHRvblZhcmlhbnQgPSAnZ3JlZW5GaWxsZWQnO1xuXHRASW5wdXQoKSBwdWJsaWMgYmVmb3JlOiAoKSA9PiBQcm9taXNlPGFueT4gPSAoKSA9PiBQcm9taXNlLnJlc29sdmUoKTtcblx0QElucHV0KCkgcHVibGljIGFmdGVyOiAoKSA9PiBQcm9taXNlPGFueT4gPSAoKSA9PiBQcm9taXNlLnJlc29sdmUoKTtcblx0QElucHV0KCkgcHVibGljIHN1Ym1pdENhbGxiYWNrOiAocmVuZGVyZWRBbmRFbmFibGVkVmFsdWVzOiBvYmplY3QsIHJlbmRlcmVkQnV0RGlzYWJsZWRWYWx1ZXM6IG9iamVjdCkgPT4gUHJvbWlzZTxhbnk+O1xuXG5cdEBIb3N0QmluZGluZygnY2xhc3MuX2Z1bGxXaWR0aCcpIGdldCBfKCkge1xuXHRcdHJldHVybiB0aGlzLmZ1bGxXaWR0aDtcblx0fVxuXG5cdGNvbnN0cnVjdG9yKEBIb3N0KCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBwYXJlbnRGb3JtOiBGb3JtQ29tcG9uZW50KSB7fVxuXG5cdGFzeW5jIHN1Ym1pdEZvcm0oKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGF3YWl0IHRoaXMuYmVmb3JlKCk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLnBhcmVudEZvcm1cblx0XHRcdC50cnlTdWJtaXQoKVxuXHRcdFx0LnRoZW4oKFtyZW5kZXJlZEFuZEVuYWJsZWRWYWx1ZXMsIHJlbmRlcmVkVmFsdWVzXSkgPT4ge1xuXHRcdFx0XHR0aGlzLmlzTG9hZGluZyA9IHRydWU7XG5cdFx0XHRcdGNvbnN0IHN1Ym1pdENhbGxiYWNrUmVzdWx0ID0gdGhpcy5zdWJtaXRDYWxsYmFjayhyZW5kZXJlZEFuZEVuYWJsZWRWYWx1ZXMsIHJlbmRlcmVkVmFsdWVzKTtcblx0XHRcdFx0aWYgKGlzTnVsbE9yVW5kZWZpbmVkKHN1Ym1pdENhbGxiYWNrUmVzdWx0KSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcignTm8gcHJvbWlzZSBpcyByZXR1cm5lZCBpbiB5b3VyIHN1Ym1pdCBmdW5jdGlvbi4nKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gc3VibWl0Q2FsbGJhY2tSZXN1bHQudGhlbigoKSA9PiAodGhpcy5pc0xvYWRpbmcgPSBmYWxzZSkpLmNhdGNoKChlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcblx0XHRcdFx0XHR0aHJvdyBlO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goKGUpID0+IHtcblx0XHRcdFx0aWYgKGUgPT09IGludmFsaWRGaWVsZHNTeW1ib2wpIHtcblx0XHRcdFx0XHRyZXR1cm47IC8vIHN3YWxsb3cgdGhlIGVycm9yLCB0aGUgZnJhbWV3b3JrIHdpbGwgc2Nyb2xsIHRvIHRoZSBmaWVsZCB0aGF0IG5lZWRzIGF0dGVudGlvblxuXHRcdFx0XHR9XG5cdFx0XHRcdHRocm93IGU7XG5cdFx0XHR9KTtcblx0XHRhd2FpdCB0aGlzLmFmdGVyKCk7XG5cdH1cbn1cbiIsIjxrbHAtZm9ybS1idXR0b25cblx0XHRbdmFyaWFudF09XCJ2YXJpYW50XCJcblx0XHQoY2xpY2spPVwic3VibWl0Rm9ybSgpXCJcblx0XHRbZGlzYWJsZWRdPVwiaXNMb2FkaW5nXCJcblx0XHRbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiXG5cdFx0W2Z1bGxXaWR0aF09XCJmdWxsV2lkdGhcIlxuXHRcdHR5cGU9XCJzdWJtaXRcIlxuXHRcdFtuZ0NsYXNzXT1cImZ1bGxXaWR0aCA/ICdmdWxsV2lkdGgnIDogJydcIlxuXHQ+XG5cdDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwva2xwLWZvcm0tYnV0dG9uPlxuIl19
@@ -792,6 +792,9 @@ class SelectComponent extends ValueAccessorBase {
792
792
  this.focus = () => {
793
793
  this.ngSelect.focus();
794
794
  };
795
+ this.close = () => {
796
+ this.ngSelect.close();
797
+ };
795
798
  }
796
799
  ngAfterViewInit() {
797
800
  this.addPrefix();
@@ -1 +1 @@
1
- {"version":3,"file":"klippa-ngx-enhancy-forms.mjs","sources":["../../../../projects/klippa/ngx-enhancy-forms/src/lib/util/values.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/util/arrays.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/util/objects.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-element/form-element.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-element/form-element.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/value-accessor-base/value-accessor-base.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/loading-indicator/loading-indicator.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/loading-indicator/loading-indicator.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/button/button.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/button/button.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/checkbox/checkbox.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/checkbox/checkbox.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/email/email-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/email/email-input.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/number-input/number-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/number-input/number-input.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/password-field/password-field.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/password-field/password-field.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/select/select.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/select/select.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/select/select-footer/select-footer.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/select/select-footer/select-footer.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/sortable-items/sortable-items.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/sortable-items/sortable-items.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/text-input/text-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/text-input/text-input.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/toggle/toggle.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/toggle/toggle.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-caption/form-caption.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-caption/form-caption.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-error/form-error.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-error/form-error.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-submit-button/form-submit-button.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-submit-button/form-submit-button.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/value-accessor-base/multiple-value-accessor-base.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/validators/dateValidator.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/date-time-picker/date-time-picker.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/date-time-picker/date-time-picker.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/date-picker/date-picker.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/date-picker/date-picker.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/material.module.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/file-input/file-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/file-input/file-input.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/sortable-grouped-items/sortable-grouped-items.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/sortable-grouped-items/sortable-grouped-items.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/validators/timeValidator.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/hour-minute-input/hour-minute-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/hour-minute-input/hour-minute-input.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/radio/radio.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/radio/radio.component.html","../../../../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 { isString } from 'lodash-es';\n\nexport function stringIsSetAndFilled(s: string): boolean {\n\treturn isString(s) && s.length > 0;\n}\n\nexport function isNullOrUndefined(value: any): boolean {\n\treturn value === null || value === undefined;\n}\n\nexport function numberIsSet(value: any): boolean {\n\treturn isValueSet(value) && typeof value === 'number';\n}\n\nexport function isValueSet(value: any): boolean {\n\treturn value !== null && value !== undefined;\n}\n\nexport function stringOrArrayIsSetAndEmpty(value: any[] | string): boolean {\n\treturn value !== null && value !== undefined && value.length === 0;\n}\n\nexport function truncateString(s: string, length: number): string {\n\tif (s.length < length) {\n\t\treturn s;\n\t}\n\treturn s.substring(0, length) + '...';\n}\n\n","import { isArray } from 'lodash-es';\nimport { isValueSet } from './values';\n\nexport function removeDuplicatesFromArraysWithComparator(comparator: (e1: any, e2: any) => boolean, ...arrays: any[]): any {\n\tlet combined = [];\n\n\tfor (const array of arrays) {\n\t\tcombined = combined.concat(array);\n\t}\n\n\treturn combined.filter((c, i) => {\n\t\tconst firstOccurrenceIndex = combined.findIndex((c2) => comparator(c, c2));\n\t\treturn i === firstOccurrenceIndex;\n\t});\n}\n\nexport function removeDuplicatesFromArray<T>(array: Array<T>): Array<T> {\n\treturn array.filter((c, i) => {\n\t\tconst firstOccurrenceIndex = array.findIndex((c2) => c2 === c);\n\t\treturn i === firstOccurrenceIndex;\n\t});\n}\n\nexport function insertAtIndex(arr, index, item): void {\n\tarr.splice(index, 0, item);\n}\n\nexport function arrayIsSetAndFilled(arr: any): boolean {\n\treturn isArray(arr) && arr !== null && arr !== undefined && arr.length > 0;\n}\n\nexport function asArray(value: any): Array<any> {\n\tif (isValueSet(value)) {\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value;\n\t\t}\n\t\treturn [value];\n\t}\n\treturn [];\n}\n\nexport function splitArrayByCondition<T>(value: Array<T>, condition: (current: T) => boolean): Array<Array<T>> {\n\treturn value.reduce((acc, cur) => {\n\t\tif (condition(cur)) {\n\t\t\tacc.push([]);\n\t\t} else {\n\t\t\tacc[acc.length - 1].push(cur);\n\t\t}\n\t\treturn acc;\n\t}, [[]]);\n}\n","function mergeArray(arrA: Array<any>, arrB: Array<any>): Array<any> {\n\tconst arr = new Array(Math.max(arrA.length, arrB.length));\n\n\tfor (let i = 0; i < arr.length; i++) {\n\t\tif (typeof arrA[i] === 'object' && typeof arrB[i] === 'object') {\n\t\t\tarr[i] = deepMerge(arrA[i], arrB[i]);\n\t\t} else {\n\t\t\tarr[i] = arrB[i] ?? arrA[i];\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nexport function deepMerge<\n\tA extends object | Array<any>,\n\tB extends object | Array<any>\n>(objA: A, objB: B): A | B {\n\tif (Array.isArray(objA) || Array.isArray(objB)) {\n\t\tif (Array.isArray(objA) && Array.isArray(objB)) {\n\t\t\treturn mergeArray(objA, objB) as A | B;\n\t\t}\n\n\t\t// if a and b differ in type, prefer b.\n\t\treturn objB ?? objA;\n\t}\n\n\tconst merged: A | B = {} as A | B;\n\n\tconst keys = new Set<keyof A | keyof B>([\n\t\t...Object.keys(objA),\n\t\t...Object.keys(objB),\n\t] as Array<keyof A | keyof B>);\n\n\tkeys.forEach((key) => {\n\t\tconst a = objA[key as keyof A];\n\t\tconst b = objB[key as keyof B];\n\n\t\tif (typeof a === 'object' && typeof b === 'object') {\n\t\t\tmerged[key as keyof (A | B)] = deepMerge(a as any, b as any) as any;\n\t\t\treturn;\n\t\t}\n\n\t\t// if a and b differ in type, prefer b.\n\t\tmerged[key as keyof (A | B)] = (b ?? a) as any;\n\t});\n\n\treturn merged;\n}\n","import {Component, Directive, Input, OnChanges, OnDestroy, OnInit, Optional, SimpleChanges, SkipSelf} from '@angular/core';\nimport {AbstractControl, FormArray, FormControl, FormGroup, UntypedFormArray, UntypedFormControl, UntypedFormGroup} from '@angular/forms';\nimport {FormElementComponent} from './form-element/form-element.component';\nimport {isValueSet} from '../util/values';\nimport { deepMerge } from '../util/objects';\n\nexport const invalidFieldsSymbol = Symbol('Not all fields are valid');\n\n@Directive({\n\t// tslint:disable-next-line:directive-selector\n\tselector: 'klp-sub-form',\n})\nexport class SubFormDirective {\n\t@Input() injectInto: UntypedFormArray | UntypedFormGroup;\n\t@Input() at: number | string;\n}\n\n@Component({\n\tselector: 'klp-form',\n\ttemplateUrl: './form.component.html',\n\tstyleUrls: ['./form.component.scss'],\n})\nexport class FormComponent implements OnInit, OnDestroy, OnChanges {\n\t@Input() public readOnly = false;\n\t@Input() public showErrorMessages = true;\n\t@Input() public errorMessageLocation: 'belowCaption' | 'rightOfCaption' = 'belowCaption';\n\t@Input() public formGroup: UntypedFormGroup;\n\t@Input() public patchValueInterceptor: (values: any) => Promise<any>;\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: UntypedFormControl;\n\t\tformElement: FormElementComponent;\n\t}> = [];\n\n\tconstructor(@SkipSelf() @Optional() private parent: FormComponent, @Optional() private subFormPlaceholder: SubFormDirective) {\n\t}\n\n\tngOnInit(): void {\n\t\tif (isValueSet(this.parent) && isValueSet(this.subFormPlaceholder)) {\n\t\t\tconst injectInto = this.subFormPlaceholder.injectInto;\n\t\t\tconst injectAt = this.subFormPlaceholder.at;\n\t\t\tif (injectInto instanceof UntypedFormArray) {\n\t\t\t\tif (typeof injectAt !== 'number') {\n\t\t\t\t\tthrow new Error(`cannot index FormArray with ${typeof injectAt}`);\n\t\t\t\t}\n\t\t\t\tif (injectInto.at(injectAt)?.disabled) {\n\t\t\t\t\tthis.formGroup.disable();\n\t\t\t\t}\n\t\t\t\tconst valueBeforeInject = injectInto.at(injectAt)?.value;\n\t\t\t\tinjectInto.setControl(injectAt, this.formGroup);\n\t\t\t\tif (isValueSet(valueBeforeInject)) {\n\t\t\t\t\tthis.formGroup.patchValue(valueBeforeInject);\n\t\t\t\t}\n\t\t\t} else if (injectInto instanceof UntypedFormGroup) {\n\t\t\t\tif (typeof injectAt !== 'string') {\n\t\t\t\t\tthrow new Error(`cannot index FormGroup with ${typeof injectAt}`);\n\t\t\t\t}\n\t\t\t\tif (injectInto.get(injectAt)?.disabled) {\n\t\t\t\t\tthis.formGroup.disable();\n\t\t\t\t}\n\t\t\t\tconst valueBeforeInject = injectInto.get(injectAt)?.value;\n\t\t\t\tinjectInto.setControl(injectAt, this.formGroup);\n\t\t\t\tif (isValueSet(valueBeforeInject)) {\n\t\t\t\t\tthis.formGroup.patchValue(valueBeforeInject);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (isValueSet(this.patchValueInterceptor)) {\n\t\t\tthis.addSupportForPatchValueInterceptor();\n\t\t}\n\t}\n\n\tngOnChanges(simpleChanges: SimpleChanges): void {\n\t\tif (simpleChanges.readOnly?.currentValue === true) {\n\t\t\tthis.activeControls.forEach(e => e.formControl.disable());\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\tif (isValueSet(this.parent) && isValueSet(this.subFormPlaceholder)) {\n\t\t\tconst injectInto = this.subFormPlaceholder.injectInto;\n\t\t\tconst injectAt = this.subFormPlaceholder.at;\n\t\t\tif (injectInto instanceof UntypedFormArray) {\n\t\t\t\tconst idx = injectInto.controls.findIndex(e => e === this.formGroup);\n\t\t\t\tinjectInto.removeAt(idx);\n\t\t\t} else if (injectInto instanceof UntypedFormGroup) {\n\t\t\t\tif (typeof injectAt !== 'string') {\n\t\t\t\t\tthrow new Error(`cannot index FormGroup with ${typeof injectAt}`);\n\t\t\t\t}\n\t\t\t\tinjectInto.removeControl(injectAt);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate addSupportForPatchValueInterceptor(): void {\n\t\tconst fn = this.formGroup.patchValue;\n\t\tconst newFn = (\n\t\t\tvalue: {\n\t\t\t\t[key: string]: any;\n\t\t\t},\n\t\t\toptions?: {\n\t\t\t\tonlySelf?: boolean;\n\t\t\t\temitEvent?: boolean;\n\t\t\t}\n\t\t): void => {\n\t\t\tthis.patchValueInterceptor(value).then((val) => {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tfn.call(this.formGroup, val, options);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t\tthis.formGroup.patchValue = newFn;\n\t}\n\n\tpublic registerControl(formControl: UntypedFormControl, formElement: FormElementComponent): void {\n\t\tthis.activeControls.push({formControl, formElement});\n\t\tif (this.parent) {\n\t\t\tthis.parent.registerControl(formControl, formElement);\n\t\t}\n\t\tif (this.readOnly) {\n\t\t\tformControl.disable();\n\t\t}\n\t}\n\n\tpublic unregisterControl(formControl: UntypedFormControl): void {\n\t\tthis.activeControls = this.activeControls.filter((e) => e.formControl !== formControl);\n\t\tif (this.parent) {\n\t\t\tthis.parent.unregisterControl(formControl);\n\t\t}\n\t}\n\n\tprivate addFormGroupControls(formGroup: UntypedFormGroup, result: Array<UntypedFormControl>): void {\n\t\tObject.values(formGroup.controls).forEach((value) => {\n\t\t\tif (value instanceof UntypedFormGroup) {\n\t\t\t\tthis.addFormGroupControls(value, result);\n\t\t\t} else if (value instanceof UntypedFormArray) {\n\t\t\t\tthis.addFormArrayControls(value, result);\n\t\t\t} else if (value instanceof UntypedFormControl) {\n\t\t\t\tthis.addFormControl(value, result);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate addFormArrayControls(formArray: UntypedFormArray, result: Array<UntypedFormControl>): void {\n\t\tformArray.controls.forEach((value) => {\n\t\t\tif (value instanceof UntypedFormGroup) {\n\t\t\t\tthis.addFormGroupControls(value, result);\n\t\t\t} else if (value instanceof UntypedFormArray) {\n\t\t\t\tthis.addFormArrayControls(value, result);\n\t\t\t} else if (value instanceof UntypedFormControl) {\n\t\t\t\tthis.addFormControl(value, result);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate getAllFormControls(): Array<UntypedFormControl> {\n\t\tconst result = [];\n\t\tthis.addFormGroupControls(this.formGroup, result);\n\t\treturn result;\n\t}\n\n\tprivate addFormControl(control: UntypedFormControl, result: Array<UntypedFormControl>): void {\n\t\tresult.push(control);\n\t}\n\n\tprivate disableInactiveFormControl(control: UntypedFormControl): void {\n\t\tif (!this.activeControls.some((e) => e.formControl === control)) {\n\t\t\tcontrol.disable();\n\t\t}\n\t}\n\n\ttrySubmit(): Promise<any> {\n\t\tthis.formGroup.markAllAsTouched();\n\t\tconst allControls: Array<UntypedFormControl> = this.getAllFormControls();\n\t\tconst originalDisabledStates = allControls.map(e => {\n\t\t\treturn {control: e, disabled: e.disabled};\n\t\t});\n\t\tallControls.forEach(e => this.disableInactiveFormControl(e));\n\t\tallControls.forEach(e => e.updateValueAndValidity());\n\t\tconst formGroupValue = this.formGroup.value;\n\t\tconst renderedAndEnabledValues = this.getRenderedFieldValuesFormGroup(this.formGroup, true);\n\t\tconst renderedButDisabledValues = this.getRenderedFieldValuesFormGroup(this.formGroup, false);\n\t\tif (this.formGroup.invalid) {\n\t\t\tthis.activeControls.find((e) => !e.formControl.valid)?.formElement?.scrollTo();\n\t\t\tthis.setDisabledStatesForAllControls(originalDisabledStates);\n\t\t\treturn Promise.reject(invalidFieldsSymbol);\n\t\t} else {\n\t\t\tthis.setDisabledStatesForAllControls(originalDisabledStates);\n\t\t\tconst renderedValues = deepMerge(renderedAndEnabledValues, renderedButDisabledValues);\n\t\t\treturn Promise.resolve([formGroupValue, renderedValues]);\n\t\t}\n\t}\n\n\tprivate getRenderedFieldValuesFormGroup(formGroup: FormGroup, enabled: boolean, valueObject = {}): object {\n\t\tObject.entries(formGroup.controls).forEach(([name, control]) => {\n\t\t\tif (control instanceof FormControl && control.enabled === enabled && this.activeControls.some(e => e.formControl === control)) {\n\t\t\t\tvalueObject[name] = control.value;\n\t\t\t} else if (control instanceof FormArray) {\n\t\t\t\tvalueObject[name] = [];\n\t\t\t\tthis.getRenderedFieldValuesFormArray(control, enabled, valueObject[name]);\n\t\t\t} else if (control instanceof FormGroup) {\n\t\t\t\tvalueObject[name] = {};\n\t\t\t\tthis.getRenderedFieldValuesFormGroup(control, enabled, valueObject[name]);\n\t\t\t}\n\t\t});\n\t\treturn valueObject;\n\t}\n\n\tprivate getRenderedFieldValuesFormArray(formArray: FormArray, enabled: boolean, valueArray: Array<any>): void {\n\t\tformArray.controls.forEach((control: AbstractControl) => {\n\t\t\tif (control instanceof FormControl && control.enabled === enabled && this.activeControls.some(e => e.formControl === control)) {\n\t\t\t\tvalueArray.push(control.value);\n\t\t\t} else if (control instanceof FormArray) {\n\t\t\t\tconst newArray = [];\n\t\t\t\tvalueArray.push(newArray);\n\t\t\t\tthis.getRenderedFieldValuesFormArray(control, enabled, newArray);\n\t\t\t} else if (control instanceof FormGroup) {\n\t\t\t\tconst newObject = {};\n\t\t\t\tvalueArray.push(newObject);\n\t\t\t\tthis.getRenderedFieldValuesFormGroup(control, enabled, newObject);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate setDisabledStatesForAllControls(originalDisabledStates: Array<{ control: AbstractControl; disabled: boolean }>): void {\n\t\toriginalDisabledStates.forEach((e) => {\n\t\t\tif (e.disabled) {\n\t\t\t\te.control.disable();\n\t\t\t} else {\n\t\t\t\te.control.enable();\n\t\t\t}\n\t\t});\n\t}\n}\n","<form>\n\t<ng-content></ng-content>\n</form>\n\n\n","import {Component, Directive, ElementRef, Host, Inject, InjectionToken, Input, OnInit, Optional, ViewChild} from '@angular/core';\nimport {AbstractControl, FormArray, UntypedFormControl, FormGroup} from '@angular/forms';\nimport {FormComponent} from '../form.component';\nimport {CustomErrorMessages, FormErrorMessages} from '../../types';\nimport { ValueAccessorBase } from '../../elements/value-accessor-base/value-accessor-base.component';\nimport { isValueSet } from '../../util/values';\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 spaceDistribution: '40-60' | '34-66' | '30-70' = '40-60';\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\tprivate input: ValueAccessorBase<any>;\n\n\tconstructor(\n\t\t @Optional() private parent: FormComponent,\n\t\t@Inject(FORM_ERROR_MESSAGES) @Optional() private customMessages: CustomErrorMessages,\n\t) {}\n\n\tpublic shouldShowErrorMessages(): boolean {\n\t\treturn this.parent?.showErrorMessages !== false;\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: UntypedFormControl, input: ValueAccessorBase<any> = null): void {\n\t\tthis.attachedControl = formControl;\n\t\tthis.parent.registerControl(formControl, this);\n\t\tthis.input = input;\n\t}\n\n\tpublic unregisterControl(formControl: UntypedFormControl): void {\n\t\tthis.attachedControl = null;\n\t\tthis.parent.unregisterControl(formControl);\n\t}\n\n\tpublic getAttachedControl(): AbstractControl {\n\t\treturn this.attachedControl;\n\t}\n\n\tpublic registerErrorHandler(error: string, templateRef: ElementRef): void {\n\t\tthis.customErrorHandlers.push({error, templateRef});\n\t}\n\n\tpublic registerCaption(templateRef: ElementRef): void {\n\t\tthis.captionRef = templateRef;\n\t}\n\n\tgetErrorToShow(): string {\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): { error: string; templateRef: ElementRef } {\n\t\treturn this.customErrorHandlers.find((e) => e.error === error);\n\t}\n\n\tshowDefaultError(error: string): boolean {\n\t\treturn this.getErrorToShow() === error && !this.customErrorHandlers.some((e) => e.error === error);\n\t}\n\n\tgetScrollableParent(node): any {\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(): void{\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\tisRequired(): boolean {\n\t\tif (isValueSet(this.input)) {\n\t\t\treturn this.input.hasValidator('required');\n\t\t}\n\t\treturn false;\n\t}\n\n\tgetErrorMessage(key: keyof FormErrorMessages): string {\n\t\treturn this.customMessages?.[key]?.() ?? this.errorMessages[key];\n\t}\n\n\tpublic getErrorLocation(): 'belowCaption' | 'rightOfCaption' {\n\t\treturn this.parent?.errorMessageLocation ?? 'belowCaption';\n\t}\n}\n","<ng-template #errorRef>\n\t<div *ngIf=\"shouldShowErrorMessages() && getErrorToShow()\" class=\"errorContainer\" [ngClass]=\"{hasCaption: caption || captionRef, 'd30-70': spaceDistribution === '30-70', 'd34-66': spaceDistribution === '34-66'}\">\n\t\t<div *ngIf=\"showDefaultError('min')\">{{substituteParameters(getErrorMessage(\"min\"), {min: attachedControl.errors.min.min})}}</div>\n\t\t<div *ngIf=\"showDefaultError('max')\">{{substituteParameters(getErrorMessage(\"max\"), {max: attachedControl.errors.max.max})}}</div>\n\t\t<div *ngIf=\"showDefaultError('required')\">{{getErrorMessage(\"required\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('email')\">{{getErrorMessage(\"email\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('minlength')\">{{substituteParameters(getErrorMessage(\"minLength\"), {minLength: attachedControl.errors.minlength.requiredLength})}}</div>\n\t\t<div *ngIf=\"showDefaultError('maxlength')\">{{substituteParameters(getErrorMessage(\"maxLength\"), {maxLength: attachedControl.errors.maxlength.requiredLength})}}</div>\n\t\t<div *ngIf=\"showDefaultError('pattern')\">{{getErrorMessage(\"pattern\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('MatchPassword')\">{{getErrorMessage(\"matchPassword\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('date')\">{{getErrorMessage(\"date\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('message')\">{{attachedControl.errors.message.value}}</div>\n\t\t<div [ngTemplateOutlet]=\"getCustomErrorHandler(getErrorToShow())?.templateRef\"></div>\n\t</div>\n</ng-template>\n\n<ng-container *ngIf=\"direction === 'horizontal'\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\n<div class=\"componentContainer\" [ngClass]=\"{hasCaption: caption || captionRef, vertical: direction === 'vertical', reverseOrder: swapInputAndCaption}\" #internalComponentRef>\n\t<div class=\"caption\" *ngIf=\"caption || captionRef\"\n\t\t[ngClass]=\"{\n\t\t\thasErrors: getErrorToShow() && attachedControl.touched,\n\t\t\tpercentageSpacing: captionSpacing === 'percentages',\n\t\t\t'd30-70': spaceDistribution === '30-70',\n\t\t\t'd34-66': spaceDistribution === '34-66',\n\t\t\twithErrorRightOfCaption: getErrorLocation() === 'rightOfCaption'\n\t\t}\"\n\t>\n\t\t<div *ngIf=\"captionRef\" class=\"captionRefContainer\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"captionRef\"></ng-container>\n\t\t\t<div *ngIf=\"isRequired()\">&nbsp;*</div>\n\t\t</div>\n\t\t<div *ngIf=\"!captionRef\">{{caption}}<span *ngIf=\"isRequired()\">&nbsp;*</span></div>\n\t\t<div class=\"rightOfCaptionError\">\n\t\t\t<ng-container *ngIf=\"direction === 'vertical' && getErrorLocation() === 'rightOfCaption'\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t\t</div>\n\t</div>\n\t<ng-container *ngIf=\"direction === 'vertical' && getErrorLocation() === 'belowCaption'\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t<div class=\"inputContainer\" [ngClass]=\"{\n\t\tpercentageSpacing: captionSpacing === 'percentages',\n\t\t'd30-70': spaceDistribution === '30-70',\n\t\t'd34-66': spaceDistribution === '34-66'\n\t}\">\n\t\t<ng-content></ng-content>\n\t</div>\n</div>\n","import {ControlContainer, ControlValueAccessor, UntypedFormControl} from '@angular/forms';\nimport {Component, ElementRef, EventEmitter, Host, Input, OnDestroy, OnInit, Optional, Output, ViewChild} from '@angular/core';\nimport {FormElementComponent} from '../../form/form-element/form-element.component';\nimport {isNullOrUndefined, isValueSet, stringIsSetAndFilled} from '../../util/values';\nimport { arrayIsSetAndFilled } from '../../util/arrays';\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, OnInit, OnDestroy {\n\tpublic innerValue: T;\n\tpublic changed = new Array<(value: T) => void>();\n\tprivate touched = new Array<() => void>();\n\tprivate prevValue: T = null;\n\n\t@Input() public disabled = false;\n\t// needed to prevent race conditions\n\tprivate latestInnerValueChangedInterceptorPromise: Promise<void>;\n\t@Input() innerValueChangeInterceptor: (prev: T, cur: T) => Promise<void>;\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: UntypedFormControl = null;\n\t@Output() public onTouch = new EventEmitter<void>();\n\t@ViewChild('nativeInputRef') nativeInputRef: ElementRef;\n\n\tprivate attachedFormControl: UntypedFormControl;\n\n\tconstructor(\n\t\t@Host() @Optional() protected parent: FormElementComponent,\n\t\t@Host() @Optional() protected controlContainer: ControlContainer\n\t) {\n\t}\n\n\tngOnInit(): void {\n\t\tif (this.formControl) {\n\t\t\tthis.attachedFormControl = this.formControl;\n\t\t} else if (stringIsSetAndFilled(this.formControlName)) {\n\t\t\tthis.attachedFormControl = this.controlContainer?.control.get(this.formControlName) as UntypedFormControl;\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, this);\n\t\t}\n\t}\n\n\tisInErrorState(): boolean {\n\t\treturn this.attachedFormControl && this.attachedFormControl.status === 'INVALID' && this.attachedFormControl.touched;\n\t}\n\n\tngOnDestroy(): void {\n\t\tif (this.attachedFormControl) {\n\t\t\tthis.parent?.unregisterControl(this.attachedFormControl);\n\t\t}\n\t}\n\n\ttouch(): void {\n\t\tthis.touched.forEach((f) => f());\n\t}\n\n\twriteValue(value: T): void {\n\t\tthis.innerValue = value;\n\t\tthis.prevValue = value;\n\t}\n\n\tregisterOnChange(fn: (value: T) => void): void {\n\t\tthis.changed.push(fn);\n\t}\n\n\tregisterOnTouched(fn: () => void): void {\n\t\tthis.touched.push(fn);\n\t}\n\n\tsetInnerValueAndNotify(value: T): void {\n\t\tconst actuallySetValue = (valueToSet: T): void => {\n\t\t\tthis.innerValue = valueToSet;\n\t\t\tthis.prevValue = valueToSet;\n\t\t\tthis.changed.forEach((fn) => fn(valueToSet));\n\t\t};\n\t\tif (isValueSet(this.innerValueChangeInterceptor)) {\n\t\t\tthis.latestInnerValueChangedInterceptorPromise = this.innerValueChangeInterceptor(this.prevValue, value);\n\t\t\tconst myPromise = this.latestInnerValueChangedInterceptorPromise;\n\t\t\tthis.latestInnerValueChangedInterceptorPromise.then(() => {\n\t\t\t\tif (this.latestInnerValueChangedInterceptorPromise === myPromise) {\n\t\t\t\t\tactuallySetValue(value);\n\t\t\t\t} else {\n\t\t\t\t\t// ignore outdated promises\n\t\t\t\t}\n\t\t\t}).catch(() => {\n\t\t\t\tif (this.latestInnerValueChangedInterceptorPromise === myPromise) {\n\t\t\t\t\tactuallySetValue(this.prevValue);\n\t\t\t\t} else {\n\t\t\t\t\t// ignore outdated promises\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tactuallySetValue(value);\n\t\t}\n\t}\n\n\tresetToNull(): void {\n\t\tthis.setInnerValueAndNotify(null);\n\t}\n\n\thasValidator(validatorName: string): boolean {\n\t\tconst validators = Object.keys(this.attachedFormControl?.validator?.({} as any) ?? {});\n\t\tif (arrayIsSetAndFilled(validators)) {\n\t\t\treturn validators.includes(validatorName);\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic focus = (): void => {\n\t\tif (isValueSet(this.nativeInputRef?.nativeElement)){\n\t\t\tthis.nativeInputRef?.nativeElement?.focus();\n\t\t}else {\n\t\t\tthrow new Error('the focus() method is not implemented in this element!');\n\t\t}\n\t}\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","<div class=\"threeDots\" [ngClass]=\"[size]\" *ngIf=\"variant === '3dots'\">\n\t<div></div>\n\t<div></div>\n\t<div></div>\n\t<div></div>\n</div>\n\n<div class=\"spinner\" [ngClass]=\"[size]\" *ngIf=\"variant === 'spinner'\">\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n\t\t<circle cx=\"24\" cy=\"4\" r=\"4\" fill=\"currentColor\" />\n\t\t<circle cx=\"12.19\" cy=\"7.86\" r=\"3.7\" fill=\"currentColor\" />\n\t\t<circle cx=\"5.02\" cy=\"17.68\" r=\"3.4\" fill=\"currentColor\" />\n\t\t<circle cx=\"5.02\" cy=\"30.32\" r=\"3.1\" fill=\"currentColor\" />\n\t\t<circle cx=\"12.19\" cy=\"40.14\" r=\"2.8\" fill=\"currentColor\" />\n\t\t<circle cx=\"24\" cy=\"44\" r=\"2.5\" fill=\"currentColor\" />\n\t\t<circle cx=\"35.81\" cy=\"40.14\" r=\"2.2\" fill=\"currentColor\" />\n\t\t<circle cx=\"42.98\" cy=\"30.32\" r=\"1.9\" fill=\"currentColor\" />\n\t\t<circle cx=\"42.98\" cy=\"17.68\" r=\"1.6\" fill=\"currentColor\" />\n\t\t<circle cx=\"35.81\" cy=\"7.86\" r=\"1.3\" fill=\"currentColor\" />\n\t</svg>\n</div>\n\n<div class=\"textInput\" *ngIf=\"variant === 'textInput'\">\n\t<input\n\t\tdisabled\n\t\ttype=\"text\"\n\t\tclass=\"form-control\"\n\t\tplaceholder=\"Loading...\"\n\t>\n</div>\n\n<div class=\"picker\" *ngIf=\"variant === 'picker'\">\n\t<input\n\t\tdisabled\n\t\ttype=\"text\"\n\t\tclass=\"form-control\"\n\t\tplaceholder=\"Loading...\"\n\t>\n\t<div class=\"chevronDown\"></div>\n</div>\n","import { Component, HostBinding, Input } from '@angular/core';\nimport {isValueSet} from \"../../util/values\";\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\t@Input() clickCallback: (event: Event) => Promise<any>;\n\n\t@HostBinding('class._fullWidth') get _() {\n\t\treturn this.fullWidth;\n\t}\n\n\tasync onClick(event: Event) {\n\t\tif (this.disabled) {\n\t\t\tevent.stopPropagation();\n\t\t\treturn;\n\t\t}\n\n\t\tif (isValueSet(this.clickCallback)) {\n\t\t\tthis.isLoading = true;\n\t\t\tawait this.clickCallback(event).finally(() => {\n\t\t\t\tthis.isLoading = false;\n\t\t\t});\n\t\t}\n\t}\n}\n","<button class=\"buttonFundamentals\"\n\t[ngClass]=\"[\n\t\tvariant,\n\t\tsize,\n\t\tfullWidth ? 'fullWidth' : '',\n\t\thasBorder ? '' : 'no-border',\n\t\tdisabled ? 'disabled' : ''\n\t]\"\n\t[type]=\"type\"\n\t(click)=\"onClick($event)\"\n>\n\t<div class=\"caption\" [ngClass]=\"{invisible: isLoading}\">\n\t\t<ng-content></ng-content>\n\t</div>\n\t<div class=\"loadingSpinnerContainer\" *ngIf=\"isLoading\">\n\t\t<klp-form-loading-indicator variant=\"spinner\" size=\"small\"></klp-form-loading-indicator>\n\t</div>\n</button>\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() renderUndefinedAsIndeterminate = false;\n}\n","<label class=\"componentContainer\">\n\t<div class=\"checkboxContainer\">\n\t\t<input type=\"checkbox\" class=\"checkboxNative\"\n\t\t\t[(ngModel)]=\"innerValue\"\n\t\t\t(change)=\"setInnerValueAndNotify(innerValue); touch()\"\n\t\t\t[disabled]=\"disabled\"\n\t\t\t#nativeInputRef\n\t\t/>\n <div class=\"checkboxVisual\">\n <svg *ngIf=\"innerValue === true\" version=\"1.1\" viewBox=\"0 0 4.2333 4.2333\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"m0.17014 2.7065 1.3073 1.1798 2.5656-3.7404\" stroke=\"currentColor\" fill=\"none\" stroke-width=\".4646px\" />\n </svg>\n\t\t\t<svg *ngIf=\"renderUndefinedAsIndeterminate && innerValue === undefined\" version=\"1.1\" viewBox=\"0 0 4.2333 4.2333\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t<path d=\"m0.5 2.11665 3.2333 0\" stroke=\"currentColor\" fill=\"none\" stroke-width=\".4646px\" />\n\t\t\t</svg>\n </div>\n\t</div>\n\t<div *ngIf=\"caption\" class=\"caption\">{{ caption }}</div>\n</label>\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","<input\n\ttype=\"email\"\n\tclass=\"form-control\"\n\t[(ngModel)]=\"innerValue\"\n\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t[placeholder]=\"placeholder\"\n\t(blur)=\"touch()\"\n\t[disabled]=\"disabled\"\n\t#nativeInputRef\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 | number> {\n\t@Input() placeholder: string;\n\t@Input() parseNumber: boolean = false;\n\n\n\tsetInnerValueAndNotify(value: string | number) {\n\t\tif (this.parseNumber && typeof value === \"string\") {\n\t\t\tsuper.setInnerValueAndNotify(Number(value));\n\t\t} else {\n\t\t\tsuper.setInnerValueAndNotify(value);\n\t\t}\n\t}\n}\n","<input\n\ttype=\"number\"\n\tclass=\"form-control\"\n\t[(ngModel)]=\"innerValue\"\n\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t[placeholder]=\"placeholder ? placeholder : ''\"\n\t[ngClass]=\"{showErrors: isInErrorState()}\"\n\t[disabled]=\"disabled\"\n\t#nativeInputRef\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","<input\n\ttype=\"password\"\n\tclass=\"form-control\"\n [ngClass]=\"{showErrors: isInErrorState()}\"\n\t[(ngModel)]=\"innerValue\"\n\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t[placeholder]=\"placeholder\"\n\t(blur)=\"touch()\"\n\t[disabled]=\"disabled\"\n\t#nativeInputRef\n/>\n","import {\n\tAfterViewInit,\n\tComponent,\n\tContentChild,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tHost,\n\tInject,\n\tInjectionToken,\n\tInput,\n\tOnChanges,\n\tOptional,\n\tOutput,\n\tSimpleChanges,\n\tTemplateRef,\n\tViewChild\n} 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';\nimport {isValueSet, stringIsSetAndFilled} from '../../util/values';\n\nexport type AppSelectOptions = Array<AppSelectOption>;\nexport type AppSelectOption = {\n\tid: any;\n\tname: string;\n\tdescription?: string;\n\tactive?: boolean;\n\tdisabled?: boolean;\n};\n\nexport const SELECT_TRANSLATIONS = new InjectionToken<any>('klp.form.select.translations');\n\n@Directive({ selector: '[klpSelectOptionTpl]' })\nexport class KlpSelectOptionTemplateDirective {}\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[]> implements OnChanges, AfterViewInit{\n\t@Input() placeholder: string;\n\t@Input() prefix: string;\n\t@Input() orientation: 'vertical' | 'horizontal' = 'horizontal';\n\t@Input() options: AppSelectOptions;\n\t@Input() multiple = false;\n\t@Input() multipleDisplayedAsAmount = false;\n\t@Input() clearable = true;\n\t@Input() truncateOptions = true;\n\t@Input() withSeparatingLine = false;\n\t@Input() searchable = true;\n\t@Input() public dropdownPosition: 'auto' | 'bottom' | 'top' | 'left' | 'right' = null;\n\t@Input() public customSearchFn: (term: string, item: { id: string; name: string; description: string }) => boolean;\n\t@Input() public footerElement: TemplateRef<any>;\n\t@Output() public onSearch = new EventEmitter<string>();\n\t@Output() public onEndReached = new EventEmitter<void>();\n\t@Output() public onOpened = new EventEmitter<void>();\n\t@Output() public onClosed = new EventEmitter<void>();\n\t@Output() public onBlur = new EventEmitter<void>();\n\t@Output() public onClear = new EventEmitter<void>();\n\t@ViewChild('ngSelect') ngSelect;\n\t@ContentChild(KlpSelectOptionTemplateDirective, { read: TemplateRef }) customOptionTpl: TemplateRef<any>;\n\n\tprivate lastItemIndexReached = -1;\n\tpublic dropdownPositionToUse: 'auto' | 'bottom' | 'top' | 'left' | 'right' = 'bottom';\n\n\tconstructor(\n\t\t@Optional() @Host() protected parent: FormElementComponent,\n\t\t@Optional() @Host() protected controlContainer: ControlContainer,\n\t\t@Inject(SELECT_TRANSLATIONS) @Optional() private translations: any,\n\t\tprivate elRef: ElementRef,\n\t) {\n\t\tsuper(parent, controlContainer);\n\t}\n\n\tngAfterViewInit(): void {\n\t\tthis.addPrefix();\n\t}\n\n\n\tprivate addPrefix(): void {\n\t\tif (stringIsSetAndFilled(this.prefix)) {\n\t\t\tconst container = this.elRef.nativeElement.querySelector('.ng-select-container');\n\t\t\tconst newNode = document.createElement('div');\n\t\t\tnewNode.className = 'prefix';\n\t\t\tnewNode.innerText = this.prefix;\n\t\t\tcontainer.insertBefore(newNode, container.children[0]);\n\t\t}\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (isValueSet(changes.options)) {\n\t\t\tthis.lastItemIndexReached = -1;\n\t\t\tthis.setWidthBasedOnOptionsWidths();\n\t\t}\n\t\tthis.dropdownPositionToUse = this.dropdownPosition;\n\t}\n\n\tgetDefaultTranslation(key: string): (x: any) => string {\n\t\tswitch (key) {\n\t\t\tcase 'placeholder':\n\t\t\t\treturn () => 'Pick an option';\n\t\t\tcase 'amountSelected':\n\t\t\t\treturn (amount) => `${amount} selected`;\n\t\t}\n\t}\n\n\tgetTranslation(key: string, params: any = null): string {\n\t\tif (key === 'placeholder' && stringIsSetAndFilled(this.placeholder)) {\n\t\t\treturn this.placeholder;\n\t\t}\n\t\treturn this.translations?.[key]?.(params) ?? this.getDefaultTranslation(key)(params);\n\t}\n\n\tonScroll(lastItemIndex: number): void {\n\t\tconst visibleItems = this.ngSelect?.itemsList?.filteredItems?.length ?? 0;\n\t\tif (this.lastItemIndexReached < lastItemIndex && lastItemIndex === visibleItems) {\n\t\t\tthis.onEndReached.emit();\n\t\t}\n\t\tthis.lastItemIndexReached = Math.max(lastItemIndex, this.lastItemIndexReached);\n\t\tthis.setWidthBasedOnOptionsWidths();\n\t}\n\n\tsearchQueryChanged(searchQuery: string): void {\n\t\tthis.onSearch.emit(searchQuery);\n\t}\n\n\tonOpen(): void {\n\t\tif (this.orientation === 'horizontal' && !isValueSet(this.dropdownPosition)) {\n\t\t\tthis.determineDropdownPosition();\n\t\t}\n\t\t// waiting for the thing to render until we fire the event\n\t\tsetTimeout(() => {\n\t\t\tthis.onOpened.emit();\n\t\t\tthis.setWidthBasedOnOptionsWidths();\n\t\t});\n\t}\n\n\tprivate setWidthBasedOnOptionsWidths(): void {\n\t\tif (this.truncateOptions === false) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst widths: Array<number> = Array.from(this.elRef.nativeElement.querySelectorAll('.ng-option div')).map(\n\t\t\t\t\t(e: any) => e.scrollWidth,\n\t\t\t\t);\n\t\t\t\tconst maxWidth = Math.max(...widths);\n\t\t\t\tconst dropdownPanel = this.elRef.nativeElement.querySelector('ng-dropdown-panel');\n\t\t\t\tif (dropdownPanel) {\n\t\t\t\t\tdropdownPanel.style.width = `${Math.max(this.elRef.nativeElement.clientWidth, maxWidth + 40, dropdownPanel.getBoundingClientRect().width)}px`;\n\t\t\t\t}\n\n\t\t\t\tlet limitingParentContainer = this.elRef.nativeElement;\n\t\t\t\twhile (limitingParentContainer.parentElement && !this.isLimitingContainer(limitingParentContainer)) {\n\t\t\t\t\tlimitingParentContainer = limitingParentContainer.parentElement;\n\t\t\t\t}\n\n\t\t\t\tif (dropdownPanel) {\n\t\t\t\t\tconst spaceInParent = limitingParentContainer.clientWidth;\n\t\t\t\t\tconst spaceLeftOfElRef = this.elRef?.nativeElement.getBoundingClientRect().left - limitingParentContainer.getBoundingClientRect().left;\n\t\t\t\t\tconst spaceRightOfElRef = spaceInParent - spaceLeftOfElRef;\n\t\t\t\t\tconst shiftToLeft = dropdownPanel?.clientWidth - spaceRightOfElRef + 20;\n\t\t\t\t\tif (shiftToLeft > 0) {\n\t\t\t\t\t\tdropdownPanel.style.left = `-${shiftToLeft}px`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate determineDropdownPosition(): void {\n\t\tlet current = this.elRef.nativeElement;\n\t\twhile (current.parentElement && !this.isLimitingContainer(current)) {\n\t\t\tcurrent = current.parentElement;\n\t\t}\n\t\tconst topSpace = this.elRef.nativeElement.getBoundingClientRect().top - current.getBoundingClientRect().top;\n\t\tconst bottomSpace = current.clientHeight - topSpace;\n\t\tif (bottomSpace >= 285) {\n\t\t\tthis.dropdownPositionToUse = 'bottom';\n\t\t} else {\n\t\t\tthis.dropdownPositionToUse = 'top';\n\t\t}\n\t}\n\n\tprivate isLimitingContainer(element: Element): boolean {\n\t\tconst style = getComputedStyle(element);\n\t\tif (style.overflowY === 'auto') {\n\t\t\treturn true;\n\t\t}\n\t\tif (style.overflow === 'auto') {\n\t\t\treturn true;\n\t\t}\n\t\tif (style.overflowY === 'scroll') {\n\t\t\treturn true;\n\t\t}\n\t\tif (style.overflow === 'scroll') {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic focus = (): void => {\n\t\tthis.ngSelect.focus();\n\t}\n\n\tpublic onClose(): void {\n\t\t// Give angular a second to render the closed situation before emitting the close event\n\t\tsetTimeout(() => {\n\t\t\tthis.onClosed.emit();\n\t\t});\n\t}\n}\n","<ng-select\n\t#ngSelect\n\t[placeholder]=\"getTranslation('placeholder')\"\n\tbindLabel=\"name\"\n\tbindValue=\"id\"\n\t[items]=\"options\"\n\t[clearable]=\"clearable\"\n\t[(ngModel)]=\"innerValue\"\n\t[ngClass]=\"{showErrors: isInErrorState(), verticalOrientation: orientation === 'vertical', truncateOptions: truncateOptions, withSeparatingLine: withSeparatingLine}\"\n\t(change)=\"setInnerValueAndNotify(innerValue)\"\n\t[multiple]=\"multiple\"\n\t[disabled]=\"disabled\"\n\t(blur)=\"touch(); onBlur.emit()\"\n\t(clear)=\"onClear.emit()\"\n\t(search)=\"searchQueryChanged($event.term)\"\n\t[searchable]=\"searchable\"\n\t[dropdownPosition]=\"dropdownPositionToUse\"\n\t[searchFn]=\"customSearchFn\"\n\t[selectOnTab]=\"true\"\n\t[virtualScroll]=\"true\"\n\t(scroll)=\"onScroll($event.end)\"\n\t(open)=\"onOpen()\"\n\t(close)=\"onClose()\"\n>\n\t<ng-template let-item=\"item\" ng-option-tmp>\n\t\t<ng-container *ngIf=\"customOptionTpl\" [ngTemplateOutlet]=\"customOptionTpl\" [ngTemplateOutletContext]=\"{item: item}\"></ng-container>\n\t\t<div [attr.data-cy]=\"item.id\" *ngIf=\"!customOptionTpl\">\n\t\t\t{{ item.name }}\n\t\t\t<div *ngIf=\"item.description\" class=\"dropdown-item-description\">\n\t\t\t\t{{ item.description }}\n\t\t\t</div>\n\t\t</div>\n\t</ng-template>\n\t<ng-container *ngIf=\"multiple && multipleDisplayedAsAmount && innerValue?.length > 1\">\n\t\t<ng-template ng-multi-label-tmp>\n\t\t\t<div class=\"ng-value\">\n\t\t\t\t<span class=\"ng-value-label\">{{getTranslation('amountSelected', innerValue?.length)}}</span>\n\t\t\t</div>\n\t\t</ng-template>\n\t</ng-container>\n\t<ng-template ng-footer-tmp *ngIf=\"footerElement\">\n\t\t<ng-container [ngTemplateOutlet]=\"footerElement\"></ng-container>\n\t</ng-template>\n</ng-select>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n\tselector: 'klp-select-footer',\n\ttemplateUrl: './select-footer.component.html',\n\tstyleUrls: ['./select-footer.component.scss'],\n})\nexport class SelectFooterComponent {\n\t@Input() public prefix: string;\n\t@Input() public text: string;\n}\n","<div class=\"componentContainer\">\n\t<span class=\"prefix\">{{prefix}}</span>\n\t<span class=\"text\">{{text}}</span>\n</div>\n","import {\n\tComponent,\n\tContentChild,\n\tInput,\n\tOnInit,\n\tTemplateRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Options } from 'sortablejs';\nimport { isValueSet } from '../../util/values';\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: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: SortableItemsComponent,\n\t\t\tmulti: true,\n\t\t},\n\t],\n})\nexport class SortableItemsComponent\n\textends ValueAccessorBase<Array<any>>\n\timplements OnInit\n{\n\t@ContentChild(TemplateRef) template;\n\t@Input() sortableItemSize: 'sm' | 'lg' = 'lg';\n\t@Input() useCustomScroll = false;\n\n\tpublic sortablejsOptions: Options;\n\tprivate scrollInterval = null;\n\n\tngOnInit(): void {\n\t\tsuper.ngOnInit();\n\t\tif (this.useCustomScroll) {\n\t\t\tthis.sortablejsOptions = {\n\t\t\t\tonUpdate: this.itemsOrderChanged,\n\t\t\t\tonMove: this.onItemDrag,\n\t\t\t\tonEnd: this.onEnd,\n\t\t\t};\n\t\t} else {\n\t\t\tthis.sortablejsOptions = { onUpdate: this.itemsOrderChanged };\n\t\t}\n\t}\n\n\titemsOrderChanged = () => {\n\t\tthis.setInnerValueAndNotify(this.innerValue);\n\t};\n\n\tonItemDrag = (data) => {\n\t\t// if the item you're dragging is reaching the top, start scrolling.\n\t\tif (data.relatedRect.top < 100) {\n\t\t\tthis.scrollPage(100);\n\t\t} else {\n\t\t\tthis.stopScrolling();\n\t\t}\n\t};\n\n\tonEnd = () => {\n\t\tthis.stopScrolling();\n\t};\n\n\tprivate scrollPage(scrollAmount: number): void {\n\t\tif (!isValueSet(this.scrollInterval)) {\n\t\t\tthis.scrollInterval = setInterval(() => {\n\t\t\t\twindow.scroll({\n\t\t\t\t\ttop: document.scrollingElement.scrollTop - scrollAmount,\n\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t});\n\t\t\t\tif (document.scrollingElement.scrollTop <= 100) {\n\t\t\t\t\tthis.stopScrolling();\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t}\n\t}\n\n\tprivate stopScrolling(): void {\n\t\tclearInterval(this.scrollInterval);\n\t\tthis.scrollInterval = null;\n\t}\n}\n","<ng-template #listItem>\n\t<li *ngFor=\"let item of innerValue; index as index\"\n\t\t\tclass=\"sortableItem\"\n\t\t\t[ngClass]=\"{\n\t\t\tlargeSortableItem: sortableItemSize === 'lg',\n\t\t \tsmallSortableItem: sortableItemSize === 'sm'\n\t\t }\"\n\t>\n\t\t<ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item, index:index }\"></ng-container>\n\t</li>\n</ng-template>\n\n<ol *ngIf='!disabled'\n\t\t[sortablejs]=\"innerValue\"\n\t\t[sortablejsOptions]=\"sortablejsOptions\"\n\t\tclass=\"itemsContainer\"\n>\n\t<ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n</ol>\n\n<ol *ngIf='disabled' class=\"itemsContainer disabled-mouse-cursor\">\n\t<ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n</ol>\n","import {Component, EventEmitter, Input, Output} 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\t@Input() clearable = false;\n\t@Input() icon: 'search';\n\t@Input() hasBorderLeft = true;\n\t@Input() hasBorderRight = true;\n\t@Output() onBlur = new EventEmitter<void>();\n}\n","<div class=\"componentContainer\">\n\t<ng-container *ngIf=\"icon?.length > 0\">\n\t\t<i class=\"ti-search\" *ngIf=\"icon === 'search'\"></i>\n\t</ng-container>\n\t<input\n\t\t[type]=\"type\"\n\t\t[(ngModel)]=\"innerValue\"\n\t\t[ngClass]=\"{showErrors: isInErrorState(), hasIcon: icon?.length > 0, hasClearButton: clearable, noBorderLeft: !hasBorderLeft, noBorderRight: !hasBorderRight}\"\n\t\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t\t[placeholder]=\"placeholder ? placeholder : ''\"\n\t\t(blur)=\"touch(); onBlur.emit()\"\n\t\t[disabled]='disabled'\n\t\t#nativeInputRef\n\t/>\n\t<div class=\"clearIcon\" *ngIf=\"clearable && innerValue?.length > 0\" (click)=\"resetToNull()\">×</div>\n</div>\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}\n","<div class=\"componentContainer\" [ngClass]=\"{disabled: disabled}\">\n\t<input type=\"checkbox\" class=\"nativeCheckbox\"\n\t\t[(ngModel)]=\"innerValue\"\n\t\t(input)=\"setInnerValueAndNotify($event.target.checked); touch()\"\n\t\t[disabled]=\"disabled\"\n\t\t[ngClass]=\"{showErrors: isInErrorState()}\"\n\t #nativeInputRef\n\t/>\n\t<div class=\"toggleVisual\"></div>\n</div>\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\tthis.parent.registerCaption(this.contentRef);\n\t\t});\n\t}\n}\n","<ng-template #contentRef>\n\t<ng-content></ng-content>\n</ng-template>\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","<ng-template #contentRef>\n\t<ng-content></ng-content>\n</ng-template>\n","import { Component, Host, HostBinding, Input, Optional } from '@angular/core';\nimport {FormComponent, invalidFieldsSymbol} from '../form.component';\nimport {isNullOrUndefined} from '../../util/values';\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' | 'greenOutlined' = 'greenFilled';\n\t@Input() public before: () => Promise<any> = () => Promise.resolve();\n\t@Input() public after: () => Promise<any> = () => Promise.resolve();\n\t@Input() public submitCallback: (renderedAndEnabledValues: object, renderedButDisabledValues: object) => Promise<any>;\n\n\t@HostBinding('class._fullWidth') get _() {\n\t\treturn this.fullWidth;\n\t}\n\n\tconstructor(@Host() @Optional() private parentForm: FormComponent) {}\n\n\tasync submitForm(): Promise<void> {\n\t\ttry {\n\t\t\tawait this.before();\n\t\t} catch (e) {\n\t\t\treturn;\n\t\t}\n\t\tthis.parentForm\n\t\t\t.trySubmit()\n\t\t\t.then(([renderedAndEnabledValues, renderedValues]) => {\n\t\t\t\tthis.isLoading = true;\n\t\t\t\tconst submitCallbackResult = this.submitCallback(renderedAndEnabledValues, renderedValues);\n\t\t\t\tif (isNullOrUndefined(submitCallbackResult)) {\n\t\t\t\t\tthrow new Error('No promise is returned in your submit function.');\n\t\t\t\t}\n\t\t\t\treturn submitCallbackResult.then(() => (this.isLoading = false)).catch((e) => {\n\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\tthrow e;\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch((e) => {\n\t\t\t\tif (e === invalidFieldsSymbol) {\n\t\t\t\t\treturn; // swallow the error, the framework will scroll to the field that needs attention\n\t\t\t\t}\n\t\t\t\tthrow e;\n\t\t\t});\n\t\tawait this.after();\n\t}\n}\n","<klp-form-button\n\t\t[variant]=\"variant\"\n\t\t(click)=\"submitForm()\"\n\t\t[disabled]=\"isLoading\"\n\t\t[isLoading]=\"isLoading\"\n\t\t[fullWidth]=\"fullWidth\"\n\t\ttype=\"submit\"\n\t\t[ngClass]=\"fullWidth ? 'fullWidth' : ''\"\n\t>\n\t<ng-content></ng-content>\n</klp-form-button>\n","import {Component, Host, Input, Optional} from '@angular/core';\nimport {ControlContainer} from '@angular/forms';\nimport {ValueAccessorBase} from './value-accessor-base.component';\nimport {FormElementComponent} from '../../form/form-element/form-element.component';\nimport {isValueSet} from '../../util/values';\n\n@Component({\n\tselector: '',\n\ttemplate: '',\n})\nexport class MultipleValueAccessorBase<T> extends ValueAccessorBase<Array<T> | T> {\n\t@Input() multiple = false;\n\n\tconstructor(\n\t\t@Host() @Optional() protected parent: FormElementComponent,\n\t\t@Host() @Optional() protected controlContainer: ControlContainer\n\t) {\n\t\tsuper(parent, controlContainer);\n\t}\n\n\twriteValue(value: Array<T> | T): void {\n\t\t// if the outside world passes a value in the wrong format, it should be corrected\n\t\tif (this.multiple && !Array.isArray(value)) {\n\t\t\tconst correctedVal = [value].filter(isValueSet);\n\t\t\tsuper.writeValue(correctedVal);\n\t\t\tsuper.setInnerValueAndNotify(correctedVal);\n\t\t} else if (!this.multiple && Array.isArray(value)) {\n\t\t\tconst correctedVal = value[0];\n\t\t\tsuper.writeValue(correctedVal);\n\t\t\tsuper.setInnerValueAndNotify(correctedVal);\n\t\t} else {\n\t\t\tsuper.writeValue(value);\n\t\t}\n\t}\n\n\tsetInnerValueAndNotify(value: T | Array<T>): void {\n\t\tif (this.multiple && !Array.isArray(value)) {\n\t\t\tsuper.setInnerValueAndNotify([value].filter(isValueSet));\n\t\t} else if (!this.multiple && Array.isArray(value)) {\n\t\t\tsuper.setInnerValueAndNotify(value[0]);\n\t\t} else {\n\t\t\tsuper.setInnerValueAndNotify(value);\n\t\t}\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\tAfterViewInit,\n\tChangeDetectorRef,\n\tComponent,\n\tElementRef,\n\tHost,\n\tInject,\n\tInjectionToken,\n\tInput,\n\tOnChanges,\n\tOnInit,\n\tOptional,\n\tSimpleChanges,\n\tViewChild\n} from '@angular/core';\nimport {ControlContainer, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {invalidDateKey} from '../../validators/dateValidator';\nimport {DateFilterFn, MatDatepicker} from '@angular/material/datepicker';\nimport {DateAdapter, MAT_DATE_FORMATS, MAT_NATIVE_DATE_FORMATS, MatDateFormats} from '@angular/material/core';\nimport {KlpDateFormats} from '../../types';\nimport {FormElementComponent} from '../../form/form-element/form-element.component';\nimport {MultipleValueAccessorBase} from '../value-accessor-base/multiple-value-accessor-base.component';\nimport {isValueSet, stringIsSetAndFilled} from '../../util/values';\nimport {endOfMonth, format as formatDate, startOfMonth, isSameDay} from 'date-fns';\nimport {arrayIsSetAndFilled, removeDuplicatesFromArray } from '../../util/arrays';\n\nexport const KLP_DATE_FORMATS = new InjectionToken<KlpDateFormats>('klp.form.date.formats');\nexport const DATE_TIME_PICKER_TRANSLATIONS = new InjectionToken<any>('klp.form.dateTime.translations');\nexport const DATE_PICKER_LOCALE = new InjectionToken<any>('klp.form.dateTime.locale');\n\nexport function matDateFormatsFactory(component: DateTimePickerComponent, dateFormats?: KlpDateFormats): MatDateFormats {\n\treturn dateFormats?.(component.format) ?? MAT_NATIVE_DATE_FORMATS;\n}\n\n@Component({\n\tselector: 'klp-form-date-time-picker',\n\ttemplateUrl: './date-time-picker.component.html',\n\tstyleUrls: ['./date-time-picker.component.scss'],\n\tproviders: [\n\t\t{provide: NG_VALUE_ACCESSOR, useExisting: DateTimePickerComponent, multi: true},\n\t\t{\n\t\t\tprovide: MAT_DATE_FORMATS,\n\t\t\tdeps: [DateTimePickerComponent, [new Optional(), KLP_DATE_FORMATS]],\n\t\t\tuseFactory: matDateFormatsFactory,\n\t\t},\n\t],\n})\nexport class DateTimePickerComponent extends MultipleValueAccessorBase<Date | typeof invalidDateKey> implements OnInit, AfterViewInit, OnChanges {\n\t@Input() public minDate: Date = undefined;\n\t@Input() public maxDate: Date = undefined;\n\t@Input() public sameMonthOnly = false;\n\t@Input() public format = 'dd-MM-yyyy';\n\t@Input() public placeholder: string;\n\t@Input() public clearable = false;\n\t@Input() public showTimeInput = true;\n\t@Input() public invalidTimeAsMidnight = false; // if the time is not valid, use 00:00 as the time\n\n\t@ViewChild('nativeInput') nativeInputRef: ElementRef;\n\t@ViewChild('picker') datePickerRef: MatDatepicker<Date>;\n\n\topenPickerOnDate: Date = null;\n\tminDateStartOfDay: Date = undefined;\n\tmaxDateEndOfDay: Date = undefined;\n\n\t// this is passed as ngmodel and is used to set the initial date. But we also\n\t// use input and nativeInput callbacks to extend the validation logic so we\n\t// can distinguish between empty and invalid dates.\n\tvalueForMaterialDatePicker: Date;\n\thours: string; // string because it's a text input\n\tminutes: string; // string because it's a text input\n\tprivate selectedDates: Array<Date> = [];\n\tprivate datePickingClosingFn: () => void;\n\tprivate dateTouched = false;\n\tprivate hoursTouched = false;\n\tprivate minutesTouched = false;\n\n\tconstructor(\n\t\t@Host() @Optional() protected parent: FormElementComponent,\n\t\t@Host() @Optional() protected controlContainer: ControlContainer,\n\t\t@Inject(DATE_TIME_PICKER_TRANSLATIONS) @Optional() private translations: any,\n\t\t@Inject(DATE_PICKER_LOCALE) @Optional() private datePickerLocale: any,\n\t\tprivate dateAdapter: DateAdapter<Date>,\n\t\tprivate cdr: ChangeDetectorRef\n\t) {\n\t\tsuper(parent, controlContainer);\n\t\tif (isValueSet(datePickerLocale)) {\n\t\t\tdateAdapter.setLocale(datePickerLocale());\n\t\t}\n\t}\n\n\tngOnInit(): void {\n\t\tsuper.ngOnInit();\n\t\tif (this.multiple) {\n\t\t\tthis.placeholder = '';\n\t\t\tthis.showTimeInput = false;\n\t\t}\n\t}\n\n\tngAfterViewInit(): void {\n\t\tif (this.multiple) {\n\t\t\t// we are going to overwrite the datepicker closing fn later, so we are saving it here to restore it when needed\n\t\t\tthis.datePickingClosingFn = this.datePickerRef.close;\n\t\t}\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes.minDate) {\n\t\t\tthis.determineMinAndMaxDates();\n\t\t}\n\t\tif (changes.maxDate) {\n\t\t\tthis.determineMinAndMaxDates();\n\t\t}\n\t}\n\n\tsetMinDate(minDate: Date): void {\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): void {\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\tgetSelectedMonths(): number {\n\t\treturn removeDuplicatesFromArray(this.selectedDates.map((e) => formatDate(e, 'MMMM'))).length;\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): void {\n\t\tconst date = event.value;\n\t\tif (this.multiple) {\n\t\t\tthis.datePickerRef.close = () => {\n\t\t\t};\n\n\t\t\tif (this.selectedDates.some((e) => isSameDay(e, date))) {\n\t\t\t\tthis.selectedDates = this.selectedDates.filter((e) => !isSameDay(e, date));\n\t\t\t} else {\n\t\t\t\tthis.selectedDates = [...this.selectedDates, date];\n\t\t\t}\n\t\t\t// START HACK\n\t\t\t// the date picker does not provide any rerender calls. Therefore, we are going to change the minDate in order to force the render\n\t\t\t// This is needed to show all selected days in our date picker\n\t\t\t// We also set the innerValue to null (with this.valueForMaterialDatePicker = null;), otherwise you can not\n\t\t\t// deselect your last picked date\n\t\t\tthis.cdr.detectChanges();\n\t\t\tthis.valueForMaterialDatePicker = null;\n\t\t\tconst oldMinDate = this.minDateStartOfDay;\n\t\t\tthis.minDateStartOfDay = new Date(0);\n\t\t\tthis.cdr.detectChanges();\n\t\t\tthis.minDateStartOfDay = oldMinDate;\n\t\t\t// END HACK\n\n\t\t\tif (this.sameMonthOnly) {\n\t\t\t\tif (this.selectedDates.length >= 2) {\n\t\t\t\t\tif (date < startOfMonth(this.selectedDates[0]) || date > endOfMonth(this.selectedDates[0])) {\n\t\t\t\t\t\tthis.selectedDates = [date];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.determineMinAndMaxDates();\n\t\t\t}\n\n\t\t\tthis.setInnerValueAndNotify(this.selectedDates);\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.datePickerRef.close = this.datePickingClosingFn;\n\t\t\t});\n\t\t} else {\n\t\t\tthis.notifyNewDate();\n\t\t}\n\t}\n\n\tdetermineMinAndMaxDates(): void {\n\t\tif (this.sameMonthOnly) {\n\t\t\tif (this.selectedDates.length >= 2) {\n\t\t\t\tthis.setMinDate(startOfMonth(this.selectedDates[0]));\n\t\t\t\tthis.setMaxDate(endOfMonth(this.selectedDates[0]));\n\t\t\t} else {\n\t\t\t\tthis.setMinDate(this.minDate);\n\t\t\t\tthis.setMaxDate(this.maxDate);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.setMinDate(this.minDate);\n\t\t\tthis.setMaxDate(this.maxDate);\n\t\t}\n\t}\n\n\tnotifyNewDate(): void {\n\t\tconst nativeInputValue = this.nativeInputRef.nativeElement.value;\n\t\tconst parsedHours = Number(this.hours);\n\t\tconst parsedMinutes = Number(this.minutes);\n\n\t\t// if we dont have the time element\n\t\tif (!this.showTimeInput) {\n\t\t\tif (!stringIsSetAndFilled(nativeInputValue)) {\n\t\t\t\tthis.setInnerValueAndNotify(null);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.valueForMaterialDatePicker instanceof Date) {\n\t\t\t\tthis.setInnerValueAndNotify(this.valueForMaterialDatePicker);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t// when all inputs are empty\n\t\tif (!stringIsSetAndFilled(nativeInputValue) && !stringIsSetAndFilled(this.hours) && !stringIsSetAndFilled(this.minutes)) {\n\t\t\tthis.setInnerValueAndNotify(null);\n\t\t\treturn;\n\t\t}\n\t\t// if we have date and time\n\t\tif (\n\t\t\tstringIsSetAndFilled(this.hours) &&\n\t\t\tNumber.isFinite(parsedHours) &&\n\t\t\tparsedHours >= 0 &&\n\t\t\tparsedHours <= 23 &&\n\t\t\tstringIsSetAndFilled(this.minutes) &&\n\t\t\tNumber.isFinite(parsedMinutes) &&\n\t\t\tparsedMinutes >= 0 &&\n\t\t\tparsedMinutes <= 59 &&\n\t\t\tthis.valueForMaterialDatePicker instanceof Date\n\t\t) {\n\t\t\tconst newDateWithHours = new Date(this.valueForMaterialDatePicker.setHours(parsedHours));\n\t\t\tconst newDateWithMinutes = new Date(newDateWithHours.setMinutes(parsedMinutes));\n\t\t\tthis.setInnerValueAndNotify(newDateWithMinutes);\n\t\t\treturn;\n\t\t}\n\t\tif (this.invalidTimeAsMidnight) {\n\t\t\tif (this.valueForMaterialDatePicker instanceof Date) {\n\t\t\t\tthis.setInnerValueAndNotify(this.valueForMaterialDatePicker);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t// all other cases, we are not in a valid state\n\t\tthis.setInnerValueAndNotify(invalidDateKey);\n\t}\n\n\twriteValue(value: Date | Array<Date> | typeof invalidDateKey): void {\n\t\tsuper.writeValue(value);\n\t\tif (Array.isArray(value)) {\n\t\t\tthis.selectedDates = value;\n\t\t\tthis.determineMinAndMaxDates();\n\t\t\tthis.valueForMaterialDatePicker = null;\n\t\t\tif (arrayIsSetAndFilled(value)) {\n\t\t\t\tthis.openPickerOnDate = this.selectedDates[0];\n\t\t\t}\n\t\t} else {\n\t\t\tthis.valueForMaterialDatePicker = value === invalidDateKey ? null : value;\n\t\t\tif (value instanceof Date) {\n\t\t\t\tthis.hours = String(value.getHours());\n\t\t\t\tthis.minutes = String(value.getMinutes());\n\t\t\t\tthis.formatTime();\n\t\t\t\tthis.openPickerOnDate = value;\n\t\t\t} else {\n\t\t\t\tthis.hours = '';\n\t\t\t\tthis.minutes = '';\n\t\t\t\tthis.openPickerOnDate = null;\n\t\t\t\tthis.selectedDates = [];\n\t\t\t}\n\t\t}\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(): void {\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\t\tthis.notifyNewDate();\n\t}\n\n\tresetToNull(): void {\n\t\tthis.setInnerValueAndNotify(null);\n\t\tthis.valueForMaterialDatePicker = null;\n\t\tthis.nativeInputRef.nativeElement.value = null;\n\t\tthis.hours = '';\n\t\tthis.minutes = '';\n\t\tthis.selectedDates = [];\n\t}\n\n\tisSelected = (d: Date) => {\n\t\tif (this.multiple) {\n\t\t\treturn this.selectedDates.some((e) => isSameDay(e, d)) ? 'selected' : '';\n\t\t}\n\t\treturn '';\n\t};\n\tfilterDates: DateFilterFn<any> = (e) => {\n\t\tif (this.disabled) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t};\n\n\tformatTime(): void {\n\t\tif (Number.isFinite(Number(this.hours)) && this.hours.length === 1) {\n\t\t\tthis.hours = '0' + this.hours;\n\t\t}\n\t\tif (Number.isFinite(Number(this.minutes)) && this.minutes.length === 1) {\n\t\t\tthis.minutes = '0' + this.minutes;\n\t\t}\n\t}\n\n\ttouchDate(): void {\n\t\tthis.dateTouched = true;\n\t\tthis.determineAllTouched();\n\t}\n\n\ttouchHours(): void {\n\t\tthis.hoursTouched = true;\n\t\tthis.determineAllTouched();\n\t}\n\n\ttouchMinutes(): void {\n\t\tthis.minutesTouched = true;\n\t\tthis.determineAllTouched();\n\t}\n\n\tdetermineAllTouched(): void {\n\t\tif ((this.dateTouched && this.hoursTouched && this.minutesTouched) || (this.dateTouched && !this.showTimeInput)) {\n\t\t\tthis.touch();\n\t\t}\n\t}\n\n\n\tgetDefaultTranslation(key: string): (x: any) => string {\n\t\tswitch (key) {\n\t\t\tcase 'placeholder':\n\t\t\t\treturn () => 'Select date';\n\t\t\tcase 'selectDays':\n\t\t\t\treturn () => 'Select day(s)';\n\t\t\tcase 'selectedDate':\n\t\t\t\treturn (d: Date) => d.toLocaleDateString();\n\t\t\tcase 'daysSelected':\n\t\t\t\treturn (amount) => `${amount} days selected`;\n\t\t\tcase 'selectedInMonth':\n\t\t\t\treturn (d: Date) => ` in ${formatDate(d, 'MMMM')}`;\n\t\t}\n\t}\n\n\tgetTranslation(key: string, params: any = null): string {\n\t\tif (key === 'placeholder' && this.multiple) {\n\t\t\treturn '';\n\t\t}\n\t\tif (key === 'placeholder' && stringIsSetAndFilled(this.placeholder)) {\n\t\t\treturn this.placeholder;\n\t\t}\n\t\treturn this.translations?.[key]?.(params) ?? this.getDefaultTranslation(key)(params);\n\t}\n}\n","<div class=\"componentContainer\" [ngClass]=\"{showErrors: isInErrorState()}\">\n\t<div class=\"dateContainer\" [ngClass]=\"{noRightBorder: !showTimeInput && clearable && !disabled, disabled: disabled}\">\n\t\t<mat-form-field floatLabel=\"never\">\n\t\t\t<div *ngIf=\"multiple\" class=\"daysSelectedCaption\" (click)=\"picker.open()\" [ngClass]=\"{disabled: disabled}\">\n\t\t\t\t<ng-container *ngIf=\"selectedDates.length >= 2\">\n\t\t\t\t\t<span>{{getTranslation('daysSelected', selectedDates.length)}}</span>\n\t\t\t\t\t<span *ngIf=\"getSelectedMonths() === 1\">{{getTranslation('selectedInMonth', selectedDates[0])}}</span>\n\t\t\t\t</ng-container>\n\t\t\t\t<span *ngIf=\"selectedDates.length === 1\">{{getTranslation('selectedDate', selectedDates[0])}}</span>\n\t\t\t\t<span *ngIf=\"selectedDates.length === 0\" class=\"placeholderForMultipleSelection\">{{getTranslation('selectDays')}}</span>\n\t\t\t</div>\n\t\t\t<input\n\t\t\t\t#nativeInput\n\t\t\t\tmatInput\n\t\t\t\t[matDatepicker]=\"picker\"\n\t\t\t\t[matDatepickerFilter]=\"filterDates\"\n\t\t\t\t[(ngModel)]=\"valueForMaterialDatePicker\"\n\t\t\t\t(dateInput)=\"dateChanged($event)\"\n\t\t\t\t(input)=\"nativeValueChanged()\"\n\t\t\t\t[min]=\"minDateStartOfDay\"\n\t\t\t\t[max]=\"maxDateEndOfDay\"\n\t\t\t\t[placeholder]=\"getTranslation('placeholder')\"\n\t\t\t\t(click)=\"picker.open()\"\n\t\t\t\t(blur)=\"touchDate()\"\n\t\t\t\t[ngClass]=\"{inputForMultipleDays: multiple}\"\n\t\t\t>\n\t\t\t<mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n\t\t\t<mat-datepicker\n\t\t\t\t#picker\n\t\t\t\t[dateClass]=\"isSelected\"\n\t\t\t\t[startAt]=\"openPickerOnDate\"\n\t\t\t></mat-datepicker>\n\t\t</mat-form-field>\n\t</div>\n\t<div class=\"timeContainer\" *ngIf=\"showTimeInput\" [ngClass]=\"{disabled: disabled}\">\n\t\t<input maxlength=\"2\" placeholder=\"__\" [disabled]=\"disabled\" [(ngModel)]=\"hours\" (ngModelChange)=\"notifyNewDate()\" (blur)=\"formatTime(); touchHours()\">\n\t\t<div class=\"divider\">:</div>\n\t\t<input maxlength=\"2\" placeholder=\"__\" [disabled]=\"disabled\" [(ngModel)]=\"minutes\" (ngModelChange)=\"notifyNewDate()\" (blur)=\"formatTime(); touchMinutes()\">\n\t</div>\n\t<button *ngIf=\"clearable && !disabled\" class=\"clearButton\" (click)=\"resetToNull()\" [ngClass]=\"{withoutSpacing: !showTimeInput}\">×</button>\n</div>\n","import {Component, Host, Inject, InjectionToken, Input, Optional} from '@angular/core';\nimport {ControlContainer, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {format as dateFormat, parse} from 'date-fns';\nimport {MultipleValueAccessorBase} from '../value-accessor-base/multiple-value-accessor-base.component';\nimport {invalidDateKey} from '../../validators/dateValidator';\nimport {isNullOrUndefined, stringIsSetAndFilled} from '../../util/values';\nimport {FormElementComponent} from '../../form/form-element/form-element.component';\n\nexport const DATE_PICKER_TRANSLATIONS = new InjectionToken<any>('klp.form.date.translations');\n\n@Component({\n\tselector: 'klp-form-date-picker',\n\ttemplateUrl: './date-picker.component.html',\n\tstyleUrls: ['./date-picker.component.scss'],\n\tproviders: [{provide: NG_VALUE_ACCESSOR, useExisting: DatePickerComponent, multi: true}],\n})\nexport class DatePickerComponent extends MultipleValueAccessorBase<string | typeof invalidDateKey> {\n\t@Input() public minDate: Date = undefined;\n\t@Input() public maxDate: Date = undefined;\n\t@Input() public sameMonthOnly = false;\n\t@Input() public format = 'dd-MM-yyyy';\n\t@Input() public placeholder: string;\n\t@Input() public clearable = false;\n\n\tpublic dateValue: Date | Array<Date>;\n\n\tconstructor(\n\t\t@Host() @Optional() protected parent: FormElementComponent,\n\t\t@Host() @Optional() protected controlContainer: ControlContainer,\n\t\t@Inject(DATE_PICKER_TRANSLATIONS) @Optional() private translations: any,\n\t) {\n\t\tsuper(parent, controlContainer);\n\t}\n\n\twriteValue(value: string | Array<string> | typeof invalidDateKey): void {\n\t\tif (value === invalidDateKey) {\n\t\t\tsuper.writeValue(invalidDateKey);\n\t\t} else if (isNullOrUndefined(value)) {\n\t\t\tthis.dateValue = this.multiple ? [] : null;\n\t\t\tsuper.writeValue(this.multiple ? [] : null);\n\t\t} else {\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tthis.dateValue = value.map((e) => parse(e, 'yyyy-MM-dd', new Date()));\n\t\t\t} else {\n\t\t\t\tthis.dateValue = parse(value, 'yyyy-MM-dd', new Date());\n\t\t\t}\n\t\t\tsuper.writeValue(value);\n\t\t}\n\t}\n\n\tdateChanged(value: Date | Array<Date> | typeof invalidDateKey): void {\n\t\tif (value === invalidDateKey) {\n\t\t\tthis.setInnerValueAndNotify(invalidDateKey);\n\t\t} else if (isNullOrUndefined(value)) {\n\t\t\tthis.dateValue = this.multiple ? [] : null;\n\t\t\tthis.setInnerValueAndNotify(this.multiple ? [] : null);\n\t\t} else {\n\t\t\tthis.dateValue = value;\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tthis.setInnerValueAndNotify(value.map((e) => dateFormat(e, 'yyyy-MM-dd')));\n\t\t\t} else {\n\t\t\t\tthis.setInnerValueAndNotify(dateFormat(value, 'yyyy-MM-dd'));\n\t\t\t}\n\t\t}\n\t}\n\n\tgetDefaultTranslation(key: string): (x: any) => string {\n\t\tswitch (key) {\n\t\t\tcase 'placeholder':\n\t\t\t\treturn () => 'Select date';\n\t\t}\n\t}\n\n\tgetTranslation(key: string, params: any = null): string {\n\t\tif (key === 'placeholder' && this.multiple) {\n\t\t\treturn '';\n\t\t}\n\t\tif (key === 'placeholder' && stringIsSetAndFilled(this.placeholder)) {\n\t\t\treturn this.placeholder;\n\t\t}\n\t\treturn this.translations?.[key]?.(params) ?? this.getDefaultTranslation(key)(params);\n\t}\n}\n","<div class=\"componentContainer\" [ngClass]=\"{showErrors: isInErrorState()}\">\n\t<klp-form-date-time-picker\n\t\t[multiple]=\"multiple\"\n\t\t[disabled]=\"disabled\"\n\t\t[(ngModel)]=\"dateValue\"\n\t\t(ngModelChange)=\"dateChanged($event)\"\n\t\t[minDate]=\"minDate\"\n\t\t[maxDate]=\"maxDate\"\n\t\t[sameMonthOnly]=\"sameMonthOnly\"\n\t\t[format]=\"format\"\n\t\t[placeholder]=\"getTranslation('placeholder')\"\n\t\t[clearable]=\"clearable\"\n\t\t[showTimeInput]=\"false\"\n\t\t(onTouch)=\"touch()\"\n\t></klp-form-date-time-picker>\n</div>\n","// material.module.ts\n\nimport { NgModule } from '@angular/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatLegacyFormFieldModule as MatFormFieldModule } from '@angular/material/legacy-form-field';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatLegacyInputModule as MatInputModule } from '@angular/material/legacy-input';\nimport { MatLegacyButtonModule as MatButtonModule } from '@angular/material/legacy-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 {Component, ElementRef, Input, ViewChild} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {MultipleValueAccessorBase} from '../value-accessor-base/multiple-value-accessor-base.component';\nimport {isValueSet} from '../../util/values';\nimport { arrayIsSetAndFilled } from '../../util/arrays';\n\n@Component({\n\tselector: 'klp-form-file-input',\n\ttemplateUrl: './file-input.component.html',\n\tstyleUrls: ['./file-input.component.scss'],\n\tproviders: [{provide: NG_VALUE_ACCESSOR, useExisting: FileInputComponent, multi: true}],\n})\nexport class FileInputComponent extends MultipleValueAccessorBase<File> {\n\t@Input() isLoading = false;\n\t@Input() clearable = false;\n\t@Input() onlyShowUploadButton = false;\n\t@Input() useFullParentSize = false;\n\t@ViewChild('nativeInputRef') nativeInputRef: ElementRef<HTMLInputElement>;\n\n\tpublic onChange(files: FileList): void {\n\t\tconst result = [];\n\t\tfor (let i = 0; i < files.length; i++) {\n\t\t\tresult.push(files.item(i));\n\t\t}\n\t\tthis.setInnerValueAndNotify(result);\n\t\t// to make sure we can select the same file again\n\t\tthis.nativeInputRef.nativeElement.value = null;\n\t}\n\n\tpublic getFileNames(): string {\n\t\tif (Array.isArray(this.innerValue)) {\n\t\t\treturn this.innerValue.map(e => e.name).join(', ');\n\t\t} else if (this.innerValue instanceof File) {\n\t\t\treturn this.innerValue.name;\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic shouldShowClearButton(): boolean {\n\t\tif (this.onlyShowUploadButton) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this.multiple) {\n\t\t\tif (arrayIsSetAndFilled(this.innerValue)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\tif (isValueSet(this.innerValue)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic uploadFileClicked(): void {\n\t\tthis.nativeInputRef.nativeElement.click();\n\t}\n}\n","<div class=\"componentContainer\" [ngClass]=\"{fullParentSize: useFullParentSize}\">\n\t<div class=\"buttonContainer\">\n\t\t<input\n\t\t\ttype=\"file\"\n\t\t\t#nativeInputRef\n\t\t\t(change)=\"onChange($event.target.files)\"\n\t\t\t[multiple]=\"multiple\"\n\t\t\t[disabled]=\"disabled\"\n\t\t>\n\t\t<klp-form-button class=\"uploadButton\" [isLoading]=\"isLoading\" (click)=\"uploadFileClicked()\">\n\t\t\tUpload a file\n\t\t</klp-form-button>\n\t</div>\n\t<div class=\"fileName\" *ngIf=\"!onlyShowUploadButton\">\n\t\t{{getFileNames()}}\n\t</div>\n\t<klp-form-button class=\"clearButton\" variant=\"white\" *ngIf=\"shouldShowClearButton()\" (click)=\"resetToNull()\">X</klp-form-button>\n</div>\n","import {Component} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {arrayIsSetAndFilled, splitArrayByCondition} from '../../util/arrays';\nimport {ValueAccessorBase} from '../value-accessor-base/value-accessor-base.component';\n\n@Component({\n\tselector: 'klp-form-sortable-grouped-items',\n\ttemplateUrl: './sortable-grouped-items.component.html',\n\tstyleUrls: ['./sortable-grouped-items.component.scss'],\n\tproviders: [{provide: NG_VALUE_ACCESSOR, useExisting: SortableGroupedItemsComponent, multi: true}],\n})\nexport class SortableGroupedItemsComponent<T> extends ValueAccessorBase<Array<Array<T>>> {\n\tpublic items: Array<T | string>;\n\treloader = true; // sortable items doesnt correctly update, so we have this boolean that flips to rerender the sortable items comp\n\n\twriteValue(value: Array<Array<T>>): void {\n\t\tsuper.writeValue(value);\n\t\tthis.reloader = false;\n\t\tsetTimeout(() => {\n\t\t\tif (arrayIsSetAndFilled(value)) {\n\t\t\t\tthis.items = value.flatMap(e => [...e, '']);\n\t\t\t} else {\n\t\t\t\tthis.items = [];\n\t\t\t}\n\t\t\tthis.reloader = true;\n\t\t});\n\t}\n\n\tpublic onItemsRearranged(value: Array<T | string>): void {\n\t\tconst result: Array<Array<T>> = splitArrayByCondition(value, e => e === '').filter(arrayIsSetAndFilled) as any;\n\t\tthis.setInnerValueAndNotify(result);\n\t\tthis.reloader = false;\n\t\tsetTimeout(() => {\n\t\t\tthis.items = [...this.items, ''].filter((e, i) => {\n\t\t\t\tif (i === 0 && e === '') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (e === '' && this.items[i - 1] === '') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t});\n\t\t\tthis.reloader = true;\n\t\t});\n\t}\n}\n","<ng-container *ngIf=\"reloader\">\n\t<klp-form-sortable-items\n\t\t[(ngModel)]=\"items\"\n\t\t(ngModelChange)=\"onItemsRearranged($event)\"\n\t>\n\t\t<ng-template let-item=\"item\">\n\t\t\t<div>{{item}}</div>\n\t\t</ng-template>\n\t</klp-form-sortable-items>\n</ng-container>\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport const invalidTimeKey = '--invalid_time--';\n\nexport function timeValidator(control: AbstractControl): ValidationErrors | null {\n\tconst invalid = control.value === invalidTimeKey;\n\treturn invalid ? { date: control.value } : null;\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';\nimport {stringIsSetAndFilled} from '../../util/values';\nimport {invalidTimeKey} from '../../validators/timeValidator';\n\n\n@Component({\n\tselector: 'klp-form-hour-minute-input',\n\ttemplateUrl: './hour-minute-input.component.html',\n\tstyleUrls: ['./hour-minute-input.component.scss'],\n\tproviders: [{provide: NG_VALUE_ACCESSOR, useExisting: HourMinuteInputComponent, multi: true}],\n})\nexport class HourMinuteInputComponent extends ValueAccessorBase<number | typeof invalidTimeKey> {\n\tpublic hours: string; // string because it's a text input\n\tpublic minutes: string; // string because it's a text input\n\n\t@Input() placeholders: Array<string> = ['hour', 'min'];\n\n\tprivate hoursTouched = false;\n\tprivate minutesTouched = false;\n\n\tformatHours(): void {\n\t\tif (!stringIsSetAndFilled(this.hours)) {\n\t\t\tthis.hours = '0';\n\t\t}\n\t}\n\n\tformatMinutes(): void {\n\t\tif (!stringIsSetAndFilled(this.minutes)) {\n\t\t\tthis.minutes = '0';\n\t\t}\n\t}\n\n\tformatTime(): void {\n\t\tif (Number.isFinite(Number(this.hours)) && this.hours.length === 1) {\n\t\t\tthis.hours = '0' + this.hours;\n\t\t}\n\t\tif (Number.isFinite(Number(this.minutes)) && this.minutes.length === 1) {\n\t\t\tthis.minutes = '0' + this.minutes;\n\t\t}\n\t}\n\n\twriteValue(value: number | typeof invalidTimeKey): void {\n\t\tif (Number.isFinite(value)) {\n\t\t\tthis.hours = Math.floor(value as number / 60) + '';\n\t\t\tthis.minutes = value as number % 60 + '';\n\t\t\tthis.formatTime();\n\t\t\tsuper.writeValue(value);\n\t\t} else {\n\t\t\tthis.hours = '';\n\t\t\tthis.minutes = '';\n\t\t\tsuper.writeValue(invalidTimeKey);\n\t\t}\n\t}\n\n\tnotifyNewTime(): void {\n\t\tconst parsedHours = Number(this.hours);\n\t\tconst parsedMinutes = Number(this.minutes);\n\n\t\t// when all inputs are empty\n\t\tif (!stringIsSetAndFilled(this.hours) && !stringIsSetAndFilled(this.minutes)) {\n\t\t\tthis.setInnerValueAndNotify(null);\n\t\t\treturn;\n\t\t}\n\t\t// if we have valid time\n\t\tif (\n\t\t\tNumber.isFinite(parsedHours) &&\n\t\t\tparsedHours >= 0 &&\n\t\t\tparsedHours <= 9999 &&\n\t\t\tNumber.isFinite(parsedMinutes) &&\n\t\t\tparsedMinutes >= 0 &&\n\t\t\tparsedMinutes <= 59\n\t\t) {\n\t\t\tthis.setInnerValueAndNotify(parsedHours * 60 + parsedMinutes);\n\t\t\treturn;\n\t\t}\n\t\t// all other cases, we are not in a valid state\n\t\tthis.setInnerValueAndNotify(invalidTimeKey);\n\t}\n\n\ttouchHours(): void {\n\t\tthis.hoursTouched = true;\n\t\tthis.determineAllTouched();\n\t}\n\n\ttouchMinutes(): void {\n\t\tthis.minutesTouched = true;\n\t\tthis.determineAllTouched();\n\t}\n\n\tdetermineAllTouched(): void {\n\t\tif (this.hoursTouched && this.minutesTouched) {\n\t\t\tthis.touch();\n\t\t}\n\t}\n}\n","<div class=\"componentContainer\" [ngClass]=\"{disabled: disabled}\">\n\t<input class=\"hourInput\" maxlength=\"4\" [placeholder]=\"placeholders[0]\" [disabled]=\"disabled\" [(ngModel)]=\"hours\" (blur)=\"formatHours(); formatTime(); touchHours(); notifyNewTime()\" (ngModelChange)=\"notifyNewTime()\" #nativeInputRef>\n\t<div class=\"divider\">:</div>\n\t<input maxlength=\"2\" [placeholder]=\"placeholders[1]\" [disabled]=\"disabled\" [(ngModel)]=\"minutes\" (blur)=\"formatMinutes(); formatTime(); touchMinutes(); notifyNewTime()\" (ngModelChange)=\"notifyNewTime()\">\n</div>\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\nexport enum Orientation {\n\tCOLUMN = 'column',\n\tROW = 'row'\n}\nexport type RadioOptions = Array<RadioOption>;\nexport type RadioOption = {\n\tid: any;\n\tname: string;\n};\n\n\n@Component({\n\tselector: 'klp-form-radio',\n\ttemplateUrl: './radio.component.html',\n\tstyleUrls: ['./radio.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: RadioComponent, multi: true }],\n})\nexport class RadioComponent extends ValueAccessorBase<string>{\n\t@Input() options: RadioOptions;\n\t@Input() orientation: Orientation = Orientation.ROW;\n\t@Input() variant: 'classic' | 'button' = 'classic';\n\tpublic Orientation = Orientation;\n}\n\n","<div class=\"componentContainer\" [ngClass]=\"{'verticallyOriented': orientation === Orientation.COLUMN, 'horizontallyOriented': orientation === Orientation.ROW}\">\n\t<ng-container *ngFor=\"let option of options\">\n\t\t<button class=\"optionContainer\"\n\t\t\t[ngClass]=\"{classic: variant === 'classic', button: variant === 'button', isSelected: innerValue === option.id}\"\n\t\t\t(click)=\"setInnerValueAndNotify(option.id)\"\n\t\t>\n\t\t\t<div class=\"selectedRadioBtnContainer\" *ngIf=\"variant === 'classic'\">\n\t\t\t\t<div class=\"selected\" *ngIf=\"innerValue === option.id\"></div>\n\t\t\t</div>\n\t\t\t<div>{{option.name}}</div>\n\t\t</button>\n\t</ng-container>\n</div>\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 {KlpSelectOptionTemplateDirective, SelectComponent} from './elements/select/select.component';\nimport {SelectFooterComponent} from './elements/select/select-footer/select-footer.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, SubFormDirective} from './form/form.component';\nimport { SortablejsModule } from '@dustfoundation/ngx-sortablejs';\nimport {NgSelectModule} from '@ng-select/ng-select';\nimport {DatePickerComponent} from './elements/date-picker/date-picker.component';\nimport {DateTimePickerComponent} from './elements/date-time-picker/date-time-picker.component';\nimport {MaterialModule} from './material.module';\nimport {MultipleValueAccessorBase} from './elements/value-accessor-base/multiple-value-accessor-base.component';\nimport {FileInputComponent} from './elements/file-input/file-input.component';\nimport {SortableGroupedItemsComponent} from './elements/sortable-grouped-items/sortable-grouped-items.component';\nimport {HourMinuteInputComponent} from './elements/hour-minute-input/hour-minute-input.component';\nimport {RadioComponent} from './elements/radio/radio.component';\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\tMultipleValueAccessorBase,\n\t\tButtonComponent,\n\t\tCheckboxComponent,\n\t\tDatePickerComponent,\n\t\tDateTimePickerComponent,\n\t\tEmailInputComponent,\n\t\tLoadingIndicatorComponent,\n\t\tNumberInputComponent,\n\t\tPasswordFieldComponent,\n\t\tSelectComponent,\n\t\tKlpSelectOptionTemplateDirective,\n\t\tSelectFooterComponent,\n\t\tSortableItemsComponent,\n\t\tSortableGroupedItemsComponent,\n\t\tTextInputComponent,\n\t\tToggleComponent,\n\t\tFileInputComponent,\n\t\tFormCaptionComponent,\n\t\tFormElementComponent,\n\t\tFormErrorComponent,\n\t\tFormSubmitButtonComponent,\n\t\tFormComponent,\n\t\tSubFormDirective,\n\t\tHourMinuteInputComponent,\n\t\tRadioComponent,\n\t],\n\texports: [\n\t\tValueAccessorBase,\n\t\tMultipleValueAccessorBase,\n\t\tButtonComponent,\n\t\tDatePickerComponent,\n\t\tDateTimePickerComponent,\n\t\tCheckboxComponent,\n\t\tEmailInputComponent,\n\t\tLoadingIndicatorComponent,\n\t\tNumberInputComponent,\n\t\tPasswordFieldComponent,\n\t\tSelectComponent,\n\t\tKlpSelectOptionTemplateDirective,\n\t\tSelectFooterComponent,\n\t\tSortableItemsComponent,\n\t\tSortableGroupedItemsComponent,\n\t\tTextInputComponent,\n\t\tToggleComponent,\n\t\tFileInputComponent,\n\t\tFormCaptionComponent,\n\t\tFormElementComponent,\n\t\tFormErrorComponent,\n\t\tFormSubmitButtonComponent,\n\t\tFormComponent,\n\t\tSubFormDirective,\n\t\tHourMinuteInputComponent,\n\t\tRadioComponent,\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/radio/radio.component';\nexport * from './lib/elements/date-picker/date-picker.component';\nexport * from './lib/elements/date-time-picker/date-time-picker.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-footer/select-footer.component';\nexport * from './lib/elements/select/select.component';\nexport * from './lib/elements/sortable-items/sortable-items.component';\nexport * from './lib/elements/sortable-grouped-items/sortable-grouped-items.component';\nexport * from './lib/elements/text-input/text-input.component';\nexport * from './lib/elements/toggle/toggle.component';\nexport * from './lib/elements/file-input/file-input.component';\nexport * from './lib/elements/hour-minute-input/hour-minute-input.component';\nexport * from './lib/elements/value-accessor-base/value-accessor-base.component';\nexport * from './lib/elements/value-accessor-base/multiple-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"],"names":["i1","i2","i1.FormElementComponent","i2.LoadingIndicatorComponent","i3","i1.FormComponent","i3.ButtonComponent","formatDate","i4","dateFormat","i4.DateTimePickerComponent","MatFormFieldModule","MatInputModule","MatButtonModule","i2.ButtonComponent","i3.SortableItemsComponent"],"mappings":"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"}
1
+ {"version":3,"file":"klippa-ngx-enhancy-forms.mjs","sources":["../../../../projects/klippa/ngx-enhancy-forms/src/lib/util/values.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/util/arrays.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/util/objects.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-element/form-element.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-element/form-element.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/value-accessor-base/value-accessor-base.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/loading-indicator/loading-indicator.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/loading-indicator/loading-indicator.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/button/button.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/button/button.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/checkbox/checkbox.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/checkbox/checkbox.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/email/email-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/email/email-input.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/number-input/number-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/number-input/number-input.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/password-field/password-field.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/password-field/password-field.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/select/select.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/select/select.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/select/select-footer/select-footer.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/select/select-footer/select-footer.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/sortable-items/sortable-items.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/sortable-items/sortable-items.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/text-input/text-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/text-input/text-input.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/toggle/toggle.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/toggle/toggle.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-caption/form-caption.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-caption/form-caption.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-error/form-error.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-error/form-error.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-submit-button/form-submit-button.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-submit-button/form-submit-button.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/value-accessor-base/multiple-value-accessor-base.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/validators/dateValidator.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/date-time-picker/date-time-picker.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/date-time-picker/date-time-picker.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/date-picker/date-picker.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/date-picker/date-picker.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/material.module.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/file-input/file-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/file-input/file-input.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/sortable-grouped-items/sortable-grouped-items.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/sortable-grouped-items/sortable-grouped-items.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/validators/timeValidator.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/hour-minute-input/hour-minute-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/hour-minute-input/hour-minute-input.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/radio/radio.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/radio/radio.component.html","../../../../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 { isString } from 'lodash-es';\n\nexport function stringIsSetAndFilled(s: string): boolean {\n\treturn isString(s) && s.length > 0;\n}\n\nexport function isNullOrUndefined(value: any): boolean {\n\treturn value === null || value === undefined;\n}\n\nexport function numberIsSet(value: any): boolean {\n\treturn isValueSet(value) && typeof value === 'number';\n}\n\nexport function isValueSet(value: any): boolean {\n\treturn value !== null && value !== undefined;\n}\n\nexport function stringOrArrayIsSetAndEmpty(value: any[] | string): boolean {\n\treturn value !== null && value !== undefined && value.length === 0;\n}\n\nexport function truncateString(s: string, length: number): string {\n\tif (s.length < length) {\n\t\treturn s;\n\t}\n\treturn s.substring(0, length) + '...';\n}\n\n","import { isArray } from 'lodash-es';\nimport { isValueSet } from './values';\n\nexport function removeDuplicatesFromArraysWithComparator(comparator: (e1: any, e2: any) => boolean, ...arrays: any[]): any {\n\tlet combined = [];\n\n\tfor (const array of arrays) {\n\t\tcombined = combined.concat(array);\n\t}\n\n\treturn combined.filter((c, i) => {\n\t\tconst firstOccurrenceIndex = combined.findIndex((c2) => comparator(c, c2));\n\t\treturn i === firstOccurrenceIndex;\n\t});\n}\n\nexport function removeDuplicatesFromArray<T>(array: Array<T>): Array<T> {\n\treturn array.filter((c, i) => {\n\t\tconst firstOccurrenceIndex = array.findIndex((c2) => c2 === c);\n\t\treturn i === firstOccurrenceIndex;\n\t});\n}\n\nexport function insertAtIndex(arr, index, item): void {\n\tarr.splice(index, 0, item);\n}\n\nexport function arrayIsSetAndFilled(arr: any): boolean {\n\treturn isArray(arr) && arr !== null && arr !== undefined && arr.length > 0;\n}\n\nexport function asArray(value: any): Array<any> {\n\tif (isValueSet(value)) {\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value;\n\t\t}\n\t\treturn [value];\n\t}\n\treturn [];\n}\n\nexport function splitArrayByCondition<T>(value: Array<T>, condition: (current: T) => boolean): Array<Array<T>> {\n\treturn value.reduce((acc, cur) => {\n\t\tif (condition(cur)) {\n\t\t\tacc.push([]);\n\t\t} else {\n\t\t\tacc[acc.length - 1].push(cur);\n\t\t}\n\t\treturn acc;\n\t}, [[]]);\n}\n","function mergeArray(arrA: Array<any>, arrB: Array<any>): Array<any> {\n\tconst arr = new Array(Math.max(arrA.length, arrB.length));\n\n\tfor (let i = 0; i < arr.length; i++) {\n\t\tif (typeof arrA[i] === 'object' && typeof arrB[i] === 'object') {\n\t\t\tarr[i] = deepMerge(arrA[i], arrB[i]);\n\t\t} else {\n\t\t\tarr[i] = arrB[i] ?? arrA[i];\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nexport function deepMerge<\n\tA extends object | Array<any>,\n\tB extends object | Array<any>\n>(objA: A, objB: B): A | B {\n\tif (Array.isArray(objA) || Array.isArray(objB)) {\n\t\tif (Array.isArray(objA) && Array.isArray(objB)) {\n\t\t\treturn mergeArray(objA, objB) as A | B;\n\t\t}\n\n\t\t// if a and b differ in type, prefer b.\n\t\treturn objB ?? objA;\n\t}\n\n\tconst merged: A | B = {} as A | B;\n\n\tconst keys = new Set<keyof A | keyof B>([\n\t\t...Object.keys(objA),\n\t\t...Object.keys(objB),\n\t] as Array<keyof A | keyof B>);\n\n\tkeys.forEach((key) => {\n\t\tconst a = objA[key as keyof A];\n\t\tconst b = objB[key as keyof B];\n\n\t\tif (typeof a === 'object' && typeof b === 'object') {\n\t\t\tmerged[key as keyof (A | B)] = deepMerge(a as any, b as any) as any;\n\t\t\treturn;\n\t\t}\n\n\t\t// if a and b differ in type, prefer b.\n\t\tmerged[key as keyof (A | B)] = (b ?? a) as any;\n\t});\n\n\treturn merged;\n}\n","import {Component, Directive, Input, OnChanges, OnDestroy, OnInit, Optional, SimpleChanges, SkipSelf} from '@angular/core';\nimport {AbstractControl, FormArray, FormControl, FormGroup, UntypedFormArray, UntypedFormControl, UntypedFormGroup} from '@angular/forms';\nimport {FormElementComponent} from './form-element/form-element.component';\nimport {isValueSet} from '../util/values';\nimport { deepMerge } from '../util/objects';\n\nexport const invalidFieldsSymbol = Symbol('Not all fields are valid');\n\n@Directive({\n\t// tslint:disable-next-line:directive-selector\n\tselector: 'klp-sub-form',\n})\nexport class SubFormDirective {\n\t@Input() injectInto: UntypedFormArray | UntypedFormGroup;\n\t@Input() at: number | string;\n}\n\n@Component({\n\tselector: 'klp-form',\n\ttemplateUrl: './form.component.html',\n\tstyleUrls: ['./form.component.scss'],\n})\nexport class FormComponent implements OnInit, OnDestroy, OnChanges {\n\t@Input() public readOnly = false;\n\t@Input() public showErrorMessages = true;\n\t@Input() public errorMessageLocation: 'belowCaption' | 'rightOfCaption' = 'belowCaption';\n\t@Input() public formGroup: UntypedFormGroup;\n\t@Input() public patchValueInterceptor: (values: any) => Promise<any>;\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: UntypedFormControl;\n\t\tformElement: FormElementComponent;\n\t}> = [];\n\n\tconstructor(@SkipSelf() @Optional() private parent: FormComponent, @Optional() private subFormPlaceholder: SubFormDirective) {\n\t}\n\n\tngOnInit(): void {\n\t\tif (isValueSet(this.parent) && isValueSet(this.subFormPlaceholder)) {\n\t\t\tconst injectInto = this.subFormPlaceholder.injectInto;\n\t\t\tconst injectAt = this.subFormPlaceholder.at;\n\t\t\tif (injectInto instanceof UntypedFormArray) {\n\t\t\t\tif (typeof injectAt !== 'number') {\n\t\t\t\t\tthrow new Error(`cannot index FormArray with ${typeof injectAt}`);\n\t\t\t\t}\n\t\t\t\tif (injectInto.at(injectAt)?.disabled) {\n\t\t\t\t\tthis.formGroup.disable();\n\t\t\t\t}\n\t\t\t\tconst valueBeforeInject = injectInto.at(injectAt)?.value;\n\t\t\t\tinjectInto.setControl(injectAt, this.formGroup);\n\t\t\t\tif (isValueSet(valueBeforeInject)) {\n\t\t\t\t\tthis.formGroup.patchValue(valueBeforeInject);\n\t\t\t\t}\n\t\t\t} else if (injectInto instanceof UntypedFormGroup) {\n\t\t\t\tif (typeof injectAt !== 'string') {\n\t\t\t\t\tthrow new Error(`cannot index FormGroup with ${typeof injectAt}`);\n\t\t\t\t}\n\t\t\t\tif (injectInto.get(injectAt)?.disabled) {\n\t\t\t\t\tthis.formGroup.disable();\n\t\t\t\t}\n\t\t\t\tconst valueBeforeInject = injectInto.get(injectAt)?.value;\n\t\t\t\tinjectInto.setControl(injectAt, this.formGroup);\n\t\t\t\tif (isValueSet(valueBeforeInject)) {\n\t\t\t\t\tthis.formGroup.patchValue(valueBeforeInject);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (isValueSet(this.patchValueInterceptor)) {\n\t\t\tthis.addSupportForPatchValueInterceptor();\n\t\t}\n\t}\n\n\tngOnChanges(simpleChanges: SimpleChanges): void {\n\t\tif (simpleChanges.readOnly?.currentValue === true) {\n\t\t\tthis.activeControls.forEach(e => e.formControl.disable());\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\tif (isValueSet(this.parent) && isValueSet(this.subFormPlaceholder)) {\n\t\t\tconst injectInto = this.subFormPlaceholder.injectInto;\n\t\t\tconst injectAt = this.subFormPlaceholder.at;\n\t\t\tif (injectInto instanceof UntypedFormArray) {\n\t\t\t\tconst idx = injectInto.controls.findIndex(e => e === this.formGroup);\n\t\t\t\tinjectInto.removeAt(idx);\n\t\t\t} else if (injectInto instanceof UntypedFormGroup) {\n\t\t\t\tif (typeof injectAt !== 'string') {\n\t\t\t\t\tthrow new Error(`cannot index FormGroup with ${typeof injectAt}`);\n\t\t\t\t}\n\t\t\t\tinjectInto.removeControl(injectAt);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate addSupportForPatchValueInterceptor(): void {\n\t\tconst fn = this.formGroup.patchValue;\n\t\tconst newFn = (\n\t\t\tvalue: {\n\t\t\t\t[key: string]: any;\n\t\t\t},\n\t\t\toptions?: {\n\t\t\t\tonlySelf?: boolean;\n\t\t\t\temitEvent?: boolean;\n\t\t\t}\n\t\t): void => {\n\t\t\tthis.patchValueInterceptor(value).then((val) => {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tfn.call(this.formGroup, val, options);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t\tthis.formGroup.patchValue = newFn;\n\t}\n\n\tpublic registerControl(formControl: UntypedFormControl, formElement: FormElementComponent): void {\n\t\tthis.activeControls.push({formControl, formElement});\n\t\tif (this.parent) {\n\t\t\tthis.parent.registerControl(formControl, formElement);\n\t\t}\n\t\tif (this.readOnly) {\n\t\t\tformControl.disable();\n\t\t}\n\t}\n\n\tpublic unregisterControl(formControl: UntypedFormControl): void {\n\t\tthis.activeControls = this.activeControls.filter((e) => e.formControl !== formControl);\n\t\tif (this.parent) {\n\t\t\tthis.parent.unregisterControl(formControl);\n\t\t}\n\t}\n\n\tprivate addFormGroupControls(formGroup: UntypedFormGroup, result: Array<UntypedFormControl>): void {\n\t\tObject.values(formGroup.controls).forEach((value) => {\n\t\t\tif (value instanceof UntypedFormGroup) {\n\t\t\t\tthis.addFormGroupControls(value, result);\n\t\t\t} else if (value instanceof UntypedFormArray) {\n\t\t\t\tthis.addFormArrayControls(value, result);\n\t\t\t} else if (value instanceof UntypedFormControl) {\n\t\t\t\tthis.addFormControl(value, result);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate addFormArrayControls(formArray: UntypedFormArray, result: Array<UntypedFormControl>): void {\n\t\tformArray.controls.forEach((value) => {\n\t\t\tif (value instanceof UntypedFormGroup) {\n\t\t\t\tthis.addFormGroupControls(value, result);\n\t\t\t} else if (value instanceof UntypedFormArray) {\n\t\t\t\tthis.addFormArrayControls(value, result);\n\t\t\t} else if (value instanceof UntypedFormControl) {\n\t\t\t\tthis.addFormControl(value, result);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate getAllFormControls(): Array<UntypedFormControl> {\n\t\tconst result = [];\n\t\tthis.addFormGroupControls(this.formGroup, result);\n\t\treturn result;\n\t}\n\n\tprivate addFormControl(control: UntypedFormControl, result: Array<UntypedFormControl>): void {\n\t\tresult.push(control);\n\t}\n\n\tprivate disableInactiveFormControl(control: UntypedFormControl): void {\n\t\tif (!this.activeControls.some((e) => e.formControl === control)) {\n\t\t\tcontrol.disable();\n\t\t}\n\t}\n\n\ttrySubmit(): Promise<any> {\n\t\tthis.formGroup.markAllAsTouched();\n\t\tconst allControls: Array<UntypedFormControl> = this.getAllFormControls();\n\t\tconst originalDisabledStates = allControls.map(e => {\n\t\t\treturn {control: e, disabled: e.disabled};\n\t\t});\n\t\tallControls.forEach(e => this.disableInactiveFormControl(e));\n\t\tallControls.forEach(e => e.updateValueAndValidity());\n\t\tconst formGroupValue = this.formGroup.value;\n\t\tconst renderedAndEnabledValues = this.getRenderedFieldValuesFormGroup(this.formGroup, true);\n\t\tconst renderedButDisabledValues = this.getRenderedFieldValuesFormGroup(this.formGroup, false);\n\t\tif (this.formGroup.invalid) {\n\t\t\tthis.activeControls.find((e) => !e.formControl.valid)?.formElement?.scrollTo();\n\t\t\tthis.setDisabledStatesForAllControls(originalDisabledStates);\n\t\t\treturn Promise.reject(invalidFieldsSymbol);\n\t\t} else {\n\t\t\tthis.setDisabledStatesForAllControls(originalDisabledStates);\n\t\t\tconst renderedValues = deepMerge(renderedAndEnabledValues, renderedButDisabledValues);\n\t\t\treturn Promise.resolve([formGroupValue, renderedValues]);\n\t\t}\n\t}\n\n\tprivate getRenderedFieldValuesFormGroup(formGroup: FormGroup, enabled: boolean, valueObject = {}): object {\n\t\tObject.entries(formGroup.controls).forEach(([name, control]) => {\n\t\t\tif (control instanceof FormControl && control.enabled === enabled && this.activeControls.some(e => e.formControl === control)) {\n\t\t\t\tvalueObject[name] = control.value;\n\t\t\t} else if (control instanceof FormArray) {\n\t\t\t\tvalueObject[name] = [];\n\t\t\t\tthis.getRenderedFieldValuesFormArray(control, enabled, valueObject[name]);\n\t\t\t} else if (control instanceof FormGroup) {\n\t\t\t\tvalueObject[name] = {};\n\t\t\t\tthis.getRenderedFieldValuesFormGroup(control, enabled, valueObject[name]);\n\t\t\t}\n\t\t});\n\t\treturn valueObject;\n\t}\n\n\tprivate getRenderedFieldValuesFormArray(formArray: FormArray, enabled: boolean, valueArray: Array<any>): void {\n\t\tformArray.controls.forEach((control: AbstractControl) => {\n\t\t\tif (control instanceof FormControl && control.enabled === enabled && this.activeControls.some(e => e.formControl === control)) {\n\t\t\t\tvalueArray.push(control.value);\n\t\t\t} else if (control instanceof FormArray) {\n\t\t\t\tconst newArray = [];\n\t\t\t\tvalueArray.push(newArray);\n\t\t\t\tthis.getRenderedFieldValuesFormArray(control, enabled, newArray);\n\t\t\t} else if (control instanceof FormGroup) {\n\t\t\t\tconst newObject = {};\n\t\t\t\tvalueArray.push(newObject);\n\t\t\t\tthis.getRenderedFieldValuesFormGroup(control, enabled, newObject);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate setDisabledStatesForAllControls(originalDisabledStates: Array<{ control: AbstractControl; disabled: boolean }>): void {\n\t\toriginalDisabledStates.forEach((e) => {\n\t\t\tif (e.disabled) {\n\t\t\t\te.control.disable();\n\t\t\t} else {\n\t\t\t\te.control.enable();\n\t\t\t}\n\t\t});\n\t}\n}\n","<form>\n\t<ng-content></ng-content>\n</form>\n\n\n","import {Component, Directive, ElementRef, Host, Inject, InjectionToken, Input, OnInit, Optional, ViewChild} from '@angular/core';\nimport {AbstractControl, FormArray, UntypedFormControl, FormGroup} from '@angular/forms';\nimport {FormComponent} from '../form.component';\nimport {CustomErrorMessages, FormErrorMessages} from '../../types';\nimport { ValueAccessorBase } from '../../elements/value-accessor-base/value-accessor-base.component';\nimport { isValueSet } from '../../util/values';\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 spaceDistribution: '40-60' | '34-66' | '30-70' = '40-60';\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\tprivate input: ValueAccessorBase<any>;\n\n\tconstructor(\n\t\t @Optional() private parent: FormComponent,\n\t\t@Inject(FORM_ERROR_MESSAGES) @Optional() private customMessages: CustomErrorMessages,\n\t) {}\n\n\tpublic shouldShowErrorMessages(): boolean {\n\t\treturn this.parent?.showErrorMessages !== false;\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: UntypedFormControl, input: ValueAccessorBase<any> = null): void {\n\t\tthis.attachedControl = formControl;\n\t\tthis.parent.registerControl(formControl, this);\n\t\tthis.input = input;\n\t}\n\n\tpublic unregisterControl(formControl: UntypedFormControl): void {\n\t\tthis.attachedControl = null;\n\t\tthis.parent.unregisterControl(formControl);\n\t}\n\n\tpublic getAttachedControl(): AbstractControl {\n\t\treturn this.attachedControl;\n\t}\n\n\tpublic registerErrorHandler(error: string, templateRef: ElementRef): void {\n\t\tthis.customErrorHandlers.push({error, templateRef});\n\t}\n\n\tpublic registerCaption(templateRef: ElementRef): void {\n\t\tthis.captionRef = templateRef;\n\t}\n\n\tgetErrorToShow(): string {\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): { error: string; templateRef: ElementRef } {\n\t\treturn this.customErrorHandlers.find((e) => e.error === error);\n\t}\n\n\tshowDefaultError(error: string): boolean {\n\t\treturn this.getErrorToShow() === error && !this.customErrorHandlers.some((e) => e.error === error);\n\t}\n\n\tgetScrollableParent(node): any {\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(): void{\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\tisRequired(): boolean {\n\t\tif (isValueSet(this.input)) {\n\t\t\treturn this.input.hasValidator('required');\n\t\t}\n\t\treturn false;\n\t}\n\n\tgetErrorMessage(key: keyof FormErrorMessages): string {\n\t\treturn this.customMessages?.[key]?.() ?? this.errorMessages[key];\n\t}\n\n\tpublic getErrorLocation(): 'belowCaption' | 'rightOfCaption' {\n\t\treturn this.parent?.errorMessageLocation ?? 'belowCaption';\n\t}\n}\n","<ng-template #errorRef>\n\t<div *ngIf=\"shouldShowErrorMessages() && getErrorToShow()\" class=\"errorContainer\" [ngClass]=\"{hasCaption: caption || captionRef, 'd30-70': spaceDistribution === '30-70', 'd34-66': spaceDistribution === '34-66'}\">\n\t\t<div *ngIf=\"showDefaultError('min')\">{{substituteParameters(getErrorMessage(\"min\"), {min: attachedControl.errors.min.min})}}</div>\n\t\t<div *ngIf=\"showDefaultError('max')\">{{substituteParameters(getErrorMessage(\"max\"), {max: attachedControl.errors.max.max})}}</div>\n\t\t<div *ngIf=\"showDefaultError('required')\">{{getErrorMessage(\"required\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('email')\">{{getErrorMessage(\"email\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('minlength')\">{{substituteParameters(getErrorMessage(\"minLength\"), {minLength: attachedControl.errors.minlength.requiredLength})}}</div>\n\t\t<div *ngIf=\"showDefaultError('maxlength')\">{{substituteParameters(getErrorMessage(\"maxLength\"), {maxLength: attachedControl.errors.maxlength.requiredLength})}}</div>\n\t\t<div *ngIf=\"showDefaultError('pattern')\">{{getErrorMessage(\"pattern\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('MatchPassword')\">{{getErrorMessage(\"matchPassword\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('date')\">{{getErrorMessage(\"date\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('message')\">{{attachedControl.errors.message.value}}</div>\n\t\t<div [ngTemplateOutlet]=\"getCustomErrorHandler(getErrorToShow())?.templateRef\"></div>\n\t</div>\n</ng-template>\n\n<ng-container *ngIf=\"direction === 'horizontal'\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\n<div class=\"componentContainer\" [ngClass]=\"{hasCaption: caption || captionRef, vertical: direction === 'vertical', reverseOrder: swapInputAndCaption}\" #internalComponentRef>\n\t<div class=\"caption\" *ngIf=\"caption || captionRef\"\n\t\t[ngClass]=\"{\n\t\t\thasErrors: getErrorToShow() && attachedControl.touched,\n\t\t\tpercentageSpacing: captionSpacing === 'percentages',\n\t\t\t'd30-70': spaceDistribution === '30-70',\n\t\t\t'd34-66': spaceDistribution === '34-66',\n\t\t\twithErrorRightOfCaption: getErrorLocation() === 'rightOfCaption'\n\t\t}\"\n\t>\n\t\t<div *ngIf=\"captionRef\" class=\"captionRefContainer\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"captionRef\"></ng-container>\n\t\t\t<div *ngIf=\"isRequired()\">&nbsp;*</div>\n\t\t</div>\n\t\t<div *ngIf=\"!captionRef\">{{caption}}<span *ngIf=\"isRequired()\">&nbsp;*</span></div>\n\t\t<div class=\"rightOfCaptionError\">\n\t\t\t<ng-container *ngIf=\"direction === 'vertical' && getErrorLocation() === 'rightOfCaption'\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t\t</div>\n\t</div>\n\t<ng-container *ngIf=\"direction === 'vertical' && getErrorLocation() === 'belowCaption'\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t<div class=\"inputContainer\" [ngClass]=\"{\n\t\tpercentageSpacing: captionSpacing === 'percentages',\n\t\t'd30-70': spaceDistribution === '30-70',\n\t\t'd34-66': spaceDistribution === '34-66'\n\t}\">\n\t\t<ng-content></ng-content>\n\t</div>\n</div>\n","import {ControlContainer, ControlValueAccessor, UntypedFormControl} from '@angular/forms';\nimport {Component, ElementRef, EventEmitter, Host, Input, OnDestroy, OnInit, Optional, Output, ViewChild} from '@angular/core';\nimport {FormElementComponent} from '../../form/form-element/form-element.component';\nimport {isNullOrUndefined, isValueSet, stringIsSetAndFilled} from '../../util/values';\nimport { arrayIsSetAndFilled } from '../../util/arrays';\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, OnInit, OnDestroy {\n\tpublic innerValue: T;\n\tpublic changed = new Array<(value: T) => void>();\n\tprivate touched = new Array<() => void>();\n\tprivate prevValue: T = null;\n\n\t@Input() public disabled = false;\n\t// needed to prevent race conditions\n\tprivate latestInnerValueChangedInterceptorPromise: Promise<void>;\n\t@Input() innerValueChangeInterceptor: (prev: T, cur: T) => Promise<void>;\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: UntypedFormControl = null;\n\t@Output() public onTouch = new EventEmitter<void>();\n\t@ViewChild('nativeInputRef') nativeInputRef: ElementRef;\n\n\tprivate attachedFormControl: UntypedFormControl;\n\n\tconstructor(\n\t\t@Host() @Optional() protected parent: FormElementComponent,\n\t\t@Host() @Optional() protected controlContainer: ControlContainer\n\t) {\n\t}\n\n\tngOnInit(): void {\n\t\tif (this.formControl) {\n\t\t\tthis.attachedFormControl = this.formControl;\n\t\t} else if (stringIsSetAndFilled(this.formControlName)) {\n\t\t\tthis.attachedFormControl = this.controlContainer?.control.get(this.formControlName) as UntypedFormControl;\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, this);\n\t\t}\n\t}\n\n\tisInErrorState(): boolean {\n\t\treturn this.attachedFormControl && this.attachedFormControl.status === 'INVALID' && this.attachedFormControl.touched;\n\t}\n\n\tngOnDestroy(): void {\n\t\tif (this.attachedFormControl) {\n\t\t\tthis.parent?.unregisterControl(this.attachedFormControl);\n\t\t}\n\t}\n\n\ttouch(): void {\n\t\tthis.touched.forEach((f) => f());\n\t}\n\n\twriteValue(value: T): void {\n\t\tthis.innerValue = value;\n\t\tthis.prevValue = value;\n\t}\n\n\tregisterOnChange(fn: (value: T) => void): void {\n\t\tthis.changed.push(fn);\n\t}\n\n\tregisterOnTouched(fn: () => void): void {\n\t\tthis.touched.push(fn);\n\t}\n\n\tsetInnerValueAndNotify(value: T): void {\n\t\tconst actuallySetValue = (valueToSet: T): void => {\n\t\t\tthis.innerValue = valueToSet;\n\t\t\tthis.prevValue = valueToSet;\n\t\t\tthis.changed.forEach((fn) => fn(valueToSet));\n\t\t};\n\t\tif (isValueSet(this.innerValueChangeInterceptor)) {\n\t\t\tthis.latestInnerValueChangedInterceptorPromise = this.innerValueChangeInterceptor(this.prevValue, value);\n\t\t\tconst myPromise = this.latestInnerValueChangedInterceptorPromise;\n\t\t\tthis.latestInnerValueChangedInterceptorPromise.then(() => {\n\t\t\t\tif (this.latestInnerValueChangedInterceptorPromise === myPromise) {\n\t\t\t\t\tactuallySetValue(value);\n\t\t\t\t} else {\n\t\t\t\t\t// ignore outdated promises\n\t\t\t\t}\n\t\t\t}).catch(() => {\n\t\t\t\tif (this.latestInnerValueChangedInterceptorPromise === myPromise) {\n\t\t\t\t\tactuallySetValue(this.prevValue);\n\t\t\t\t} else {\n\t\t\t\t\t// ignore outdated promises\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tactuallySetValue(value);\n\t\t}\n\t}\n\n\tresetToNull(): void {\n\t\tthis.setInnerValueAndNotify(null);\n\t}\n\n\thasValidator(validatorName: string): boolean {\n\t\tconst validators = Object.keys(this.attachedFormControl?.validator?.({} as any) ?? {});\n\t\tif (arrayIsSetAndFilled(validators)) {\n\t\t\treturn validators.includes(validatorName);\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic focus = (): void => {\n\t\tif (isValueSet(this.nativeInputRef?.nativeElement)){\n\t\t\tthis.nativeInputRef?.nativeElement?.focus();\n\t\t}else {\n\t\t\tthrow new Error('the focus() method is not implemented in this element!');\n\t\t}\n\t}\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","<div class=\"threeDots\" [ngClass]=\"[size]\" *ngIf=\"variant === '3dots'\">\n\t<div></div>\n\t<div></div>\n\t<div></div>\n\t<div></div>\n</div>\n\n<div class=\"spinner\" [ngClass]=\"[size]\" *ngIf=\"variant === 'spinner'\">\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n\t\t<circle cx=\"24\" cy=\"4\" r=\"4\" fill=\"currentColor\" />\n\t\t<circle cx=\"12.19\" cy=\"7.86\" r=\"3.7\" fill=\"currentColor\" />\n\t\t<circle cx=\"5.02\" cy=\"17.68\" r=\"3.4\" fill=\"currentColor\" />\n\t\t<circle cx=\"5.02\" cy=\"30.32\" r=\"3.1\" fill=\"currentColor\" />\n\t\t<circle cx=\"12.19\" cy=\"40.14\" r=\"2.8\" fill=\"currentColor\" />\n\t\t<circle cx=\"24\" cy=\"44\" r=\"2.5\" fill=\"currentColor\" />\n\t\t<circle cx=\"35.81\" cy=\"40.14\" r=\"2.2\" fill=\"currentColor\" />\n\t\t<circle cx=\"42.98\" cy=\"30.32\" r=\"1.9\" fill=\"currentColor\" />\n\t\t<circle cx=\"42.98\" cy=\"17.68\" r=\"1.6\" fill=\"currentColor\" />\n\t\t<circle cx=\"35.81\" cy=\"7.86\" r=\"1.3\" fill=\"currentColor\" />\n\t</svg>\n</div>\n\n<div class=\"textInput\" *ngIf=\"variant === 'textInput'\">\n\t<input\n\t\tdisabled\n\t\ttype=\"text\"\n\t\tclass=\"form-control\"\n\t\tplaceholder=\"Loading...\"\n\t>\n</div>\n\n<div class=\"picker\" *ngIf=\"variant === 'picker'\">\n\t<input\n\t\tdisabled\n\t\ttype=\"text\"\n\t\tclass=\"form-control\"\n\t\tplaceholder=\"Loading...\"\n\t>\n\t<div class=\"chevronDown\"></div>\n</div>\n","import { Component, HostBinding, Input } from '@angular/core';\nimport {isValueSet} from \"../../util/values\";\n\nexport type ButtonVariant = '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';\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: ButtonVariant = '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\t@Input() clickCallback: (event: Event) => Promise<any>;\n\n\t@HostBinding('class._fullWidth') get _() {\n\t\treturn this.fullWidth;\n\t}\n\n\tasync onClick(event: Event) {\n\t\tif (this.disabled) {\n\t\t\tevent.stopPropagation();\n\t\t\treturn;\n\t\t}\n\n\t\tif (isValueSet(this.clickCallback)) {\n\t\t\tthis.isLoading = true;\n\t\t\tawait this.clickCallback(event).finally(() => {\n\t\t\t\tthis.isLoading = false;\n\t\t\t});\n\t\t}\n\t}\n}\n","<button class=\"buttonFundamentals\"\n\t[ngClass]=\"[\n\t\tvariant,\n\t\tsize,\n\t\tfullWidth ? 'fullWidth' : '',\n\t\thasBorder ? '' : 'no-border',\n\t\tdisabled ? 'disabled' : ''\n\t]\"\n\t[type]=\"type\"\n\t(click)=\"onClick($event)\"\n>\n\t<div class=\"caption\" [ngClass]=\"{invisible: isLoading}\">\n\t\t<ng-content></ng-content>\n\t</div>\n\t<div class=\"loadingSpinnerContainer\" *ngIf=\"isLoading\">\n\t\t<klp-form-loading-indicator variant=\"spinner\" size=\"small\"></klp-form-loading-indicator>\n\t</div>\n</button>\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() renderUndefinedAsIndeterminate = false;\n}\n","<label class=\"componentContainer\">\n\t<div class=\"checkboxContainer\">\n\t\t<input type=\"checkbox\" class=\"checkboxNative\"\n\t\t\t[(ngModel)]=\"innerValue\"\n\t\t\t(change)=\"setInnerValueAndNotify(innerValue); touch()\"\n\t\t\t[disabled]=\"disabled\"\n\t\t\t#nativeInputRef\n\t\t/>\n <div class=\"checkboxVisual\">\n <svg *ngIf=\"innerValue === true\" version=\"1.1\" viewBox=\"0 0 4.2333 4.2333\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"m0.17014 2.7065 1.3073 1.1798 2.5656-3.7404\" stroke=\"currentColor\" fill=\"none\" stroke-width=\".4646px\" />\n </svg>\n\t\t\t<svg *ngIf=\"renderUndefinedAsIndeterminate && innerValue === undefined\" version=\"1.1\" viewBox=\"0 0 4.2333 4.2333\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t<path d=\"m0.5 2.11665 3.2333 0\" stroke=\"currentColor\" fill=\"none\" stroke-width=\".4646px\" />\n\t\t\t</svg>\n </div>\n\t</div>\n\t<div *ngIf=\"caption\" class=\"caption\">{{ caption }}</div>\n</label>\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","<input\n\ttype=\"email\"\n\tclass=\"form-control\"\n\t[(ngModel)]=\"innerValue\"\n\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t[placeholder]=\"placeholder\"\n\t(blur)=\"touch()\"\n\t[disabled]=\"disabled\"\n\t#nativeInputRef\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 | number> {\n\t@Input() placeholder: string;\n\t@Input() parseNumber: boolean = false;\n\n\n\tsetInnerValueAndNotify(value: string | number) {\n\t\tif (this.parseNumber && typeof value === \"string\") {\n\t\t\tsuper.setInnerValueAndNotify(Number(value));\n\t\t} else {\n\t\t\tsuper.setInnerValueAndNotify(value);\n\t\t}\n\t}\n}\n","<input\n\ttype=\"number\"\n\tclass=\"form-control\"\n\t[(ngModel)]=\"innerValue\"\n\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t[placeholder]=\"placeholder ? placeholder : ''\"\n\t[ngClass]=\"{showErrors: isInErrorState()}\"\n\t[disabled]=\"disabled\"\n\t#nativeInputRef\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","<input\n\ttype=\"password\"\n\tclass=\"form-control\"\n [ngClass]=\"{showErrors: isInErrorState()}\"\n\t[(ngModel)]=\"innerValue\"\n\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t[placeholder]=\"placeholder\"\n\t(blur)=\"touch()\"\n\t[disabled]=\"disabled\"\n\t#nativeInputRef\n/>\n","import {\n\tAfterViewInit,\n\tComponent,\n\tContentChild,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tHost,\n\tInject,\n\tInjectionToken,\n\tInput,\n\tOnChanges,\n\tOptional,\n\tOutput,\n\tSimpleChanges,\n\tTemplateRef,\n\tViewChild\n} 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';\nimport {isValueSet, stringIsSetAndFilled} from '../../util/values';\n\nexport type AppSelectOptions = Array<AppSelectOption>;\nexport type AppSelectOption = {\n\tid: any;\n\tname: string;\n\tdescription?: string;\n\tactive?: boolean;\n\tdisabled?: boolean;\n};\n\nexport const SELECT_TRANSLATIONS = new InjectionToken<any>('klp.form.select.translations');\n\n@Directive({ selector: '[klpSelectOptionTpl]' })\nexport class KlpSelectOptionTemplateDirective {}\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[]> implements OnChanges, AfterViewInit{\n\t@Input() placeholder: string;\n\t@Input() prefix: string;\n\t@Input() orientation: 'vertical' | 'horizontal' = 'horizontal';\n\t@Input() options: AppSelectOptions;\n\t@Input() multiple = false;\n\t@Input() multipleDisplayedAsAmount = false;\n\t@Input() clearable = true;\n\t@Input() truncateOptions = true;\n\t@Input() withSeparatingLine = false;\n\t@Input() searchable = true;\n\t@Input() public dropdownPosition: 'auto' | 'bottom' | 'top' | 'left' | 'right' = null;\n\t@Input() public customSearchFn: (term: string, item: { id: string; name: string; description: string }) => boolean;\n\t@Input() public footerElement: TemplateRef<any>;\n\t@Output() public onSearch = new EventEmitter<string>();\n\t@Output() public onEndReached = new EventEmitter<void>();\n\t@Output() public onOpened = new EventEmitter<void>();\n\t@Output() public onClosed = new EventEmitter<void>();\n\t@Output() public onBlur = new EventEmitter<void>();\n\t@Output() public onClear = new EventEmitter<void>();\n\t@ViewChild('ngSelect') ngSelect;\n\t@ContentChild(KlpSelectOptionTemplateDirective, { read: TemplateRef }) customOptionTpl: TemplateRef<any>;\n\n\tprivate lastItemIndexReached = -1;\n\tpublic dropdownPositionToUse: 'auto' | 'bottom' | 'top' | 'left' | 'right' = 'bottom';\n\n\tconstructor(\n\t\t@Optional() @Host() protected parent: FormElementComponent,\n\t\t@Optional() @Host() protected controlContainer: ControlContainer,\n\t\t@Inject(SELECT_TRANSLATIONS) @Optional() private translations: any,\n\t\tprivate elRef: ElementRef,\n\t) {\n\t\tsuper(parent, controlContainer);\n\t}\n\n\tngAfterViewInit(): void {\n\t\tthis.addPrefix();\n\t}\n\n\n\tprivate addPrefix(): void {\n\t\tif (stringIsSetAndFilled(this.prefix)) {\n\t\t\tconst container = this.elRef.nativeElement.querySelector('.ng-select-container');\n\t\t\tconst newNode = document.createElement('div');\n\t\t\tnewNode.className = 'prefix';\n\t\t\tnewNode.innerText = this.prefix;\n\t\t\tcontainer.insertBefore(newNode, container.children[0]);\n\t\t}\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (isValueSet(changes.options)) {\n\t\t\tthis.lastItemIndexReached = -1;\n\t\t\tthis.setWidthBasedOnOptionsWidths();\n\t\t}\n\t\tthis.dropdownPositionToUse = this.dropdownPosition;\n\t}\n\n\tgetDefaultTranslation(key: string): (x: any) => string {\n\t\tswitch (key) {\n\t\t\tcase 'placeholder':\n\t\t\t\treturn () => 'Pick an option';\n\t\t\tcase 'amountSelected':\n\t\t\t\treturn (amount) => `${amount} selected`;\n\t\t}\n\t}\n\n\tgetTranslation(key: string, params: any = null): string {\n\t\tif (key === 'placeholder' && stringIsSetAndFilled(this.placeholder)) {\n\t\t\treturn this.placeholder;\n\t\t}\n\t\treturn this.translations?.[key]?.(params) ?? this.getDefaultTranslation(key)(params);\n\t}\n\n\tonScroll(lastItemIndex: number): void {\n\t\tconst visibleItems = this.ngSelect?.itemsList?.filteredItems?.length ?? 0;\n\t\tif (this.lastItemIndexReached < lastItemIndex && lastItemIndex === visibleItems) {\n\t\t\tthis.onEndReached.emit();\n\t\t}\n\t\tthis.lastItemIndexReached = Math.max(lastItemIndex, this.lastItemIndexReached);\n\t\tthis.setWidthBasedOnOptionsWidths();\n\t}\n\n\tsearchQueryChanged(searchQuery: string): void {\n\t\tthis.onSearch.emit(searchQuery);\n\t}\n\n\tonOpen(): void {\n\t\tif (this.orientation === 'horizontal' && !isValueSet(this.dropdownPosition)) {\n\t\t\tthis.determineDropdownPosition();\n\t\t}\n\t\t// waiting for the thing to render until we fire the event\n\t\tsetTimeout(() => {\n\t\t\tthis.onOpened.emit();\n\t\t\tthis.setWidthBasedOnOptionsWidths();\n\t\t});\n\t}\n\n\tprivate setWidthBasedOnOptionsWidths(): void {\n\t\tif (this.truncateOptions === false) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst widths: Array<number> = Array.from(this.elRef.nativeElement.querySelectorAll('.ng-option div')).map(\n\t\t\t\t\t(e: any) => e.scrollWidth,\n\t\t\t\t);\n\t\t\t\tconst maxWidth = Math.max(...widths);\n\t\t\t\tconst dropdownPanel = this.elRef.nativeElement.querySelector('ng-dropdown-panel');\n\t\t\t\tif (dropdownPanel) {\n\t\t\t\t\tdropdownPanel.style.width = `${Math.max(this.elRef.nativeElement.clientWidth, maxWidth + 40, dropdownPanel.getBoundingClientRect().width)}px`;\n\t\t\t\t}\n\n\t\t\t\tlet limitingParentContainer = this.elRef.nativeElement;\n\t\t\t\twhile (limitingParentContainer.parentElement && !this.isLimitingContainer(limitingParentContainer)) {\n\t\t\t\t\tlimitingParentContainer = limitingParentContainer.parentElement;\n\t\t\t\t}\n\n\t\t\t\tif (dropdownPanel) {\n\t\t\t\t\tconst spaceInParent = limitingParentContainer.clientWidth;\n\t\t\t\t\tconst spaceLeftOfElRef = this.elRef?.nativeElement.getBoundingClientRect().left - limitingParentContainer.getBoundingClientRect().left;\n\t\t\t\t\tconst spaceRightOfElRef = spaceInParent - spaceLeftOfElRef;\n\t\t\t\t\tconst shiftToLeft = dropdownPanel?.clientWidth - spaceRightOfElRef + 20;\n\t\t\t\t\tif (shiftToLeft > 0) {\n\t\t\t\t\t\tdropdownPanel.style.left = `-${shiftToLeft}px`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate determineDropdownPosition(): void {\n\t\tlet current = this.elRef.nativeElement;\n\t\twhile (current.parentElement && !this.isLimitingContainer(current)) {\n\t\t\tcurrent = current.parentElement;\n\t\t}\n\t\tconst topSpace = this.elRef.nativeElement.getBoundingClientRect().top - current.getBoundingClientRect().top;\n\t\tconst bottomSpace = current.clientHeight - topSpace;\n\t\tif (bottomSpace >= 285) {\n\t\t\tthis.dropdownPositionToUse = 'bottom';\n\t\t} else {\n\t\t\tthis.dropdownPositionToUse = 'top';\n\t\t}\n\t}\n\n\tprivate isLimitingContainer(element: Element): boolean {\n\t\tconst style = getComputedStyle(element);\n\t\tif (style.overflowY === 'auto') {\n\t\t\treturn true;\n\t\t}\n\t\tif (style.overflow === 'auto') {\n\t\t\treturn true;\n\t\t}\n\t\tif (style.overflowY === 'scroll') {\n\t\t\treturn true;\n\t\t}\n\t\tif (style.overflow === 'scroll') {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic focus = (): void => {\n\t\tthis.ngSelect.focus();\n\t}\n\tpublic close = (): void => {\n\t\tthis.ngSelect.close();\n\t}\n\n\tpublic onClose(): void {\n\t\t// Give angular a second to render the closed situation before emitting the close event\n\t\tsetTimeout(() => {\n\t\t\tthis.onClosed.emit();\n\t\t});\n\t}\n}\n","<ng-select\n\t#ngSelect\n\t[placeholder]=\"getTranslation('placeholder')\"\n\tbindLabel=\"name\"\n\tbindValue=\"id\"\n\t[items]=\"options\"\n\t[clearable]=\"clearable\"\n\t[(ngModel)]=\"innerValue\"\n\t[ngClass]=\"{showErrors: isInErrorState(), verticalOrientation: orientation === 'vertical', truncateOptions: truncateOptions, withSeparatingLine: withSeparatingLine}\"\n\t(change)=\"setInnerValueAndNotify(innerValue)\"\n\t[multiple]=\"multiple\"\n\t[disabled]=\"disabled\"\n\t(blur)=\"touch(); onBlur.emit()\"\n\t(clear)=\"onClear.emit()\"\n\t(search)=\"searchQueryChanged($event.term)\"\n\t[searchable]=\"searchable\"\n\t[dropdownPosition]=\"dropdownPositionToUse\"\n\t[searchFn]=\"customSearchFn\"\n\t[selectOnTab]=\"true\"\n\t[virtualScroll]=\"true\"\n\t(scroll)=\"onScroll($event.end)\"\n\t(open)=\"onOpen()\"\n\t(close)=\"onClose()\"\n>\n\t<ng-template let-item=\"item\" ng-option-tmp>\n\t\t<ng-container *ngIf=\"customOptionTpl\" [ngTemplateOutlet]=\"customOptionTpl\" [ngTemplateOutletContext]=\"{item: item}\"></ng-container>\n\t\t<div [attr.data-cy]=\"item.id\" *ngIf=\"!customOptionTpl\">\n\t\t\t{{ item.name }}\n\t\t\t<div *ngIf=\"item.description\" class=\"dropdown-item-description\">\n\t\t\t\t{{ item.description }}\n\t\t\t</div>\n\t\t</div>\n\t</ng-template>\n\t<ng-container *ngIf=\"multiple && multipleDisplayedAsAmount && innerValue?.length > 1\">\n\t\t<ng-template ng-multi-label-tmp>\n\t\t\t<div class=\"ng-value\">\n\t\t\t\t<span class=\"ng-value-label\">{{getTranslation('amountSelected', innerValue?.length)}}</span>\n\t\t\t</div>\n\t\t</ng-template>\n\t</ng-container>\n\t<ng-template ng-footer-tmp *ngIf=\"footerElement\">\n\t\t<ng-container [ngTemplateOutlet]=\"footerElement\"></ng-container>\n\t</ng-template>\n</ng-select>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n\tselector: 'klp-select-footer',\n\ttemplateUrl: './select-footer.component.html',\n\tstyleUrls: ['./select-footer.component.scss'],\n})\nexport class SelectFooterComponent {\n\t@Input() public prefix: string;\n\t@Input() public text: string;\n}\n","<div class=\"componentContainer\">\n\t<span class=\"prefix\">{{prefix}}</span>\n\t<span class=\"text\">{{text}}</span>\n</div>\n","import {\n\tComponent,\n\tContentChild,\n\tInput,\n\tOnInit,\n\tTemplateRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Options } from 'sortablejs';\nimport { isValueSet } from '../../util/values';\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: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: SortableItemsComponent,\n\t\t\tmulti: true,\n\t\t},\n\t],\n})\nexport class SortableItemsComponent\n\textends ValueAccessorBase<Array<any>>\n\timplements OnInit\n{\n\t@ContentChild(TemplateRef) template;\n\t@Input() sortableItemSize: 'sm' | 'lg' = 'lg';\n\t@Input() useCustomScroll = false;\n\n\tpublic sortablejsOptions: Options;\n\tprivate scrollInterval = null;\n\n\tngOnInit(): void {\n\t\tsuper.ngOnInit();\n\t\tif (this.useCustomScroll) {\n\t\t\tthis.sortablejsOptions = {\n\t\t\t\tonUpdate: this.itemsOrderChanged,\n\t\t\t\tonMove: this.onItemDrag,\n\t\t\t\tonEnd: this.onEnd,\n\t\t\t};\n\t\t} else {\n\t\t\tthis.sortablejsOptions = { onUpdate: this.itemsOrderChanged };\n\t\t}\n\t}\n\n\titemsOrderChanged = () => {\n\t\tthis.setInnerValueAndNotify(this.innerValue);\n\t};\n\n\tonItemDrag = (data) => {\n\t\t// if the item you're dragging is reaching the top, start scrolling.\n\t\tif (data.relatedRect.top < 100) {\n\t\t\tthis.scrollPage(100);\n\t\t} else {\n\t\t\tthis.stopScrolling();\n\t\t}\n\t};\n\n\tonEnd = () => {\n\t\tthis.stopScrolling();\n\t};\n\n\tprivate scrollPage(scrollAmount: number): void {\n\t\tif (!isValueSet(this.scrollInterval)) {\n\t\t\tthis.scrollInterval = setInterval(() => {\n\t\t\t\twindow.scroll({\n\t\t\t\t\ttop: document.scrollingElement.scrollTop - scrollAmount,\n\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t});\n\t\t\t\tif (document.scrollingElement.scrollTop <= 100) {\n\t\t\t\t\tthis.stopScrolling();\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t}\n\t}\n\n\tprivate stopScrolling(): void {\n\t\tclearInterval(this.scrollInterval);\n\t\tthis.scrollInterval = null;\n\t}\n}\n","<ng-template #listItem>\n\t<li *ngFor=\"let item of innerValue; index as index\"\n\t\t\tclass=\"sortableItem\"\n\t\t\t[ngClass]=\"{\n\t\t\tlargeSortableItem: sortableItemSize === 'lg',\n\t\t \tsmallSortableItem: sortableItemSize === 'sm'\n\t\t }\"\n\t>\n\t\t<ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item, index:index }\"></ng-container>\n\t</li>\n</ng-template>\n\n<ol *ngIf='!disabled'\n\t\t[sortablejs]=\"innerValue\"\n\t\t[sortablejsOptions]=\"sortablejsOptions\"\n\t\tclass=\"itemsContainer\"\n>\n\t<ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n</ol>\n\n<ol *ngIf='disabled' class=\"itemsContainer disabled-mouse-cursor\">\n\t<ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n</ol>\n","import {Component, EventEmitter, Input, Output} 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\t@Input() clearable = false;\n\t@Input() icon: 'search';\n\t@Input() hasBorderLeft = true;\n\t@Input() hasBorderRight = true;\n\t@Output() onBlur = new EventEmitter<void>();\n}\n","<div class=\"componentContainer\">\n\t<ng-container *ngIf=\"icon?.length > 0\">\n\t\t<i class=\"ti-search\" *ngIf=\"icon === 'search'\"></i>\n\t</ng-container>\n\t<input\n\t\t[type]=\"type\"\n\t\t[(ngModel)]=\"innerValue\"\n\t\t[ngClass]=\"{showErrors: isInErrorState(), hasIcon: icon?.length > 0, hasClearButton: clearable, noBorderLeft: !hasBorderLeft, noBorderRight: !hasBorderRight}\"\n\t\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t\t[placeholder]=\"placeholder ? placeholder : ''\"\n\t\t(blur)=\"touch(); onBlur.emit()\"\n\t\t[disabled]='disabled'\n\t\t#nativeInputRef\n\t/>\n\t<div class=\"clearIcon\" *ngIf=\"clearable && innerValue?.length > 0\" (click)=\"resetToNull()\">×</div>\n</div>\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}\n","<div class=\"componentContainer\" [ngClass]=\"{disabled: disabled}\">\n\t<input type=\"checkbox\" class=\"nativeCheckbox\"\n\t\t[(ngModel)]=\"innerValue\"\n\t\t(input)=\"setInnerValueAndNotify($event.target.checked); touch()\"\n\t\t[disabled]=\"disabled\"\n\t\t[ngClass]=\"{showErrors: isInErrorState()}\"\n\t #nativeInputRef\n\t/>\n\t<div class=\"toggleVisual\"></div>\n</div>\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\tthis.parent.registerCaption(this.contentRef);\n\t\t});\n\t}\n}\n","<ng-template #contentRef>\n\t<ng-content></ng-content>\n</ng-template>\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","<ng-template #contentRef>\n\t<ng-content></ng-content>\n</ng-template>\n","import { Component, Host, HostBinding, Input, Optional } from '@angular/core';\nimport {FormComponent, invalidFieldsSymbol} from '../form.component';\nimport {isNullOrUndefined} from '../../util/values';\nimport { ButtonVariant } from '../../elements/button/button.component';\n\nexport type SubmitButtonVariant = Extract<ButtonVariant,\n\t| 'greenFilled'\n\t| 'redFilled'\n\t| 'greenOutlined'\n\t| 'white'\n>;\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: SubmitButtonVariant = 'greenFilled';\n\t@Input() public before: () => Promise<any> = () => Promise.resolve();\n\t@Input() public after: () => Promise<any> = () => Promise.resolve();\n\t@Input() public submitCallback: (renderedAndEnabledValues: object, renderedButDisabledValues: object) => Promise<any>;\n\n\t@HostBinding('class._fullWidth') get _() {\n\t\treturn this.fullWidth;\n\t}\n\n\tconstructor(@Host() @Optional() private parentForm: FormComponent) {}\n\n\tasync submitForm(): Promise<void> {\n\t\ttry {\n\t\t\tawait this.before();\n\t\t} catch (e) {\n\t\t\treturn;\n\t\t}\n\t\tthis.parentForm\n\t\t\t.trySubmit()\n\t\t\t.then(([renderedAndEnabledValues, renderedValues]) => {\n\t\t\t\tthis.isLoading = true;\n\t\t\t\tconst submitCallbackResult = this.submitCallback(renderedAndEnabledValues, renderedValues);\n\t\t\t\tif (isNullOrUndefined(submitCallbackResult)) {\n\t\t\t\t\tthrow new Error('No promise is returned in your submit function.');\n\t\t\t\t}\n\t\t\t\treturn submitCallbackResult.then(() => (this.isLoading = false)).catch((e) => {\n\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\tthrow e;\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch((e) => {\n\t\t\t\tif (e === invalidFieldsSymbol) {\n\t\t\t\t\treturn; // swallow the error, the framework will scroll to the field that needs attention\n\t\t\t\t}\n\t\t\t\tthrow e;\n\t\t\t});\n\t\tawait this.after();\n\t}\n}\n","<klp-form-button\n\t\t[variant]=\"variant\"\n\t\t(click)=\"submitForm()\"\n\t\t[disabled]=\"isLoading\"\n\t\t[isLoading]=\"isLoading\"\n\t\t[fullWidth]=\"fullWidth\"\n\t\ttype=\"submit\"\n\t\t[ngClass]=\"fullWidth ? 'fullWidth' : ''\"\n\t>\n\t<ng-content></ng-content>\n</klp-form-button>\n","import {Component, Host, Input, Optional} from '@angular/core';\nimport {ControlContainer} from '@angular/forms';\nimport {ValueAccessorBase} from './value-accessor-base.component';\nimport {FormElementComponent} from '../../form/form-element/form-element.component';\nimport {isValueSet} from '../../util/values';\n\n@Component({\n\tselector: '',\n\ttemplate: '',\n})\nexport class MultipleValueAccessorBase<T> extends ValueAccessorBase<Array<T> | T> {\n\t@Input() multiple = false;\n\n\tconstructor(\n\t\t@Host() @Optional() protected parent: FormElementComponent,\n\t\t@Host() @Optional() protected controlContainer: ControlContainer\n\t) {\n\t\tsuper(parent, controlContainer);\n\t}\n\n\twriteValue(value: Array<T> | T): void {\n\t\t// if the outside world passes a value in the wrong format, it should be corrected\n\t\tif (this.multiple && !Array.isArray(value)) {\n\t\t\tconst correctedVal = [value].filter(isValueSet);\n\t\t\tsuper.writeValue(correctedVal);\n\t\t\tsuper.setInnerValueAndNotify(correctedVal);\n\t\t} else if (!this.multiple && Array.isArray(value)) {\n\t\t\tconst correctedVal = value[0];\n\t\t\tsuper.writeValue(correctedVal);\n\t\t\tsuper.setInnerValueAndNotify(correctedVal);\n\t\t} else {\n\t\t\tsuper.writeValue(value);\n\t\t}\n\t}\n\n\tsetInnerValueAndNotify(value: T | Array<T>): void {\n\t\tif (this.multiple && !Array.isArray(value)) {\n\t\t\tsuper.setInnerValueAndNotify([value].filter(isValueSet));\n\t\t} else if (!this.multiple && Array.isArray(value)) {\n\t\t\tsuper.setInnerValueAndNotify(value[0]);\n\t\t} else {\n\t\t\tsuper.setInnerValueAndNotify(value);\n\t\t}\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\tAfterViewInit,\n\tChangeDetectorRef,\n\tComponent,\n\tElementRef,\n\tHost,\n\tInject,\n\tInjectionToken,\n\tInput,\n\tOnChanges,\n\tOnInit,\n\tOptional,\n\tSimpleChanges,\n\tViewChild\n} from '@angular/core';\nimport {ControlContainer, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {invalidDateKey} from '../../validators/dateValidator';\nimport {DateFilterFn, MatDatepicker} from '@angular/material/datepicker';\nimport {DateAdapter, MAT_DATE_FORMATS, MAT_NATIVE_DATE_FORMATS, MatDateFormats} from '@angular/material/core';\nimport {KlpDateFormats} from '../../types';\nimport {FormElementComponent} from '../../form/form-element/form-element.component';\nimport {MultipleValueAccessorBase} from '../value-accessor-base/multiple-value-accessor-base.component';\nimport {isValueSet, stringIsSetAndFilled} from '../../util/values';\nimport {endOfMonth, format as formatDate, startOfMonth, isSameDay} from 'date-fns';\nimport {arrayIsSetAndFilled, removeDuplicatesFromArray } from '../../util/arrays';\n\nexport const KLP_DATE_FORMATS = new InjectionToken<KlpDateFormats>('klp.form.date.formats');\nexport const DATE_TIME_PICKER_TRANSLATIONS = new InjectionToken<any>('klp.form.dateTime.translations');\nexport const DATE_PICKER_LOCALE = new InjectionToken<any>('klp.form.dateTime.locale');\n\nexport function matDateFormatsFactory(component: DateTimePickerComponent, dateFormats?: KlpDateFormats): MatDateFormats {\n\treturn dateFormats?.(component.format) ?? MAT_NATIVE_DATE_FORMATS;\n}\n\n@Component({\n\tselector: 'klp-form-date-time-picker',\n\ttemplateUrl: './date-time-picker.component.html',\n\tstyleUrls: ['./date-time-picker.component.scss'],\n\tproviders: [\n\t\t{provide: NG_VALUE_ACCESSOR, useExisting: DateTimePickerComponent, multi: true},\n\t\t{\n\t\t\tprovide: MAT_DATE_FORMATS,\n\t\t\tdeps: [DateTimePickerComponent, [new Optional(), KLP_DATE_FORMATS]],\n\t\t\tuseFactory: matDateFormatsFactory,\n\t\t},\n\t],\n})\nexport class DateTimePickerComponent extends MultipleValueAccessorBase<Date | typeof invalidDateKey> implements OnInit, AfterViewInit, OnChanges {\n\t@Input() public minDate: Date = undefined;\n\t@Input() public maxDate: Date = undefined;\n\t@Input() public sameMonthOnly = false;\n\t@Input() public format = 'dd-MM-yyyy';\n\t@Input() public placeholder: string;\n\t@Input() public clearable = false;\n\t@Input() public showTimeInput = true;\n\t@Input() public invalidTimeAsMidnight = false; // if the time is not valid, use 00:00 as the time\n\n\t@ViewChild('nativeInput') nativeInputRef: ElementRef;\n\t@ViewChild('picker') datePickerRef: MatDatepicker<Date>;\n\n\topenPickerOnDate: Date = null;\n\tminDateStartOfDay: Date = undefined;\n\tmaxDateEndOfDay: Date = undefined;\n\n\t// this is passed as ngmodel and is used to set the initial date. But we also\n\t// use input and nativeInput callbacks to extend the validation logic so we\n\t// can distinguish between empty and invalid dates.\n\tvalueForMaterialDatePicker: Date;\n\thours: string; // string because it's a text input\n\tminutes: string; // string because it's a text input\n\tprivate selectedDates: Array<Date> = [];\n\tprivate datePickingClosingFn: () => void;\n\tprivate dateTouched = false;\n\tprivate hoursTouched = false;\n\tprivate minutesTouched = false;\n\n\tconstructor(\n\t\t@Host() @Optional() protected parent: FormElementComponent,\n\t\t@Host() @Optional() protected controlContainer: ControlContainer,\n\t\t@Inject(DATE_TIME_PICKER_TRANSLATIONS) @Optional() private translations: any,\n\t\t@Inject(DATE_PICKER_LOCALE) @Optional() private datePickerLocale: any,\n\t\tprivate dateAdapter: DateAdapter<Date>,\n\t\tprivate cdr: ChangeDetectorRef\n\t) {\n\t\tsuper(parent, controlContainer);\n\t\tif (isValueSet(datePickerLocale)) {\n\t\t\tdateAdapter.setLocale(datePickerLocale());\n\t\t}\n\t}\n\n\tngOnInit(): void {\n\t\tsuper.ngOnInit();\n\t\tif (this.multiple) {\n\t\t\tthis.placeholder = '';\n\t\t\tthis.showTimeInput = false;\n\t\t}\n\t}\n\n\tngAfterViewInit(): void {\n\t\tif (this.multiple) {\n\t\t\t// we are going to overwrite the datepicker closing fn later, so we are saving it here to restore it when needed\n\t\t\tthis.datePickingClosingFn = this.datePickerRef.close;\n\t\t}\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes.minDate) {\n\t\t\tthis.determineMinAndMaxDates();\n\t\t}\n\t\tif (changes.maxDate) {\n\t\t\tthis.determineMinAndMaxDates();\n\t\t}\n\t}\n\n\tsetMinDate(minDate: Date): void {\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): void {\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\tgetSelectedMonths(): number {\n\t\treturn removeDuplicatesFromArray(this.selectedDates.map((e) => formatDate(e, 'MMMM'))).length;\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): void {\n\t\tconst date = event.value;\n\t\tif (this.multiple) {\n\t\t\tthis.datePickerRef.close = () => {\n\t\t\t};\n\n\t\t\tif (this.selectedDates.some((e) => isSameDay(e, date))) {\n\t\t\t\tthis.selectedDates = this.selectedDates.filter((e) => !isSameDay(e, date));\n\t\t\t} else {\n\t\t\t\tthis.selectedDates = [...this.selectedDates, date];\n\t\t\t}\n\t\t\t// START HACK\n\t\t\t// the date picker does not provide any rerender calls. Therefore, we are going to change the minDate in order to force the render\n\t\t\t// This is needed to show all selected days in our date picker\n\t\t\t// We also set the innerValue to null (with this.valueForMaterialDatePicker = null;), otherwise you can not\n\t\t\t// deselect your last picked date\n\t\t\tthis.cdr.detectChanges();\n\t\t\tthis.valueForMaterialDatePicker = null;\n\t\t\tconst oldMinDate = this.minDateStartOfDay;\n\t\t\tthis.minDateStartOfDay = new Date(0);\n\t\t\tthis.cdr.detectChanges();\n\t\t\tthis.minDateStartOfDay = oldMinDate;\n\t\t\t// END HACK\n\n\t\t\tif (this.sameMonthOnly) {\n\t\t\t\tif (this.selectedDates.length >= 2) {\n\t\t\t\t\tif (date < startOfMonth(this.selectedDates[0]) || date > endOfMonth(this.selectedDates[0])) {\n\t\t\t\t\t\tthis.selectedDates = [date];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.determineMinAndMaxDates();\n\t\t\t}\n\n\t\t\tthis.setInnerValueAndNotify(this.selectedDates);\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.datePickerRef.close = this.datePickingClosingFn;\n\t\t\t});\n\t\t} else {\n\t\t\tthis.notifyNewDate();\n\t\t}\n\t}\n\n\tdetermineMinAndMaxDates(): void {\n\t\tif (this.sameMonthOnly) {\n\t\t\tif (this.selectedDates.length >= 2) {\n\t\t\t\tthis.setMinDate(startOfMonth(this.selectedDates[0]));\n\t\t\t\tthis.setMaxDate(endOfMonth(this.selectedDates[0]));\n\t\t\t} else {\n\t\t\t\tthis.setMinDate(this.minDate);\n\t\t\t\tthis.setMaxDate(this.maxDate);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.setMinDate(this.minDate);\n\t\t\tthis.setMaxDate(this.maxDate);\n\t\t}\n\t}\n\n\tnotifyNewDate(): void {\n\t\tconst nativeInputValue = this.nativeInputRef.nativeElement.value;\n\t\tconst parsedHours = Number(this.hours);\n\t\tconst parsedMinutes = Number(this.minutes);\n\n\t\t// if we dont have the time element\n\t\tif (!this.showTimeInput) {\n\t\t\tif (!stringIsSetAndFilled(nativeInputValue)) {\n\t\t\t\tthis.setInnerValueAndNotify(null);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.valueForMaterialDatePicker instanceof Date) {\n\t\t\t\tthis.setInnerValueAndNotify(this.valueForMaterialDatePicker);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t// when all inputs are empty\n\t\tif (!stringIsSetAndFilled(nativeInputValue) && !stringIsSetAndFilled(this.hours) && !stringIsSetAndFilled(this.minutes)) {\n\t\t\tthis.setInnerValueAndNotify(null);\n\t\t\treturn;\n\t\t}\n\t\t// if we have date and time\n\t\tif (\n\t\t\tstringIsSetAndFilled(this.hours) &&\n\t\t\tNumber.isFinite(parsedHours) &&\n\t\t\tparsedHours >= 0 &&\n\t\t\tparsedHours <= 23 &&\n\t\t\tstringIsSetAndFilled(this.minutes) &&\n\t\t\tNumber.isFinite(parsedMinutes) &&\n\t\t\tparsedMinutes >= 0 &&\n\t\t\tparsedMinutes <= 59 &&\n\t\t\tthis.valueForMaterialDatePicker instanceof Date\n\t\t) {\n\t\t\tconst newDateWithHours = new Date(this.valueForMaterialDatePicker.setHours(parsedHours));\n\t\t\tconst newDateWithMinutes = new Date(newDateWithHours.setMinutes(parsedMinutes));\n\t\t\tthis.setInnerValueAndNotify(newDateWithMinutes);\n\t\t\treturn;\n\t\t}\n\t\tif (this.invalidTimeAsMidnight) {\n\t\t\tif (this.valueForMaterialDatePicker instanceof Date) {\n\t\t\t\tthis.setInnerValueAndNotify(this.valueForMaterialDatePicker);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t// all other cases, we are not in a valid state\n\t\tthis.setInnerValueAndNotify(invalidDateKey);\n\t}\n\n\twriteValue(value: Date | Array<Date> | typeof invalidDateKey): void {\n\t\tsuper.writeValue(value);\n\t\tif (Array.isArray(value)) {\n\t\t\tthis.selectedDates = value;\n\t\t\tthis.determineMinAndMaxDates();\n\t\t\tthis.valueForMaterialDatePicker = null;\n\t\t\tif (arrayIsSetAndFilled(value)) {\n\t\t\t\tthis.openPickerOnDate = this.selectedDates[0];\n\t\t\t}\n\t\t} else {\n\t\t\tthis.valueForMaterialDatePicker = value === invalidDateKey ? null : value;\n\t\t\tif (value instanceof Date) {\n\t\t\t\tthis.hours = String(value.getHours());\n\t\t\t\tthis.minutes = String(value.getMinutes());\n\t\t\t\tthis.formatTime();\n\t\t\t\tthis.openPickerOnDate = value;\n\t\t\t} else {\n\t\t\t\tthis.hours = '';\n\t\t\t\tthis.minutes = '';\n\t\t\t\tthis.openPickerOnDate = null;\n\t\t\t\tthis.selectedDates = [];\n\t\t\t}\n\t\t}\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(): void {\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\t\tthis.notifyNewDate();\n\t}\n\n\tresetToNull(): void {\n\t\tthis.setInnerValueAndNotify(null);\n\t\tthis.valueForMaterialDatePicker = null;\n\t\tthis.nativeInputRef.nativeElement.value = null;\n\t\tthis.hours = '';\n\t\tthis.minutes = '';\n\t\tthis.selectedDates = [];\n\t}\n\n\tisSelected = (d: Date) => {\n\t\tif (this.multiple) {\n\t\t\treturn this.selectedDates.some((e) => isSameDay(e, d)) ? 'selected' : '';\n\t\t}\n\t\treturn '';\n\t};\n\tfilterDates: DateFilterFn<any> = (e) => {\n\t\tif (this.disabled) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t};\n\n\tformatTime(): void {\n\t\tif (Number.isFinite(Number(this.hours)) && this.hours.length === 1) {\n\t\t\tthis.hours = '0' + this.hours;\n\t\t}\n\t\tif (Number.isFinite(Number(this.minutes)) && this.minutes.length === 1) {\n\t\t\tthis.minutes = '0' + this.minutes;\n\t\t}\n\t}\n\n\ttouchDate(): void {\n\t\tthis.dateTouched = true;\n\t\tthis.determineAllTouched();\n\t}\n\n\ttouchHours(): void {\n\t\tthis.hoursTouched = true;\n\t\tthis.determineAllTouched();\n\t}\n\n\ttouchMinutes(): void {\n\t\tthis.minutesTouched = true;\n\t\tthis.determineAllTouched();\n\t}\n\n\tdetermineAllTouched(): void {\n\t\tif ((this.dateTouched && this.hoursTouched && this.minutesTouched) || (this.dateTouched && !this.showTimeInput)) {\n\t\t\tthis.touch();\n\t\t}\n\t}\n\n\n\tgetDefaultTranslation(key: string): (x: any) => string {\n\t\tswitch (key) {\n\t\t\tcase 'placeholder':\n\t\t\t\treturn () => 'Select date';\n\t\t\tcase 'selectDays':\n\t\t\t\treturn () => 'Select day(s)';\n\t\t\tcase 'selectedDate':\n\t\t\t\treturn (d: Date) => d.toLocaleDateString();\n\t\t\tcase 'daysSelected':\n\t\t\t\treturn (amount) => `${amount} days selected`;\n\t\t\tcase 'selectedInMonth':\n\t\t\t\treturn (d: Date) => ` in ${formatDate(d, 'MMMM')}`;\n\t\t}\n\t}\n\n\tgetTranslation(key: string, params: any = null): string {\n\t\tif (key === 'placeholder' && this.multiple) {\n\t\t\treturn '';\n\t\t}\n\t\tif (key === 'placeholder' && stringIsSetAndFilled(this.placeholder)) {\n\t\t\treturn this.placeholder;\n\t\t}\n\t\treturn this.translations?.[key]?.(params) ?? this.getDefaultTranslation(key)(params);\n\t}\n}\n","<div class=\"componentContainer\" [ngClass]=\"{showErrors: isInErrorState()}\">\n\t<div class=\"dateContainer\" [ngClass]=\"{noRightBorder: !showTimeInput && clearable && !disabled, disabled: disabled}\">\n\t\t<mat-form-field floatLabel=\"never\">\n\t\t\t<div *ngIf=\"multiple\" class=\"daysSelectedCaption\" (click)=\"picker.open()\" [ngClass]=\"{disabled: disabled}\">\n\t\t\t\t<ng-container *ngIf=\"selectedDates.length >= 2\">\n\t\t\t\t\t<span>{{getTranslation('daysSelected', selectedDates.length)}}</span>\n\t\t\t\t\t<span *ngIf=\"getSelectedMonths() === 1\">{{getTranslation('selectedInMonth', selectedDates[0])}}</span>\n\t\t\t\t</ng-container>\n\t\t\t\t<span *ngIf=\"selectedDates.length === 1\">{{getTranslation('selectedDate', selectedDates[0])}}</span>\n\t\t\t\t<span *ngIf=\"selectedDates.length === 0\" class=\"placeholderForMultipleSelection\">{{getTranslation('selectDays')}}</span>\n\t\t\t</div>\n\t\t\t<input\n\t\t\t\t#nativeInput\n\t\t\t\tmatInput\n\t\t\t\t[matDatepicker]=\"picker\"\n\t\t\t\t[matDatepickerFilter]=\"filterDates\"\n\t\t\t\t[(ngModel)]=\"valueForMaterialDatePicker\"\n\t\t\t\t(dateInput)=\"dateChanged($event)\"\n\t\t\t\t(input)=\"nativeValueChanged()\"\n\t\t\t\t[min]=\"minDateStartOfDay\"\n\t\t\t\t[max]=\"maxDateEndOfDay\"\n\t\t\t\t[placeholder]=\"getTranslation('placeholder')\"\n\t\t\t\t(click)=\"picker.open()\"\n\t\t\t\t(blur)=\"touchDate()\"\n\t\t\t\t[ngClass]=\"{inputForMultipleDays: multiple}\"\n\t\t\t>\n\t\t\t<mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n\t\t\t<mat-datepicker\n\t\t\t\t#picker\n\t\t\t\t[dateClass]=\"isSelected\"\n\t\t\t\t[startAt]=\"openPickerOnDate\"\n\t\t\t></mat-datepicker>\n\t\t</mat-form-field>\n\t</div>\n\t<div class=\"timeContainer\" *ngIf=\"showTimeInput\" [ngClass]=\"{disabled: disabled}\">\n\t\t<input maxlength=\"2\" placeholder=\"__\" [disabled]=\"disabled\" [(ngModel)]=\"hours\" (ngModelChange)=\"notifyNewDate()\" (blur)=\"formatTime(); touchHours()\">\n\t\t<div class=\"divider\">:</div>\n\t\t<input maxlength=\"2\" placeholder=\"__\" [disabled]=\"disabled\" [(ngModel)]=\"minutes\" (ngModelChange)=\"notifyNewDate()\" (blur)=\"formatTime(); touchMinutes()\">\n\t</div>\n\t<button *ngIf=\"clearable && !disabled\" class=\"clearButton\" (click)=\"resetToNull()\" [ngClass]=\"{withoutSpacing: !showTimeInput}\">×</button>\n</div>\n","import {Component, Host, Inject, InjectionToken, Input, Optional} from '@angular/core';\nimport {ControlContainer, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {format as dateFormat, parse} from 'date-fns';\nimport {MultipleValueAccessorBase} from '../value-accessor-base/multiple-value-accessor-base.component';\nimport {invalidDateKey} from '../../validators/dateValidator';\nimport {isNullOrUndefined, stringIsSetAndFilled} from '../../util/values';\nimport {FormElementComponent} from '../../form/form-element/form-element.component';\n\nexport const DATE_PICKER_TRANSLATIONS = new InjectionToken<any>('klp.form.date.translations');\n\n@Component({\n\tselector: 'klp-form-date-picker',\n\ttemplateUrl: './date-picker.component.html',\n\tstyleUrls: ['./date-picker.component.scss'],\n\tproviders: [{provide: NG_VALUE_ACCESSOR, useExisting: DatePickerComponent, multi: true}],\n})\nexport class DatePickerComponent extends MultipleValueAccessorBase<string | typeof invalidDateKey> {\n\t@Input() public minDate: Date = undefined;\n\t@Input() public maxDate: Date = undefined;\n\t@Input() public sameMonthOnly = false;\n\t@Input() public format = 'dd-MM-yyyy';\n\t@Input() public placeholder: string;\n\t@Input() public clearable = false;\n\n\tpublic dateValue: Date | Array<Date>;\n\n\tconstructor(\n\t\t@Host() @Optional() protected parent: FormElementComponent,\n\t\t@Host() @Optional() protected controlContainer: ControlContainer,\n\t\t@Inject(DATE_PICKER_TRANSLATIONS) @Optional() private translations: any,\n\t) {\n\t\tsuper(parent, controlContainer);\n\t}\n\n\twriteValue(value: string | Array<string> | typeof invalidDateKey): void {\n\t\tif (value === invalidDateKey) {\n\t\t\tsuper.writeValue(invalidDateKey);\n\t\t} else if (isNullOrUndefined(value)) {\n\t\t\tthis.dateValue = this.multiple ? [] : null;\n\t\t\tsuper.writeValue(this.multiple ? [] : null);\n\t\t} else {\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tthis.dateValue = value.map((e) => parse(e, 'yyyy-MM-dd', new Date()));\n\t\t\t} else {\n\t\t\t\tthis.dateValue = parse(value, 'yyyy-MM-dd', new Date());\n\t\t\t}\n\t\t\tsuper.writeValue(value);\n\t\t}\n\t}\n\n\tdateChanged(value: Date | Array<Date> | typeof invalidDateKey): void {\n\t\tif (value === invalidDateKey) {\n\t\t\tthis.setInnerValueAndNotify(invalidDateKey);\n\t\t} else if (isNullOrUndefined(value)) {\n\t\t\tthis.dateValue = this.multiple ? [] : null;\n\t\t\tthis.setInnerValueAndNotify(this.multiple ? [] : null);\n\t\t} else {\n\t\t\tthis.dateValue = value;\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tthis.setInnerValueAndNotify(value.map((e) => dateFormat(e, 'yyyy-MM-dd')));\n\t\t\t} else {\n\t\t\t\tthis.setInnerValueAndNotify(dateFormat(value, 'yyyy-MM-dd'));\n\t\t\t}\n\t\t}\n\t}\n\n\tgetDefaultTranslation(key: string): (x: any) => string {\n\t\tswitch (key) {\n\t\t\tcase 'placeholder':\n\t\t\t\treturn () => 'Select date';\n\t\t}\n\t}\n\n\tgetTranslation(key: string, params: any = null): string {\n\t\tif (key === 'placeholder' && this.multiple) {\n\t\t\treturn '';\n\t\t}\n\t\tif (key === 'placeholder' && stringIsSetAndFilled(this.placeholder)) {\n\t\t\treturn this.placeholder;\n\t\t}\n\t\treturn this.translations?.[key]?.(params) ?? this.getDefaultTranslation(key)(params);\n\t}\n}\n","<div class=\"componentContainer\" [ngClass]=\"{showErrors: isInErrorState()}\">\n\t<klp-form-date-time-picker\n\t\t[multiple]=\"multiple\"\n\t\t[disabled]=\"disabled\"\n\t\t[(ngModel)]=\"dateValue\"\n\t\t(ngModelChange)=\"dateChanged($event)\"\n\t\t[minDate]=\"minDate\"\n\t\t[maxDate]=\"maxDate\"\n\t\t[sameMonthOnly]=\"sameMonthOnly\"\n\t\t[format]=\"format\"\n\t\t[placeholder]=\"getTranslation('placeholder')\"\n\t\t[clearable]=\"clearable\"\n\t\t[showTimeInput]=\"false\"\n\t\t(onTouch)=\"touch()\"\n\t></klp-form-date-time-picker>\n</div>\n","// material.module.ts\n\nimport { NgModule } from '@angular/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatLegacyFormFieldModule as MatFormFieldModule } from '@angular/material/legacy-form-field';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatLegacyInputModule as MatInputModule } from '@angular/material/legacy-input';\nimport { MatLegacyButtonModule as MatButtonModule } from '@angular/material/legacy-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 {Component, ElementRef, Input, ViewChild} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {MultipleValueAccessorBase} from '../value-accessor-base/multiple-value-accessor-base.component';\nimport {isValueSet} from '../../util/values';\nimport { arrayIsSetAndFilled } from '../../util/arrays';\n\n@Component({\n\tselector: 'klp-form-file-input',\n\ttemplateUrl: './file-input.component.html',\n\tstyleUrls: ['./file-input.component.scss'],\n\tproviders: [{provide: NG_VALUE_ACCESSOR, useExisting: FileInputComponent, multi: true}],\n})\nexport class FileInputComponent extends MultipleValueAccessorBase<File> {\n\t@Input() isLoading = false;\n\t@Input() clearable = false;\n\t@Input() onlyShowUploadButton = false;\n\t@Input() useFullParentSize = false;\n\t@ViewChild('nativeInputRef') nativeInputRef: ElementRef<HTMLInputElement>;\n\n\tpublic onChange(files: FileList): void {\n\t\tconst result = [];\n\t\tfor (let i = 0; i < files.length; i++) {\n\t\t\tresult.push(files.item(i));\n\t\t}\n\t\tthis.setInnerValueAndNotify(result);\n\t\t// to make sure we can select the same file again\n\t\tthis.nativeInputRef.nativeElement.value = null;\n\t}\n\n\tpublic getFileNames(): string {\n\t\tif (Array.isArray(this.innerValue)) {\n\t\t\treturn this.innerValue.map(e => e.name).join(', ');\n\t\t} else if (this.innerValue instanceof File) {\n\t\t\treturn this.innerValue.name;\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic shouldShowClearButton(): boolean {\n\t\tif (this.onlyShowUploadButton) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this.multiple) {\n\t\t\tif (arrayIsSetAndFilled(this.innerValue)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\tif (isValueSet(this.innerValue)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic uploadFileClicked(): void {\n\t\tthis.nativeInputRef.nativeElement.click();\n\t}\n}\n","<div class=\"componentContainer\" [ngClass]=\"{fullParentSize: useFullParentSize}\">\n\t<div class=\"buttonContainer\">\n\t\t<input\n\t\t\ttype=\"file\"\n\t\t\t#nativeInputRef\n\t\t\t(change)=\"onChange($event.target.files)\"\n\t\t\t[multiple]=\"multiple\"\n\t\t\t[disabled]=\"disabled\"\n\t\t>\n\t\t<klp-form-button class=\"uploadButton\" [isLoading]=\"isLoading\" (click)=\"uploadFileClicked()\">\n\t\t\tUpload a file\n\t\t</klp-form-button>\n\t</div>\n\t<div class=\"fileName\" *ngIf=\"!onlyShowUploadButton\">\n\t\t{{getFileNames()}}\n\t</div>\n\t<klp-form-button class=\"clearButton\" variant=\"white\" *ngIf=\"shouldShowClearButton()\" (click)=\"resetToNull()\">X</klp-form-button>\n</div>\n","import {Component} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {arrayIsSetAndFilled, splitArrayByCondition} from '../../util/arrays';\nimport {ValueAccessorBase} from '../value-accessor-base/value-accessor-base.component';\n\n@Component({\n\tselector: 'klp-form-sortable-grouped-items',\n\ttemplateUrl: './sortable-grouped-items.component.html',\n\tstyleUrls: ['./sortable-grouped-items.component.scss'],\n\tproviders: [{provide: NG_VALUE_ACCESSOR, useExisting: SortableGroupedItemsComponent, multi: true}],\n})\nexport class SortableGroupedItemsComponent<T> extends ValueAccessorBase<Array<Array<T>>> {\n\tpublic items: Array<T | string>;\n\treloader = true; // sortable items doesnt correctly update, so we have this boolean that flips to rerender the sortable items comp\n\n\twriteValue(value: Array<Array<T>>): void {\n\t\tsuper.writeValue(value);\n\t\tthis.reloader = false;\n\t\tsetTimeout(() => {\n\t\t\tif (arrayIsSetAndFilled(value)) {\n\t\t\t\tthis.items = value.flatMap(e => [...e, '']);\n\t\t\t} else {\n\t\t\t\tthis.items = [];\n\t\t\t}\n\t\t\tthis.reloader = true;\n\t\t});\n\t}\n\n\tpublic onItemsRearranged(value: Array<T | string>): void {\n\t\tconst result: Array<Array<T>> = splitArrayByCondition(value, e => e === '').filter(arrayIsSetAndFilled) as any;\n\t\tthis.setInnerValueAndNotify(result);\n\t\tthis.reloader = false;\n\t\tsetTimeout(() => {\n\t\t\tthis.items = [...this.items, ''].filter((e, i) => {\n\t\t\t\tif (i === 0 && e === '') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (e === '' && this.items[i - 1] === '') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t});\n\t\t\tthis.reloader = true;\n\t\t});\n\t}\n}\n","<ng-container *ngIf=\"reloader\">\n\t<klp-form-sortable-items\n\t\t[(ngModel)]=\"items\"\n\t\t(ngModelChange)=\"onItemsRearranged($event)\"\n\t>\n\t\t<ng-template let-item=\"item\">\n\t\t\t<div>{{item}}</div>\n\t\t</ng-template>\n\t</klp-form-sortable-items>\n</ng-container>\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport const invalidTimeKey = '--invalid_time--';\n\nexport function timeValidator(control: AbstractControl): ValidationErrors | null {\n\tconst invalid = control.value === invalidTimeKey;\n\treturn invalid ? { date: control.value } : null;\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';\nimport {stringIsSetAndFilled} from '../../util/values';\nimport {invalidTimeKey} from '../../validators/timeValidator';\n\n\n@Component({\n\tselector: 'klp-form-hour-minute-input',\n\ttemplateUrl: './hour-minute-input.component.html',\n\tstyleUrls: ['./hour-minute-input.component.scss'],\n\tproviders: [{provide: NG_VALUE_ACCESSOR, useExisting: HourMinuteInputComponent, multi: true}],\n})\nexport class HourMinuteInputComponent extends ValueAccessorBase<number | typeof invalidTimeKey> {\n\tpublic hours: string; // string because it's a text input\n\tpublic minutes: string; // string because it's a text input\n\n\t@Input() placeholders: Array<string> = ['hour', 'min'];\n\n\tprivate hoursTouched = false;\n\tprivate minutesTouched = false;\n\n\tformatHours(): void {\n\t\tif (!stringIsSetAndFilled(this.hours)) {\n\t\t\tthis.hours = '0';\n\t\t}\n\t}\n\n\tformatMinutes(): void {\n\t\tif (!stringIsSetAndFilled(this.minutes)) {\n\t\t\tthis.minutes = '0';\n\t\t}\n\t}\n\n\tformatTime(): void {\n\t\tif (Number.isFinite(Number(this.hours)) && this.hours.length === 1) {\n\t\t\tthis.hours = '0' + this.hours;\n\t\t}\n\t\tif (Number.isFinite(Number(this.minutes)) && this.minutes.length === 1) {\n\t\t\tthis.minutes = '0' + this.minutes;\n\t\t}\n\t}\n\n\twriteValue(value: number | typeof invalidTimeKey): void {\n\t\tif (Number.isFinite(value)) {\n\t\t\tthis.hours = Math.floor(value as number / 60) + '';\n\t\t\tthis.minutes = value as number % 60 + '';\n\t\t\tthis.formatTime();\n\t\t\tsuper.writeValue(value);\n\t\t} else {\n\t\t\tthis.hours = '';\n\t\t\tthis.minutes = '';\n\t\t\tsuper.writeValue(invalidTimeKey);\n\t\t}\n\t}\n\n\tnotifyNewTime(): void {\n\t\tconst parsedHours = Number(this.hours);\n\t\tconst parsedMinutes = Number(this.minutes);\n\n\t\t// when all inputs are empty\n\t\tif (!stringIsSetAndFilled(this.hours) && !stringIsSetAndFilled(this.minutes)) {\n\t\t\tthis.setInnerValueAndNotify(null);\n\t\t\treturn;\n\t\t}\n\t\t// if we have valid time\n\t\tif (\n\t\t\tNumber.isFinite(parsedHours) &&\n\t\t\tparsedHours >= 0 &&\n\t\t\tparsedHours <= 9999 &&\n\t\t\tNumber.isFinite(parsedMinutes) &&\n\t\t\tparsedMinutes >= 0 &&\n\t\t\tparsedMinutes <= 59\n\t\t) {\n\t\t\tthis.setInnerValueAndNotify(parsedHours * 60 + parsedMinutes);\n\t\t\treturn;\n\t\t}\n\t\t// all other cases, we are not in a valid state\n\t\tthis.setInnerValueAndNotify(invalidTimeKey);\n\t}\n\n\ttouchHours(): void {\n\t\tthis.hoursTouched = true;\n\t\tthis.determineAllTouched();\n\t}\n\n\ttouchMinutes(): void {\n\t\tthis.minutesTouched = true;\n\t\tthis.determineAllTouched();\n\t}\n\n\tdetermineAllTouched(): void {\n\t\tif (this.hoursTouched && this.minutesTouched) {\n\t\t\tthis.touch();\n\t\t}\n\t}\n}\n","<div class=\"componentContainer\" [ngClass]=\"{disabled: disabled}\">\n\t<input class=\"hourInput\" maxlength=\"4\" [placeholder]=\"placeholders[0]\" [disabled]=\"disabled\" [(ngModel)]=\"hours\" (blur)=\"formatHours(); formatTime(); touchHours(); notifyNewTime()\" (ngModelChange)=\"notifyNewTime()\" #nativeInputRef>\n\t<div class=\"divider\">:</div>\n\t<input maxlength=\"2\" [placeholder]=\"placeholders[1]\" [disabled]=\"disabled\" [(ngModel)]=\"minutes\" (blur)=\"formatMinutes(); formatTime(); touchMinutes(); notifyNewTime()\" (ngModelChange)=\"notifyNewTime()\">\n</div>\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\nexport enum Orientation {\n\tCOLUMN = 'column',\n\tROW = 'row'\n}\nexport type RadioOptions = Array<RadioOption>;\nexport type RadioOption = {\n\tid: any;\n\tname: string;\n};\n\n\n@Component({\n\tselector: 'klp-form-radio',\n\ttemplateUrl: './radio.component.html',\n\tstyleUrls: ['./radio.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: RadioComponent, multi: true }],\n})\nexport class RadioComponent extends ValueAccessorBase<string>{\n\t@Input() options: RadioOptions;\n\t@Input() orientation: Orientation = Orientation.ROW;\n\t@Input() variant: 'classic' | 'button' = 'classic';\n\tpublic Orientation = Orientation;\n}\n\n","<div class=\"componentContainer\" [ngClass]=\"{'verticallyOriented': orientation === Orientation.COLUMN, 'horizontallyOriented': orientation === Orientation.ROW}\">\n\t<ng-container *ngFor=\"let option of options\">\n\t\t<button class=\"optionContainer\"\n\t\t\t[ngClass]=\"{classic: variant === 'classic', button: variant === 'button', isSelected: innerValue === option.id}\"\n\t\t\t(click)=\"setInnerValueAndNotify(option.id)\"\n\t\t>\n\t\t\t<div class=\"selectedRadioBtnContainer\" *ngIf=\"variant === 'classic'\">\n\t\t\t\t<div class=\"selected\" *ngIf=\"innerValue === option.id\"></div>\n\t\t\t</div>\n\t\t\t<div>{{option.name}}</div>\n\t\t</button>\n\t</ng-container>\n</div>\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 {KlpSelectOptionTemplateDirective, SelectComponent} from './elements/select/select.component';\nimport {SelectFooterComponent} from './elements/select/select-footer/select-footer.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, SubFormDirective} from './form/form.component';\nimport { SortablejsModule } from '@dustfoundation/ngx-sortablejs';\nimport {NgSelectModule} from '@ng-select/ng-select';\nimport {DatePickerComponent} from './elements/date-picker/date-picker.component';\nimport {DateTimePickerComponent} from './elements/date-time-picker/date-time-picker.component';\nimport {MaterialModule} from './material.module';\nimport {MultipleValueAccessorBase} from './elements/value-accessor-base/multiple-value-accessor-base.component';\nimport {FileInputComponent} from './elements/file-input/file-input.component';\nimport {SortableGroupedItemsComponent} from './elements/sortable-grouped-items/sortable-grouped-items.component';\nimport {HourMinuteInputComponent} from './elements/hour-minute-input/hour-minute-input.component';\nimport {RadioComponent} from './elements/radio/radio.component';\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\tMultipleValueAccessorBase,\n\t\tButtonComponent,\n\t\tCheckboxComponent,\n\t\tDatePickerComponent,\n\t\tDateTimePickerComponent,\n\t\tEmailInputComponent,\n\t\tLoadingIndicatorComponent,\n\t\tNumberInputComponent,\n\t\tPasswordFieldComponent,\n\t\tSelectComponent,\n\t\tKlpSelectOptionTemplateDirective,\n\t\tSelectFooterComponent,\n\t\tSortableItemsComponent,\n\t\tSortableGroupedItemsComponent,\n\t\tTextInputComponent,\n\t\tToggleComponent,\n\t\tFileInputComponent,\n\t\tFormCaptionComponent,\n\t\tFormElementComponent,\n\t\tFormErrorComponent,\n\t\tFormSubmitButtonComponent,\n\t\tFormComponent,\n\t\tSubFormDirective,\n\t\tHourMinuteInputComponent,\n\t\tRadioComponent,\n\t],\n\texports: [\n\t\tValueAccessorBase,\n\t\tMultipleValueAccessorBase,\n\t\tButtonComponent,\n\t\tDatePickerComponent,\n\t\tDateTimePickerComponent,\n\t\tCheckboxComponent,\n\t\tEmailInputComponent,\n\t\tLoadingIndicatorComponent,\n\t\tNumberInputComponent,\n\t\tPasswordFieldComponent,\n\t\tSelectComponent,\n\t\tKlpSelectOptionTemplateDirective,\n\t\tSelectFooterComponent,\n\t\tSortableItemsComponent,\n\t\tSortableGroupedItemsComponent,\n\t\tTextInputComponent,\n\t\tToggleComponent,\n\t\tFileInputComponent,\n\t\tFormCaptionComponent,\n\t\tFormElementComponent,\n\t\tFormErrorComponent,\n\t\tFormSubmitButtonComponent,\n\t\tFormComponent,\n\t\tSubFormDirective,\n\t\tHourMinuteInputComponent,\n\t\tRadioComponent,\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/radio/radio.component';\nexport * from './lib/elements/date-picker/date-picker.component';\nexport * from './lib/elements/date-time-picker/date-time-picker.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-footer/select-footer.component';\nexport * from './lib/elements/select/select.component';\nexport * from './lib/elements/sortable-items/sortable-items.component';\nexport * from './lib/elements/sortable-grouped-items/sortable-grouped-items.component';\nexport * from './lib/elements/text-input/text-input.component';\nexport * from './lib/elements/toggle/toggle.component';\nexport * from './lib/elements/file-input/file-input.component';\nexport * from './lib/elements/hour-minute-input/hour-minute-input.component';\nexport * from './lib/elements/value-accessor-base/value-accessor-base.component';\nexport * from './lib/elements/value-accessor-base/multiple-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"],"names":["i1","i2","i1.FormElementComponent","i2.LoadingIndicatorComponent","i3","i1.FormComponent","i3.ButtonComponent","formatDate","i4","dateFormat","i4.DateTimePickerComponent","MatFormFieldModule","MatInputModule","MatButtonModule","i2.ButtonComponent","i3.SortableItemsComponent"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import * as i0 from "@angular/core";
2
+ export type ButtonVariant = 'white' | 'greenFilled' | 'greenOutlined' | 'greenLink' | 'contextMenuItem' | 'redFilled' | 'redOutlined' | 'orangeFilled';
2
3
  export declare class ButtonComponent {
3
- variant: 'white' | 'greenFilled' | 'greenOutlined' | 'greenLink' | 'contextMenuItem' | 'redFilled' | 'redOutlined' | 'orangeFilled';
4
+ variant: ButtonVariant;
4
5
  size: 'small' | 'medium' | 'large';
5
6
  fullWidth: boolean;
6
7
  hasBorder: boolean;
@@ -61,6 +61,7 @@ export declare class SelectComponent extends ValueAccessorBase<string | string[]
61
61
  private determineDropdownPosition;
62
62
  private isLimitingContainer;
63
63
  focus: () => void;
64
+ close: () => void;
64
65
  onClose(): void;
65
66
  static ɵfac: i0.ɵɵFactoryDeclaration<SelectComponent, [{ optional: true; host: true; }, { optional: true; host: true; }, { optional: true; }, null]>;
66
67
  static ɵcmp: i0.ɵɵComponentDeclaration<SelectComponent, "klp-form-select", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "prefix": { "alias": "prefix"; "required": false; }; "orientation": { "alias": "orientation"; "required": false; }; "options": { "alias": "options"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "multipleDisplayedAsAmount": { "alias": "multipleDisplayedAsAmount"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "truncateOptions": { "alias": "truncateOptions"; "required": false; }; "withSeparatingLine": { "alias": "withSeparatingLine"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "dropdownPosition": { "alias": "dropdownPosition"; "required": false; }; "customSearchFn": { "alias": "customSearchFn"; "required": false; }; "footerElement": { "alias": "footerElement"; "required": false; }; }, { "onSearch": "onSearch"; "onEndReached": "onEndReached"; "onOpened": "onOpened"; "onClosed": "onClosed"; "onBlur": "onBlur"; "onClear": "onClear"; }, ["customOptionTpl"], never, false, never>;
@@ -1,10 +1,12 @@
1
1
  import { FormComponent } from '../form.component';
2
+ import { ButtonVariant } from '../../elements/button/button.component';
2
3
  import * as i0 from "@angular/core";
4
+ export type SubmitButtonVariant = Extract<ButtonVariant, 'greenFilled' | 'redFilled' | 'greenOutlined' | 'white'>;
3
5
  export declare class FormSubmitButtonComponent {
4
6
  private parentForm;
5
7
  isLoading: boolean;
6
8
  fullWidth: boolean;
7
- variant: 'greenFilled' | 'redFilled' | 'greenOutlined';
9
+ variant: SubmitButtonVariant;
8
10
  before: () => Promise<any>;
9
11
  after: () => Promise<any>;
10
12
  submitCallback: (renderedAndEnabledValues: object, renderedButDisabledValues: object) => Promise<any>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@klippa/ngx-enhancy-forms",
3
- "version": "16.7.0",
3
+ "version": "16.7.2",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },