ecabs-components 1.1.66 → 1.1.68

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.
@@ -23,6 +23,7 @@ export class EcabsTimeRangeInputV2Component extends EcabsElementBaseComponent {
23
23
  separatorLabel = 'to';
24
24
  startTimePlaceholder;
25
25
  endTimePlaceholder;
26
+ allowCrossMidnight = false;
26
27
  val;
27
28
  _timeFrom;
28
29
  _timeTo;
@@ -71,6 +72,9 @@ export class EcabsTimeRangeInputV2Component extends EcabsElementBaseComponent {
71
72
  this.control.valueChanges
72
73
  .pipe(takeUntilDestroyed(this.destroyRef))
73
74
  .subscribe(() => this.timeRangeValidator(this.control));
75
+ setTimeout(() => {
76
+ this.timeRangeValidator(this.control);
77
+ });
74
78
  }
75
79
  }
76
80
  onChange = () => { };
@@ -98,31 +102,35 @@ export class EcabsTimeRangeInputV2Component extends EcabsElementBaseComponent {
98
102
  }
99
103
  timeRangeValidator(control) {
100
104
  const required = control.hasValidator(Validators.required);
101
- if (control.value) {
102
- const { timeFrom, timeTo } = control.value;
103
- control.setErrors(null);
104
- if (required &&
105
- (!timeFrom || timeFrom?.length === 0) &&
106
- (!timeTo || timeTo?.length === 0)) {
107
- control.setErrors({ required: true });
108
- return;
109
- }
110
- if (!timeFrom && timeTo) {
111
- control.setErrors({ timeFromRangeRequired: true });
112
- return;
113
- }
114
- if (timeFrom && !timeTo) {
115
- control.setErrors({ timeToRangeRequired: true });
116
- return;
117
- }
118
- if (timeFrom > timeTo) {
119
- control.setErrors({ timeFromMoreThanTimeTo: true });
120
- return;
121
- }
105
+ if (!control.value && !required) {
106
+ return;
107
+ }
108
+ if (!control.value) {
109
+ control.setErrors({ required: true });
110
+ return;
111
+ }
112
+ const { timeFrom, timeTo } = control.value;
113
+ control.setErrors(null);
114
+ if (required &&
115
+ (!timeFrom || timeFrom?.length === 0) &&
116
+ (!timeTo || timeTo?.length === 0)) {
117
+ control.setErrors({ required: true });
118
+ }
119
+ else if (!timeFrom && timeTo) {
120
+ control.setErrors({ rangeFrom: true });
121
+ }
122
+ else if (timeFrom && !timeTo) {
123
+ control.setErrors({ rangeTo: true });
124
+ }
125
+ else if (timeFrom &&
126
+ timeTo &&
127
+ timeFrom > timeTo &&
128
+ !this.allowCrossMidnight) {
129
+ control.setErrors({ rangeOrder: true });
122
130
  }
123
131
  }
124
132
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsTimeRangeInputV2Component, deps: [{ token: i0.Injector }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
125
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsTimeRangeInputV2Component, selector: "ecabs-time-range-input-v2", inputs: { showCloseIcon: "showCloseIcon", listPlacement: "listPlacement", appendTo: "appendTo", min: "min", max: "max", showDayStart: "showDayStart", showDayEnd: "showDayEnd", addSecond: "addSecond", dayStartLabel: "dayStartLabel", dayEndLabel: "dayEndLabel", separatorLabel: "separatorLabel", startTimePlaceholder: "startTimePlaceholder", endTimePlaceholder: "endTimePlaceholder" }, providers: [
133
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsTimeRangeInputV2Component, selector: "ecabs-time-range-input-v2", inputs: { showCloseIcon: "showCloseIcon", listPlacement: "listPlacement", appendTo: "appendTo", min: "min", max: "max", showDayStart: "showDayStart", showDayEnd: "showDayEnd", addSecond: "addSecond", dayStartLabel: "dayStartLabel", dayEndLabel: "dayEndLabel", separatorLabel: "separatorLabel", startTimePlaceholder: "startTimePlaceholder", endTimePlaceholder: "endTimePlaceholder", allowCrossMidnight: "allowCrossMidnight" }, providers: [
126
134
  {
127
135
  provide: NG_VALUE_ACCESSOR,
128
136
  useExisting: forwardRef(() => EcabsTimeRangeInputV2Component),
@@ -165,5 +173,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
165
173
  type: Input
166
174
  }], endTimePlaceholder: [{
167
175
  type: Input
176
+ }], allowCrossMidnight: [{
177
+ type: Input
168
178
  }] } });
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtdGltZS1yYW5nZS1pbnB1dC12Mi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY2Ficy1jb21wb25lbnRzL3NyYy9saWIvZWNhYnMtdGltZS1yYW5nZS1pbnB1dC12Mi9lY2Ficy10aW1lLXJhbmdlLWlucHV0LXYyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy10aW1lLXJhbmdlLWlucHV0LXYyL2VjYWJzLXRpbWUtcmFuZ2UtaW5wdXQtdjIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxVQUFVLEVBRVYsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUVULFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8seUJBQXlCLE1BQU0sc0JBQXNCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sSUFBSSxhQUFhLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7O0FBY2xELE1BQU0sT0FBTyw4QkFDWCxTQUFRLHlCQUF5QjtJQTZGZDtJQUNBO0lBMUZuQixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBR3RCLGFBQWEsR0FBa0IsTUFBTSxDQUFDO0lBR3RDLFFBQVEsQ0FBVTtJQUdsQixHQUFHLENBQVU7SUFHYixHQUFHLENBQVU7SUFHYixZQUFZLEdBQUcsSUFBSSxDQUFDO0lBR3BCLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFHbkIsU0FBUyxHQUFHLElBQUksQ0FBQztJQUdqQixhQUFhLENBQVM7SUFHdEIsV0FBVyxDQUFTO0lBR3BCLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFHdEIsb0JBQW9C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OEIsb2JBUjlCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQztnQkFDN0QsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLGlEQzlCSCx3dkJBcUJ3Qjs7NEZEV1gsOEJBQThCO2tCQVoxQyxTQUFTOytCQUNFLDJCQUEyQixhQUcxQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwrQkFBK0IsQ0FBQzs0QkFDN0QsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7d0hBT0QsYUFBYTtzQkFEWixLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sR0FBRztzQkFERixLQUFLO2dCQUlOLEdBQUc7c0JBREYsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4sa0JBQWtCO3NCQURqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBEZXN0cm95UmVmLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgTmdDb250cm9sLFxyXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IEVjYWJzRWxlbWVudEJhc2VDb21wb25lbnQgZnJvbSAnLi4vYmFzZS9lbGVtZW50LWJhc2UnO1xyXG5pbXBvcnQgeyBMaXN0UGxhY2VtZW50IH0gZnJvbSAnLi4vYmFzZS9tb2RlbHMvdGltZXBpY2tlci5tb2RlbHMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IGlzRXF1YWwgYXMgbG9kYXNoSXNFcXVhbCB9IGZyb20gJ2xvZGFzaCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjYWJzLXRpbWUtcmFuZ2UtaW5wdXQtdjInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lY2Ficy10aW1lLXJhbmdlLWlucHV0LXYyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnZWNhYnMtdGltZS1yYW5nZS1pbnB1dC12Mi5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRWNhYnNUaW1lUmFuZ2VJbnB1dFYyQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFY2Fic1RpbWVSYW5nZUlucHV0VjJDb21wb25lbnRcclxuICBleHRlbmRzIEVjYWJzRWxlbWVudEJhc2VDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0XHJcbntcclxuICBASW5wdXQoKVxyXG4gIHNob3dDbG9zZUljb24gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBsaXN0UGxhY2VtZW50OiBMaXN0UGxhY2VtZW50ID0gJ2F1dG8nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGFwcGVuZFRvITogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG1pbiE6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBtYXghOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2hvd0RheVN0YXJ0ID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzaG93RGF5RW5kID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYWRkU2Vjb25kID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBkYXlTdGFydExhYmVsOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZGF5RW5kTGFiZWw6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBzZXBhcmF0b3JMYWJlbCA9ICd0byc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc3RhcnRUaW1lUGxhY2Vob2xkZXI6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBlbmRUaW1lUGxhY2Vob2xkZXI6IHN0cmluZztcclxuXHJcbiAgdmFsOiB7XHJcbiAgICB0aW1lRnJvbTogc3RyaW5nO1xyXG4gICAgdGltZVRvOiBzdHJpbmc7XHJcbiAgfTtcclxuXHJcbiAgX3RpbWVGcm9tOiBzdHJpbmc7XHJcbiAgX3RpbWVUbzogc3RyaW5nO1xyXG5cclxuICBnZXQgdmFsdWUoKToge1xyXG4gICAgdGltZUZyb206IHN0cmluZztcclxuICAgIHRpbWVUbzogc3RyaW5nO1xyXG4gIH0ge1xyXG4gICAgcmV0dXJuIHRoaXMudmFsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRpbWVGcm9tKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGltZUZyb207XHJcbiAgfVxyXG5cclxuICBnZXQgdGltZVRvKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGltZVRvO1xyXG4gIH1cclxuXHJcbiAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcclxuICBzZXQgdmFsdWUodmFsOiB7IHRpbWVGcm9tOiBzdHJpbmc7IHRpbWVUbzogc3RyaW5nIH0pIHtcclxuICAgIGlmICh0aGlzLnZhbCAhPT0gdmFsKSB7XHJcbiAgICAgIHRoaXMudmFsID0gdmFsO1xyXG4gICAgICB0aGlzLnRpbWVGcm9tID0gdmFsLnRpbWVGcm9tO1xyXG4gICAgICB0aGlzLnRpbWVUbyA9IHZhbC50aW1lVG87XHJcbiAgICAgIHRoaXMub25DaGFuZ2UodmFsKTtcclxuICAgICAgdGhpcy5vblRvdWNoKHZhbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL2VzbGludC1kaXNhYmxlLW5leHQtbGluZVxyXG4gIHNldCB0aW1lRnJvbSh2YWw6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuX3RpbWVGcm9tICE9PSB2YWwpIHtcclxuICAgICAgdGhpcy5fdGltZUZyb20gPSB2YWw7XHJcbiAgICAgIHRoaXMub25BcHBseSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcclxuICBzZXQgdGltZVRvKHZhbDogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5fdGltZVRvICE9PSB2YWwpIHtcclxuICAgICAgdGhpcy5fdGltZVRvID0gdmFsO1xyXG4gICAgICB0aGlzLm9uQXBwbHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWYsXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgbmdDb250cm9sOiBOZ0NvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wsIG51bGwpO1xyXG5cclxuICAgIGlmIChuZ0NvbnRyb2wpIHtcclxuICAgICAgdGhpcy5jb250cm9sID0gbmdDb250cm9sLmNvbnRyb2wgYXMgVW50eXBlZEZvcm1Db250cm9sO1xyXG4gICAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRpbWVSYW5nZVZhbGlkYXRvcih0aGlzLmNvbnRyb2wpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcclxuICBvblRvdWNoOiBhbnkgPSAoKSA9PiB7fTtcclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgb25BcHBseSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5ld1ZhbHVlID0ge1xyXG4gICAgICB0aW1lRnJvbTogdGhpcy50aW1lRnJvbSxcclxuICAgICAgdGltZVRvOiB0aGlzLnRpbWVUbyxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKCFsb2Rhc2hJc0VxdWFsKHRoaXMudmFsdWUsIG5ld1ZhbHVlKSkge1xyXG4gICAgICB0aGlzLnZhbHVlID0ge1xyXG4gICAgICAgIHRpbWVGcm9tOiB0aGlzLnRpbWVGcm9tLFxyXG4gICAgICAgIHRpbWVUbzogdGhpcy50aW1lVG8sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0aW1lUmFuZ2VWYWxpZGF0b3IoY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKSB7XHJcbiAgICBjb25zdCByZXF1aXJlZCA9IGNvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG5cclxuICAgIGlmIChjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHsgdGltZUZyb20sIHRpbWVUbyB9ID0gY29udHJvbC52YWx1ZTtcclxuICAgICAgY29udHJvbC5zZXRFcnJvcnMobnVsbCk7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcmVxdWlyZWQgJiZcclxuICAgICAgICAoIXRpbWVGcm9tIHx8IHRpbWVGcm9tPy5sZW5ndGggPT09IDApICYmXHJcbiAgICAgICAgKCF0aW1lVG8gfHwgdGltZVRvPy5sZW5ndGggPT09IDApXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgcmVxdWlyZWQ6IHRydWUgfSk7XHJcblxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aW1lRnJvbSAmJiB0aW1lVG8pIHtcclxuICAgICAgICBjb250cm9sLnNldEVycm9ycyh7IHRpbWVGcm9tUmFuZ2VSZXF1aXJlZDogdHJ1ZSB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGltZUZyb20gJiYgIXRpbWVUbykge1xyXG4gICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgdGltZVRvUmFuZ2VSZXF1aXJlZDogdHJ1ZSB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGltZUZyb20gPiB0aW1lVG8pIHtcclxuICAgICAgICBjb250cm9sLnNldEVycm9ycyh7IHRpbWVGcm9tTW9yZVRoYW5UaW1lVG86IHRydWUgfSk7XHJcblxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZWNhYnMtZWxlbWVudC13cmFwcGVyIFtkYXRhXT1cImdldERhdGEoKVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkX19yYW5nZS0td3JhcHBlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRfX3JhbmdlXCI+XHJcbiAgICAgIDxlY2Ficy10aW1lcGlja2VyIFxyXG4gICAgICBbbGFiZWxdPVwic3RhcnRUaW1lUGxhY2Vob2xkZXJcIiBcclxuICAgICAgWyhuZ01vZGVsKV09XCJ0aW1lRnJvbVwiIFxyXG4gICAgICBbZGF5U3RhcnRMYWJlbF09XCJkYXlTdGFydExhYmVsXCIgXHJcbiAgICAgIFtkYXlFbmRMYWJlbF09XCJkYXlFbmRMYWJlbFwiPlxyXG4gICAgICA8L2VjYWJzLXRpbWVwaWNrZXI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8c3BhbiBjbGFzcz1cInRleHQtZ3JheS00MDAgcHgtMyB0ZXh0LXNtXCI+e3sgc2VwYXJhdG9yTGFiZWwgfX08L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZF9fcmFuZ2VcIj5cclxuICAgICAgPGVjYWJzLXRpbWVwaWNrZXIgXHJcbiAgICAgIFtsYWJlbF09XCJlbmRUaW1lUGxhY2Vob2xkZXJcIiBcclxuICAgICAgWyhuZ01vZGVsKV09XCJ0aW1lVG9cIiBcclxuICAgICAgW2RheVN0YXJ0TGFiZWxdPVwiZGF5U3RhcnRMYWJlbFwiXHJcbiAgICAgICBbZGF5RW5kTGFiZWxdPVwiZGF5RW5kTGFiZWxcIj5cclxuICAgICAgPC9lY2Ficy10aW1lcGlja2VyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZWNhYnMtZWxlbWVudC13cmFwcGVyPiJdfQ==
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtdGltZS1yYW5nZS1pbnB1dC12Mi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY2Ficy1jb21wb25lbnRzL3NyYy9saWIvZWNhYnMtdGltZS1yYW5nZS1pbnB1dC12Mi9lY2Ficy10aW1lLXJhbmdlLWlucHV0LXYyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy10aW1lLXJhbmdlLWlucHV0LXYyL2VjYWJzLXRpbWUtcmFuZ2UtaW5wdXQtdjIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxVQUFVLEVBRVYsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUVULFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8seUJBQXlCLE1BQU0sc0JBQXNCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sSUFBSSxhQUFhLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7O0FBY2xELE1BQU0sT0FBTyw4QkFDWCxTQUFRLHlCQUF5QjtJQWdHZDtJQUNBO0lBN0ZuQixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBR3RCLGFBQWEsR0FBa0IsTUFBTSxDQUFDO0lBR3RDLFFBQVEsQ0FBVTtJQUdsQixHQUFHLENBQVU7SUFHYixHQUFHLENBQVU7SUFHYixZQUFZLEdBQUcsSUFBSSxDQUFDO0lBR3BCLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFHbkIsU0FBUyxHQUFHLElBQUksQ0FBQztJQUdqQixhQUFhLENBQVM7SUFHdEIsV0FBVyxDQUFTO0lBR3BCLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFHdEIsb0JBQW9C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dCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgRGVzdHJveVJlZixcclxuICBmb3J3YXJkUmVmLFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIE5nQ29udHJvbCxcclxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCBFY2Fic0VsZW1lbnRCYXNlQ29tcG9uZW50IGZyb20gJy4uL2Jhc2UvZWxlbWVudC1iYXNlJztcclxuaW1wb3J0IHsgTGlzdFBsYWNlbWVudCB9IGZyb20gJy4uL2Jhc2UvbW9kZWxzL3RpbWVwaWNrZXIubW9kZWxzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQgeyBpc0VxdWFsIGFzIGxvZGFzaElzRXF1YWwgfSBmcm9tICdsb2Rhc2gnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlY2Ficy10aW1lLXJhbmdlLWlucHV0LXYyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWNhYnMtdGltZS1yYW5nZS1pbnB1dC12Mi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ2VjYWJzLXRpbWUtcmFuZ2UtaW5wdXQtdjIuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVjYWJzVGltZVJhbmdlSW5wdXRWMkNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWNhYnNUaW1lUmFuZ2VJbnB1dFYyQ29tcG9uZW50XHJcbiAgZXh0ZW5kcyBFY2Fic0VsZW1lbnRCYXNlQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdFxyXG57XHJcbiAgQElucHV0KClcclxuICBzaG93Q2xvc2VJY29uID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbGlzdFBsYWNlbWVudDogTGlzdFBsYWNlbWVudCA9ICdhdXRvJztcclxuXHJcbiAgQElucHV0KClcclxuICBhcHBlbmRUbyE6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBtaW4hOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbWF4ITogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dEYXlTdGFydCA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2hvd0RheUVuZCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGFkZFNlY29uZCA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZGF5U3RhcnRMYWJlbDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGRheUVuZExhYmVsOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VwYXJhdG9yTGFiZWwgPSAndG8nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHN0YXJ0VGltZVBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZW5kVGltZVBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYWxsb3dDcm9zc01pZG5pZ2h0ID0gZmFsc2U7XHJcblxyXG4gIHZhbDoge1xyXG4gICAgdGltZUZyb206IHN0cmluZztcclxuICAgIHRpbWVUbzogc3RyaW5nO1xyXG4gIH07XHJcblxyXG4gIF90aW1lRnJvbTogc3RyaW5nO1xyXG4gIF90aW1lVG86IHN0cmluZztcclxuXHJcbiAgZ2V0IHZhbHVlKCk6IHtcclxuICAgIHRpbWVGcm9tOiBzdHJpbmc7XHJcbiAgICB0aW1lVG86IHN0cmluZztcclxuICB9IHtcclxuICAgIHJldHVybiB0aGlzLnZhbDtcclxuICB9XHJcblxyXG4gIGdldCB0aW1lRnJvbSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RpbWVGcm9tO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRpbWVUbygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RpbWVUbztcclxuICB9XHJcblxyXG4gIC8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXHJcbiAgc2V0IHZhbHVlKHZhbDogeyB0aW1lRnJvbTogc3RyaW5nOyB0aW1lVG86IHN0cmluZyB9KSB7XHJcbiAgICBpZiAodGhpcy52YWwgIT09IHZhbCkge1xyXG4gICAgICB0aGlzLnZhbCA9IHZhbDtcclxuICAgICAgdGhpcy50aW1lRnJvbSA9IHZhbC50aW1lRnJvbTtcclxuICAgICAgdGhpcy50aW1lVG8gPSB2YWwudGltZVRvO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHZhbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaCh2YWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcclxuICBzZXQgdGltZUZyb20odmFsOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLl90aW1lRnJvbSAhPT0gdmFsKSB7XHJcbiAgICAgIHRoaXMuX3RpbWVGcm9tID0gdmFsO1xyXG4gICAgICB0aGlzLm9uQXBwbHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXHJcbiAgc2V0IHRpbWVUbyh2YWw6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuX3RpbWVUbyAhPT0gdmFsKSB7XHJcbiAgICAgIHRoaXMuX3RpbWVUbyA9IHZhbDtcclxuICAgICAgdGhpcy5vbkFwcGx5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmOiBEZXN0cm95UmVmLFxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5nQ29udHJvbDogTmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsKTtcclxuXHJcbiAgICBpZiAobmdDb250cm9sKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcclxuICAgICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy50aW1lUmFuZ2VWYWxpZGF0b3IodGhpcy5jb250cm9sKSk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudGltZVJhbmdlVmFsaWRhdG9yKHRoaXMuY29udHJvbCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xyXG4gIG9uVG91Y2g6IGFueSA9ICgpID0+IHt9O1xyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoID0gZm47XHJcbiAgfVxyXG5cclxuICBvbkFwcGx5KCk6IHZvaWQge1xyXG4gICAgY29uc3QgbmV3VmFsdWUgPSB7XHJcbiAgICAgIHRpbWVGcm9tOiB0aGlzLnRpbWVGcm9tLFxyXG4gICAgICB0aW1lVG86IHRoaXMudGltZVRvLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoIWxvZGFzaElzRXF1YWwodGhpcy52YWx1ZSwgbmV3VmFsdWUpKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB7XHJcbiAgICAgICAgdGltZUZyb206IHRoaXMudGltZUZyb20sXHJcbiAgICAgICAgdGltZVRvOiB0aGlzLnRpbWVUbyxcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRpbWVSYW5nZVZhbGlkYXRvcihjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wpIHtcclxuICAgIGNvbnN0IHJlcXVpcmVkID0gY29udHJvbC5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcblxyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlICYmICFyZXF1aXJlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgcmVxdWlyZWQ6IHRydWUgfSk7XHJcblxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgeyB0aW1lRnJvbSwgdGltZVRvIH0gPSBjb250cm9sLnZhbHVlO1xyXG4gICAgY29udHJvbC5zZXRFcnJvcnMobnVsbCk7XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICByZXF1aXJlZCAmJlxyXG4gICAgICAoIXRpbWVGcm9tIHx8IHRpbWVGcm9tPy5sZW5ndGggPT09IDApICYmXHJcbiAgICAgICghdGltZVRvIHx8IHRpbWVUbz8ubGVuZ3RoID09PSAwKVxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgcmVxdWlyZWQ6IHRydWUgfSk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aW1lRnJvbSAmJiB0aW1lVG8pIHtcclxuICAgICAgY29udHJvbC5zZXRFcnJvcnMoeyByYW5nZUZyb206IHRydWUgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHRpbWVGcm9tICYmICF0aW1lVG8pIHtcclxuICAgICAgY29udHJvbC5zZXRFcnJvcnMoeyByYW5nZVRvOiB0cnVlIH0pO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdGltZUZyb20gJiZcclxuICAgICAgdGltZVRvICYmXHJcbiAgICAgIHRpbWVGcm9tID4gdGltZVRvICYmXHJcbiAgICAgICF0aGlzLmFsbG93Q3Jvc3NNaWRuaWdodFxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgcmFuZ2VPcmRlcjogdHJ1ZSB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGVjYWJzLWVsZW1lbnQtd3JhcHBlciBbZGF0YV09XCJnZXREYXRhKClcIj5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZF9fcmFuZ2UtLXdyYXBwZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkX19yYW5nZVwiPlxyXG4gICAgICA8ZWNhYnMtdGltZXBpY2tlciBcclxuICAgICAgW2xhYmVsXT1cInN0YXJ0VGltZVBsYWNlaG9sZGVyXCIgXHJcbiAgICAgIFsobmdNb2RlbCldPVwidGltZUZyb21cIiBcclxuICAgICAgW2RheVN0YXJ0TGFiZWxdPVwiZGF5U3RhcnRMYWJlbFwiIFxyXG4gICAgICBbZGF5RW5kTGFiZWxdPVwiZGF5RW5kTGFiZWxcIj5cclxuICAgICAgPC9lY2Ficy10aW1lcGlja2VyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWdyYXktNDAwIHB4LTMgdGV4dC1zbVwiPnt7IHNlcGFyYXRvckxhYmVsIH19PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRfX3JhbmdlXCI+XHJcbiAgICAgIDxlY2Ficy10aW1lcGlja2VyIFxyXG4gICAgICBbbGFiZWxdPVwiZW5kVGltZVBsYWNlaG9sZGVyXCIgXHJcbiAgICAgIFsobmdNb2RlbCldPVwidGltZVRvXCIgXHJcbiAgICAgIFtkYXlTdGFydExhYmVsXT1cImRheVN0YXJ0TGFiZWxcIlxyXG4gICAgICAgW2RheUVuZExhYmVsXT1cImRheUVuZExhYmVsXCI+XHJcbiAgICAgIDwvZWNhYnMtdGltZXBpY2tlcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2VjYWJzLWVsZW1lbnQtd3JhcHBlcj4iXX0=
@@ -8688,6 +8688,7 @@ class EcabsTimeRangeInputV2Component extends EcabsElementBaseComponent {
8688
8688
  separatorLabel = 'to';
8689
8689
  startTimePlaceholder;
8690
8690
  endTimePlaceholder;
8691
+ allowCrossMidnight = false;
8691
8692
  val;
8692
8693
  _timeFrom;
8693
8694
  _timeTo;
@@ -8736,6 +8737,9 @@ class EcabsTimeRangeInputV2Component extends EcabsElementBaseComponent {
8736
8737
  this.control.valueChanges
8737
8738
  .pipe(takeUntilDestroyed(this.destroyRef))
8738
8739
  .subscribe(() => this.timeRangeValidator(this.control));
8740
+ setTimeout(() => {
8741
+ this.timeRangeValidator(this.control);
8742
+ });
8739
8743
  }
8740
8744
  }
