ngx-ode-ui 4.8.0-dev.0develop-b2school.13 → 4.8.0-dev.0develop-b2school.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,7 @@
1
- import { OdeComponent } from 'ngx-ode-core';
2
1
  import { Component, EventEmitter, forwardRef, Input, Output, ViewChild } from '@angular/core';
2
+ import { OdeComponent } from 'ngx-ode-core';
3
+ import { fromEvent } from 'rxjs';
4
+ import { debounceTime } from 'rxjs/operators';
3
5
  import { NG_VALUE_ACCESSOR, NgModel } from '@angular/forms';
4
6
  import Flatpickr from 'flatpickr';
5
7
  import French from 'flatpickr/dist/l10n/fr.js';
@@ -28,6 +30,7 @@ export class DatepickerComponent extends OdeComponent {
28
30
  this.changeDate = new EventEmitter();
29
31
  this.onChangeCallback = NOOP;
30
32
  this.onTouchedCallback = NOOP;
33
+ this.onInputChangeObserver = null;
31
34
  }
32
35
  get value() {
33
36
  return this.innerValue;
@@ -76,28 +79,48 @@ export class DatepickerComponent extends OdeComponent {
76
79
  altInput: !this.disabled,
77
80
  altFormat: 'd/m/Y',
78
81
  dateFormat: 'Y-m-d',
79
- allowInput: false,
82
+ allowInput: true,
80
83
  enableTime: this.enableTime,
81
84
  minDate: this.minDate,
82
85
  maxDate: this.maxDate,
83
86
  clickOpens: false,
84
87
  wrap: true,
85
- locale: datePickerLocale
88
+ locale: datePickerLocale,
89
+ onChange: (selectedDates, dateStr) => {
90
+ this.value = dateStr;
91
+ },
92
+ onClose: () => {
93
+ this.onTouchedCallback();
94
+ }
86
95
  };
87
96
  this.datePickerInst = new Flatpickr(this.datePickerElement.nativeElement, options);
88
97
  if (!this.disabled) {
98
+ // Add click handler for the alt input
89
99
  this.datePickerInst.altInput.addEventListener('click', e => {
90
100
  if (!this.readonly) {
91
101
  this.datePickerInst.toggle();
92
102
  }
93
103
  });
104
+ // Add input handler for manual entry with debounce
105
+ this.onInputChangeObserver = fromEvent(this.datePickerInst.altInput, 'input')
106
+ .pipe(debounceTime(300))
107
+ .subscribe(() => {
108
+ // when user input a date manually, we try to parse it and set it as selected date
109
+ const inputDate = this.datePickerInst.parseDate(this.datePickerInst.altInput.value, options.altFormat);
110
+ if (inputDate) {
111
+ this.datePickerInst.setDate(inputDate, true);
112
+ }
113
+ });
94
114
  }
95
- // Force updating the date input readonly attribute :
115
+ // Force updating the date input readonly attribute
96
116
  this.readonly = this._readonly;
97
117
  }
98
118
  ngOnDestroy() {
99
119
  super.ngOnDestroy();
100
120
  this.datePickerInst.destroy();
121
+ if (this.onInputChangeObserver) {
122
+ this.onInputChangeObserver.unsubscribe();
123
+ }
101
124
  }
102
125
  writeValue(value) {
103
126
  if (value !== this.innerValue && this.datePickerInst) {
@@ -145,4 +168,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImpor
145
168
  }], changeDate: [{
146
169
  type: Output
147
170
  }] } });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2RlLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLFVBQVUsRUFDckUsS0FBSyxFQUFhLE1BQU0sRUFBYSxTQUFTLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFbEYsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdsRixPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxNQUFNLE1BQU0sMkJBQTJCLENBQUM7Ozs7O0FBRS9DLGlCQUFpQjtBQUNqQixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUU7QUFDbEIsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQVE7SUFDcEQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xELEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQVFGLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxZQUFZO0lBRWpELFlBQW9CLFFBQW1CLEVBQ25CLGFBQTRCLEVBQ3BDLFFBQWtCO1FBQ2QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBSFosYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtR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LENBQUUsbUNBQW1DLENBQUUscVFBd0N2QyxPQUFPLHVFQy9EdEIsc2lCQUtBOzJGRG9CYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0ksaUJBQWlCLGFBR2hCLENBQUUsbUNBQW1DLENBQUU7bUpBZ0NsRCxpQkFBaUI7c0JBRGhCLFNBQVM7dUJBQUMsbUJBQW1CO2dCQUk5QixZQUFZO3NCQURYLFNBQVM7dUJBQUMsVUFBVTtnQkFPckIsS0FBSztzQkFESixTQUFTO3VCQUFDLE9BQU87Z0JBSWxCLFFBQVE7c0JBRFAsS0FBSztnQkFJRixRQUFRO3NCQURYLEtBQUs7Z0JBZU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9kZUNvbXBvbmVudCB9IGZyb20gJ25neC1vZGUtY29yZSc7XG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZixcbiAgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBSZW5kZXJlcjIsIFZpZXdDaGlsZCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOZ01vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge0xhYmVsc1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xhYmVscy5zZXJ2aWNlJztcbmltcG9ydCBGbGF0cGlja3IgZnJvbSAnZmxhdHBpY2tyJztcbmltcG9ydCBGcmVuY2ggZnJvbSAnZmxhdHBpY2tyL2Rpc3QvbDEwbi9mci5qcyc7XG5cbi8vIGFjY2VzcyBuZ21vZGVsXG5jb25zdCBOT09QID0gKCkgPT4ge1xufTtcbmV4cG9ydCBjb25zdCBDVVNUT01fSU5QVVRfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVwaWNrZXJDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ29kZS1kYXRlLXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RhdGVwaWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFsgQ1VTVE9NX0lOUFVUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1IgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlcGlja2VyQ29tcG9uZW50IGV4dGVuZHMgT2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBsYWJlbHNTZXJ2aWNlOiBMYWJlbHNTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICAgICAgICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyVmFsdWU7XG4gICAgfVxuXG4gICAgc2V0IHZhbHVlKHY6IGFueSkge1xuICAgICAgICBsZXQgaW5pdCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5pbm5lclZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGluaXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2ICE9PSB0aGlzLmlubmVyVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHY7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodik7XG4gICAgICAgICAgICBpZiAoIWluaXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURhdGUuZW1pdCh2KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbm5lclZhbHVlOiBhbnkgPSAnJztcblxuICAgIEBWaWV3Q2hpbGQoJ2RhdGVQaWNrZXJFbGVtZW50JylcbiAgICBkYXRlUGlja2VyRWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ2lucHV0UmVmJylcbiAgICBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICAvLyBpbnN0YW5jZSBmbGF0cGlja3JcbiAgICBwcml2YXRlIGRhdGVQaWNrZXJJbnN0OiBGbGF0cGlja3I7XG5cbiAgICBAVmlld0NoaWxkKE5nTW9kZWwpXG4gICAgbW9kZWw6IE5nTW9kZWw7XG5cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCByZWFkb25seSggdmFsOmJvb2xlYW4gKSB7XG4gICAgICAgIHRoaXMuX3JlYWRvbmx5ID0gdmFsO1xuICAgICAgICBpZiggdGhpcy5kYXRlUGlja2VySW5zdCAmJiB0aGlzLmRhdGVQaWNrZXJJbnN0LmFsdElucHV0ICkge1xuICAgICAgICAgICAgLy8gQXBwbHkgdGhlIHJlYWRvbmx5IGF0dHJpYnV0ZSBhZGRpdGlvbi9yZW1vdmFsIHRvIHRoZSB2aXNpYmxlIGlucHV0ICh3cmFwcGVkKVxuICAgICAgICAgICAgaWYoIHZhbCApIHRoaXMuZGF0ZVBpY2tlckluc3QuYWx0SW5wdXQuc2V0QXR0cmlidXRlKCdyZWFkb25seScsIFwiXCIpO1xuICAgICAgICAgICAgZWxzZSAgICAgIHRoaXMuZGF0ZVBpY2tlckluc3QuYWx0SW5wdXQucmVtb3ZlQXR0cmlidXRlKCdyZWFkb25seScpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCByZWFkb25seSgpOmJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVhZG9ubHk7XG4gICAgfVxuICAgIF9yZWFkb25seSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBlbmFibGVUaW1lID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHBsYWNlaG9sZGVyID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIG1pbkRhdGU7XG5cbiAgICBASW5wdXQoKVxuICAgIG1heERhdGU7XG5cbiAgICBAT3V0cHV0KClcbiAgICBjaGFuZ2VEYXRlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgcHJpdmF0ZSBvbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gTk9PUDtcbiAgICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gTk9PUDtcblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIC8vIGFkZCBhdHRyIGRhdGEtaW5wdXQsIG1hbmRhdG9yeSBmb3IgdGhlIHBpY2tlciB0byB3b3JrIGluIHdyYXAgbW9kZVxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnZGF0YS1pbnB1dCcsICcnKTtcblxuICAgICAgICAvLyBkaXNhYmxlZCBjYXNlXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkID09PSB0cnVlKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGVsLmNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmF2aWdhdG9yTGFuZ3VhZ2UgPSBuYXZpZ2F0b3IubGFuZ3VhZ2Uuc3BsaXQoJy0nKVswXTtcbiAgICAgICAgbGV0IGRhdGVQaWNrZXJMb2NhbGUgPSB7fTtcbiAgICAgICAgaWYgKG5hdmlnYXRvckxhbmd1YWdlID09PSAnZnInKSB7XG4gICAgICAgICAgICBkYXRlUGlja2VyTG9jYWxlID0gRnJlbmNoLmZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gb3B0aW9ucyBmb3IgdGhlIGZsYXRwaWNrciBpbnN0YW5jZVxuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgYWx0SW5wdXQ6ICF0aGlzLmRpc2FibGVkLFxuICAgICAgICAgICAgYWx0Rm9ybWF0OiAnZC9tL1knLCAvLyBkYXRlIGZvcm1hdCBkaXNwbGF5ZWQgdG8gdXNlclxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogJ1ktbS1kJywgLy8gZGF0ZSBmb3JtYXQgc2VudCB0byBzZXJ2ZXJcbiAgICAgICAgICAgIGFsbG93SW5wdXQ6IGZhbHNlLFxuICAgICAgICAgICAgZW5hYmxlVGltZTogdGhpcy5lbmFibGVUaW1lLFxuICAgICAgICAgICAgbWluRGF0ZTogdGhpcy5taW5EYXRlLFxuICAgICAgICAgICAgbWF4RGF0ZTogdGhpcy5tYXhEYXRlLFxuICAgICAgICAgICAgY2xpY2tPcGVuczogZmFsc2UsXG4gICAgICAgICAgICB3cmFwOiB0cnVlLCAvLyB0byBhZGQgaW5wdXQgZGVjb3JhdGlvbiAoY2FsZW5kYXIgaWNvbiBhbmQgZGVsZXRlIGljb24pXG4gICAgICAgICAgICBsb2NhbGU6IGRhdGVQaWNrZXJMb2NhbGVcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmRhdGVQaWNrZXJJbnN0ID0gbmV3IEZsYXRwaWNrcih0aGlzLmRhdGVQaWNrZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIG9wdGlvbnMpO1xuICAgICAgICBpZiggIXRoaXMuZGlzYWJsZWQgKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJJbnN0LmFsdElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYoICF0aGlzLnJlYWRvbmx5ICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJJbnN0LnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRm9yY2UgdXBkYXRpbmcgdGhlIGRhdGUgaW5wdXQgcmVhZG9ubHkgYXR0cmlidXRlIDpcbiAgICAgICAgdGhpcy5yZWFkb25seSA9IHRoaXMuX3JlYWRvbmx5O1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJJbnN0LmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmlubmVyVmFsdWUgJiYgdGhpcy5kYXRlUGlja2VySW5zdCkge1xuICAgICAgICAgICAgdGhpcy5pbm5lclZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJJbnN0LnNldERhdGUodmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICBsYWJlbHMobGFiZWwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFiZWxzU2VydmljZS5nZXRMYWJlbChsYWJlbCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsYXRwaWNrclwiICNkYXRlUGlja2VyRWxlbWVudD5cbiAgPGlucHV0IHR5cGU9XCJkYXRlXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtuZ0NsYXNzXT1cInsgJ2N1cnNvci1kZWZhdWx0JzogZGlzYWJsZWQgfVwiIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIgfX1cIiAjaW5wdXRSZWY+XG4gIDxhICpuZ0lmPVwiIWRpc2FibGVkXCIgW2NsYXNzLmhpZGRlbl09XCJyZWFkb25seVwiIGRhdGEtdG9nZ2xlIFt0aXRsZV09XCJsYWJlbHMoJ2RhdGVwaWNrZXIub3BlbicpXCI+PGkgY2xhc3M9XCJmYSBmYS1jYWxlbmRhciBvcGVuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYT5cbiAgPGEgKm5nSWY9XCIhZGlzYWJsZWRcIiBbY2xhc3MuaGlkZGVuXT1cInJlYWRvbmx5XCIgZGF0YS1jbGVhciBbdGl0bGVdPVwibGFiZWxzKCdkYXRlcGlja2VyLmRlbGV0ZScpXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lcyBkZWxldGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9hPlxuPC9kaXY+XG4iXX0=
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2RlLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9kZS11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDWSxTQUFTLEVBQWMsWUFBWSxFQUFFLFVBQVUsRUFFOUQsS0FBSyxFQUFhLE1BQU0sRUFBYSxTQUFTLEVBQ2pELE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRixPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxNQUFNLE1BQU0sMkJBQTJCLENBQUM7Ozs7O0FBRy9DLGlCQUFpQjtBQUNqQixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUU7QUFDbEIsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQVE7SUFDcEQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xELEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQVFGLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxZQUFZO0lBRWpELFlBQW9CLFFBQW1CLEVBQ25CLGFBQTRCLEVBQ3BDLFFBQWtC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QUFTO3VCQUFDLG1CQUFtQjtnQkFJOUIsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLFVBQVU7Z0JBT3JCLEtBQUs7c0JBREosU0FBUzt1QkFBQyxPQUFPO2dCQUlsQixRQUFRO3NCQURQLEtBQUs7Z0JBSUYsUUFBUTtzQkFEWCxLQUFLO2dCQWVOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixVQUFVO3NCQURULE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPZGVDb21wb25lbnQgfSBmcm9tICduZ3gtb2RlLWNvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgTmdNb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IEZsYXRwaWNrciBmcm9tICdmbGF0cGlja3InO1xuaW1wb3J0IEZyZW5jaCBmcm9tICdmbGF0cGlja3IvZGlzdC9sMTBuL2ZyLmpzJztcbmltcG9ydCB7IExhYmVsc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sYWJlbHMuc2VydmljZSc7XG5cbi8vIGFjY2VzcyBuZ21vZGVsXG5jb25zdCBOT09QID0gKCkgPT4ge1xufTtcbmV4cG9ydCBjb25zdCBDVVNUT01fSU5QVVRfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVwaWNrZXJDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ29kZS1kYXRlLXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RhdGVwaWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFsgQ1VTVE9NX0lOUFVUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1IgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlcGlja2VyQ29tcG9uZW50IGV4dGVuZHMgT2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBsYWJlbHNTZXJ2aWNlOiBMYWJlbHNTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICAgICAgICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyVmFsdWU7XG4gICAgfVxuXG4gICAgc2V0IHZhbHVlKHY6IGFueSkge1xuICAgICAgICBsZXQgaW5pdCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5pbm5lclZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGluaXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2ICE9PSB0aGlzLmlubmVyVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHY7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodik7XG4gICAgICAgICAgICBpZiAoIWluaXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURhdGUuZW1pdCh2KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbm5lclZhbHVlOiBhbnkgPSAnJztcblxuICAgIEBWaWV3Q2hpbGQoJ2RhdGVQaWNrZXJFbGVtZW50JylcbiAgICBkYXRlUGlja2VyRWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ2lucHV0UmVmJylcbiAgICBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICAvLyBpbnN0YW5jZSBmbGF0cGlja3JcbiAgICBwcml2YXRlIGRhdGVQaWNrZXJJbnN0OiBGbGF0cGlja3I7XG5cbiAgICBAVmlld0NoaWxkKE5nTW9kZWwpXG4gICAgbW9kZWw6IE5nTW9kZWw7XG5cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCByZWFkb25seSggdmFsOmJvb2xlYW4gKSB7XG4gICAgICAgIHRoaXMuX3JlYWRvbmx5ID0gdmFsO1xuICAgICAgICBpZiggdGhpcy5kYXRlUGlja2VySW5zdCAmJiB0aGlzLmRhdGVQaWNrZXJJbnN0LmFsdElucHV0ICkge1xuICAgICAgICAgICAgLy8gQXBwbHkgdGhlIHJlYWRvbmx5IGF0dHJpYnV0ZSBhZGRpdGlvbi9yZW1vdmFsIHRvIHRoZSB2aXNpYmxlIGlucHV0ICh3cmFwcGVkKVxuICAgICAgICAgICAgaWYoIHZhbCApIHRoaXMuZGF0ZVBpY2tlckluc3QuYWx0SW5wdXQuc2V0QXR0cmlidXRlKCdyZWFkb25seScsIFwiXCIpO1xuICAgICAgICAgICAgZWxzZSAgICAgIHRoaXMuZGF0ZVBpY2tlckluc3QuYWx0SW5wdXQucmVtb3ZlQXR0cmlidXRlKCdyZWFkb25seScpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCByZWFkb25seSgpOmJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVhZG9ubHk7XG4gICAgfVxuICAgIF9yZWFkb25seSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBlbmFibGVUaW1lID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHBsYWNlaG9sZGVyID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIG1pbkRhdGU7XG5cbiAgICBASW5wdXQoKVxuICAgIG1heERhdGU7XG5cbiAgICBAT3V0cHV0KClcbiAgICBjaGFuZ2VEYXRlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgcHJpdmF0ZSBvbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gTk9PUDtcbiAgICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gTk9PUDtcbiAgICBwcml2YXRlIG9uSW5wdXRDaGFuZ2VPYnNlcnZlciA9IG51bGw7XG4gICAgXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICAgICAgLy8gYWRkIGF0dHIgZGF0YS1pbnB1dCwgbWFuZGF0b3J5IGZvciB0aGUgcGlja2VyIHRvIHdvcmsgaW4gd3JhcCBtb2RlXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdkYXRhLWlucHV0JywgJycpO1xuXG4gICAgICAgIC8vIGRpc2FibGVkIGNhc2VcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZWwuY29udHJvbC5kaXNhYmxlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuYXZpZ2F0b3JMYW5ndWFnZSA9IG5hdmlnYXRvci5sYW5ndWFnZS5zcGxpdCgnLScpWzBdO1xuICAgICAgICBsZXQgZGF0ZVBpY2tlckxvY2FsZSA9IHt9O1xuICAgICAgICBpZiAobmF2aWdhdG9yTGFuZ3VhZ2UgPT09ICdmcicpIHtcbiAgICAgICAgICAgIGRhdGVQaWNrZXJMb2NhbGUgPSBGcmVuY2guZnI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBvcHRpb25zIGZvciB0aGUgZmxhdHBpY2tyIGluc3RhbmNlXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICBhbHRJbnB1dDogIXRoaXMuZGlzYWJsZWQsXG4gICAgICAgICAgICBhbHRGb3JtYXQ6ICdkL20vWScsIC8vIGRhdGUgZm9ybWF0IGRpc3BsYXllZCB0byB1c2VyXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiAnWS1tLWQnLCAvLyBkYXRlIGZvcm1hdCBzZW50IHRvIHNlcnZlclxuICAgICAgICAgICAgYWxsb3dJbnB1dDogdHJ1ZSwgLy8gQWxsb3cgbWFudWFsIGlucHV0XG4gICAgICAgICAgICBlbmFibGVUaW1lOiB0aGlzLmVuYWJsZVRpbWUsXG4gICAgICAgICAgICBtaW5EYXRlOiB0aGlzLm1pbkRhdGUsXG4gICAgICAgICAgICBtYXhEYXRlOiB0aGlzLm1heERhdGUsXG4gICAgICAgICAgICBjbGlja09wZW5zOiBmYWxzZSxcbiAgICAgICAgICAgIHdyYXA6IHRydWUsIC8vIHRvIGFkZCBpbnB1dCBkZWNvcmF0aW9uIChjYWxlbmRhciBpY29uIGFuZCBkZWxldGUgaWNvbilcbiAgICAgICAgICAgIGxvY2FsZTogZGF0ZVBpY2tlckxvY2FsZSxcbiAgICAgICAgICAgIG9uQ2hhbmdlOiAoc2VsZWN0ZWREYXRlcywgZGF0ZVN0cikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBkYXRlU3RyO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uQ2xvc2U6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5kYXRlUGlja2VySW5zdCA9IG5ldyBGbGF0cGlja3IodGhpcy5kYXRlUGlja2VyRWxlbWVudC5uYXRpdmVFbGVtZW50LCBvcHRpb25zKTtcbiAgICAgICAgXG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgLy8gQWRkIGNsaWNrIGhhbmRsZXIgZm9yIHRoZSBhbHQgaW5wdXRcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlckluc3QuYWx0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VySW5zdC50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gQWRkIGlucHV0IGhhbmRsZXIgZm9yIG1hbnVhbCBlbnRyeSB3aXRoIGRlYm91bmNlXG4gICAgICAgICAgICB0aGlzLm9uSW5wdXRDaGFuZ2VPYnNlcnZlciA9IGZyb21FdmVudCh0aGlzLmRhdGVQaWNrZXJJbnN0LmFsdElucHV0LCAnaW5wdXQnKVxuICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgzMDApKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHVzZXIgaW5wdXQgYSBkYXRlIG1hbnVhbGx5LCB3ZSB0cnkgdG8gcGFyc2UgaXQgYW5kIHNldCBpdCBhcyBzZWxlY3RlZCBkYXRlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0RGF0ZSA9IHRoaXMuZGF0ZVBpY2tlckluc3QucGFyc2VEYXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VySW5zdC5hbHRJbnB1dC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuYWx0Rm9ybWF0XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlckluc3Quc2V0RGF0ZShpbnB1dERhdGUsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3JjZSB1cGRhdGluZyB0aGUgZGF0ZSBpbnB1dCByZWFkb25seSBhdHRyaWJ1dGVcbiAgICAgICAgdGhpcy5yZWFkb25seSA9IHRoaXMuX3JlYWRvbmx5O1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJJbnN0LmRlc3Ryb3koKTtcbiAgICAgICAgaWYgKHRoaXMub25JbnB1dENoYW5nZU9ic2VydmVyKSB7XG4gICAgICAgICAgICB0aGlzLm9uSW5wdXRDaGFuZ2VPYnNlcnZlci51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5pbm5lclZhbHVlICYmIHRoaXMuZGF0ZVBpY2tlckluc3QpIHtcbiAgICAgICAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VySW5zdC5zZXREYXRlKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gICAgfVxuXG4gICAgbGFiZWxzKGxhYmVsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhYmVsc1NlcnZpY2UuZ2V0TGFiZWwobGFiZWwpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGF0cGlja3JcIiAjZGF0ZVBpY2tlckVsZW1lbnQ+XG4gIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIFsobmdNb2RlbCldPVwidmFsdWVcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbbmdDbGFzc109XCJ7ICdjdXJzb3ItZGVmYXVsdCc6IGRpc2FibGVkIH1cIiBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIH19XCIgI2lucHV0UmVmPlxuICA8YSAqbmdJZj1cIiFkaXNhYmxlZFwiIFtjbGFzcy5oaWRkZW5dPVwicmVhZG9ubHlcIiBkYXRhLXRvZ2dsZSBbdGl0bGVdPVwibGFiZWxzKCdkYXRlcGlja2VyLm9wZW4nKVwiPjxpIGNsYXNzPVwiZmEgZmEtY2FsZW5kYXIgb3BlblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+XG4gIDxhICpuZ0lmPVwiIWRpc2FibGVkXCIgW2NsYXNzLmhpZGRlbl09XCJyZWFkb25seVwiIGRhdGEtY2xlYXIgW3RpdGxlXT1cImxhYmVscygnZGF0ZXBpY2tlci5kZWxldGUnKVwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXMgZGVsZXRlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYT5cbjwvZGl2PlxuIl19
@@ -1,7 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, forwardRef, EventEmitter, Component, ViewChild, Input, Output, HostBinding, Directive, Pipe, TemplateRef, ContentChild, ChangeDetectionStrategy, HostListener, ContentChildren, Injector, NgModule } from '@angular/core';
3
- import { throwError, Observable, Subject } from 'rxjs';
3
+ import { throwError, Observable, Subject, fromEvent } from 'rxjs';
4
4
  import { OdeComponent } from 'ngx-ode-core';