8741
8745
  onChange = () => { };
@@ -8763,31 +8767,35 @@ class EcabsTimeRangeInputV2Component extends EcabsElementBaseComponent {
8763
8767
  }
8764
8768
  timeRangeValidator(control) {
8765
8769
  const required = control.hasValidator(Validators.required);
8766
- if (control.value) {
8767
- const { timeFrom, timeTo } = control.value;
8768
- control.setErrors(null);
8769
- if (required &&
8770
- (!timeFrom || timeFrom?.length === 0) &&
8771
- (!timeTo || timeTo?.length === 0)) {
8772
- control.setErrors({ required: true });
8773
- return;
8774
- }
8775
- if (!timeFrom && timeTo) {
8776
- control.setErrors({ timeFromRangeRequired: true });
8777
- return;
8778
- }
8779
- if (timeFrom && !timeTo) {
8780
- control.setErrors({ timeToRangeRequired: true });
8781
- return;
8782
- }
8783
- if (timeFrom > timeTo) {
8784
- control.setErrors({ timeFromMoreThanTimeTo: true });
8785
- return;
8786
- }
8770
+ if (!control.value && !required) {
8771
+ return;
8772
+ }
8773
+ if (!control.value) {
8774
+ control.setErrors({ required: true });
8775
+ return;
8776
+ }
8777
+ const { timeFrom, timeTo } = control.value;
8778
+ control.setErrors(null);
8779
+ if (required &&
8780
+ (!timeFrom || timeFrom?.length === 0) &&
8781
+ (!timeTo || timeTo?.length === 0)) {
8782
+ control.setErrors({ required: true });
8783
+ }
8784
+ else if (!timeFrom && timeTo) {
8785
+ control.setErrors({ rangeFrom: true });
8786
+ }
8787
+ else if (timeFrom && !timeTo) {
8788
+ control.setErrors({ rangeTo: true });
8789
+ }
8790
+ else if (timeFrom &&
8791
+ timeTo &&
8792
+ timeFrom > timeTo &&
8793
+ !this.allowCrossMidnight) {
8794
+ control.setErrors({ rangeOrder: true });
8787
8795
  }
8788
8796
  }
8789
8797
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsTimeRangeInputV2Component, deps: [{ token: i0.Injector }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
8790
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsTimeRangeInputV2Component, selector: "ecabs-time-range-input-v2", inputs: { showCloseIcon: "showCloseIcon", listPlacement: "listPlacement", appendTo: "appendTo", min: "min", max: "max", showDayStart: "showDayStart", showDayEnd: "showDayEnd", addSecond: "addSecond", dayStartLabel: "dayStartLabel", dayEndLabel: "dayEndLabel", separatorLabel: "separatorLabel", startTimePlaceholder: "startTimePlaceholder", endTimePlaceholder: "endTimePlaceholder" }, providers: [
8798
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsTimeRangeInputV2Component, selector: "ecabs-time-range-input-v2", inputs: { showCloseIcon: "showCloseIcon", listPlacement: "listPlacement", appendTo: "appendTo", min: "min", max: "max", showDayStart: "showDayStart", showDayEnd: "showDayEnd", addSecond: "addSecond", dayStartLabel: "dayStartLabel", dayEndLabel: "dayEndLabel", separatorLabel: "separatorLabel", startTimePlaceholder: "startTimePlaceholder", endTimePlaceholder: "endTimePlaceholder", allowCrossMidnight: "allowCrossMidnight" }, providers: [
8791
8799
  {
8792
8800
  provide: NG_VALUE_ACCESSOR,
8793
8801
  useExisting: forwardRef(() => EcabsTimeRangeInputV2Component),
@@ -8830,6 +8838,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
8830
8838
  type: Input
8831
8839
  }], endTimePlaceholder: [{
8832
8840
  type: Input
8841
+ }], allowCrossMidnight: [{
8842
+ type: Input
8833
8843
  }] } });