5
+ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
5
6
  import * as i2 from '@angular/forms';
6
7
  import { NG_VALUE_ACCESSOR, NgModel, FormsModule } from '@angular/forms';
7
8
  import Flatpickr from 'flatpickr';
@@ -12,7 +13,6 @@ import * as i2$1 from 'ngx-ode-sijil';
12
13
  import { NgxOdeSijilModule } from 'ngx-ode-sijil';
13
14
  import * as i2$2 from 'ngx-infinite-scroll';
14
15
  import { InfiniteScrollModule } from 'ngx-infinite-scroll';
15
- import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
16
16
 
17
17
  class DynamicModuleImportsService {
18
18
  constructor() {
@@ -202,6 +202,7 @@ class DatepickerComponent extends OdeComponent {
202
202
  this.changeDate = new EventEmitter();
203
203
  this.onChangeCallback = NOOP;
204
204
  this.onTouchedCallback = NOOP;
205
+ this.onInputChangeObserver = null;
205
206
  }
206
207
  get value() {
207
208
  return this.innerValue;
@@ -250,28 +251,48 @@ class DatepickerComponent extends OdeComponent {
250
251
  altInput: !this.disabled,
251
252
  altFormat: 'd/m/Y',
252
253
  dateFormat: 'Y-m-d',
253
- allowInput: false,
254
+ allowInput: true,
254
255
  enableTime: this.enableTime,
255
256
  minDate: this.minDate,
256
257
  maxDate: this.maxDate,
257
258
  clickOpens: false,
258
259
  wrap: true,
259
- locale: datePickerLocale
260
+ locale: datePickerLocale,
261
+ onChange: (selectedDates, dateStr) => {
262
+ this.value = dateStr;
263
+ },
264
+ onClose: () => {
265
+ this.onTouchedCallback();
266
+ }
260
267
  };
261
268
  this.datePickerInst = new Flatpickr(this.datePickerElement.nativeElement, options);
262
269
  if (!this.disabled) {
270
+ // Add click handler for the alt input
263
271
  this.datePickerInst.altInput.addEventListener('click', e => {
264
272
  if (!this.readonly) {
265
273
  this.datePickerInst.toggle();
266
274
  }
267
275
  });
276
+ // Add input handler for manual entry with debounce
277
+ this.onInputChangeObserver = fromEvent(this.datePickerInst.altInput, 'input')
278
+ .pipe(debounceTime(300))
279
+ .subscribe(() => {
280
+ // when user input a date manually, we try to parse it and set it as selected date
281
+ const inputDate = this.datePickerInst.parseDate(this.datePickerInst.altInput.value, options.altFormat);
282
+ if (inputDate) {
283
+ this.datePickerInst.setDate(inputDate, true);
284
+ }
285
+ });
268
286
  }
269
- // Force updating the date input readonly attribute :
287
+ // Force updating the date input readonly attribute
270
288
  this.readonly = this._readonly;
271
289
  }
272
290
  ngOnDestroy() {
273
291
  super.ngOnDestroy();
274
292
  this.datePickerInst.destroy();
293
+ if (this.onInputChangeObserver) {
294
+ this.onInputChangeObserver.unsubscribe();
295
+ }
275
296
  }
276
297
  writeValue(value) {
277
298
  if (value !== this.innerValue && this.datePickerInst) {