8834
8844
 
8835
8845
  class EcabsTimeRangeInputV2Module {
@@ -9147,7 +9157,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
9147
9157
  class EcabsDateRangePickerComponentV2 extends EcabsElementBaseComponent {
9148
9158
  injector;
9149
9159
  ecabsDatePickerHeaderService;
9150
- unsubscribeService;
9160
+ destroyRef;
9151
9161
  minDate;
9152
9162
  maxDate;
9153
9163
  touchUi = false;
@@ -9160,6 +9170,7 @@ class EcabsDateRangePickerComponentV2 extends EcabsElementBaseComponent {
9160
9170
  excludeWeekends;
9161
9171
  specificDates;
9162
9172
  holidayOptions;
9173
+ dateToOptional = false;
9163
9174
  onblur = new EventEmitter();
9164
9175
  val;
9165
9176
  pickerTo;
@@ -9194,28 +9205,42 @@ class EcabsDateRangePickerComponentV2 extends EcabsElementBaseComponent {
9194
9205
  }
9195
9206
  //eslint-disable-next-line
9196
9207
  set dateFrom(val) {
9197
- if (this._dateFrom !== val && isValid(new Date(val))) {
9208
+ if (this._dateFrom === val) {
9209
+ return;
9210
+ }
9211
+ if (val && isValid(new Date(val))) {
9198
9212
  this._dateFrom = val;
9199
9213
  this.minDateTo = new Date(val);
9200
- if (!this.dateTo) {
9214
+ if (!this.dateTo && !this.dateToOptional) {
9201
9215
  this.pickerTo?.open();
9202
9216
  }
9203
- this.onApply();
9204
9217
  }
9218
+ else if (!val) {
9219
+ this._dateFrom = val;
9220
+ this.minDateTo = this.minDate;
9221
+ }
9222
+ this.onApply();
9205
9223
  }
9206
9224
  //eslint-disable-next-line
9207
9225
  set dateTo(val) {
9208
- if (this._dateTo !== val && isValid(new Date(val))) {
9226
+ if (this._dateTo === val) {
9227
+ return;
9228
+ }
9229
+ if (val && isValid(new Date(val))) {
9209
9230
  this._dateTo = val;
9210
9231
  this.maxDateFrom = new Date(val);
9211
- this.onApply();
9212
9232
  }
9233
+ else if (!val) {
9234
+ this._dateTo = val;
9235
+ this.maxDateFrom = this.maxDate;
9236
+ }
9237
+ this.onApply();
9213
9238
  }
9214
- constructor(injector, ecabsDatePickerHeaderService, unsubscribeService) {
9239
+ constructor(injector, ecabsDatePickerHeaderService, destroyRef) {
9215
9240
  super();
9216
9241
  this.injector = injector;
9217
9242
  this.ecabsDatePickerHeaderService = ecabsDatePickerHeaderService;
9218
- this.unsubscribeService = unsubscribeService;
9243
+ this.destroyRef = destroyRef;
9219
9244
  }
9220
9245
  ngOnChanges(changes) {
9221
9246
  const { minDate, maxDate } = changes;
@@ -9231,7 +9256,7 @@ class EcabsDateRangePickerComponentV2 extends EcabsElementBaseComponent {
9231
9256
  ngOnInit() {
9232
9257
  this.ecabsDatePickerHeaderService
9233
9258
  .getConfig()
9234
- .pipe(takeUntil(this.unsubscribeService.subscription()))
9259
+ .pipe(takeUntilDestroyed(this.destroyRef))
9235
9260
  .subscribe((config) => (this.translationConfig = config));
9236
9261
  if (this.holidayOptions?.countryCode) {
9237
9262
  this.holidayInstance = new Holidays(this.holidayOptions.countryCode.toUpperCase());
@@ -9242,17 +9267,15 @@ class EcabsDateRangePickerComponentV2 extends EcabsElementBaseComponent {
9242
9267
  if (ngControl) {
9243
9268
  this.control = ngControl.control;
9244
9269
  this.control.valueChanges
9245
- .pipe(takeUntil(this.unsubscribeService.subscription()))
9270
+ .pipe(takeUntilDestroyed(this.destroyRef))
9246
9271
  .subscribe(() => this.dateRangeValidator(this.control));
9247
9272
  setTimeout(() => {
9248
9273
  this.dateFrom = this.value.dateFrom;
9249
9274
  this.dateTo = this.value.dateTo;
9275
+ this.dateRangeValidator(this.control);
9250
9276
  });
9251
9277
  }
9252
9278
  }
9253
- ngOnDestroy() {
9254
- this.unsubscribeService.destroy();
9255
- }
9256
9279
  onChange = () => { };
9257
9280
  onTouch = () => { };
9258
9281
  writeValue(value) {
@@ -9311,37 +9334,36 @@ class EcabsDateRangePickerComponentV2 extends EcabsElementBaseComponent {
9311
9334
  }
9312
9335
  dateRangeValidator(control) {
9313
9336
  const required = control?.hasValidator(Validators.required);
9314
- if (control.value) {
9315
- const { dateFrom, dateTo } = control.value;
9316
- control.setErrors(null);
9317
- if (required &&
9318
- (!dateFrom || dateFrom?.length === 0) &&
9319
- (!dateTo || dateTo?.length === 0)) {
9337
+ if (!control.value) {
9338
+ if (required) {
9320
9339
  control.setErrors({ required: true });
9321
- return;
9322
- }
9323
- if (!dateFrom && dateTo) {
9324
- control.setErrors({ dateFromRangeRequired: true });
9325
- return;
9326
- }
9327
- if (dateFrom && !dateTo) {
9328
- control.setErrors({ dateToRangeRequired: true });
9329
- return;
9330
- }
9331
- if (new Date(dateFrom) > new Date(dateTo)) {
9332
- control.setErrors({ dateFromMoreThanDateTo: true });
9333
- return;
9334
9340
  }
9341
+ return;
9342
+ }
9343
+ const { dateFrom, dateTo } = control.value;
9344
+ control.setErrors(null);
9345
+ if (required &&
9346
+ (!dateFrom || dateFrom?.length === 0) &&
9347
+ (!dateTo || dateTo?.length === 0)) {
9348
+ control.setErrors({ required: true });
9349
+ }
9350
+ else if (!dateFrom && dateTo) {
9351
+ control.setErrors({ rangeFrom: true });
9352
+ }
9353
+ else if (dateFrom && !dateTo && !this.dateToOptional) {
9354
+ control.setErrors({ rangeTo: true });
9355
+ }
9356
+ else if (dateFrom && dateTo && new Date(dateFrom) > new Date(dateTo)) {
9357
+ control.setErrors({ rangeOrder: true });
9335
9358
  }
9336
9359
  }
9337
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsDateRangePickerComponentV2, deps: [{ token: i0.Injector }, { token: EcabsDatePickerHeaderService }, { token: UnsubscribeService }], target: i0.ɵɵFactoryTarget.Component });
9338
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsDateRangePickerComponentV2, selector: "ecabs-date-range-picker-v2", inputs: { minDate: "minDate", maxDate: "maxDate", touchUi: "touchUi", cancelLabel: "cancelLabel", applyLabel: "applyLabel", startDatePlaceholder: "startDatePlaceholder", endDatePlaceholder: "endDatePlaceholder", separatorLabel: "separatorLabel", excludeHolidays: "excludeHolidays", excludeWeekends: "excludeWeekends", specificDates: "specificDates", holidayOptions: "holidayOptions" }, outputs: { onblur: "onblur" }, providers: [
9360
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsDateRangePickerComponentV2, deps: [{ token: i0.Injector }, { token: EcabsDatePickerHeaderService }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
9361
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsDateRangePickerComponentV2, selector: "ecabs-date-range-picker-v2", inputs: { minDate: "minDate", maxDate: "maxDate", touchUi: "touchUi", cancelLabel: "cancelLabel", applyLabel: "applyLabel", startDatePlaceholder: "startDatePlaceholder", endDatePlaceholder: "endDatePlaceholder", separatorLabel: "separatorLabel", excludeHolidays: "excludeHolidays", excludeWeekends: "excludeWeekends", specificDates: "specificDates", holidayOptions: "holidayOptions", dateToOptional: "dateToOptional" }, outputs: { onblur: "onblur" }, providers: [
9339
9362
  {
9340
9363
  provide: NG_VALUE_ACCESSOR,
9341
9364
  useExisting: EcabsDateRangePickerComponentV2,
9342
9365
  multi: true,
9343
9366
  },
9344
- UnsubscribeService,
9345
9367
  ], viewQueries: [{ propertyName: "pickerTo", first: true, predicate: ["pickerTo"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <div class=\"form-field__range--wrapper\">\r\n <div class=\"form-field__range\">\r\n <input\r\n class=\"border-none w-full\"\r\n id=\"{{ name + 'dateFrom' }}\"\r\n [(ngModel)]=\"dateFrom\"\r\n [placeholder]=\"startDatePlaceholder ?? translationConfig?.startDatePlaceholder\"\r\n [disabled]=\"disabled\"\r\n [matDatepicker]=\"pickerFrom\"\r\n [min]=\"minDateFrom\"\r\n [max]=\"maxDateFrom\"\r\n [matDatepickerFilter]=\"filterDateRange\"\r\n ecabsMaskDate\r\n (blur)=\"onTouch()\"\r\n (click)=\"pickerFrom.open()\"\r\n />\r\n <mat-datepicker #pickerFrom\r\n [panelClass]=\"panelClass\"\r\n [calendarHeaderComponent]=\"header\"\r\n [touchUi]=\"touchUi\">\r\n </mat-datepicker>\r\n </div>\r\n\r\n <span class=\"text-gray-400 px-3 text-sm\">{{ separatorLabel }}</span>\r\n <div class=\"form-field__range\">\r\n <input\r\n class=\"border-none w-full\"\r\n id=\"{{ name + 'dateTo' }}\"\r\n [(ngModel)]=\"dateTo\"\r\n [placeholder]=\"endDatePlaceholder ?? translationConfig?.endDatePlaceholder\"\r\n [disabled]=\"disabled\"\r\n [matDatepicker]=\"pickerTo\"\r\n [min]=\"minDateTo\"\r\n [max]=\"maxDateTo\"\r\n [matDatepickerFilter]=\"filterDateRange\"\r\n ecabsMaskDate\r\n (blur)=\"onTouch()\"\r\n (click)=\"pickerTo.open()\"\r\n />\r\n <mat-datepicker #pickerTo\r\n [panelClass]=\"panelClass\"\r\n [calendarHeaderComponent]=\"header\"\r\n [touchUi]=\"touchUi\">\r\n </mat-datepicker>\r\n </div>\r\n </div>\r\n</ecabs-element-wrapper>\r\n", styles: [""], dependencies: [{ kind: "component", type: EcabsElementWrapperComponent, selector: "ecabs-element-wrapper", inputs: ["data", "showCloseIcon", "focusedFlag", "showPassword", "control"], outputs: ["showHidePassword", "clear", "increase", "decrease"] }, { kind: "component", type: i6.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i6.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: EcabsMaskDateDirective, selector: "[ecabsMaskDate]", inputs: ["isDateTimeMask", "considerSeconds"] }] });
9346
9368
  }
9347
9369
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsDateRangePickerComponentV2, decorators: [{
@@ -9352,9 +9374,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
9352
9374
  useExisting: EcabsDateRangePickerComponentV2,
9353
9375
  multi: true,
9354
9376
  },
9355
- UnsubscribeService,
9356
9377
  ], template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <div class=\"form-field__range--wrapper\">\r\n <div class=\"form-field__range\">\r\n <input\r\n class=\"border-none w-full\"\r\n id=\"{{ name + 'dateFrom' }}\"\r\n [(ngModel)]=\"dateFrom\"\r\n [placeholder]=\"startDatePlaceholder ?? translationConfig?.startDatePlaceholder\"\r\n [disabled]=\"disabled\"\r\n [matDatepicker]=\"pickerFrom\"\r\n [min]=\"minDateFrom\"\r\n [max]=\"maxDateFrom\"\r\n [matDatepickerFilter]=\"filterDateRange\"\r\n ecabsMaskDate\r\n (blur)=\"onTouch()\"\r\n (click)=\"pickerFrom.open()\"\r\n />\r\n <mat-datepicker #pickerFrom\r\n [panelClass]=\"panelClass\"\r\n [calendarHeaderComponent]=\"header\"\r\n [touchUi]=\"touchUi\">\r\n </mat-datepicker>\r\n </div>\r\n\r\n <span class=\"text-gray-400 px-3 text-sm\">{{ separatorLabel }}</span>\r\n <div class=\"form-field__range\">\r\n <input\r\n class=\"border-none w-full\"\r\n id=\"{{ name + 'dateTo' }}\"\r\n [(ngModel)]=\"dateTo\"\r\n [placeholder]=\"endDatePlaceholder ?? translationConfig?.endDatePlaceholder\"\r\n [disabled]=\"disabled\"\r\n [matDatepicker]=\"pickerTo\"\r\n [min]=\"minDateTo\"\r\n [max]=\"maxDateTo\"\r\n [matDatepickerFilter]=\"filterDateRange\"\r\n ecabsMaskDate\r\n (blur)=\"onTouch()\"\r\n (click)=\"pickerTo.open()\"\r\n />\r\n <mat-datepicker #pickerTo\r\n [panelClass]=\"panelClass\"\r\n [calendarHeaderComponent]=\"header\"\r\n [touchUi]=\"touchUi\">\r\n </mat-datepicker>\r\n </div>\r\n </div>\r\n</ecabs-element-wrapper>\r\n" }]
9357
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: EcabsDatePickerHeaderService }, { type: UnsubscribeService }]; }, propDecorators: { minDate: [{
9378
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: EcabsDatePickerHeaderService }, { type: i0.DestroyRef }]; }, propDecorators: { minDate: [{
9358
9379
  type: Input
9359
9380
  }], maxDate: [{
9360
9381
  type: Input
@@ -9378,6 +9399,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
9378
9399
  type: Input
9379
9400
  }], holidayOptions: [{
9380
9401
  type: Input
9402
+ }], dateToOptional: [{
9403
+ type: Input
9381
9404
  }], onblur: [{
9382
9405
  type: Output
9383
9406
  }], pickerTo: [{