i-tech-shared-components 1.1.21 → 1.1.22

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.
@@ -25,6 +25,8 @@ export class DatePickerComponent {
25
25
  this.pastDatesDisabled = false;
26
26
  this.hintText = '';
27
27
  this.placeholder = 'MM/DD/YYYY';
28
+ this.minDate = null;
29
+ this.clearable = false;
28
30
  this.submit = false;
29
31
  this.valueChangeEmitter = new EventEmitter();
30
32
  this.isOpen = false;
@@ -60,7 +62,7 @@ export class DatePickerComponent {
60
62
  }, 120);
61
63
  }
62
64
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatePickerComponent, deps: [{ token: i1.InputService }], target: i0.ɵɵFactoryTarget.Component }); }
63
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DatePickerComponent, isStandalone: true, selector: "i-tech-date-picker", inputs: { label: "label", defaultPatternKey: "defaultPatternKey", required: "required", pastDatesDisabled: "pastDatesDisabled", hintText: "hintText", placeholder: "placeholder", iconPrefix: "iconPrefix", iconPrefixSvg: "iconPrefixSvg", iconPrefixTooltip: "iconPrefixTooltip", iconPrefixColor: "iconPrefixColor", iconPrefixVariant: "iconPrefixVariant", valueChangeEmit: "valueChangeEmit", submit: "submit" }, outputs: { valueChangeEmitter: "valueChangeEmitter" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0, template: "<div class=\"flex_column relative mat-date-range-input\" *ngIf=\"ngControl\" [ngClass]=\"{'check_requirements': submit}\">\n <div class=\"w-100\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && submit)\n }\">\n {{ label | translate }}\n </mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\"\n [class.readonly-field]=\"ngControl.control.disabled\">\n <input matInput #inputElement\n type=\"text\"\n [formControl]=\"ngControl.control\"\n [placeholder]=\"placeholder | translate\"\n dateMask\n [matDatepicker]=\"datePicker\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [matDatepickerFilter]=\"dateFilter\"\n (focus)=\"focused = true\"\n (click)=\"datePicker.open();\"\n (dateChange)=\"emitChange()\"\n >\n\n <mat-icon *ngIf=\"iconPrefix\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [style.color]=\"iconPrefixColor\"\n >{{ iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"iconPrefixSvg\"\n ></mat-icon>\n\n <i-tech-icon-button matSuffix\n [iconName]=\"'date_range'\"\n [disabled]=\"ngControl.control.disabled\"\n (click)=\"datePicker.open()\"\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n ></i-tech-icon-button>\n\n <mat-datepicker #datePicker (closed)=\"isOpen = false;clickForFocusOut()\"\n (opened)=\"isOpen = true;focused = true\"></mat-datepicker>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ ngControl.control | generateErrorMessages : label : defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && submit)) && hintText\"\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\"\n >\n {{ hintText | translate }}\n </mat-hint>\n\n </mat-form-field>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i5.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i5.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: DateMaskDirective, selector: "[dateMask]", inputs: ["maskType", "matDatepicker", "rangeFormControl"] }, { kind: "pipe", type: GenerateErrorMessagesPipe, name: "generateErrorMessages" }, { kind: "component", type: IconButtonComponent, selector: "i-tech-icon-button", inputs: ["size", "type", "iconSvg", "iconName", "tooltip", "disabled"], outputs: ["buttonClick"] }] }); }
65
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DatePickerComponent, isStandalone: true, selector: "i-tech-date-picker", inputs: { label: "label", defaultPatternKey: "defaultPatternKey", required: "required", pastDatesDisabled: "pastDatesDisabled", hintText: "hintText", placeholder: "placeholder", iconPrefix: "iconPrefix", iconPrefixSvg: "iconPrefixSvg", iconPrefixTooltip: "iconPrefixTooltip", iconPrefixColor: "iconPrefixColor", iconPrefixVariant: "iconPrefixVariant", valueChangeEmit: "valueChangeEmit", minDate: "minDate", clearable: "clearable", submit: "submit" }, outputs: { valueChangeEmitter: "valueChangeEmitter" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0, template: "<div class=\"flex_column relative mat-date-range-input\" *ngIf=\"ngControl\" [ngClass]=\"{'check_requirements': submit}\">\n <div class=\"w-100\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && submit)\n }\">\n {{ label | translate }}\n </mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\"\n [class.readonly-field]=\"ngControl.control.disabled\">\n <input matInput #inputElement\n type=\"text\"\n [formControl]=\"ngControl.control\"\n [placeholder]=\"placeholder | translate\"\n [min]=\"minDate\"\n dateMask\n [matDatepicker]=\"datePicker\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [matDatepickerFilter]=\"dateFilter\"\n (focus)=\"focused = true\"\n (click)=\"datePicker.open();\"\n (dateChange)=\"emitChange()\"\n >\n\n <mat-icon *ngIf=\"iconPrefix\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [style.color]=\"iconPrefixColor\"\n >{{ iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"iconPrefixSvg\"\n ></mat-icon>\n\n <app-icon-button\n *ngIf=\"clearable && !ngControl.control.disabled && !!ngControl.control.value\"\n iconName=\"cancel\"\n matSuffix\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"$event.stopPropagation();$event.preventDefault();ngControl.control.reset(null);\"\n >\n </app-icon-button>\n\n <i-tech-icon-button matSuffix\n [iconName]=\"'date_range'\"\n [disabled]=\"ngControl.control.disabled\"\n (click)=\"datePicker.open()\"\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n ></i-tech-icon-button>\n\n <mat-datepicker #datePicker (closed)=\"isOpen = false;clickForFocusOut()\"\n (opened)=\"isOpen = true;focused = true\"></mat-datepicker>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ ngControl.control | generateErrorMessages : label : defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && submit)) && hintText\"\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\"\n >\n {{ hintText | translate }}\n </mat-hint>\n\n </mat-form-field>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i5.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i5.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: DateMaskDirective, selector: "[dateMask]", inputs: ["maskType", "matDatepicker", "rangeFormControl"] }, { kind: "pipe", type: GenerateErrorMessagesPipe, name: "generateErrorMessages" }, { kind: "component", type: IconButtonComponent, selector: "i-tech-icon-button", inputs: ["size", "type", "iconSvg", "iconName", "tooltip", "disabled"], outputs: ["buttonClick"] }] }); }
64
66
  }
65
67
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatePickerComponent, decorators: [{
66
68
  type: Component,
@@ -75,7 +77,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
75
77
  MatIconModule,
76
78
  DateMaskDirective,
77
79
  GenerateErrorMessagesPipe, IconButtonComponent
78
- ], standalone: true, template: "<div class=\"flex_column relative mat-date-range-input\" *ngIf=\"ngControl\" [ngClass]=\"{'check_requirements': submit}\">\n <div class=\"w-100\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && submit)\n }\">\n {{ label | translate }}\n </mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\"\n [class.readonly-field]=\"ngControl.control.disabled\">\n <input matInput #inputElement\n type=\"text\"\n [formControl]=\"ngControl.control\"\n [placeholder]=\"placeholder | translate\"\n dateMask\n [matDatepicker]=\"datePicker\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [matDatepickerFilter]=\"dateFilter\"\n (focus)=\"focused = true\"\n (click)=\"datePicker.open();\"\n (dateChange)=\"emitChange()\"\n >\n\n <mat-icon *ngIf=\"iconPrefix\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [style.color]=\"iconPrefixColor\"\n >{{ iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"iconPrefixSvg\"\n ></mat-icon>\n\n <i-tech-icon-button matSuffix\n [iconName]=\"'date_range'\"\n [disabled]=\"ngControl.control.disabled\"\n (click)=\"datePicker.open()\"\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n ></i-tech-icon-button>\n\n <mat-datepicker #datePicker (closed)=\"isOpen = false;clickForFocusOut()\"\n (opened)=\"isOpen = true;focused = true\"></mat-datepicker>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ ngControl.control | generateErrorMessages : label : defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && submit)) && hintText\"\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\"\n >\n {{ hintText | translate }}\n </mat-hint>\n\n </mat-form-field>\n</div>\n" }]
80
+ ], standalone: true, template: "<div class=\"flex_column relative mat-date-range-input\" *ngIf=\"ngControl\" [ngClass]=\"{'check_requirements': submit}\">\n <div class=\"w-100\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && submit)\n }\">\n {{ label | translate }}\n </mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\"\n [class.readonly-field]=\"ngControl.control.disabled\">\n <input matInput #inputElement\n type=\"text\"\n [formControl]=\"ngControl.control\"\n [placeholder]=\"placeholder | translate\"\n [min]=\"minDate\"\n dateMask\n [matDatepicker]=\"datePicker\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [matDatepickerFilter]=\"dateFilter\"\n (focus)=\"focused = true\"\n (click)=\"datePicker.open();\"\n (dateChange)=\"emitChange()\"\n >\n\n <mat-icon *ngIf=\"iconPrefix\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [style.color]=\"iconPrefixColor\"\n >{{ iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"iconPrefixSvg\"\n ></mat-icon>\n\n <app-icon-button\n *ngIf=\"clearable && !ngControl.control.disabled && !!ngControl.control.value\"\n iconName=\"cancel\"\n matSuffix\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"$event.stopPropagation();$event.preventDefault();ngControl.control.reset(null);\"\n >\n </app-icon-button>\n\n <i-tech-icon-button matSuffix\n [iconName]=\"'date_range'\"\n [disabled]=\"ngControl.control.disabled\"\n (click)=\"datePicker.open()\"\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n ></i-tech-icon-button>\n\n <mat-datepicker #datePicker (closed)=\"isOpen = false;clickForFocusOut()\"\n (opened)=\"isOpen = true;focused = true\"></mat-datepicker>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ ngControl.control | generateErrorMessages : label : defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && submit)) && hintText\"\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\"\n >\n {{ hintText | translate }}\n </mat-hint>\n\n </mat-form-field>\n</div>\n" }]
79
81
  }], ctorParameters: () => [{ type: i1.InputService }], propDecorators: { label: [{
80
82
  type: Input
81
83
  }], defaultPatternKey: [{
@@ -100,6 +102,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
100
102
  type: Input
101
103
  }], valueChangeEmit: [{
102
104
  type: Input
105
+ }], minDate: [{
106
+ type: Input
107
+ }], clearable: [{
108
+ type: Input
103
109
  }], submit: [{
104
110
  type: Input
105
111
  }], inputElement: [{
@@ -108,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
108
114
  }], valueChangeEmitter: [{
109
115
  type: Output
110
116
  }] } });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQW1CLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDckYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7O0FBbUIzRSxNQUFN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LGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFDcUIsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUNmLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sTmFtZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgSW5wdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW5wdXQuc2VydmljZSc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0lmIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXJcIjtcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XG5pbXBvcnQgeyBNYXRUb29sdGlwIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHsgRGF0ZU1hc2tEaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZGlyZWN0aXZlcy9kYXRlLW1hc2suZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBHZW5lcmF0ZUVycm9yTWVzc2FnZXNQaXBlIH0gZnJvbSBcIi4uLy4uL3BpcGVzL2dlbmVyYXRlLWVycm9yLW1lc3NhZ2VzLnBpcGVcIjtcbmltcG9ydCB7IEljb25CdXR0b25Db21wb25lbnQgfSBmcm9tIFwiLi4vaWNvbi1idXR0b24vaWNvbi1idXR0b24uY29tcG9uZW50XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ktdGVjaC1kYXRlLXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0NsYXNzLCBOZ0lmLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIE1hdElucHV0LFxuICAgIE1hdFRvb2x0aXAsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBEYXRlTWFza0RpcmVjdGl2ZSxcbiAgICBHZW5lcmF0ZUVycm9yTWVzc2FnZXNQaXBlLCBJY29uQnV0dG9uQ29tcG9uZW50XG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVBpY2tlckNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgICBASW5wdXQoKSBkZWZhdWx0UGF0dGVybktleSE6IHN0cmluZyA7XG4gICAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwYXN0RGF0ZXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGhpbnRUZXh0ID0gJyc7XG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnTU0vREQvWVlZWSc7XG4gICAgQElucHV0KCkgaWNvblByZWZpeD86IHN0cmluZztcbiAgICBASW5wdXQoKSBpY29uUHJlZml4U3ZnPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGljb25QcmVmaXhUb29sdGlwPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGljb25QcmVmaXhDb2xvcj86IHN0cmluZztcbiAgICBASW5wdXQoKSBpY29uUHJlZml4VmFyaWFudD86IHN0cmluZztcbiAgICBASW5wdXQoKSB2YWx1ZUNoYW5nZUVtaXQ/OiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgc3VibWl0ID0gZmFsc2U7XG4gICAgQFZpZXdDaGlsZCgnaW5wdXRFbGVtZW50JykgaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjtcbiAgICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2VFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgaXNPcGVuID0gZmFsc2U7XG4gICAgZm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgbmdDb250cm9sOiBGb3JtQ29udHJvbE5hbWU7XG5cbiAgICB0b2RheTogRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAvLyBGaWx0ZXIgdG8gZGlzYWJsZSBwYXN0IGRhdGVzXG4gICAgZGF0ZUZpbHRlciA9IChkYXRlOiBEYXRlIHwgbnVsbCk6IGJvb2xlYW4gPT4ge1xuICAgICAgaWYgKHRoaXMucGFzdERhdGVzRGlzYWJsZWQpIHtcbiAgICAgICAgY29uc3QgdG9kYXkgPSB0aGlzLnRvZGF5O1xuICAgICAgICByZXR1cm4gZGF0ZSA/IGRhdGUgPj0gdG9kYXkgOiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlucHV0U2VydmljZTogSW5wdXRTZXJ2aWNlKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbCA9IHRoaXMuaW5wdXRTZXJ2aWNlLmluamVjdE5nQ29udHJvbCgpIGFzIEZvcm1Db250cm9sTmFtZTtcbiAgICB9XG5cbiAgICBlbWl0Q2hhbmdlKCk6IHZvaWQge1xuICAgICAgaWYgKCF0aGlzLnZhbHVlQ2hhbmdlRW1pdCkgeyByZXR1cm47IH1cbiAgICAgIHRoaXMudmFsdWVDaGFuZ2VFbWl0dGVyLmVtaXQoKTtcbiAgICB9XG5cbiAgICBjbGlja0ZvckZvY3VzT3V0KCk6IHZvaWQge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICB9LDEyMClcbiAgICB9XG5cbiAgICBjdXN0b21FcnJvclN0YXRlTWF0Y2hlciA9IHtcbiAgICAgIGlzRXJyb3JTdGF0ZTogKGNvbnRyb2w6IGFueSwgZm9ybTogYW55KTogYm9vbGVhbiA9PiB7XG4gICAgICAgIHJldHVybiAhIShjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZCAmJiB0aGlzLnN1Ym1pdCk7XG4gICAgICB9XG4gICAgfTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4X2NvbHVtbiByZWxhdGl2ZSBtYXQtZGF0ZS1yYW5nZS1pbnB1dFwiICpuZ0lmPVwibmdDb250cm9sXCIgW25nQ2xhc3NdPVwieydjaGVja19yZXF1aXJlbWVudHMnOiBzdWJtaXR9XCI+XG4gIDxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxuICAgIDxtYXQtbGFiZWwgW25nQ2xhc3NdPVwie1xuICAgICAgICAncmVhZG9ubHktY29sb3InIDogbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQsXG4gICAgICAgICdpbnZhbGlkLWxhYmVsLWNvbG9yJzogISEobmdDb250cm9sLmNvbnRyb2wuZXJyb3JzICYmIHN1Ym1pdClcbiAgICAgICAgfVwiPlxuICAgICAge3sgbGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICA8L21hdC1sYWJlbD5cbiAgICA8c3BhbiAqbmdJZj1cInJlcXVpcmVkXCIgY2xhc3M9XCJyZXF1aXJlZC1pbnB1dFwiIFtuZ0NsYXNzXT1cInsncmVhZG9ubHktY29sb3InIDogbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWR9XCI+Kjwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIFtuZ0NsYXNzXT1cInsnb3BlbmVkX2NhbGVuZGFyJzogaXNPcGVufVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MucmVhZG9ubHktZmllbGRdPVwibmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWRcIj5cbiAgICA8aW5wdXQgbWF0SW5wdXQgI2lucHV0RWxlbWVudFxuICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJuZ0NvbnRyb2wuY29udHJvbFwiXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgIGRhdGVNYXNrXG4gICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cImRhdGVQaWNrZXJcIlxuICAgICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwiY3VzdG9tRXJyb3JTdGF0ZU1hdGNoZXJcIlxuICAgICAgICAgICBbbWF0RGF0ZXBpY2tlckZpbHRlcl09XCJkYXRlRmlsdGVyXCJcbiAgICAgICAgICAgKGZvY3VzKT1cImZvY3VzZWQgPSB0cnVlXCJcbiAgICAgICAgICAgKGNsaWNrKT1cImRhdGVQaWNrZXIub3BlbigpO1wiXG4gICAgICAgICAgIChkYXRlQ2hhbmdlKT1cImVtaXRDaGFuZ2UoKVwiXG4gICAgPlxuXG4gICAgPG1hdC1pY29uICpuZ0lmPVwiaWNvblByZWZpeFwiXG4gICAgICAgICAgICAgIG1hdFByZWZpeFxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoKGljb25QcmVmaXhUb29sdGlwIHx8ICcnKSB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiaWNvblByZWZpeENvbG9yXCJcbiAgICA+e3sgaWNvblByZWZpeCB9fVxuICAgIDwvbWF0LWljb24+XG5cbiAgICA8bWF0LWljb24gKm5nSWY9XCJpY29uUHJlZml4U3ZnXCJcbiAgICAgICAgICAgICAgbWF0UHJlZml4XG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIigoaWNvblByZWZpeFRvb2x0aXAgfHwgJycpIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgIFtzdmdJY29uXT1cImljb25QcmVmaXhTdmdcIlxuICAgID48L21hdC1pY29uPlxuXG4gICAgPGktdGVjaC1pY29uLWJ1dHRvbiBtYXRTdWZmaXhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uTmFtZV09XCInZGF0ZV9yYW5nZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlUGlja2VyLm9wZW4oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCA/ICdyZWFkb25seS1jb2xvcicgOiAnZGVmYXVsdC1mb3JtLWljb24tY29sb3InXCJcbiAgICA+PC9pLXRlY2gtaWNvbi1idXR0b24+XG5cbiAgICA8bWF0LWRhdGVwaWNrZXIgI2RhdGVQaWNrZXIgKGNsb3NlZCk9XCJpc09wZW4gPSBmYWxzZTtjbGlja0ZvckZvY3VzT3V0KClcIlxuICAgICAgICAgICAgICAgICAgICAob3BlbmVkKT1cImlzT3BlbiA9IHRydWU7Zm9jdXNlZCA9IHRydWVcIj48L21hdC1kYXRlcGlja2VyPlxuXG4gICAgPCEtLSBFcnJvciBNZXNzYWdlcyAtLT5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiISEobmdDb250cm9sLmNvbnRyb2wuZXJyb3JzICYmIHN1Ym1pdClcIj5cbiAgICAgIHt7IG5nQ29udHJvbC5jb250cm9sIHwgZ2VuZXJhdGVFcnJvck1lc3NhZ2VzIDogbGFiZWwgOiBkZWZhdWx0UGF0dGVybktleSB9fVxuICAgIDwvbWF0LWVycm9yPlxuXG4gICAgPCEtLSBIZWxwZXIgVGV4dCAtLT5cbiAgICA8bWF0LWhpbnQgKm5nSWY9XCIhKCEhKG5nQ29udHJvbC5jb250cm9sLmVycm9ycyAmJiBzdWJtaXQpKSAmJiBoaW50VGV4dFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncmVhZG9ubHktY29sb3InIDogbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWR9XCJcbiAgICA+XG4gICAgICB7eyBoaW50VGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LWhpbnQ+XG5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvZGl2PlxuIl19
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQW1CLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDckYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7O0FBbUIzRSxNQUFN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Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUNxQixZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ2Ysa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2xOYW1lLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBJbnB1dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbnB1dC5zZXJ2aWNlJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nSWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlclwiO1xuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcbmltcG9ydCB7IE1hdFRvb2x0aXAgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcFwiO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XG5pbXBvcnQgeyBEYXRlTWFza0RpcmVjdGl2ZSB9IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL2RhdGUtbWFzay5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IEdlbmVyYXRlRXJyb3JNZXNzYWdlc1BpcGUgfSBmcm9tIFwiLi4vLi4vcGlwZXMvZ2VuZXJhdGUtZXJyb3ItbWVzc2FnZXMucGlwZVwiO1xuaW1wb3J0IHsgSWNvbkJ1dHRvbkNvbXBvbmVudCB9IGZyb20gXCIuLi9pY29uLWJ1dHRvbi9pY29uLWJ1dHRvbi5jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaS10ZWNoLWRhdGUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgaW1wb3J0czogW1xuICAgIE5nQ2xhc3MsIE5nSWYsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gICAgTWF0SW5wdXQsXG4gICAgTWF0VG9vbHRpcCxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIERhdGVNYXNrRGlyZWN0aXZlLFxuICAgIEdlbmVyYXRlRXJyb3JNZXNzYWdlc1BpcGUsIEljb25CdXR0b25Db21wb25lbnRcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuICAgIEBJbnB1dCgpIGRlZmF1bHRQYXR0ZXJuS2V5ITogc3RyaW5nIDtcbiAgICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHBhc3REYXRlc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgQElucHV0KCkgaGludFRleHQgPSAnJztcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdNTS9ERC9ZWVlZJztcbiAgICBASW5wdXQoKSBpY29uUHJlZml4Pzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGljb25QcmVmaXhTdmc/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgaWNvblByZWZpeFRvb2x0aXA/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgaWNvblByZWZpeENvbG9yPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGljb25QcmVmaXhWYXJpYW50Pzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHZhbHVlQ2hhbmdlRW1pdD86IGJvb2xlYW47XG4gICAgQElucHV0KCkgbWluRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIGNsZWFyYWJsZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgc3VibWl0ID0gZmFsc2U7XG4gICAgQFZpZXdDaGlsZCgnaW5wdXRFbGVtZW50JykgaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjtcbiAgICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2VFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgaXNPcGVuID0gZmFsc2U7XG4gICAgZm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgbmdDb250cm9sOiBGb3JtQ29udHJvbE5hbWU7XG5cbiAgICB0b2RheTogRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAvLyBGaWx0ZXIgdG8gZGlzYWJsZSBwYXN0IGRhdGVzXG4gICAgZGF0ZUZpbHRlciA9IChkYXRlOiBEYXRlIHwgbnVsbCk6IGJvb2xlYW4gPT4ge1xuICAgICAgaWYgKHRoaXMucGFzdERhdGVzRGlzYWJsZWQpIHtcbiAgICAgICAgY29uc3QgdG9kYXkgPSB0aGlzLnRvZGF5O1xuICAgICAgICByZXR1cm4gZGF0ZSA/IGRhdGUgPj0gdG9kYXkgOiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlucHV0U2VydmljZTogSW5wdXRTZXJ2aWNlKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbCA9IHRoaXMuaW5wdXRTZXJ2aWNlLmluamVjdE5nQ29udHJvbCgpIGFzIEZvcm1Db250cm9sTmFtZTtcbiAgICB9XG5cbiAgICBlbWl0Q2hhbmdlKCk6IHZvaWQge1xuICAgICAgaWYgKCF0aGlzLnZhbHVlQ2hhbmdlRW1pdCkgeyByZXR1cm47IH1cbiAgICAgIHRoaXMudmFsdWVDaGFuZ2VFbWl0dGVyLmVtaXQoKTtcbiAgICB9XG5cbiAgICBjbGlja0ZvckZvY3VzT3V0KCk6IHZvaWQge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICB9LDEyMClcbiAgICB9XG5cbiAgICBjdXN0b21FcnJvclN0YXRlTWF0Y2hlciA9IHtcbiAgICAgIGlzRXJyb3JTdGF0ZTogKGNvbnRyb2w6IGFueSwgZm9ybTogYW55KTogYm9vbGVhbiA9PiB7XG4gICAgICAgIHJldHVybiAhIShjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZCAmJiB0aGlzLnN1Ym1pdCk7XG4gICAgICB9XG4gICAgfTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4X2NvbHVtbiByZWxhdGl2ZSBtYXQtZGF0ZS1yYW5nZS1pbnB1dFwiICpuZ0lmPVwibmdDb250cm9sXCIgW25nQ2xhc3NdPVwieydjaGVja19yZXF1aXJlbWVudHMnOiBzdWJtaXR9XCI+XG4gIDxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxuICAgIDxtYXQtbGFiZWwgW25nQ2xhc3NdPVwie1xuICAgICAgICAncmVhZG9ubHktY29sb3InIDogbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQsXG4gICAgICAgICdpbnZhbGlkLWxhYmVsLWNvbG9yJzogISEobmdDb250cm9sLmNvbnRyb2wuZXJyb3JzICYmIHN1Ym1pdClcbiAgICAgICAgfVwiPlxuICAgICAge3sgbGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICA8L21hdC1sYWJlbD5cbiAgICA8c3BhbiAqbmdJZj1cInJlcXVpcmVkXCIgY2xhc3M9XCJyZXF1aXJlZC1pbnB1dFwiIFtuZ0NsYXNzXT1cInsncmVhZG9ubHktY29sb3InIDogbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWR9XCI+Kjwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIFtuZ0NsYXNzXT1cInsnb3BlbmVkX2NhbGVuZGFyJzogaXNPcGVufVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MucmVhZG9ubHktZmllbGRdPVwibmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWRcIj5cbiAgICA8aW5wdXQgbWF0SW5wdXQgI2lucHV0RWxlbWVudFxuICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJuZ0NvbnRyb2wuY29udHJvbFwiXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgIFttaW5dPVwibWluRGF0ZVwiXG4gICAgICAgICAgIGRhdGVNYXNrXG4gICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cImRhdGVQaWNrZXJcIlxuICAgICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwiY3VzdG9tRXJyb3JTdGF0ZU1hdGNoZXJcIlxuICAgICAgICAgICBbbWF0RGF0ZXBpY2tlckZpbHRlcl09XCJkYXRlRmlsdGVyXCJcbiAgICAgICAgICAgKGZvY3VzKT1cImZvY3VzZWQgPSB0cnVlXCJcbiAgICAgICAgICAgKGNsaWNrKT1cImRhdGVQaWNrZXIub3BlbigpO1wiXG4gICAgICAgICAgIChkYXRlQ2hhbmdlKT1cImVtaXRDaGFuZ2UoKVwiXG4gICAgPlxuXG4gICAgPG1hdC1pY29uICpuZ0lmPVwiaWNvblByZWZpeFwiXG4gICAgICAgICAgICAgIG1hdFByZWZpeFxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoKGljb25QcmVmaXhUb29sdGlwIHx8ICcnKSB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiaWNvblByZWZpeENvbG9yXCJcbiAgICA+e3sgaWNvblByZWZpeCB9fVxuICAgIDwvbWF0LWljb24+XG5cbiAgICA8bWF0LWljb24gKm5nSWY9XCJpY29uUHJlZml4U3ZnXCJcbiAgICAgICAgICAgICAgbWF0UHJlZml4XG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIigoaWNvblByZWZpeFRvb2x0aXAgfHwgJycpIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgIFtzdmdJY29uXT1cImljb25QcmVmaXhTdmdcIlxuICAgID48L21hdC1pY29uPlxuXG4gICAgPGFwcC1pY29uLWJ1dHRvblxuICAgICAgKm5nSWY9XCJjbGVhcmFibGUgJiYgIW5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkICYmICEhbmdDb250cm9sLmNvbnRyb2wudmFsdWVcIlxuICAgICAgaWNvbk5hbWU9XCJjYW5jZWxcIlxuICAgICAgbWF0U3VmZml4XG4gICAgICBbbmdDbGFzc109XCJuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCA/ICdyZWFkb25seS1jb2xvcicgOiAnZGVmYXVsdC1mb3JtLWljb24tY29sb3InXCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7bmdDb250cm9sLmNvbnRyb2wucmVzZXQobnVsbCk7XCJcbiAgICA+XG4gICAgPC9hcHAtaWNvbi1idXR0b24+XG5cbiAgICA8aS10ZWNoLWljb24tYnV0dG9uIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25OYW1lXT1cIidkYXRlX3JhbmdlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVQaWNrZXIub3BlbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIm5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkID8gJ3JlYWRvbmx5LWNvbG9yJyA6ICdkZWZhdWx0LWZvcm0taWNvbi1jb2xvcidcIlxuICAgID48L2ktdGVjaC1pY29uLWJ1dHRvbj5cblxuICAgIDxtYXQtZGF0ZXBpY2tlciAjZGF0ZVBpY2tlciAoY2xvc2VkKT1cImlzT3BlbiA9IGZhbHNlO2NsaWNrRm9yRm9jdXNPdXQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChvcGVuZWQpPVwiaXNPcGVuID0gdHJ1ZTtmb2N1c2VkID0gdHJ1ZVwiPjwvbWF0LWRhdGVwaWNrZXI+XG5cbiAgICA8IS0tIEVycm9yIE1lc3NhZ2VzIC0tPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCIhIShuZ0NvbnRyb2wuY29udHJvbC5lcnJvcnMgJiYgc3VibWl0KVwiPlxuICAgICAge3sgbmdDb250cm9sLmNvbnRyb2wgfCBnZW5lcmF0ZUVycm9yTWVzc2FnZXMgOiBsYWJlbCA6IGRlZmF1bHRQYXR0ZXJuS2V5IH19XG4gICAgPC9tYXQtZXJyb3I+XG5cbiAgICA8IS0tIEhlbHBlciBUZXh0IC0tPlxuICAgIDxtYXQtaGludCAqbmdJZj1cIiEoISEobmdDb250cm9sLmNvbnRyb2wuZXJyb3JzICYmIHN1Ym1pdCkpICYmIGhpbnRUZXh0XCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydyZWFkb25seS1jb2xvcicgOiBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZH1cIlxuICAgID5cbiAgICAgIHt7IGhpbnRUZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgPC9tYXQtaGludD5cblxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9kaXY+XG4iXX0=
@@ -978,6 +978,8 @@ class DatePickerComponent {
978
978
  this.pastDatesDisabled = false;
979
979
  this.hintText = '';
980
980
  this.placeholder = 'MM/DD/YYYY';
981
+ this.minDate = null;
982
+ this.clearable = false;
981
983
  this.submit = false;
982
984
  this.valueChangeEmitter = new EventEmitter();
983
985
  this.isOpen = false;
@@ -1013,7 +1015,7 @@ class DatePickerComponent {
1013
1015
  }, 120);
1014
1016
  }
1015
1017
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatePickerComponent, deps: [{ token: InputService }], target: i0.ɵɵFactoryTarget.Component }); }
1016
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DatePickerComponent, isStandalone: true, selector: "i-tech-date-picker", inputs: { label: "label", defaultPatternKey: "defaultPatternKey", required: "required", pastDatesDisabled: "pastDatesDisabled", hintText: "hintText", placeholder: "placeholder", iconPrefix: "iconPrefix", iconPrefixSvg: "iconPrefixSvg", iconPrefixTooltip: "iconPrefixTooltip", iconPrefixColor: "iconPrefixColor", iconPrefixVariant: "iconPrefixVariant", valueChangeEmit: "valueChangeEmit", submit: "submit" }, outputs: { valueChangeEmitter: "valueChangeEmitter" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0, template: "<div class=\"flex_column relative mat-date-range-input\" *ngIf=\"ngControl\" [ngClass]=\"{'check_requirements': submit}\">\n <div class=\"w-100\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && submit)\n }\">\n {{ label | translate }}\n </mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\"\n [class.readonly-field]=\"ngControl.control.disabled\">\n <input matInput #inputElement\n type=\"text\"\n [formControl]=\"ngControl.control\"\n [placeholder]=\"placeholder | translate\"\n dateMask\n [matDatepicker]=\"datePicker\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [matDatepickerFilter]=\"dateFilter\"\n (focus)=\"focused = true\"\n (click)=\"datePicker.open();\"\n (dateChange)=\"emitChange()\"\n >\n\n <mat-icon *ngIf=\"iconPrefix\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [style.color]=\"iconPrefixColor\"\n >{{ iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"iconPrefixSvg\"\n ></mat-icon>\n\n <i-tech-icon-button matSuffix\n [iconName]=\"'date_range'\"\n [disabled]=\"ngControl.control.disabled\"\n (click)=\"datePicker.open()\"\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n ></i-tech-icon-button>\n\n <mat-datepicker #datePicker (closed)=\"isOpen = false;clickForFocusOut()\"\n (opened)=\"isOpen = true;focused = true\"></mat-datepicker>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ ngControl.control | generateErrorMessages : label : defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && submit)) && hintText\"\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\"\n >\n {{ hintText | translate }}\n </mat-hint>\n\n </mat-form-field>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i3$1.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i3$1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: DateMaskDirective, selector: "[dateMask]", inputs: ["maskType", "matDatepicker", "rangeFormControl"] }, { kind: "pipe", type: GenerateErrorMessagesPipe, name: "generateErrorMessages" }, { kind: "component", type: IconButtonComponent, selector: "i-tech-icon-button", inputs: ["size", "type", "iconSvg", "iconName", "tooltip", "disabled"], outputs: ["buttonClick"] }] }); }
1018
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DatePickerComponent, isStandalone: true, selector: "i-tech-date-picker", inputs: { label: "label", defaultPatternKey: "defaultPatternKey", required: "required", pastDatesDisabled: "pastDatesDisabled", hintText: "hintText", placeholder: "placeholder", iconPrefix: "iconPrefix", iconPrefixSvg: "iconPrefixSvg", iconPrefixTooltip: "iconPrefixTooltip", iconPrefixColor: "iconPrefixColor", iconPrefixVariant: "iconPrefixVariant", valueChangeEmit: "valueChangeEmit", minDate: "minDate", clearable: "clearable", submit: "submit" }, outputs: { valueChangeEmitter: "valueChangeEmitter" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0, template: "<div class=\"flex_column relative mat-date-range-input\" *ngIf=\"ngControl\" [ngClass]=\"{'check_requirements': submit}\">\n <div class=\"w-100\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && submit)\n }\">\n {{ label | translate }}\n </mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\"\n [class.readonly-field]=\"ngControl.control.disabled\">\n <input matInput #inputElement\n type=\"text\"\n [formControl]=\"ngControl.control\"\n [placeholder]=\"placeholder | translate\"\n [min]=\"minDate\"\n dateMask\n [matDatepicker]=\"datePicker\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [matDatepickerFilter]=\"dateFilter\"\n (focus)=\"focused = true\"\n (click)=\"datePicker.open();\"\n (dateChange)=\"emitChange()\"\n >\n\n <mat-icon *ngIf=\"iconPrefix\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [style.color]=\"iconPrefixColor\"\n >{{ iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"iconPrefixSvg\"\n ></mat-icon>\n\n <app-icon-button\n *ngIf=\"clearable && !ngControl.control.disabled && !!ngControl.control.value\"\n iconName=\"cancel\"\n matSuffix\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"$event.stopPropagation();$event.preventDefault();ngControl.control.reset(null);\"\n >\n </app-icon-button>\n\n <i-tech-icon-button matSuffix\n [iconName]=\"'date_range'\"\n [disabled]=\"ngControl.control.disabled\"\n (click)=\"datePicker.open()\"\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n ></i-tech-icon-button>\n\n <mat-datepicker #datePicker (closed)=\"isOpen = false;clickForFocusOut()\"\n (opened)=\"isOpen = true;focused = true\"></mat-datepicker>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ ngControl.control | generateErrorMessages : label : defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && submit)) && hintText\"\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\"\n >\n {{ hintText | translate }}\n </mat-hint>\n\n </mat-form-field>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i3$1.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i3$1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: DateMaskDirective, selector: "[dateMask]", inputs: ["maskType", "matDatepicker", "rangeFormControl"] }, { kind: "pipe", type: GenerateErrorMessagesPipe, name: "generateErrorMessages" }, { kind: "component", type: IconButtonComponent, selector: "i-tech-icon-button", inputs: ["size", "type", "iconSvg", "iconName", "tooltip", "disabled"], outputs: ["buttonClick"] }] }); }
1017
1019
  }
1018
1020
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatePickerComponent, decorators: [{
1019
1021
  type: Component,
@@ -1028,7 +1030,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1028
1030
  MatIconModule,
1029
1031
  DateMaskDirective,
1030
1032
  GenerateErrorMessagesPipe, IconButtonComponent
1031
- ], standalone: true, template: "<div class=\"flex_column relative mat-date-range-input\" *ngIf=\"ngControl\" [ngClass]=\"{'check_requirements': submit}\">\n <div class=\"w-100\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && submit)\n }\">\n {{ label | translate }}\n </mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\"\n [class.readonly-field]=\"ngControl.control.disabled\">\n <input matInput #inputElement\n type=\"text\"\n [formControl]=\"ngControl.control\"\n [placeholder]=\"placeholder | translate\"\n dateMask\n [matDatepicker]=\"datePicker\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [matDatepickerFilter]=\"dateFilter\"\n (focus)=\"focused = true\"\n (click)=\"datePicker.open();\"\n (dateChange)=\"emitChange()\"\n >\n\n <mat-icon *ngIf=\"iconPrefix\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [style.color]=\"iconPrefixColor\"\n >{{ iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"iconPrefixSvg\"\n ></mat-icon>\n\n <i-tech-icon-button matSuffix\n [iconName]=\"'date_range'\"\n [disabled]=\"ngControl.control.disabled\"\n (click)=\"datePicker.open()\"\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n ></i-tech-icon-button>\n\n <mat-datepicker #datePicker (closed)=\"isOpen = false;clickForFocusOut()\"\n (opened)=\"isOpen = true;focused = true\"></mat-datepicker>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ ngControl.control | generateErrorMessages : label : defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && submit)) && hintText\"\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\"\n >\n {{ hintText | translate }}\n </mat-hint>\n\n </mat-form-field>\n</div>\n" }]
1033
+ ], standalone: true, template: "<div class=\"flex_column relative mat-date-range-input\" *ngIf=\"ngControl\" [ngClass]=\"{'check_requirements': submit}\">\n <div class=\"w-100\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && submit)\n }\">\n {{ label | translate }}\n </mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\"\n [class.readonly-field]=\"ngControl.control.disabled\">\n <input matInput #inputElement\n type=\"text\"\n [formControl]=\"ngControl.control\"\n [placeholder]=\"placeholder | translate\"\n [min]=\"minDate\"\n dateMask\n [matDatepicker]=\"datePicker\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [matDatepickerFilter]=\"dateFilter\"\n (focus)=\"focused = true\"\n (click)=\"datePicker.open();\"\n (dateChange)=\"emitChange()\"\n >\n\n <mat-icon *ngIf=\"iconPrefix\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [style.color]=\"iconPrefixColor\"\n >{{ iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"iconPrefixSvg\"\n ></mat-icon>\n\n <app-icon-button\n *ngIf=\"clearable && !ngControl.control.disabled && !!ngControl.control.value\"\n iconName=\"cancel\"\n matSuffix\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"$event.stopPropagation();$event.preventDefault();ngControl.control.reset(null);\"\n >\n </app-icon-button>\n\n <i-tech-icon-button matSuffix\n [iconName]=\"'date_range'\"\n [disabled]=\"ngControl.control.disabled\"\n (click)=\"datePicker.open()\"\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n ></i-tech-icon-button>\n\n <mat-datepicker #datePicker (closed)=\"isOpen = false;clickForFocusOut()\"\n (opened)=\"isOpen = true;focused = true\"></mat-datepicker>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ ngControl.control | generateErrorMessages : label : defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && submit)) && hintText\"\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\"\n >\n {{ hintText | translate }}\n </mat-hint>\n\n </mat-form-field>\n</div>\n" }]
1032
1034
  }], ctorParameters: () => [{ type: InputService }], propDecorators: { label: [{
1033
1035
  type: Input
1034
1036
  }], defaultPatternKey: [{
@@ -1053,6 +1055,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1053
1055
  type: Input
1054
1056
  }], valueChangeEmit: [{
1055
1057
  type: Input
1058
+ }], minDate: [{
1059
+ type: Input
1060
+ }], clearable: [{
1061
+ type: Input
1056
1062
  }], submit: [{
1057
1063
  type: Input
1058
1064
  }], inputElement: [{
@@ -1 +1 @@
1
- {"version":3,"file":"i-tech-shared-components.mjs","sources":["../../../projects/shared-components/src/lib/pipes/generate-error-messages.pipe.ts","../../../projects/shared-components/src/lib/pipes/array-to-string.pipe.ts","../../../projects/shared-components/src/lib/pipes/get-value-by-key-from-object.pipe.ts","../../../projects/shared-components/src/lib/services/input.service.ts","../../../projects/shared-components/src/lib/interfaces/button-types.enum.ts","../../../projects/shared-components/src/lib/directives/input-mask.directive.ts","../../../projects/shared-components/src/lib/components/icon-button/icon-button.component.ts","../../../projects/shared-components/src/lib/components/icon-button/icon-button.component.html","../../../projects/shared-components/src/lib/components/text/text-input.component.ts","../../../projects/shared-components/src/lib/components/text/text-input.component.html","../../../projects/shared-components/src/lib/components/button/button.component.ts","../../../projects/shared-components/src/lib/components/button/button.component.html","../../../projects/shared-components/src/lib/components/clear-value/clear-value.component.ts","../../../projects/shared-components/src/lib/components/autocomplete-select/autocomplete-select.component.ts","../../../projects/shared-components/src/lib/components/autocomplete-select/autocomplete-select.component.html","../../../projects/shared-components/src/lib/directives/date-mask.directive.ts","../../../projects/shared-components/src/lib/components/date-picker/date-picker.component.ts","../../../projects/shared-components/src/lib/components/date-picker/date-picker.component.html","../../../projects/shared-components/src/lib/components/date-range-datepicker/date-range-datepicker.component.ts","../../../projects/shared-components/src/lib/components/date-range-datepicker/date-range-datepicker.component.html","../../../projects/shared-components/src/lib/interfaces/dropdown-selection.constants.ts","../../../projects/shared-components/src/lib/components/menu/menu.component.ts","../../../projects/shared-components/src/lib/components/menu/menu.component.html","../../../projects/shared-components/src/public-api.ts","../../../projects/shared-components/src/i-tech-shared-components.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from \"@ngx-translate/core\";\n\n@Pipe({\n name: 'generateErrorMessages',\n standalone: true,\n pure: true\n})\nexport class GenerateErrorMessagesPipe implements PipeTransform {\n\n constructor(private translateService: TranslateService) {\n }\n\n transform(control: any,label: string,defaultPatternKey = 'fixed'): string {\n\n if (!control.errors) {\n return '';\n }\n const key = (Object.keys(control.errors)[0]);\n const translateParams: {ERROR_KEY: string} = { ERROR_KEY: this.translateService.instant(label) || 'Field' };\n const errorMessageKey = (key === 'pattern') ?\n 'errorMessages.pattern.' + defaultPatternKey : 'errorMessages.' + key;\n\n return this.translateService.instant(errorMessageKey,translateParams);\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'arrayToString',\n standalone: true\n})\nexport class ArrayToStringPipe implements PipeTransform {\n\n transform(value: Array<string | number> | string): string {\n return (typeof value === 'string') ? value : value.join(',');\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'getValueByKeyFromObject',\n standalone: true\n})\nexport class GetValueByKeyFromObjectPipe implements PipeTransform {\n\n transform(\n keys: string | Array<string | number>,\n data: any,\n withParams: Array<string | Array<string | number>> | null = null,\n withParamSymbol?: string\n ): string {\n if (typeof keys === 'string') {\n return data[keys];\n } else {\n let returnValue: any = data;\n keys.forEach((key: string | number) => {\n if (!returnValue) { return; }\n returnValue = returnValue[key];\n })\n if (withParams) {\n\n withParams.forEach((param: Array<string | number> | string) => {\n let include = data;\n\n if (typeof param === 'object') {\n param.forEach((key: string | number) => {\n include = (include) ? include[key] : null;\n })\n } else {\n include = include[param];\n }\n\n if (include !== undefined && include !== null) {\n returnValue += (withParamSymbol ? withParamSymbol : ' ') + include;\n }\n })\n }\n\n return ((returnValue !== \"undefined\") && (returnValue !== null) ) ? returnValue : '---';\n }\n }\n\n}\n","import { ControlValueAccessor, FormControlName, NgControl } from \"@angular/forms\";\nimport { inject, Injectable } from \"@angular/core\";\n\nclass NoopValueAccessor implements ControlValueAccessor {\n writeValue() {\n // No-op: Intentionally empty to prevent value updates\n }\n\n registerOnChange() {\n // No-op: Intentionally empty to prevent change notifications\n }\n\n registerOnTouched() {\n // No-op: Intentionally empty to prevent touch notifications\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class InputService {\n injectNgControl(): FormControlName {\n const ngControl = inject(NgControl, { self: true, optional: true });\n\n if (!ngControl) throw new Error('...');\n\n if (ngControl instanceof FormControlName) {\n ngControl.valueAccessor = new NoopValueAccessor();\n return ngControl;\n }\n\n throw new Error(`...`);\n }\n}\n","/**\n * Enum representing different types of buttons.\n */\nexport enum ButtonType {\n /** A filled button with solid background, typically used for primary actions. */\n FILLED = 'FILLED',\n\n /** A tonal button with lighter background, used for secondary actions. */\n TONAL = 'TONAL',\n\n /** An outlined button with a border and no background. */\n OUTLINE = 'OUTLINE',\n\n /** A text button with no background or border, ideal for minimal UI. */\n TEXT = 'TEXT',\n\n /** A warning button with special styling to indicate caution or alert actions. */\n WARNING = 'WARNING',\n}\n","import {\n Directive,\n ElementRef, HostListener,\n Input\n} from '@angular/core';\n\n@Directive({\n selector: '[inputMask]',\n standalone: true\n})\nexport class InputMaskDirective {\n @Input() inputMask!: 'number' | 'string';\n @Input() set min(value: string) {\n this.minimumValue = Number(value);\n }\n @Input() set max(value: string) {\n this.maximumValue = Number(value);\n }\n @Input() set float(value: string) {\n this.isFloat = value === 'true';\n }\n minimumValue!: number;\n maximumValue!: number;\n isFloat!: boolean;\n regexFloat = new RegExp(/^([0-9]*[.])?[0-9]+$/);\n regexOnlyNumbers = new RegExp(/^-?[0-9]+(?:\\.[0-9]+)?$/);\n\n @HostListener('paste', ['$event'])\n onPaste(event: any) {\n this.makeValidation(event, true)\n }\n\n constructor(private elementRef: ElementRef) {\n this.elementRef.nativeElement.addEventListener('keypress', (event: Event) => {\n this.makeValidation(event)\n })\n }\n\n makeValidation(event: any, fromPaste = false): boolean {\n let value: any;\n let newChar: any;\n\n if (!fromPaste) {\n newChar = String.fromCharCode(event.keyCode);\n const cursorPos = event.target.selectionStart;\n const inputText = event.target.value;\n value = `${inputText.slice(0, cursorPos)}${newChar}${inputText.slice(cursorPos, inputText.length)}`;\n } else {\n value = event.clipboardData?.getData('text/plain');\n }\n\n if (this.inputMask === 'number') {\n return this.checkingForNumbers(value, event, newChar, fromPaste);\n } else {\n return this.checkingForTexts(value, event);\n }\n }\n\n checkingForNumbers(value: any, event: any, newChar: string, fromPaste = false): boolean {\n if ((isNaN(this.minimumValue) || this.minimumValue < 0) && value === '-') { value = Number('-0'); }\n\n if (this.isFloat && (newChar === '.')) {\n value += '0';\n }\n if (!this.isFloat && fromPaste && value.includes('.')) {\n event.preventDefault();\n return false;\n }\n\n const regex = (this.isFloat) ? this.regexFloat : this.regexOnlyNumbers;\n\n if (!regex.test(value) ||\n (this.minimumValue && value < this.minimumValue) ||\n (this.maximumValue && value > this.maximumValue)\n ) {\n event.preventDefault();\n return false;\n }\n\n return true;\n }\n\n checkingForTexts(value: any, event: any): boolean {\n const regex = new RegExp(/^[A-Za-z0-9]*$/);\n if (!regex.test(value)) {\n event.preventDefault();\n return false;\n }\n\n return true;\n }\n\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatFabButton, MatIconButton } from \"@angular/material/button\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { MatIcon } from \"@angular/material/icon\";\n\n@Component({\n selector: 'i-tech-icon-button',\n templateUrl: './icon-button.component.html',\n styleUrl: './icon-button.component.scss',\n imports: [\n MatIconButton,\n NgClass,\n MatTooltip,\n TranslateModule,\n MatIcon,\n MatFabButton,\n NgIf\n ],\n standalone: true\n})\nexport class IconButtonComponent {\n @Input() size: 'medium' | 'small' = 'medium';\n @Input() type: 'standard' | 'filled' | 'tonal' = 'tonal';\n @Input() iconSvg!: string;\n @Input() iconName!: string;\n @Input() tooltip!: string;\n @Input() disabled!: boolean;\n @Output() buttonClick = new EventEmitter<void>();\n\n onClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.buttonClick.emit();\n }\n }\n}\n","<button\n *ngIf=\"['tonal','standard'].includes(type)\"\n mat-icon-button\n [ngClass]=\"{small: size === 'small', tonal: type === 'tonal', standard: type === 'standard'}\"\n [matTooltip]=\"tooltip | translate\"\n [matTooltipDisabled]=\"!tooltip\"\n [disabled]=\"disabled || false\"\n (click)=\"onClick($event)\"\n>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg\"></mat-icon>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n</button>\n\n<button\n *ngIf=\"type === 'filled'\"\n mat-fab\n class=\"filled\"\n [ngClass]=\"{small: size === 'small'}\"\n [matTooltip]=\"tooltip | translate\"\n [matTooltipDisabled]=\"!tooltip\"\n [color]=\"'primary'\"\n [disabled]=\"disabled || false\"\n (click)=\"onClick($event)\"\n>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg\"></mat-icon>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n</button>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormControlName, ReactiveFormsModule } from '@angular/forms';\nimport { InputService } from '../../services/input.service';\nimport { AppInputInterface } from \"../../interfaces/app-input.interface\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { MatInput } from \"@angular/material/input\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\nimport { InputMaskDirective } from \"../../directives/input-mask.directive\";\nimport { NgxMaskDirective } from \"ngx-mask\";\n\n@Component({\n selector: 'i-tech-text-input',\n templateUrl: './text-input.component.html',\n styleUrls: [],\n imports: [\n TranslateModule,\n NgClass,\n MatIcon,\n MatTooltip,\n MatInput,\n ReactiveFormsModule,\n NgIf,\n GenerateErrorMessagesPipe,\n IconButtonComponent,\n InputMaskDirective,\n NgxMaskDirective,\n MatFormFieldModule\n ],\n standalone: true\n})\nexport class TextInputComponent {\n @Input() set inputData(data: AppInputInterface) {\n // If submit becomes true, mark the control as touched\n if (data?.submit && this.ngControl.control) {\n this.ngControl.control.markAsTouched();\n }\n this._inputData = data;\n }\n get inputData(): AppInputInterface {\n return this._inputData;\n }\n @Output() focusOutEmitter = new EventEmitter<void>();\n\n private _inputData!: AppInputInterface;\n ngControl: FormControlName;\n\n constructor(private inputService: InputService) {\n this.ngControl = this.inputService.injectNgControl();\n }\n\n onFocusOut(): void {\n if (this._inputData.focusOutEmit) {\n this.focusOutEmitter.emit();\n }\n }\n\n clear(): void {\n if (this.ngControl) {\n this.ngControl.control.reset();\n }\n }\n\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.inputData?.submit);\n }\n };\n}\n","<div *ngIf=\"inputData && ngControl\">\n <div class=\"w-100\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : inputData.readOnly || ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && inputData.submit)\n }\"\n *ngIf=\"inputData.label\">\n {{ inputData.label | translate }}\n </mat-label>\n <span *ngIf=\"inputData.required\" class=\"required-input\"\n [ngClass]=\"{'readonly-color' : inputData.readOnly || ngControl.control.disabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" class=\"w-100\"\n [class.readonly-field]=\"inputData.readOnly || ngControl.control.disabled\"\n >\n <!-- Leading Icon -->\n <mat-icon *ngIf=\"inputData.iconPrefix\"\n matPrefix\n [ngClass]=\"{\n 'readonly-color' : !inputData.iconPrefixColor &&\n (inputData.readOnly || ngControl.control.disabled),\n 'default-form-icon-color' : !inputData.iconPrefixColor &&\n !(inputData.readOnly || ngControl.control.disabled)\n }\"\n [matTooltip]=\"((inputData.iconPrefixTooltip || '') | translate)\"\n [style.color]=\"inputData.iconPrefixColor || null\"\n >{{ inputData.iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"inputData.iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((inputData.iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"inputData.iconPrefixSvg\"\n ></mat-icon>\n\n <!-- Input Field -->\n <input matInput\n *ngIf=\"!inputData.textarea\"\n [type]=\"inputData.type || 'text'\"\n [readonly]=\"inputData.readOnly\"\n [placeholder]=\"(inputData.placeholder || '') | translate\"\n [pattern]=\"inputData.pattern!\"\n [formControl]=\"ngControl.control\"\n [mask]=\"inputData.mask || ''\"\n [ngClass]=\"{'readonly-color readonly-cursor' : inputData.readOnly || ngControl.control.disabled}\"\n [inputMask]=\"inputData.inputMask!\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n (blur)=\"onFocusOut()\"\n >\n\n <textarea matInput\n *ngIf=\"inputData.textarea\"\n [type]=\"inputData.type || 'text'\"\n [readonly]=\"inputData.readOnly\"\n [placeholder]=\"(inputData.placeholder || '') | translate\"\n [pattern]=\"inputData.pattern!\"\n [formControl]=\"ngControl.control\"\n [ngClass]=\"{'readonly-color' : inputData.readOnly || ngControl.control.disabled}\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n ></textarea>\n\n <!-- Clear Icon -->\n <i-tech-icon-button\n *ngIf=\"inputData.clearable\"\n iconName=\"cancel\"\n matSuffix\n [disabled]=\"inputData.readOnly || ngControl.control.disabled || false\"\n [ngClass]=\"inputData.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"clear()\"\n >\n </i-tech-icon-button>\n\n <!-- Trailing Icon -->\n <i-tech-icon-button\n *ngIf=\"inputData.iconSuffix\"\n [iconName]=\"inputData.iconSuffix\"\n [disabled]=\"inputData.readOnly || ngControl.control.disabled || false\"\n [ngClass]=\"inputData.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n matSuffix\n >\n </i-tech-icon-button>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && inputData.submit)\">\n {{ ngControl.control | generateErrorMessages : (inputData.label || '') : inputData.defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && inputData.submit)) && inputData.hint\">\n {{ inputData.hint | translate }}\n </mat-hint>\n </mat-form-field>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatButton } from \"@angular/material/button\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatProgressSpinner } from \"@angular/material/progress-spinner\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { TranslateModule, TranslatePipe, TranslateService } from \"@ngx-translate/core\";\nimport { ButtonType } from '../../interfaces/button-types.enum';\nimport { NgxMaskDirective, NgxMaskPipe } from 'ngx-mask';\n\n/**\n * A reusable button component with Material Design styling and custom functionality.\n */\n@Component({\n selector: 'i-tech-button',\n standalone: true,\n imports: [\n MatButton,\n NgClass,\n MatProgressSpinner,\n NgIf,\n MatIconModule,\n TranslateModule\n ],\n templateUrl: './button.component.html',\n styleUrl: './button.component.css',\n providers: [\n NgxMaskDirective,\n NgxMaskPipe,\n TranslatePipe,\n TranslateService\n ]\n})\nexport class ButtonComponent {\n /**\n * The text displayed inside the button.\n */\n @Input() text = '';\n\n /**\n * Data attribute used for Cypress or other testing frameworks.\n */\n @Input() data_cy = '';\n\n /**\n * Font icon class for displaying an icon (e.g., Material Icons).\n */\n @Input() fontIcon = '';\n\n /**\n * SVG icon name for displaying an SVG icon.\n */\n @Input() svgIcon = '';\n\n /**\n * Defines the type of button (e.g., `FILLED`, `OUTLINED`).\n */\n @Input() type: ButtonType = ButtonType.FILLED;\n\n /**\n * Additional custom classes to style the button.\n */\n @Input() customClass = '';\n\n /**\n * If true, the button acts as a submit button.\n */\n @Input() submit = false;\n\n /**\n * If true, the button is disabled and cannot be clicked.\n */\n @Input() disabled = false;\n\n /**\n * Indicates whether the button is currently activated.\n */\n @Input() activated = false;\n\n /**\n * The color of the button (e.g., `primary`, `warn`).\n */\n @Input() color: 'primary' | 'warn' = 'primary';\n\n /**\n * Emits an event when the button is clicked.\n */\n @Output() buttonClick = new EventEmitter<void>();\n\n /**\n * Enum reference for `ButtonType` to use in templates.\n */\n protected readonly ButtonType = ButtonType;\n\n /**\n * Handles the button click event.\n *\n * @param event - The mouse event triggered by clicking the button.\n */\n onClick(event: MouseEvent): void {\n if (!this.disabled && !this.submit) {\n this.buttonClick.emit();\n }\n }\n}\n","<button *ngIf=\"[ButtonType.FILLED,ButtonType.WARNING].includes(type)\"\n mat-flat-button\n [attr.data-cy]=\"data_cy\"\n [color]=\"type === ButtonType.WARNING ? 'warn' : color\"\n [class.activated]=\"activated\"\n [ngClass]=\"(customClass || '')\"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\">{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n <span>{{text | translate}}</span>\n</button>\n<button *ngIf=\"[ButtonType.TONAL,ButtonType.TEXT].includes(type)\"\n mat-button\n [attr.data-cy]=\"data_cy\"\n [ngClass]=\"(type === ButtonType.TONAL ? 'tertiary ' : '') + (customClass || '')\"\n [class.activated]=\"activated\"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\">{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n\n <span>{{text | translate}}</span>\n</button>\n<button *ngIf=\"type === ButtonType.OUTLINE\"\n [color]=\"color\"\n mat-stroked-button\n [attr.data-cy]=\"data_cy\"\n [ngClass]=\"(customClass || '') \"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n [class.activated]=\"activated\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\" >{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n <span>{{text | translate}}</span>\n</button>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NgClass, NgOptimizedImage } from \"@angular/common\";\n\n@Component({\n selector: 'i-tech-clear-value',\n template: `<img\n class=\"pointer\"\n [ngClass]=\"className || 'standard'\"\n (click)=\"resetValue.emit()\"\n ngSrc=\"./ic_close.svg\"\n height=\"24\" width=\"24\" alt=\"\"/>`,\n styles: [`\n img {\n position: absolute;\n width: 15px;\n height: 15px;\n }\n\n .big {\n width: 25px;\n height: 25px;\n }\n\n .range_date {\n right: -65px;\n top: 15px;\n }\n\n .standard {\n right: -20px;\n top: 40px;\n }\n `],\n imports: [\n NgClass,\n NgOptimizedImage\n ],\n standalone: true\n})\nexport class ClearValueComponent {\n @Input() className!: string;\n @Input() additionalClass!: string;\n @Output() resetValue = new EventEmitter<any>();\n}\n","import {\n Component,\n ViewChild,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n ElementRef, HostListener, AfterViewInit\n} from '@angular/core';\nimport { MatSelect, MatSelectModule } from \"@angular/material/select\";\nimport { AutocompleteConfigsInterface } from \"../../interfaces/autocomplete-configs.interface\";\nimport { FormControlName, ReactiveFormsModule } from \"@angular/forms\";\nimport { InputService } from '../../services/input.service';\nimport { ButtonType } from '../../interfaces/button-types.enum';\nimport { NgClass, NgFor, NgIf, NgOptimizedImage } from \"@angular/common\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\nimport { ButtonComponent } from \"../button/button.component\";\nimport { GetValueByKeyFromObjectPipe } from \"../../pipes/get-value-by-key-from-object.pipe\";\nimport { ArrayToStringPipe } from \"../../pipes/array-to-string.pipe\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { ClearValueComponent } from \"../clear-value/clear-value.component\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\n\n@Component({\n selector: 'i-tech-autocomplete-select',\n templateUrl: './autocomplete-select.component.html',\n styleUrls: ['./autocomplete-select.component.scss'],\n imports: [\n NgClass,\n MatTooltip,\n NgIf,\n NgFor,\n TranslateModule,\n IconButtonComponent,\n ReactiveFormsModule,\n MatSelectModule,\n ButtonComponent,\n GetValueByKeyFromObjectPipe,\n ArrayToStringPipe,\n NgOptimizedImage,\n MatIcon,\n GenerateErrorMessagesPipe,\n ClearValueComponent,\n MatFormFieldModule\n ],\n standalone: true\n})\nexport class AutocompleteSelectComponent implements OnChanges, AfterViewInit {\n @ViewChild('matSelect') matSelect!: MatSelect;\n @ViewChild('searchInput') searchInput!: ElementRef;\n @Input() className!: string;\n @Input() submitValue!: boolean;\n\n /**\n * See AutocompleteConfigsInterface for available configurations.\n */\n @Input() set configs(data: AutocompleteConfigsInterface) {\n this.selectConfig = data;\n if (!data) {\n return;\n }\n\n if ((typeof this.selectConfig.paginate) === 'function') {\n if (this.firstRequest) {\n return;\n }\n this.getData();\n this.firstRequest = true\n return;\n }\n\n this.data = this.selectConfig.paginate;\n this.findAndSetDefaultValueFromData();\n };\n\n @Input() detectChanges!: boolean;\n @Output() selectionChange = new EventEmitter<any>();\n @Output() emitAction = new EventEmitter<any>();\n @ViewChild('allSelected') allSelected!: MatSelect;\n pending = false;\n defaultValue!: any;\n data: Array<any> = [];\n paginationData: any = { current: 1, last: 0 };\n ngControl: FormControlName;\n selectConfig!: AutocompleteConfigsInterface;\n firstRequest = false;\n showPlaceholder = true;\n isNeededForRecall = false;\n showingValue: any;\n searchTimeoutId: any;\n tabVisibility!: boolean;\n accessToNextRequest = true;\n disabled = false;\n blockRecallDefaultValueSetter = false;\n baseData: any;\n requestLoading = false;\n protected readonly ButtonType = ButtonType;\n\n @HostListener('document:visibilitychange')\n handleVisibilityChange(): void {\n this.tabVisibility = !document.hidden;\n if (this.ngControl.control.value) {\n return;\n }\n this.closePanelAndUnsetFocus();\n if (!document.hidden) {\n this.isNeededForRecall = true;\n this.pending = true;\n setTimeout(() => {\n this.pending = false\n }, 4000)\n }\n }\n\n constructor(private inputService: InputService) {\n this.ngControl = this.inputService.injectNgControl();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['selectConfig'] && this.selectConfig) {\n if ((typeof this.selectConfig.paginate) === 'function') {\n this.getData();\n }\n }\n }\n\n ngAfterViewInit() {\n this.ngControl.control.valueChanges.subscribe((res: any) => {\n if (this.data.length && res && !this.blockRecallDefaultValueSetter) {\n this.findAndSetDefaultValueFromData();\n }\n })\n }\n\n hardReload(): void {\n this.getData('', true);\n }\n\n /**\n * Dynamic request for select data.\n * @param searchText - The input value to search options by.\n * @param fromSearch - Access for search.\n * @returns Select data.\n */\n getData(searchText?: string, fromSearch?: boolean): void {\n if (!fromSearch && !this.accessToNextRequest) {\n return;\n }\n\n if (this.requestLoading) {\n return;\n }\n\n if (fromSearch) {\n this.paginationData.current = 1;\n this.accessToNextRequest = true;\n }\n\n const functionToDo = this.selectConfig.paginate(this.paginationData.current, searchText);\n\n this.requestLoading = true;\n functionToDo?.subscribe((data: Array<any> | any) => {\n const dataToAdd = ('content' in data) ? data.content : data;\n\n if ('content' in data) {\n this.accessToNextRequest = !data.last || (data.totalPages > this.paginationData.current);\n }\n\n this.data = (fromSearch || this.selectConfig?.blockPagination) ? dataToAdd : [...this.data, ...dataToAdd];\n this.pending = false;\n this.requestLoading = false;\n\n if (!dataToAdd.length) {\n this.paginationData.last = this.paginationData.current;\n return;\n }\n\n this.paginationData.current += 1;\n this.paginationData.last += 1;\n setTimeout(() => {\n this.findAndSetDefaultValueFromData();\n }, 10)\n }, () => {\n this.pending = false;\n this.requestLoading = false;\n })\n }\n\n findAndSetDefaultValueFromData(): void {\n if (this.selectConfig.multiple) {\n if (this.ngControl.value && this.ngControl.value.length == 1) {\n this.setShowingValue(this.data.find((item) => item.id === this.ngControl.value[0]))\n }\n } else {\n const isDisabled = this.ngControl.disabled;\n if (isDisabled) {\n // TODO Remove after migrating all selects\n // this.ngControl.control.enable();\n // if (!this.ngControl.value && !this.data.length) {\n // this.ngControl.control.disable();\n // return;\n // }\n // this.setDefaultValue();\n // this.ngControl.control.disable();\n } else {\n if (!this.ngControl.value && !this.data) {\n return;\n }\n this.setDefaultValue();\n }\n\n }\n }\n\n setDefaultValue(): void {\n this.defaultValue = this.data.find((item) => item.id === this.ngControl.value);\n this.baseData = this.defaultValue\n if (!this.defaultValue) {\n return;\n }\n this.selectionChange.emit()\n this.setShowingValue(this.defaultValue);\n }\n\n optionClick(showingData: any): void {\n this.baseData = showingData\n if (!this.selectConfig.multiple) {\n this.setShowingValue(showingData);\n this.matSelect.close();\n return;\n }\n if (this.searchInput) {\n if (this.selectConfig.multiple) {\n this.searchInput?.nativeElement?.focus()\n } else {\n this.inputFocusOut();\n }\n }\n\n this.setShowingValue(showingData);\n this.showPlaceholder = false;\n }\n\n addNewItemEvent(): void {\n this.isNeededForRecall = true;\n this.emitAction.emit();\n }\n\n /**\n * Filter and show.\n * @param data - Existing chosen data.\n */\n setShowingValue(data: any): void {\n if (!data) {\n return;\n }\n // TODO refactor this part fully\n let include = data;\n let includeOptional = data;\n\n if (this.selectConfig.valueToShowByKey) {\n this.selectConfig.valueToShowByKey.forEach((param: Array<string | number> | string) => {\n\n if (typeof param === 'object') {\n param.forEach((key: string | number) => {\n include = (include) ? include[key] : null;\n })\n } else {\n include = include[param];\n }\n })\n if (this.selectConfig.showFullTextWithOptionalOnSelectedValue) {\n this.selectConfig.valueToShowByParam?.forEach((param: Array<string | number> | string) => {\n\n if (typeof param === 'object') {\n param.forEach((key: string | number) => {\n includeOptional = (includeOptional) ? includeOptional[key] : null;\n })\n } else {\n includeOptional = includeOptional[param];\n }\n })\n if (this.selectConfig.valueToShowByParam && typeof includeOptional === 'string') {\n include += (this.selectConfig.withParamSymbol || '') + includeOptional\n }\n }\n\n }\n this.showingValue = include;\n this.blockRecallDefaultValueSetter = true;\n }\n\n /**\n * Block another events.\n * @param event - Element click event.\n */\n preventDefault(event: any) {\n if (!this.selectConfig.multiple) {\n return;\n }\n event.preventDefault()\n }\n\n registerPanelScrollEvent(element: MatSelect) {\n if (this.selectConfig.paginateOnScroll === false) {\n return;\n }\n\n const panel = element.panel.nativeElement;\n panel.addEventListener('scroll', (event: any) => this.loadDataOnScroll(event));\n }\n\n loadDataOnScroll(event: any) {\n const pos = (event.target.scrollTop || event.target.scrollTop) + event.target.offsetHeight;\n const max = event.target.scrollHeight;\n if ((pos + 1) >= max) {\n if (this.paginationData.current === this.paginationData.last || this.selectConfig.blockPagination) {\n return;\n }\n this.getData();\n }\n }\n\n focusSearchInput() {\n if (this.selectConfig.search && this.searchInput) {\n this.searchInput.nativeElement.focus();\n }\n }\n\n inputFocusOut(): void {\n this.isNeededForRecall = !!this.searchInput.nativeElement.value;\n this.searchInput.nativeElement.value = '';\n this.showPlaceholder = true;\n this.clearTimeoutForSearch();\n }\n\n resetValue(): void {\n this.selectionChange.emit(null);\n this.ngControl.reset(null);\n this.inputFocusOut();\n }\n\n getDataWithSearch(value: any, event: any): void {\n this.clearTimeoutForSearch();\n if (value.length >= 1) {\n this.searchTimeoutId = setTimeout(() => {\n this.getData(value, true)\n }, 800);\n } else if (value.length <= 1 && event.keyCode === 8) {\n this.getData(value, true)\n }\n }\n\n clearTimeoutForSearch(): void {\n if (this.searchTimeoutId) {\n clearTimeout(this.searchTimeoutId);\n this.searchTimeoutId = 0;\n }\n }\n\n openSelection(): void {\n if (this.selectConfig.disabled || this.ngControl.control.disabled) {\n return;\n }\n if (this.showPlaceholder) {\n this.matSelect.open();\n } else {\n this.closePanelAndUnsetFocus();\n }\n this.showPlaceholder = !this.showPlaceholder;\n if (!this.showPlaceholder) {\n this.reCallData();\n }\n }\n\n closePanelAndUnsetFocus(): void {\n this.matSelect.close();\n if (this.searchInput) {\n this.searchInput.nativeElement.blur()\n }\n }\n\n openedChange(event: any) {\n if (event) {\n if (this.isNeededForRecall) {\n this.reCallData();\n return;\n }\n if (!this.selectConfig.search) {\n this.pending = false\n this.reCallData();\n }\n\n return;\n }\n\n this.showPlaceholder = true;\n }\n\n reCallData(): void {\n // TODO refactor this part\n if (!this.isNeededForRecall) {\n return;\n }\n this.data = [];\n this.pending = true;\n this.paginationData = {\n current: 1,\n last: 0\n };\n this.accessToNextRequest = true;\n if ((typeof this.selectConfig.paginate) === 'function') {\n this.getData();\n } else {\n this.pending = false;\n this.data = this.selectConfig.paginate;\n }\n this.isNeededForRecall = false;\n }\n\n emitSelectionChangeAndClose(event: any) {\n this.selectionChange.emit(event.value);\n if (this.selectConfig.multiple) {\n if (!event.value?.length) {\n this.ngControl.control.reset();\n }\n return;\n }\n this.matSelect.close();\n }\n\n /*\n * Open mat-select and focus on search on icon click\n */\n iconClick(matSelect: MatSelect, searchInput?: ElementRef): void {\n matSelect.open();\n searchInput?.nativeElement?.focus();\n }\n\n /*\n * Custom error state matcher for mat-select to properly show error state in mat-form-field\n */\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.submitValue);\n }\n };\n}\n","<div class=\"new-mat-autocomplete\" id=\"mat_autocomplete\"\n [ngClass]=\"{\n 'mat-select-without_icon': !selectConfig.iconUrl && !selectConfig.activeStateIconUrl,\n 'mat-select-with-search': selectConfig.search,\n 'without-label': selectConfig.hideLabel,\n 'invalid_field': ngControl.control.errors && submitValue,\n 'readonly-field': selectConfig.readOnly || ngControl.control.disabled\n }\"\n [matTooltip]=\"(selectConfig.hover && !ngControl.control.disabled ? ((selectConfig.hover || '') | translate) : '')\"\n [matTooltipClass]=\"'mat-mdc-tooltip big-td-mat-tooltip'\"\n [matTooltipPosition]=\"'above'\"\n *ngIf=\"selectConfig && ngControl\">\n\n <div class=\"w-100\" *ngIf=\"!selectConfig.hideLabel\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : selectConfig.readOnly || ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && submitValue)\n }\">\n {{ selectConfig.label | translate }}\n </mat-label>\n <span *ngIf=\"selectConfig.required\" class=\"required-input\"\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\n </div>\n\n\n <!-- Search Input -->\n <div class=\"search-input w-100\"\n (click)=\"$event.stopPropagation();$event.preventDefault()\"\n [ngClass]=\"{ hide_input_placeholder: showPlaceholder || ngControl.control.disabled }\"\n *ngIf=\"selectConfig.search\"\n >\n <input autocomplete=\"off\"\n id=\"searchInput\"\n type=\"text\"\n [ngClass]=\"{'pr-25': !selectConfig.iconUrl}\"\n #searchInput\n [disabled]=\"ngControl.control.disabled || selectConfig.hover\"\n [placeholder]=\"(ngControl.control.disabled || selectConfig.hover) ? '' : 'Search'\"\n (focusout)=\"inputFocusOut()\"\n (focus)=\"openSelection()\"\n (keydown)=\"$event.stopPropagation()\"\n (keyup)=\"getDataWithSearch(searchInput.value,$event)\">\n\n <!-- Search Icon -->\n <span class=\"search-icon\">\n <i-tech-icon-button\n class=\"mr-10\"\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color'\n : 'default-form-icon-color'\"\n *ngIf=\"selectConfig.iconPrefix && !showPlaceholder\"\n [iconName]=\"selectConfig.iconPrefix || ''\"\n [disabled]=\"selectConfig.readOnly || false\"\n matPrefix\n >\n </i-tech-icon-button>\n </span>\n </div>\n\n <!-- Placeholder/Selected Value Display -->\n <ng-container *ngIf=\"showPlaceholder && selectConfig.search\">\n <div class=\"custom-placeholder\"\n *ngIf=\"(!ngControl?.value && !ngControl?.value?.length) ||\n (selectConfig.multiple && ngControl?.value && !ngControl?.value?.length)\"\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n >\n {{ ((selectConfig.placeholder || '') | translate) }}\n </div>\n <div class=\"custom-placeholder custom-value ellipsis\"\n [ngClass]=\"{\n 'pr-42': selectConfig.iconUrl,\n 'readonly-color': selectConfig.readOnly || ngControl.control.disabled,\n 'default-form-icon-color': !(selectConfig.readOnly || ngControl.control.disabled)\n }\"\n *ngIf=\"ngControl?.value\"\n >\n {{ selectConfig?.multiple ? (ngControl.value | arrayToString) : showingValue }}\n </div>\n </ng-container>\n\n <!-- Custom Icon -->\n <img class=\"left_icon_new pointer\"\n alt=\"Toggle Selection\"\n (click)=\"iconClick(matSelect, searchInput)\"\n *ngIf=\"!selectConfig.matIconName && (selectConfig.iconUrl || selectConfig.activeStateIconUrl)\"\n [src]=\"'assets/images/icons/global/' + (ngControl.control?.value && selectConfig?.activeStateIconUrl ?\n selectConfig.activeStateIconUrl\n : selectConfig.iconUrl)\">\n\n <mat-form-field appearance=\"outline\" class=\"w-100\" (click)=\"selectConfig?.search ? focusSearchInput() : null\">\n <!-- Material Select -->\n <mat-select #matSelect=\"matSelect\"\n [panelClass]=\"'autocomplete-transform-panel-location'\"\n [attr.aria-placeholder]=\"(selectConfig.placeholder || '') | translate\"\n [aria-label]=\"selectConfig.label | translate\"\n [id]=\"selectConfig.filtrationKey || ''\"\n (opened)=\"registerPanelScrollEvent(matSelect)\"\n (openedChange)=\"openedChange($event)\"\n [formControl]=\"ngControl.control\"\n [multiple]=\"selectConfig.multiple\"\n (selectionChange)=\"emitSelectionChangeAndClose($event)\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [placeholder]=\"(selectConfig.placeholder || '') | translate\"\n [disabled]=\"ngControl.control.disabled\"\n >\n\n <!-- Loading State -->\n <mat-option *ngIf=\"pending\" class=\"option_loading relative\">\n <div class=\"request_loading\">\n <img ngSrc=\"./loader.svg\" alt=\"\" height=\"200\" width=\"200\"/>\n </div>\n </mat-option>\n\n <!-- Options -->\n <ng-container *ngIf=\"data?.length && !pending\">\n <!-- Add New Option -->\n <mat-option *ngIf=\"selectConfig.actions\"\n class=\"pointer add_new\"\n disabled\n (click)=\"closePanelAndUnsetFocus();addNewItemEvent()\">\n <!--(click)=\"ngControl.control.reset(null);\n matSelect._onBlur();closePanelAndUnsetFocus();addNewItemEvent()\">-->\n <i-tech-button\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"'add'\"\n [text]=\"('dropdown_add_item' | translate : {INPUT_NAME: (selectConfig.label | translate)}) \"\n [customClass]=\"'w-100 mat-autocomplete-select-button'\">\n </i-tech-button>\n </mat-option>\n\n <!-- Regular Options -->\n <ng-container *ngIf=\"!selectConfig?.changeText && data.length\">\n <mat-option *ngFor=\"let item of data\"\n [value]=\"selectConfig.valueByKey | getValueByKeyFromObject : item\"\n (mouseup)=\"optionClick(item)\"\n (mousedown)=\"preventDefault($event)\">\n {{\n ((selectConfig.valueToShowByKey | getValueByKeyFromObject\n : item : selectConfig.valueToShowByParam : selectConfig.withParamSymbol) || '') | translate\n }}\n </mat-option>\n </ng-container>\n\n <!-- Custom Text Options -->\n <ng-container *ngIf=\"selectConfig?.changeText && data.length\">\n <mat-option *ngFor=\"let item of data\"\n [value]=\"selectConfig.valueByKey | getValueByKeyFromObject : item\"\n (mouseup)=\"optionClick(item)\"\n (mousedown)=\"preventDefault($event)\"\n [disabled]=\"selectConfig?.changeText[item].disabled\">\n {{ selectConfig?.changeText[item].text | translate }}\n </mat-option>\n </ng-container>\n </ng-container>\n\n <!-- Empty State -->\n <ng-container *ngIf=\"!pending && !data.length\">\n <mat-option disabled class=\"empty_selection_state\">\n <div class=\"actions_and_tile add_new flex_column w-100 flex_center_align_center\">\n <span>{{ 'dropdown_no_items' | translate }}</span>\n <div class=\"mt-10\">\n <i-tech-button\n *ngIf=\"selectConfig?.actions\"\n [type]=\"ButtonType.OUTLINE\"\n (buttonClick)=\"closePanelAndUnsetFocus();addNewItemEvent()\"\n [customClass]=\"'mat-autocomplete-select-button'\"\n [fontIcon]=\"'add'\"\n [text]=\"('dropdown_add_item' | translate : {INPUT_NAME: (selectConfig.label | translate)}) \">\n </i-tech-button>\n </div>\n </div>\n </mat-option>\n </ng-container>\n </mat-select>\n <mat-icon *ngIf=\"selectConfig.iconPrefix\"\n matPrefix\n [ngClass]=\"{\n 'readonly-color' : !selectConfig['iconPrefixColor']\n && (selectConfig.readOnly || ngControl.control.disabled),\n 'default-form-icon-color' : !selectConfig['iconPrefixColor']\n && !(selectConfig.readOnly || ngControl.control.disabled)\n }\"\n [matTooltip]=\"((selectConfig?.['iconPrefixTooltip'] || '') | translate)\"\n >{{ selectConfig.iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"selectConfig['iconPrefixSvg']\"\n matPrefix\n [matTooltip]=\"((selectConfig?.['iconPrefixTooltip'] || '') | translate)\"\n [svgIcon]=\"selectConfig['iconPrefixSvg'] || ''\"\n ></mat-icon>\n\n <i-tech-icon-button\n *ngIf=\"selectConfig.search && selectConfig.clearable && !ngControl.control.disabled && !!ngControl.control.value\"\n iconName=\"cancel\"\n matSuffix\n [disabled]=\"selectConfig.readOnly || false\"\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"\n $event.stopPropagation();\n $event.preventDefault();\n ngControl.control.reset(null);\n matSelect._onBlur();\n closePanelAndUnsetFocus()\n \"\n >\n </i-tech-icon-button>\n <mat-icon\n matSuffix\n class=\"select-arrow\"\n [class.open]=\"matSelect.panelOpen\"\n [ngClass]=\"{\n 'readonly-color': selectConfig.readOnly || ngControl.control.disabled,\n 'default-form-icon-color': !(selectConfig.readOnly || ngControl.control.disabled),\n 'mt-8': !!ngControl.control.value && selectConfig.clearable\n }\"\n >\n keyboard_arrow_down\n </mat-icon>\n <!-- Error Message -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submitValue)\">\n {{ ngControl.control | generateErrorMessages : selectConfig.label : selectConfig.defaultPatternKey }}\n </mat-error>\n </mat-form-field>\n\n <!-- Reset Button -->\n <i-tech-clear-value *ngIf=\"selectConfig.reset\" (resetValue)=\"resetValue()\"></i-tech-clear-value>\n</div>\n","import {\n Directive,\n ElementRef,\n HostListener,\n Injector, Input\n} from '@angular/core';\nimport { NgxMaskDirective, NgxMaskService } from 'ngx-mask';\nimport { MatDatepicker } from \"@angular/material/datepicker\";\nimport { AbstractControl } from \"@angular/forms\";\n\n@Directive({\n selector: '[dateMask]',\n providers:[NgxMaskDirective],\n standalone: true\n})\nexport class DateMaskDirective {\n @Input() maskType!: string;\n @Input() matDatepicker!: MatDatepicker<any>;\n @Input() rangeFormControl!: AbstractControl;\n\n expressions = {\n DMY: 'M0/d0/0000',\n DM: 'M0/d0'\n }\n maskService: any;\n dateRegex = new RegExp(/^\\s*(1[012]|0?[1-9])\\/(3[01]|[12][0-9]|0?[1-9])\\/((?:19|20)\\d{2})\\s*$/);\n dayMonthRegex = new RegExp(/^\\s*(1[012]|0?[1-9])\\/(3[01]|[12][0-9]|0?[1-9])$/);\n previousValue = '';\n\n constructor(\n private elementRef: ElementRef,\n private injector: Injector,\n ) {\n this.maskService = this.injector.get(NgxMaskService);\n }\n\n @HostListener('input')\n onInput() {\n let value = this.elementRef.nativeElement.value;\n\n if (this.existsZerosInString(value)) {\n value = this.previousValue;\n }\n\n const maskedValue = this.maskService.applyMask(\n value,\n this.maskType === 'DAY_MONTH' ? this.expressions.DM : this.expressions.DMY\n );\n\n if (this.maskType !== 'DAY_MONTH' && !isNaN(new Date(maskedValue).getTime())) {\n if (this.matDatepicker) {\n this.matDatepicker.select(new Date(maskedValue));\n } else if (this.rangeFormControl) {\n this.rangeFormControl.setValue(new Date(maskedValue));\n }\n }\n\n if (isNaN(new Date(maskedValue).getTime())) {\n this.matDatepicker.select(null)\n }\n\n this.elementRef.nativeElement.value = maskedValue || null;\n this.previousValue = maskedValue || null;\n }\n\n @HostListener('paste', ['$event'])\n onPaste(event: ClipboardEvent) {\n const pastedValue = event.clipboardData?.getData('text/plain');\n if (!pastedValue) { return; }\n if (this.maskType === 'DAY_MONTH') {\n if (!this.dayMonthRegex.test(pastedValue)) {\n event?.preventDefault();\n }\n } else {\n if (!this.dateRegex.test(pastedValue)) {\n event?.preventDefault();\n }\n }\n }\n\n existsZerosInString(date: string): boolean {\n const dateToArray = date.split('/');\n let isValid;\n if (this.maskType === 'DAY_MONTH') {\n isValid = !!dateToArray.find((part: string) => part.includes('00'));\n } else {\n if (dateToArray.length < 3) {\n isValid = !!dateToArray.find((part: string) => part.includes('00'));\n } else {\n isValid = (dateToArray[2][0] == '0') || (+dateToArray[2][0] > 2);\n }\n\n }\n return isValid;\n }\n\n}\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FormControlName, ReactiveFormsModule } from \"@angular/forms\";\nimport { InputService } from '../../services/input.service';\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatInput } from \"@angular/material/input\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { DateMaskDirective } from \"../../directives/date-mask.directive\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\n\n@Component({\n selector: 'i-tech-date-picker',\n templateUrl: './date-picker.component.html',\n imports: [\n NgClass, NgIf,\n TranslateModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatDatepickerModule,\n MatInput,\n MatTooltip,\n MatIconModule,\n DateMaskDirective,\n GenerateErrorMessagesPipe, IconButtonComponent\n ],\n standalone: true\n})\nexport class DatePickerComponent {\n @Input() label = '';\n @Input() defaultPatternKey!: string ;\n @Input() required = false;\n @Input() pastDatesDisabled = false;\n @Input() hintText = '';\n @Input() placeholder = 'MM/DD/YYYY';\n @Input() iconPrefix?: string;\n @Input() iconPrefixSvg?: string;\n @Input() iconPrefixTooltip?: string;\n @Input() iconPrefixColor?: string;\n @Input() iconPrefixVariant?: string;\n @Input() valueChangeEmit?: boolean;\n\n @Input() submit = false;\n @ViewChild('inputElement') inputElement!: ElementRef;\n @Output() valueChangeEmitter = new EventEmitter<void>();\n\n isOpen = false;\n focused = false;\n\n ngControl: FormControlName;\n\n today: Date = new Date();\n\n // Filter to disable past dates\n dateFilter = (date: Date | null): boolean => {\n if (this.pastDatesDisabled) {\n const today = this.today;\n return date ? date >= today : false;\n } else {\n return true;\n }\n };\n\n constructor(private inputService: InputService) {\n this.ngControl = this.inputService.injectNgControl() as FormControlName;\n }\n\n emitChange(): void {\n if (!this.valueChangeEmit) { return; }\n this.valueChangeEmitter.emit();\n }\n\n clickForFocusOut(): void {\n setTimeout(() => {\n this.inputElement.nativeElement.focus();\n this.inputElement.nativeElement.blur();\n },120)\n }\n\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.submit);\n }\n };\n}\n","<div class=\"flex_column relative mat-date-range-input\" *ngIf=\"ngControl\" [ngClass]=\"{'check_requirements': submit}\">\n <div class=\"w-100\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && submit)\n }\">\n {{ label | translate }}\n </mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\"\n [class.readonly-field]=\"ngControl.control.disabled\">\n <input matInput #inputElement\n type=\"text\"\n [formControl]=\"ngControl.control\"\n [placeholder]=\"placeholder | translate\"\n dateMask\n [matDatepicker]=\"datePicker\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [matDatepickerFilter]=\"dateFilter\"\n (focus)=\"focused = true\"\n (click)=\"datePicker.open();\"\n (dateChange)=\"emitChange()\"\n >\n\n <mat-icon *ngIf=\"iconPrefix\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [style.color]=\"iconPrefixColor\"\n >{{ iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"iconPrefixSvg\"\n ></mat-icon>\n\n <i-tech-icon-button matSuffix\n [iconName]=\"'date_range'\"\n [disabled]=\"ngControl.control.disabled\"\n (click)=\"datePicker.open()\"\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n ></i-tech-icon-button>\n\n <mat-datepicker #datePicker (closed)=\"isOpen = false;clickForFocusOut()\"\n (opened)=\"isOpen = true;focused = true\"></mat-datepicker>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ ngControl.control | generateErrorMessages : label : defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && submit)) && hintText\"\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\"\n >\n {{ hintText | translate }}\n </mat-hint>\n\n </mat-form-field>\n</div>\n","import {\n AfterViewInit,\n Component, ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { MatDatepickerModule, MatDateRangePicker } from \"@angular/material/datepicker\";\nimport { ReactiveFormsModule, UntypedFormControl, UntypedFormGroup, Validators } from \"@angular/forms\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\nimport { DateMaskDirective } from \"../../directives/date-mask.directive\";\n\n@Component({\n selector: 'i-tech-mat-range-datepicker',\n templateUrl: './date-range-datepicker.component.html',\n imports: [\n MatFormFieldModule,\n ReactiveFormsModule,\n MatDatepickerModule,\n NgClass, NgIf,\n TranslateModule,\n IconButtonComponent, DateMaskDirective\n ],\n standalone: true\n})\nexport class DateRangeDatepickerComponent implements OnChanges, AfterViewInit {\n @Input() label?: string;\n @Input() placeholder?: Array<string>;\n @Input() value?: Array<string | null>;\n @Input() defaultValue?: Array<Date>;\n @Input() key?: {start: string, end: string, title: string};\n @Input() submit = false;\n @Input() clearValue = true;\n @Input() errorMessage = '';\n @Input() onePlaceholder?: string;\n @Input() hintText = 'MM/DD/YYYY - MM/DD/YYYY';\n @Output() resetForm = new EventEmitter<any>();\n @Output() selectionChange = new EventEmitter<any>();\n @ViewChild('picker') picker!: MatDateRangePicker<any>;\n @ViewChild('min') min!: ElementRef;\n isOpen = false;\n\n dateRangeForm = new UntypedFormGroup({\n startDate: new UntypedFormControl('', [Validators.maxLength(10)]),\n endDate: new UntypedFormControl('', [Validators.maxLength(10)]),\n });\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n if (this.defaultValue?.length) {\n this.dateRangeForm.patchValue({\n startDate: this.defaultValue[0],\n endDate: this.defaultValue[1]\n })\n }\n })\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n setTimeout(() => {\n if (changes['value']?.currentValue && !(changes['value'].currentValue[0])) {\n if (this.picker) {\n this.dateRangeForm.reset();\n this.picker.select(null)\n }\n } else if (changes['value'] && this.value?.length) {\n this.dateRangeForm.setValue({\n startDate: new Date(this.value[0] || ''),\n endDate: new Date(this.value[1] || '')\n })\n }\n }, 10)\n }\n\n clickForFocusOut(): void {\n setTimeout(() => {\n this.min.nativeElement.focus();\n this.min.nativeElement.blur();\n },120)\n }\n\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.submit);\n }\n };\n\n setDate(value: Array<string | null>, element: any): void {\n this.selectionChange.emit(value);\n element.blur();\n }\n\n keyEventHandler(event: KeyboardEvent,value: Array<string | null>, element: any): void {\n if (event.code === 'Enter') {\n this.setDate(value,element)\n }\n }\n\n}\n","<div class=\"flex_column relative mat-date-range-input\"\n [formGroup]=\"dateRangeForm\"\n>\n <div class=\"w-100\">\n <mat-label>\n {{ (label || '') | translate }}\n </mat-label>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\">\n <mat-date-range-input [rangePicker]=\"picker\">\n <input formControlName=\"startDate\"\n [placeholder]=\" (placeholder ? placeholder[0] : 'Start Date')\"\n [title]=\"key ? key.title : 'Date'\"\n [attr.data-accessKey]=\"key ? key.start : 'minStartDate'\"\n [attr.data-parentKey]=\"key ? (key.start + '_' + key.end) : 'minStartDate_maxEndDate'\"\n matStartDate #min\n dateMask\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [rangeFormControl]=\"dateRangeForm.controls['startDate']\"\n (keydown)=\"keyEventHandler($event,[min.value, max.value || null],min)\"\n (dateChange)=\"setDate([min.value, max.value || null],min)\">\n <input formControlName=\"endDate\"\n [placeholder]=\"(placeholder ? placeholder[1] : 'End Date')\"\n [title]=\"key ? key.title : 'Date'\"\n [attr.data-accessKey]=\"key ? key.end : 'maxEndDate'\"\n [attr.data-parentKey]=\"key ? (key.start + '_' + key.end) : 'minStartDate_maxEndDate'\"\n matEndDate #max\n dateMask\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [rangeFormControl]=\"dateRangeForm.controls['endDate']\"\n (keydown)=\"keyEventHandler($event,[min.value, max.value || null],max)\"\n (dateChange)=\"setDate([min.value, max.value || null],max)\">\n </mat-date-range-input>\n <i-tech-icon-button matSuffix\n [iconName]=\"'cancel'\"\n (buttonClick)=\"selectionChange.emit([null, null])\"\n class=\"default-form-icon-color\"\n *ngIf=\"dateRangeForm.get('startDate')?.value && this.dateRangeForm.get('endDate')?.value\"\n ></i-tech-icon-button>\n <i-tech-icon-button\n matSuffix\n [iconName]=\"'date_range'\"\n (buttonClick)=\"picker.open()\"\n class=\"default-form-icon-color\"\n ></i-tech-icon-button>\n <mat-date-range-picker\n #picker\n (closed)=\"isOpen = false;clickForFocusOut()\"\n (opened)=\"isOpen = true\"\n ></mat-date-range-picker>\n <mat-hint *ngIf=\"hintText && !errorMessage\">{{ hintText }}</mat-hint>\n </mat-form-field>\n</div>\n","export enum DropdownSelectionType {\n UPLOAD = \"UPLOAD\",\n DOWNLOAD = \"DOWNLOAD\",\n BLANK = \"BLANK\"\n}\n\nexport const DropdownItemIcon = {\n [DropdownSelectionType.UPLOAD]: 'upload',\n [DropdownSelectionType.DOWNLOAD]: 'download',\n [DropdownSelectionType.BLANK]: 'blank',\n}","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { ButtonType } from \"../../interfaces/button-types.enum\";\nimport { DropdownItemIcon, DropdownSelectionType } from \"../../interfaces/dropdown-selection.constants\";\nimport { MatMenu, MatMenuItem, MatMenuTrigger, MenuPositionX } from \"@angular/material/menu\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { NgClass, NgForOf, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { ButtonComponent } from \"../button/button.component\";\nimport { MatLabel } from \"@angular/material/form-field\";\n\n@Component({\n selector: \"i-tech-menu\",\n standalone: true,\n imports: [\n MatMenuTrigger,\n MatMenu,\n MatIcon,\n NgIf,\n NgForOf,\n MatMenuItem,\n TranslateModule,\n NgClass,\n ButtonComponent,\n MatLabel\n ],\n templateUrl: \"./menu.component.html\",\n styleUrls: [\"./menu.component.scss\"]\n})\nexport class MenuComponent {\n @Input() text!: string;\n @Input() dataName!: string;\n @Input() containerClass!: string;\n @Input() positionX: MenuPositionX = 'before';\n @Input() menuOptions: Array<{\n value: string;\n text: string;\n src?: string;\n class?: string;\n type?: DropdownSelectionType;\n }> = [];\n @Output() emitEvent = new EventEmitter<any>();\n protected readonly ButtonType = ButtonType;\n protected readonly DropdownItemIcon = DropdownItemIcon;\n matMenuState = false;\n}\n","<div class=\"custom_dropdown_container\"\n [attr.data-name]=\"dataName\"\n [ngClass]=\"containerClass\"\n>\n <i-tech-button\n [matMenuTriggerFor]=\"beforeMenu\"\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"'keyboard_arrow_down'\"\n [text]=\"(text || '') \"\n (menuOpened)=\"matMenuState = true\"\n (menuClosed)=\"matMenuState = false\"\n [activated]=\"matMenuState\"\n ></i-tech-button>\n <mat-menu #beforeMenu=\"matMenu\" [xPosition]=\"positionX\">\n <button mat-menu-item *ngFor=\"let option of menuOptions\" (click)=\"emitEvent.emit(option.value)\">\n <mat-icon *ngIf=\"option.type\" [svgIcon]=\"DropdownItemIcon[option.type]\"></mat-icon>\n <mat-label class=\"meu_item_label\">{{(option.text || '') | translate}}</mat-label>\n </button>\n </mat-menu>\n</div>\n","/*\n * Public API Surface of shared-components\n */\n\nexport * from './lib/pipes/generate-error-messages.pipe';\nexport * from './lib/pipes/array-to-string.pipe';\nexport * from './lib/pipes/get-value-by-key-from-object.pipe';\nexport * from './lib/services/input.service';\nexport * from './lib/interfaces/app-input.interface';\nexport * from './lib/interfaces/button-types.enum';\nexport * from './lib/interfaces/autocomplete-configs.interface';\nexport * from './lib/directives/input-mask.directive';\nexport * from './lib/components/icon-button/icon-button.component';\nexport * from './lib/components/text/text-input.component';\nexport * from './lib/components/button/button.component';\nexport * from './lib/components/autocomplete-select/autocomplete-select.component';\nexport * from './lib/components/date-picker/date-picker.component';\nexport * from './lib/components/clear-value/clear-value.component';\nexport * from './lib/components/date-range-datepicker/date-range-datepicker.component';\nexport * from './lib/components/menu/menu.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.InputService","i5","i6","i2","i3","i4"],"mappings":"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"}
1
+ {"version":3,"file":"i-tech-shared-components.mjs","sources":["../../../projects/shared-components/src/lib/pipes/generate-error-messages.pipe.ts","../../../projects/shared-components/src/lib/pipes/array-to-string.pipe.ts","../../../projects/shared-components/src/lib/pipes/get-value-by-key-from-object.pipe.ts","../../../projects/shared-components/src/lib/services/input.service.ts","../../../projects/shared-components/src/lib/interfaces/button-types.enum.ts","../../../projects/shared-components/src/lib/directives/input-mask.directive.ts","../../../projects/shared-components/src/lib/components/icon-button/icon-button.component.ts","../../../projects/shared-components/src/lib/components/icon-button/icon-button.component.html","../../../projects/shared-components/src/lib/components/text/text-input.component.ts","../../../projects/shared-components/src/lib/components/text/text-input.component.html","../../../projects/shared-components/src/lib/components/button/button.component.ts","../../../projects/shared-components/src/lib/components/button/button.component.html","../../../projects/shared-components/src/lib/components/clear-value/clear-value.component.ts","../../../projects/shared-components/src/lib/components/autocomplete-select/autocomplete-select.component.ts","../../../projects/shared-components/src/lib/components/autocomplete-select/autocomplete-select.component.html","../../../projects/shared-components/src/lib/directives/date-mask.directive.ts","../../../projects/shared-components/src/lib/components/date-picker/date-picker.component.ts","../../../projects/shared-components/src/lib/components/date-picker/date-picker.component.html","../../../projects/shared-components/src/lib/components/date-range-datepicker/date-range-datepicker.component.ts","../../../projects/shared-components/src/lib/components/date-range-datepicker/date-range-datepicker.component.html","../../../projects/shared-components/src/lib/interfaces/dropdown-selection.constants.ts","../../../projects/shared-components/src/lib/components/menu/menu.component.ts","../../../projects/shared-components/src/lib/components/menu/menu.component.html","../../../projects/shared-components/src/public-api.ts","../../../projects/shared-components/src/i-tech-shared-components.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from \"@ngx-translate/core\";\n\n@Pipe({\n name: 'generateErrorMessages',\n standalone: true,\n pure: true\n})\nexport class GenerateErrorMessagesPipe implements PipeTransform {\n\n constructor(private translateService: TranslateService) {\n }\n\n transform(control: any,label: string,defaultPatternKey = 'fixed'): string {\n\n if (!control.errors) {\n return '';\n }\n const key = (Object.keys(control.errors)[0]);\n const translateParams: {ERROR_KEY: string} = { ERROR_KEY: this.translateService.instant(label) || 'Field' };\n const errorMessageKey = (key === 'pattern') ?\n 'errorMessages.pattern.' + defaultPatternKey : 'errorMessages.' + key;\n\n return this.translateService.instant(errorMessageKey,translateParams);\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'arrayToString',\n standalone: true\n})\nexport class ArrayToStringPipe implements PipeTransform {\n\n transform(value: Array<string | number> | string): string {\n return (typeof value === 'string') ? value : value.join(',');\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'getValueByKeyFromObject',\n standalone: true\n})\nexport class GetValueByKeyFromObjectPipe implements PipeTransform {\n\n transform(\n keys: string | Array<string | number>,\n data: any,\n withParams: Array<string | Array<string | number>> | null = null,\n withParamSymbol?: string\n ): string {\n if (typeof keys === 'string') {\n return data[keys];\n } else {\n let returnValue: any = data;\n keys.forEach((key: string | number) => {\n if (!returnValue) { return; }\n returnValue = returnValue[key];\n })\n if (withParams) {\n\n withParams.forEach((param: Array<string | number> | string) => {\n let include = data;\n\n if (typeof param === 'object') {\n param.forEach((key: string | number) => {\n include = (include) ? include[key] : null;\n })\n } else {\n include = include[param];\n }\n\n if (include !== undefined && include !== null) {\n returnValue += (withParamSymbol ? withParamSymbol : ' ') + include;\n }\n })\n }\n\n return ((returnValue !== \"undefined\") && (returnValue !== null) ) ? returnValue : '---';\n }\n }\n\n}\n","import { ControlValueAccessor, FormControlName, NgControl } from \"@angular/forms\";\nimport { inject, Injectable } from \"@angular/core\";\n\nclass NoopValueAccessor implements ControlValueAccessor {\n writeValue() {\n // No-op: Intentionally empty to prevent value updates\n }\n\n registerOnChange() {\n // No-op: Intentionally empty to prevent change notifications\n }\n\n registerOnTouched() {\n // No-op: Intentionally empty to prevent touch notifications\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class InputService {\n injectNgControl(): FormControlName {\n const ngControl = inject(NgControl, { self: true, optional: true });\n\n if (!ngControl) throw new Error('...');\n\n if (ngControl instanceof FormControlName) {\n ngControl.valueAccessor = new NoopValueAccessor();\n return ngControl;\n }\n\n throw new Error(`...`);\n }\n}\n","/**\n * Enum representing different types of buttons.\n */\nexport enum ButtonType {\n /** A filled button with solid background, typically used for primary actions. */\n FILLED = 'FILLED',\n\n /** A tonal button with lighter background, used for secondary actions. */\n TONAL = 'TONAL',\n\n /** An outlined button with a border and no background. */\n OUTLINE = 'OUTLINE',\n\n /** A text button with no background or border, ideal for minimal UI. */\n TEXT = 'TEXT',\n\n /** A warning button with special styling to indicate caution or alert actions. */\n WARNING = 'WARNING',\n}\n","import {\n Directive,\n ElementRef, HostListener,\n Input\n} from '@angular/core';\n\n@Directive({\n selector: '[inputMask]',\n standalone: true\n})\nexport class InputMaskDirective {\n @Input() inputMask!: 'number' | 'string';\n @Input() set min(value: string) {\n this.minimumValue = Number(value);\n }\n @Input() set max(value: string) {\n this.maximumValue = Number(value);\n }\n @Input() set float(value: string) {\n this.isFloat = value === 'true';\n }\n minimumValue!: number;\n maximumValue!: number;\n isFloat!: boolean;\n regexFloat = new RegExp(/^([0-9]*[.])?[0-9]+$/);\n regexOnlyNumbers = new RegExp(/^-?[0-9]+(?:\\.[0-9]+)?$/);\n\n @HostListener('paste', ['$event'])\n onPaste(event: any) {\n this.makeValidation(event, true)\n }\n\n constructor(private elementRef: ElementRef) {\n this.elementRef.nativeElement.addEventListener('keypress', (event: Event) => {\n this.makeValidation(event)\n })\n }\n\n makeValidation(event: any, fromPaste = false): boolean {\n let value: any;\n let newChar: any;\n\n if (!fromPaste) {\n newChar = String.fromCharCode(event.keyCode);\n const cursorPos = event.target.selectionStart;\n const inputText = event.target.value;\n value = `${inputText.slice(0, cursorPos)}${newChar}${inputText.slice(cursorPos, inputText.length)}`;\n } else {\n value = event.clipboardData?.getData('text/plain');\n }\n\n if (this.inputMask === 'number') {\n return this.checkingForNumbers(value, event, newChar, fromPaste);\n } else {\n return this.checkingForTexts(value, event);\n }\n }\n\n checkingForNumbers(value: any, event: any, newChar: string, fromPaste = false): boolean {\n if ((isNaN(this.minimumValue) || this.minimumValue < 0) && value === '-') { value = Number('-0'); }\n\n if (this.isFloat && (newChar === '.')) {\n value += '0';\n }\n if (!this.isFloat && fromPaste && value.includes('.')) {\n event.preventDefault();\n return false;\n }\n\n const regex = (this.isFloat) ? this.regexFloat : this.regexOnlyNumbers;\n\n if (!regex.test(value) ||\n (this.minimumValue && value < this.minimumValue) ||\n (this.maximumValue && value > this.maximumValue)\n ) {\n event.preventDefault();\n return false;\n }\n\n return true;\n }\n\n checkingForTexts(value: any, event: any): boolean {\n const regex = new RegExp(/^[A-Za-z0-9]*$/);\n if (!regex.test(value)) {\n event.preventDefault();\n return false;\n }\n\n return true;\n }\n\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatFabButton, MatIconButton } from \"@angular/material/button\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { MatIcon } from \"@angular/material/icon\";\n\n@Component({\n selector: 'i-tech-icon-button',\n templateUrl: './icon-button.component.html',\n styleUrl: './icon-button.component.scss',\n imports: [\n MatIconButton,\n NgClass,\n MatTooltip,\n TranslateModule,\n MatIcon,\n MatFabButton,\n NgIf\n ],\n standalone: true\n})\nexport class IconButtonComponent {\n @Input() size: 'medium' | 'small' = 'medium';\n @Input() type: 'standard' | 'filled' | 'tonal' = 'tonal';\n @Input() iconSvg!: string;\n @Input() iconName!: string;\n @Input() tooltip!: string;\n @Input() disabled!: boolean;\n @Output() buttonClick = new EventEmitter<void>();\n\n onClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.buttonClick.emit();\n }\n }\n}\n","<button\n *ngIf=\"['tonal','standard'].includes(type)\"\n mat-icon-button\n [ngClass]=\"{small: size === 'small', tonal: type === 'tonal', standard: type === 'standard'}\"\n [matTooltip]=\"tooltip | translate\"\n [matTooltipDisabled]=\"!tooltip\"\n [disabled]=\"disabled || false\"\n (click)=\"onClick($event)\"\n>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg\"></mat-icon>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n</button>\n\n<button\n *ngIf=\"type === 'filled'\"\n mat-fab\n class=\"filled\"\n [ngClass]=\"{small: size === 'small'}\"\n [matTooltip]=\"tooltip | translate\"\n [matTooltipDisabled]=\"!tooltip\"\n [color]=\"'primary'\"\n [disabled]=\"disabled || false\"\n (click)=\"onClick($event)\"\n>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg\"></mat-icon>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n</button>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormControlName, ReactiveFormsModule } from '@angular/forms';\nimport { InputService } from '../../services/input.service';\nimport { AppInputInterface } from \"../../interfaces/app-input.interface\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { MatInput } from \"@angular/material/input\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\nimport { InputMaskDirective } from \"../../directives/input-mask.directive\";\nimport { NgxMaskDirective } from \"ngx-mask\";\n\n@Component({\n selector: 'i-tech-text-input',\n templateUrl: './text-input.component.html',\n styleUrls: [],\n imports: [\n TranslateModule,\n NgClass,\n MatIcon,\n MatTooltip,\n MatInput,\n ReactiveFormsModule,\n NgIf,\n GenerateErrorMessagesPipe,\n IconButtonComponent,\n InputMaskDirective,\n NgxMaskDirective,\n MatFormFieldModule\n ],\n standalone: true\n})\nexport class TextInputComponent {\n @Input() set inputData(data: AppInputInterface) {\n // If submit becomes true, mark the control as touched\n if (data?.submit && this.ngControl.control) {\n this.ngControl.control.markAsTouched();\n }\n this._inputData = data;\n }\n get inputData(): AppInputInterface {\n return this._inputData;\n }\n @Output() focusOutEmitter = new EventEmitter<void>();\n\n private _inputData!: AppInputInterface;\n ngControl: FormControlName;\n\n constructor(private inputService: InputService) {\n this.ngControl = this.inputService.injectNgControl();\n }\n\n onFocusOut(): void {\n if (this._inputData.focusOutEmit) {\n this.focusOutEmitter.emit();\n }\n }\n\n clear(): void {\n if (this.ngControl) {\n this.ngControl.control.reset();\n }\n }\n\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.inputData?.submit);\n }\n };\n}\n","<div *ngIf=\"inputData && ngControl\">\n <div class=\"w-100\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : inputData.readOnly || ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && inputData.submit)\n }\"\n *ngIf=\"inputData.label\">\n {{ inputData.label | translate }}\n </mat-label>\n <span *ngIf=\"inputData.required\" class=\"required-input\"\n [ngClass]=\"{'readonly-color' : inputData.readOnly || ngControl.control.disabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" class=\"w-100\"\n [class.readonly-field]=\"inputData.readOnly || ngControl.control.disabled\"\n >\n <!-- Leading Icon -->\n <mat-icon *ngIf=\"inputData.iconPrefix\"\n matPrefix\n [ngClass]=\"{\n 'readonly-color' : !inputData.iconPrefixColor &&\n (inputData.readOnly || ngControl.control.disabled),\n 'default-form-icon-color' : !inputData.iconPrefixColor &&\n !(inputData.readOnly || ngControl.control.disabled)\n }\"\n [matTooltip]=\"((inputData.iconPrefixTooltip || '') | translate)\"\n [style.color]=\"inputData.iconPrefixColor || null\"\n >{{ inputData.iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"inputData.iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((inputData.iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"inputData.iconPrefixSvg\"\n ></mat-icon>\n\n <!-- Input Field -->\n <input matInput\n *ngIf=\"!inputData.textarea\"\n [type]=\"inputData.type || 'text'\"\n [readonly]=\"inputData.readOnly\"\n [placeholder]=\"(inputData.placeholder || '') | translate\"\n [pattern]=\"inputData.pattern!\"\n [formControl]=\"ngControl.control\"\n [mask]=\"inputData.mask || ''\"\n [ngClass]=\"{'readonly-color readonly-cursor' : inputData.readOnly || ngControl.control.disabled}\"\n [inputMask]=\"inputData.inputMask!\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n (blur)=\"onFocusOut()\"\n >\n\n <textarea matInput\n *ngIf=\"inputData.textarea\"\n [type]=\"inputData.type || 'text'\"\n [readonly]=\"inputData.readOnly\"\n [placeholder]=\"(inputData.placeholder || '') | translate\"\n [pattern]=\"inputData.pattern!\"\n [formControl]=\"ngControl.control\"\n [ngClass]=\"{'readonly-color' : inputData.readOnly || ngControl.control.disabled}\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n ></textarea>\n\n <!-- Clear Icon -->\n <i-tech-icon-button\n *ngIf=\"inputData.clearable\"\n iconName=\"cancel\"\n matSuffix\n [disabled]=\"inputData.readOnly || ngControl.control.disabled || false\"\n [ngClass]=\"inputData.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"clear()\"\n >\n </i-tech-icon-button>\n\n <!-- Trailing Icon -->\n <i-tech-icon-button\n *ngIf=\"inputData.iconSuffix\"\n [iconName]=\"inputData.iconSuffix\"\n [disabled]=\"inputData.readOnly || ngControl.control.disabled || false\"\n [ngClass]=\"inputData.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n matSuffix\n >\n </i-tech-icon-button>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && inputData.submit)\">\n {{ ngControl.control | generateErrorMessages : (inputData.label || '') : inputData.defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && inputData.submit)) && inputData.hint\">\n {{ inputData.hint | translate }}\n </mat-hint>\n </mat-form-field>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatButton } from \"@angular/material/button\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatProgressSpinner } from \"@angular/material/progress-spinner\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { TranslateModule, TranslatePipe, TranslateService } from \"@ngx-translate/core\";\nimport { ButtonType } from '../../interfaces/button-types.enum';\nimport { NgxMaskDirective, NgxMaskPipe } from 'ngx-mask';\n\n/**\n * A reusable button component with Material Design styling and custom functionality.\n */\n@Component({\n selector: 'i-tech-button',\n standalone: true,\n imports: [\n MatButton,\n NgClass,\n MatProgressSpinner,\n NgIf,\n MatIconModule,\n TranslateModule\n ],\n templateUrl: './button.component.html',\n styleUrl: './button.component.css',\n providers: [\n NgxMaskDirective,\n NgxMaskPipe,\n TranslatePipe,\n TranslateService\n ]\n})\nexport class ButtonComponent {\n /**\n * The text displayed inside the button.\n */\n @Input() text = '';\n\n /**\n * Data attribute used for Cypress or other testing frameworks.\n */\n @Input() data_cy = '';\n\n /**\n * Font icon class for displaying an icon (e.g., Material Icons).\n */\n @Input() fontIcon = '';\n\n /**\n * SVG icon name for displaying an SVG icon.\n */\n @Input() svgIcon = '';\n\n /**\n * Defines the type of button (e.g., `FILLED`, `OUTLINED`).\n */\n @Input() type: ButtonType = ButtonType.FILLED;\n\n /**\n * Additional custom classes to style the button.\n */\n @Input() customClass = '';\n\n /**\n * If true, the button acts as a submit button.\n */\n @Input() submit = false;\n\n /**\n * If true, the button is disabled and cannot be clicked.\n */\n @Input() disabled = false;\n\n /**\n * Indicates whether the button is currently activated.\n */\n @Input() activated = false;\n\n /**\n * The color of the button (e.g., `primary`, `warn`).\n */\n @Input() color: 'primary' | 'warn' = 'primary';\n\n /**\n * Emits an event when the button is clicked.\n */\n @Output() buttonClick = new EventEmitter<void>();\n\n /**\n * Enum reference for `ButtonType` to use in templates.\n */\n protected readonly ButtonType = ButtonType;\n\n /**\n * Handles the button click event.\n *\n * @param event - The mouse event triggered by clicking the button.\n */\n onClick(event: MouseEvent): void {\n if (!this.disabled && !this.submit) {\n this.buttonClick.emit();\n }\n }\n}\n","<button *ngIf=\"[ButtonType.FILLED,ButtonType.WARNING].includes(type)\"\n mat-flat-button\n [attr.data-cy]=\"data_cy\"\n [color]=\"type === ButtonType.WARNING ? 'warn' : color\"\n [class.activated]=\"activated\"\n [ngClass]=\"(customClass || '')\"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\">{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n <span>{{text | translate}}</span>\n</button>\n<button *ngIf=\"[ButtonType.TONAL,ButtonType.TEXT].includes(type)\"\n mat-button\n [attr.data-cy]=\"data_cy\"\n [ngClass]=\"(type === ButtonType.TONAL ? 'tertiary ' : '') + (customClass || '')\"\n [class.activated]=\"activated\"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\">{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n\n <span>{{text | translate}}</span>\n</button>\n<button *ngIf=\"type === ButtonType.OUTLINE\"\n [color]=\"color\"\n mat-stroked-button\n [attr.data-cy]=\"data_cy\"\n [ngClass]=\"(customClass || '') \"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n [class.activated]=\"activated\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\" >{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n <span>{{text | translate}}</span>\n</button>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NgClass, NgOptimizedImage } from \"@angular/common\";\n\n@Component({\n selector: 'i-tech-clear-value',\n template: `<img\n class=\"pointer\"\n [ngClass]=\"className || 'standard'\"\n (click)=\"resetValue.emit()\"\n ngSrc=\"./ic_close.svg\"\n height=\"24\" width=\"24\" alt=\"\"/>`,\n styles: [`\n img {\n position: absolute;\n width: 15px;\n height: 15px;\n }\n\n .big {\n width: 25px;\n height: 25px;\n }\n\n .range_date {\n right: -65px;\n top: 15px;\n }\n\n .standard {\n right: -20px;\n top: 40px;\n }\n `],\n imports: [\n NgClass,\n NgOptimizedImage\n ],\n standalone: true\n})\nexport class ClearValueComponent {\n @Input() className!: string;\n @Input() additionalClass!: string;\n @Output() resetValue = new EventEmitter<any>();\n}\n","import {\n Component,\n ViewChild,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n ElementRef, HostListener, AfterViewInit\n} from '@angular/core';\nimport { MatSelect, MatSelectModule } from \"@angular/material/select\";\nimport { AutocompleteConfigsInterface } from \"../../interfaces/autocomplete-configs.interface\";\nimport { FormControlName, ReactiveFormsModule } from \"@angular/forms\";\nimport { InputService } from '../../services/input.service';\nimport { ButtonType } from '../../interfaces/button-types.enum';\nimport { NgClass, NgFor, NgIf, NgOptimizedImage } from \"@angular/common\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\nimport { ButtonComponent } from \"../button/button.component\";\nimport { GetValueByKeyFromObjectPipe } from \"../../pipes/get-value-by-key-from-object.pipe\";\nimport { ArrayToStringPipe } from \"../../pipes/array-to-string.pipe\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { ClearValueComponent } from \"../clear-value/clear-value.component\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\n\n@Component({\n selector: 'i-tech-autocomplete-select',\n templateUrl: './autocomplete-select.component.html',\n styleUrls: ['./autocomplete-select.component.scss'],\n imports: [\n NgClass,\n MatTooltip,\n NgIf,\n NgFor,\n TranslateModule,\n IconButtonComponent,\n ReactiveFormsModule,\n MatSelectModule,\n ButtonComponent,\n GetValueByKeyFromObjectPipe,\n ArrayToStringPipe,\n NgOptimizedImage,\n MatIcon,\n GenerateErrorMessagesPipe,\n ClearValueComponent,\n MatFormFieldModule\n ],\n standalone: true\n})\nexport class AutocompleteSelectComponent implements OnChanges, AfterViewInit {\n @ViewChild('matSelect') matSelect!: MatSelect;\n @ViewChild('searchInput') searchInput!: ElementRef;\n @Input() className!: string;\n @Input() submitValue!: boolean;\n\n /**\n * See AutocompleteConfigsInterface for available configurations.\n */\n @Input() set configs(data: AutocompleteConfigsInterface) {\n this.selectConfig = data;\n if (!data) {\n return;\n }\n\n if ((typeof this.selectConfig.paginate) === 'function') {\n if (this.firstRequest) {\n return;\n }\n this.getData();\n this.firstRequest = true\n return;\n }\n\n this.data = this.selectConfig.paginate;\n this.findAndSetDefaultValueFromData();\n };\n\n @Input() detectChanges!: boolean;\n @Output() selectionChange = new EventEmitter<any>();\n @Output() emitAction = new EventEmitter<any>();\n @ViewChild('allSelected') allSelected!: MatSelect;\n pending = false;\n defaultValue!: any;\n data: Array<any> = [];\n paginationData: any = { current: 1, last: 0 };\n ngControl: FormControlName;\n selectConfig!: AutocompleteConfigsInterface;\n firstRequest = false;\n showPlaceholder = true;\n isNeededForRecall = false;\n showingValue: any;\n searchTimeoutId: any;\n tabVisibility!: boolean;\n accessToNextRequest = true;\n disabled = false;\n blockRecallDefaultValueSetter = false;\n baseData: any;\n requestLoading = false;\n protected readonly ButtonType = ButtonType;\n\n @HostListener('document:visibilitychange')\n handleVisibilityChange(): void {\n this.tabVisibility = !document.hidden;\n if (this.ngControl.control.value) {\n return;\n }\n this.closePanelAndUnsetFocus();\n if (!document.hidden) {\n this.isNeededForRecall = true;\n this.pending = true;\n setTimeout(() => {\n this.pending = false\n }, 4000)\n }\n }\n\n constructor(private inputService: InputService) {\n this.ngControl = this.inputService.injectNgControl();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['selectConfig'] && this.selectConfig) {\n if ((typeof this.selectConfig.paginate) === 'function') {\n this.getData();\n }\n }\n }\n\n ngAfterViewInit() {\n this.ngControl.control.valueChanges.subscribe((res: any) => {\n if (this.data.length && res && !this.blockRecallDefaultValueSetter) {\n this.findAndSetDefaultValueFromData();\n }\n })\n }\n\n hardReload(): void {\n this.getData('', true);\n }\n\n /**\n * Dynamic request for select data.\n * @param searchText - The input value to search options by.\n * @param fromSearch - Access for search.\n * @returns Select data.\n */\n getData(searchText?: string, fromSearch?: boolean): void {\n if (!fromSearch && !this.accessToNextRequest) {\n return;\n }\n\n if (this.requestLoading) {\n return;\n }\n\n if (fromSearch) {\n this.paginationData.current = 1;\n this.accessToNextRequest = true;\n }\n\n const functionToDo = this.selectConfig.paginate(this.paginationData.current, searchText);\n\n this.requestLoading = true;\n functionToDo?.subscribe((data: Array<any> | any) => {\n const dataToAdd = ('content' in data) ? data.content : data;\n\n if ('content' in data) {\n this.accessToNextRequest = !data.last || (data.totalPages > this.paginationData.current);\n }\n\n this.data = (fromSearch || this.selectConfig?.blockPagination) ? dataToAdd : [...this.data, ...dataToAdd];\n this.pending = false;\n this.requestLoading = false;\n\n if (!dataToAdd.length) {\n this.paginationData.last = this.paginationData.current;\n return;\n }\n\n this.paginationData.current += 1;\n this.paginationData.last += 1;\n setTimeout(() => {\n this.findAndSetDefaultValueFromData();\n }, 10)\n }, () => {\n this.pending = false;\n this.requestLoading = false;\n })\n }\n\n findAndSetDefaultValueFromData(): void {\n if (this.selectConfig.multiple) {\n if (this.ngControl.value && this.ngControl.value.length == 1) {\n this.setShowingValue(this.data.find((item) => item.id === this.ngControl.value[0]))\n }\n } else {\n const isDisabled = this.ngControl.disabled;\n if (isDisabled) {\n // TODO Remove after migrating all selects\n // this.ngControl.control.enable();\n // if (!this.ngControl.value && !this.data.length) {\n // this.ngControl.control.disable();\n // return;\n // }\n // this.setDefaultValue();\n // this.ngControl.control.disable();\n } else {\n if (!this.ngControl.value && !this.data) {\n return;\n }\n this.setDefaultValue();\n }\n\n }\n }\n\n setDefaultValue(): void {\n this.defaultValue = this.data.find((item) => item.id === this.ngControl.value);\n this.baseData = this.defaultValue\n if (!this.defaultValue) {\n return;\n }\n this.selectionChange.emit()\n this.setShowingValue(this.defaultValue);\n }\n\n optionClick(showingData: any): void {\n this.baseData = showingData\n if (!this.selectConfig.multiple) {\n this.setShowingValue(showingData);\n this.matSelect.close();\n return;\n }\n if (this.searchInput) {\n if (this.selectConfig.multiple) {\n this.searchInput?.nativeElement?.focus()\n } else {\n this.inputFocusOut();\n }\n }\n\n this.setShowingValue(showingData);\n this.showPlaceholder = false;\n }\n\n addNewItemEvent(): void {\n this.isNeededForRecall = true;\n this.emitAction.emit();\n }\n\n /**\n * Filter and show.\n * @param data - Existing chosen data.\n */\n setShowingValue(data: any): void {\n if (!data) {\n return;\n }\n // TODO refactor this part fully\n let include = data;\n let includeOptional = data;\n\n if (this.selectConfig.valueToShowByKey) {\n this.selectConfig.valueToShowByKey.forEach((param: Array<string | number> | string) => {\n\n if (typeof param === 'object') {\n param.forEach((key: string | number) => {\n include = (include) ? include[key] : null;\n })\n } else {\n include = include[param];\n }\n })\n if (this.selectConfig.showFullTextWithOptionalOnSelectedValue) {\n this.selectConfig.valueToShowByParam?.forEach((param: Array<string | number> | string) => {\n\n if (typeof param === 'object') {\n param.forEach((key: string | number) => {\n includeOptional = (includeOptional) ? includeOptional[key] : null;\n })\n } else {\n includeOptional = includeOptional[param];\n }\n })\n if (this.selectConfig.valueToShowByParam && typeof includeOptional === 'string') {\n include += (this.selectConfig.withParamSymbol || '') + includeOptional\n }\n }\n\n }\n this.showingValue = include;\n this.blockRecallDefaultValueSetter = true;\n }\n\n /**\n * Block another events.\n * @param event - Element click event.\n */\n preventDefault(event: any) {\n if (!this.selectConfig.multiple) {\n return;\n }\n event.preventDefault()\n }\n\n registerPanelScrollEvent(element: MatSelect) {\n if (this.selectConfig.paginateOnScroll === false) {\n return;\n }\n\n const panel = element.panel.nativeElement;\n panel.addEventListener('scroll', (event: any) => this.loadDataOnScroll(event));\n }\n\n loadDataOnScroll(event: any) {\n const pos = (event.target.scrollTop || event.target.scrollTop) + event.target.offsetHeight;\n const max = event.target.scrollHeight;\n if ((pos + 1) >= max) {\n if (this.paginationData.current === this.paginationData.last || this.selectConfig.blockPagination) {\n return;\n }\n this.getData();\n }\n }\n\n focusSearchInput() {\n if (this.selectConfig.search && this.searchInput) {\n this.searchInput.nativeElement.focus();\n }\n }\n\n inputFocusOut(): void {\n this.isNeededForRecall = !!this.searchInput.nativeElement.value;\n this.searchInput.nativeElement.value = '';\n this.showPlaceholder = true;\n this.clearTimeoutForSearch();\n }\n\n resetValue(): void {\n this.selectionChange.emit(null);\n this.ngControl.reset(null);\n this.inputFocusOut();\n }\n\n getDataWithSearch(value: any, event: any): void {\n this.clearTimeoutForSearch();\n if (value.length >= 1) {\n this.searchTimeoutId = setTimeout(() => {\n this.getData(value, true)\n }, 800);\n } else if (value.length <= 1 && event.keyCode === 8) {\n this.getData(value, true)\n }\n }\n\n clearTimeoutForSearch(): void {\n if (this.searchTimeoutId) {\n clearTimeout(this.searchTimeoutId);\n this.searchTimeoutId = 0;\n }\n }\n\n openSelection(): void {\n if (this.selectConfig.disabled || this.ngControl.control.disabled) {\n return;\n }\n if (this.showPlaceholder) {\n this.matSelect.open();\n } else {\n this.closePanelAndUnsetFocus();\n }\n this.showPlaceholder = !this.showPlaceholder;\n if (!this.showPlaceholder) {\n this.reCallData();\n }\n }\n\n closePanelAndUnsetFocus(): void {\n this.matSelect.close();\n if (this.searchInput) {\n this.searchInput.nativeElement.blur()\n }\n }\n\n openedChange(event: any) {\n if (event) {\n if (this.isNeededForRecall) {\n this.reCallData();\n return;\n }\n if (!this.selectConfig.search) {\n this.pending = false\n this.reCallData();\n }\n\n return;\n }\n\n this.showPlaceholder = true;\n }\n\n reCallData(): void {\n // TODO refactor this part\n if (!this.isNeededForRecall) {\n return;\n }\n this.data = [];\n this.pending = true;\n this.paginationData = {\n current: 1,\n last: 0\n };\n this.accessToNextRequest = true;\n if ((typeof this.selectConfig.paginate) === 'function') {\n this.getData();\n } else {\n this.pending = false;\n this.data = this.selectConfig.paginate;\n }\n this.isNeededForRecall = false;\n }\n\n emitSelectionChangeAndClose(event: any) {\n this.selectionChange.emit(event.value);\n if (this.selectConfig.multiple) {\n if (!event.value?.length) {\n this.ngControl.control.reset();\n }\n return;\n }\n this.matSelect.close();\n }\n\n /*\n * Open mat-select and focus on search on icon click\n */\n iconClick(matSelect: MatSelect, searchInput?: ElementRef): void {\n matSelect.open();\n searchInput?.nativeElement?.focus();\n }\n\n /*\n * Custom error state matcher for mat-select to properly show error state in mat-form-field\n */\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.submitValue);\n }\n };\n}\n","<div class=\"new-mat-autocomplete\" id=\"mat_autocomplete\"\n [ngClass]=\"{\n 'mat-select-without_icon': !selectConfig.iconUrl && !selectConfig.activeStateIconUrl,\n 'mat-select-with-search': selectConfig.search,\n 'without-label': selectConfig.hideLabel,\n 'invalid_field': ngControl.control.errors && submitValue,\n 'readonly-field': selectConfig.readOnly || ngControl.control.disabled\n }\"\n [matTooltip]=\"(selectConfig.hover && !ngControl.control.disabled ? ((selectConfig.hover || '') | translate) : '')\"\n [matTooltipClass]=\"'mat-mdc-tooltip big-td-mat-tooltip'\"\n [matTooltipPosition]=\"'above'\"\n *ngIf=\"selectConfig && ngControl\">\n\n <div class=\"w-100\" *ngIf=\"!selectConfig.hideLabel\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : selectConfig.readOnly || ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && submitValue)\n }\">\n {{ selectConfig.label | translate }}\n </mat-label>\n <span *ngIf=\"selectConfig.required\" class=\"required-input\"\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\n </div>\n\n\n <!-- Search Input -->\n <div class=\"search-input w-100\"\n (click)=\"$event.stopPropagation();$event.preventDefault()\"\n [ngClass]=\"{ hide_input_placeholder: showPlaceholder || ngControl.control.disabled }\"\n *ngIf=\"selectConfig.search\"\n >\n <input autocomplete=\"off\"\n id=\"searchInput\"\n type=\"text\"\n [ngClass]=\"{'pr-25': !selectConfig.iconUrl}\"\n #searchInput\n [disabled]=\"ngControl.control.disabled || selectConfig.hover\"\n [placeholder]=\"(ngControl.control.disabled || selectConfig.hover) ? '' : 'Search'\"\n (focusout)=\"inputFocusOut()\"\n (focus)=\"openSelection()\"\n (keydown)=\"$event.stopPropagation()\"\n (keyup)=\"getDataWithSearch(searchInput.value,$event)\">\n\n <!-- Search Icon -->\n <span class=\"search-icon\">\n <i-tech-icon-button\n class=\"mr-10\"\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color'\n : 'default-form-icon-color'\"\n *ngIf=\"selectConfig.iconPrefix && !showPlaceholder\"\n [iconName]=\"selectConfig.iconPrefix || ''\"\n [disabled]=\"selectConfig.readOnly || false\"\n matPrefix\n >\n </i-tech-icon-button>\n </span>\n </div>\n\n <!-- Placeholder/Selected Value Display -->\n <ng-container *ngIf=\"showPlaceholder && selectConfig.search\">\n <div class=\"custom-placeholder\"\n *ngIf=\"(!ngControl?.value && !ngControl?.value?.length) ||\n (selectConfig.multiple && ngControl?.value && !ngControl?.value?.length)\"\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n >\n {{ ((selectConfig.placeholder || '') | translate) }}\n </div>\n <div class=\"custom-placeholder custom-value ellipsis\"\n [ngClass]=\"{\n 'pr-42': selectConfig.iconUrl,\n 'readonly-color': selectConfig.readOnly || ngControl.control.disabled,\n 'default-form-icon-color': !(selectConfig.readOnly || ngControl.control.disabled)\n }\"\n *ngIf=\"ngControl?.value\"\n >\n {{ selectConfig?.multiple ? (ngControl.value | arrayToString) : showingValue }}\n </div>\n </ng-container>\n\n <!-- Custom Icon -->\n <img class=\"left_icon_new pointer\"\n alt=\"Toggle Selection\"\n (click)=\"iconClick(matSelect, searchInput)\"\n *ngIf=\"!selectConfig.matIconName && (selectConfig.iconUrl || selectConfig.activeStateIconUrl)\"\n [src]=\"'assets/images/icons/global/' + (ngControl.control?.value && selectConfig?.activeStateIconUrl ?\n selectConfig.activeStateIconUrl\n : selectConfig.iconUrl)\">\n\n <mat-form-field appearance=\"outline\" class=\"w-100\" (click)=\"selectConfig?.search ? focusSearchInput() : null\">\n <!-- Material Select -->\n <mat-select #matSelect=\"matSelect\"\n [panelClass]=\"'autocomplete-transform-panel-location'\"\n [attr.aria-placeholder]=\"(selectConfig.placeholder || '') | translate\"\n [aria-label]=\"selectConfig.label | translate\"\n [id]=\"selectConfig.filtrationKey || ''\"\n (opened)=\"registerPanelScrollEvent(matSelect)\"\n (openedChange)=\"openedChange($event)\"\n [formControl]=\"ngControl.control\"\n [multiple]=\"selectConfig.multiple\"\n (selectionChange)=\"emitSelectionChangeAndClose($event)\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [placeholder]=\"(selectConfig.placeholder || '') | translate\"\n [disabled]=\"ngControl.control.disabled\"\n >\n\n <!-- Loading State -->\n <mat-option *ngIf=\"pending\" class=\"option_loading relative\">\n <div class=\"request_loading\">\n <img ngSrc=\"./loader.svg\" alt=\"\" height=\"200\" width=\"200\"/>\n </div>\n </mat-option>\n\n <!-- Options -->\n <ng-container *ngIf=\"data?.length && !pending\">\n <!-- Add New Option -->\n <mat-option *ngIf=\"selectConfig.actions\"\n class=\"pointer add_new\"\n disabled\n (click)=\"closePanelAndUnsetFocus();addNewItemEvent()\">\n <!--(click)=\"ngControl.control.reset(null);\n matSelect._onBlur();closePanelAndUnsetFocus();addNewItemEvent()\">-->\n <i-tech-button\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"'add'\"\n [text]=\"('dropdown_add_item' | translate : {INPUT_NAME: (selectConfig.label | translate)}) \"\n [customClass]=\"'w-100 mat-autocomplete-select-button'\">\n </i-tech-button>\n </mat-option>\n\n <!-- Regular Options -->\n <ng-container *ngIf=\"!selectConfig?.changeText && data.length\">\n <mat-option *ngFor=\"let item of data\"\n [value]=\"selectConfig.valueByKey | getValueByKeyFromObject : item\"\n (mouseup)=\"optionClick(item)\"\n (mousedown)=\"preventDefault($event)\">\n {{\n ((selectConfig.valueToShowByKey | getValueByKeyFromObject\n : item : selectConfig.valueToShowByParam : selectConfig.withParamSymbol) || '') | translate\n }}\n </mat-option>\n </ng-container>\n\n <!-- Custom Text Options -->\n <ng-container *ngIf=\"selectConfig?.changeText && data.length\">\n <mat-option *ngFor=\"let item of data\"\n [value]=\"selectConfig.valueByKey | getValueByKeyFromObject : item\"\n (mouseup)=\"optionClick(item)\"\n (mousedown)=\"preventDefault($event)\"\n [disabled]=\"selectConfig?.changeText[item].disabled\">\n {{ selectConfig?.changeText[item].text | translate }}\n </mat-option>\n </ng-container>\n </ng-container>\n\n <!-- Empty State -->\n <ng-container *ngIf=\"!pending && !data.length\">\n <mat-option disabled class=\"empty_selection_state\">\n <div class=\"actions_and_tile add_new flex_column w-100 flex_center_align_center\">\n <span>{{ 'dropdown_no_items' | translate }}</span>\n <div class=\"mt-10\">\n <i-tech-button\n *ngIf=\"selectConfig?.actions\"\n [type]=\"ButtonType.OUTLINE\"\n (buttonClick)=\"closePanelAndUnsetFocus();addNewItemEvent()\"\n [customClass]=\"'mat-autocomplete-select-button'\"\n [fontIcon]=\"'add'\"\n [text]=\"('dropdown_add_item' | translate : {INPUT_NAME: (selectConfig.label | translate)}) \">\n </i-tech-button>\n </div>\n </div>\n </mat-option>\n </ng-container>\n </mat-select>\n <mat-icon *ngIf=\"selectConfig.iconPrefix\"\n matPrefix\n [ngClass]=\"{\n 'readonly-color' : !selectConfig['iconPrefixColor']\n && (selectConfig.readOnly || ngControl.control.disabled),\n 'default-form-icon-color' : !selectConfig['iconPrefixColor']\n && !(selectConfig.readOnly || ngControl.control.disabled)\n }\"\n [matTooltip]=\"((selectConfig?.['iconPrefixTooltip'] || '') | translate)\"\n >{{ selectConfig.iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"selectConfig['iconPrefixSvg']\"\n matPrefix\n [matTooltip]=\"((selectConfig?.['iconPrefixTooltip'] || '') | translate)\"\n [svgIcon]=\"selectConfig['iconPrefixSvg'] || ''\"\n ></mat-icon>\n\n <i-tech-icon-button\n *ngIf=\"selectConfig.search && selectConfig.clearable && !ngControl.control.disabled && !!ngControl.control.value\"\n iconName=\"cancel\"\n matSuffix\n [disabled]=\"selectConfig.readOnly || false\"\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"\n $event.stopPropagation();\n $event.preventDefault();\n ngControl.control.reset(null);\n matSelect._onBlur();\n closePanelAndUnsetFocus()\n \"\n >\n </i-tech-icon-button>\n <mat-icon\n matSuffix\n class=\"select-arrow\"\n [class.open]=\"matSelect.panelOpen\"\n [ngClass]=\"{\n 'readonly-color': selectConfig.readOnly || ngControl.control.disabled,\n 'default-form-icon-color': !(selectConfig.readOnly || ngControl.control.disabled),\n 'mt-8': !!ngControl.control.value && selectConfig.clearable\n }\"\n >\n keyboard_arrow_down\n </mat-icon>\n <!-- Error Message -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submitValue)\">\n {{ ngControl.control | generateErrorMessages : selectConfig.label : selectConfig.defaultPatternKey }}\n </mat-error>\n </mat-form-field>\n\n <!-- Reset Button -->\n <i-tech-clear-value *ngIf=\"selectConfig.reset\" (resetValue)=\"resetValue()\"></i-tech-clear-value>\n</div>\n","import {\n Directive,\n ElementRef,\n HostListener,\n Injector, Input\n} from '@angular/core';\nimport { NgxMaskDirective, NgxMaskService } from 'ngx-mask';\nimport { MatDatepicker } from \"@angular/material/datepicker\";\nimport { AbstractControl } from \"@angular/forms\";\n\n@Directive({\n selector: '[dateMask]',\n providers:[NgxMaskDirective],\n standalone: true\n})\nexport class DateMaskDirective {\n @Input() maskType!: string;\n @Input() matDatepicker!: MatDatepicker<any>;\n @Input() rangeFormControl!: AbstractControl;\n\n expressions = {\n DMY: 'M0/d0/0000',\n DM: 'M0/d0'\n }\n maskService: any;\n dateRegex = new RegExp(/^\\s*(1[012]|0?[1-9])\\/(3[01]|[12][0-9]|0?[1-9])\\/((?:19|20)\\d{2})\\s*$/);\n dayMonthRegex = new RegExp(/^\\s*(1[012]|0?[1-9])\\/(3[01]|[12][0-9]|0?[1-9])$/);\n previousValue = '';\n\n constructor(\n private elementRef: ElementRef,\n private injector: Injector,\n ) {\n this.maskService = this.injector.get(NgxMaskService);\n }\n\n @HostListener('input')\n onInput() {\n let value = this.elementRef.nativeElement.value;\n\n if (this.existsZerosInString(value)) {\n value = this.previousValue;\n }\n\n const maskedValue = this.maskService.applyMask(\n value,\n this.maskType === 'DAY_MONTH' ? this.expressions.DM : this.expressions.DMY\n );\n\n if (this.maskType !== 'DAY_MONTH' && !isNaN(new Date(maskedValue).getTime())) {\n if (this.matDatepicker) {\n this.matDatepicker.select(new Date(maskedValue));\n } else if (this.rangeFormControl) {\n this.rangeFormControl.setValue(new Date(maskedValue));\n }\n }\n\n if (isNaN(new Date(maskedValue).getTime())) {\n this.matDatepicker.select(null)\n }\n\n this.elementRef.nativeElement.value = maskedValue || null;\n this.previousValue = maskedValue || null;\n }\n\n @HostListener('paste', ['$event'])\n onPaste(event: ClipboardEvent) {\n const pastedValue = event.clipboardData?.getData('text/plain');\n if (!pastedValue) { return; }\n if (this.maskType === 'DAY_MONTH') {\n if (!this.dayMonthRegex.test(pastedValue)) {\n event?.preventDefault();\n }\n } else {\n if (!this.dateRegex.test(pastedValue)) {\n event?.preventDefault();\n }\n }\n }\n\n existsZerosInString(date: string): boolean {\n const dateToArray = date.split('/');\n let isValid;\n if (this.maskType === 'DAY_MONTH') {\n isValid = !!dateToArray.find((part: string) => part.includes('00'));\n } else {\n if (dateToArray.length < 3) {\n isValid = !!dateToArray.find((part: string) => part.includes('00'));\n } else {\n isValid = (dateToArray[2][0] == '0') || (+dateToArray[2][0] > 2);\n }\n\n }\n return isValid;\n }\n\n}\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FormControlName, ReactiveFormsModule } from \"@angular/forms\";\nimport { InputService } from '../../services/input.service';\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatInput } from \"@angular/material/input\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { DateMaskDirective } from \"../../directives/date-mask.directive\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\n\n@Component({\n selector: 'i-tech-date-picker',\n templateUrl: './date-picker.component.html',\n imports: [\n NgClass, NgIf,\n TranslateModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatDatepickerModule,\n MatInput,\n MatTooltip,\n MatIconModule,\n DateMaskDirective,\n GenerateErrorMessagesPipe, IconButtonComponent\n ],\n standalone: true\n})\nexport class DatePickerComponent {\n @Input() label = '';\n @Input() defaultPatternKey!: string ;\n @Input() required = false;\n @Input() pastDatesDisabled = false;\n @Input() hintText = '';\n @Input() placeholder = 'MM/DD/YYYY';\n @Input() iconPrefix?: string;\n @Input() iconPrefixSvg?: string;\n @Input() iconPrefixTooltip?: string;\n @Input() iconPrefixColor?: string;\n @Input() iconPrefixVariant?: string;\n @Input() valueChangeEmit?: boolean;\n @Input() minDate: Date | null = null;\n @Input() clearable = false;\n\n @Input() submit = false;\n @ViewChild('inputElement') inputElement!: ElementRef;\n @Output() valueChangeEmitter = new EventEmitter<void>();\n\n isOpen = false;\n focused = false;\n\n ngControl: FormControlName;\n\n today: Date = new Date();\n\n // Filter to disable past dates\n dateFilter = (date: Date | null): boolean => {\n if (this.pastDatesDisabled) {\n const today = this.today;\n return date ? date >= today : false;\n } else {\n return true;\n }\n };\n\n constructor(private inputService: InputService) {\n this.ngControl = this.inputService.injectNgControl() as FormControlName;\n }\n\n emitChange(): void {\n if (!this.valueChangeEmit) { return; }\n this.valueChangeEmitter.emit();\n }\n\n clickForFocusOut(): void {\n setTimeout(() => {\n this.inputElement.nativeElement.focus();\n this.inputElement.nativeElement.blur();\n },120)\n }\n\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.submit);\n }\n };\n}\n","<div class=\"flex_column relative mat-date-range-input\" *ngIf=\"ngControl\" [ngClass]=\"{'check_requirements': submit}\">\n <div class=\"w-100\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && submit)\n }\">\n {{ label | translate }}\n </mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\"\n [class.readonly-field]=\"ngControl.control.disabled\">\n <input matInput #inputElement\n type=\"text\"\n [formControl]=\"ngControl.control\"\n [placeholder]=\"placeholder | translate\"\n [min]=\"minDate\"\n dateMask\n [matDatepicker]=\"datePicker\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [matDatepickerFilter]=\"dateFilter\"\n (focus)=\"focused = true\"\n (click)=\"datePicker.open();\"\n (dateChange)=\"emitChange()\"\n >\n\n <mat-icon *ngIf=\"iconPrefix\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [style.color]=\"iconPrefixColor\"\n >{{ iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"iconPrefixSvg\"\n ></mat-icon>\n\n <app-icon-button\n *ngIf=\"clearable && !ngControl.control.disabled && !!ngControl.control.value\"\n iconName=\"cancel\"\n matSuffix\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"$event.stopPropagation();$event.preventDefault();ngControl.control.reset(null);\"\n >\n </app-icon-button>\n\n <i-tech-icon-button matSuffix\n [iconName]=\"'date_range'\"\n [disabled]=\"ngControl.control.disabled\"\n (click)=\"datePicker.open()\"\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n ></i-tech-icon-button>\n\n <mat-datepicker #datePicker (closed)=\"isOpen = false;clickForFocusOut()\"\n (opened)=\"isOpen = true;focused = true\"></mat-datepicker>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ ngControl.control | generateErrorMessages : label : defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && submit)) && hintText\"\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\"\n >\n {{ hintText | translate }}\n </mat-hint>\n\n </mat-form-field>\n</div>\n","import {\n AfterViewInit,\n Component, ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { MatDatepickerModule, MatDateRangePicker } from \"@angular/material/datepicker\";\nimport { ReactiveFormsModule, UntypedFormControl, UntypedFormGroup, Validators } from \"@angular/forms\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\nimport { DateMaskDirective } from \"../../directives/date-mask.directive\";\n\n@Component({\n selector: 'i-tech-mat-range-datepicker',\n templateUrl: './date-range-datepicker.component.html',\n imports: [\n MatFormFieldModule,\n ReactiveFormsModule,\n MatDatepickerModule,\n NgClass, NgIf,\n TranslateModule,\n IconButtonComponent, DateMaskDirective\n ],\n standalone: true\n})\nexport class DateRangeDatepickerComponent implements OnChanges, AfterViewInit {\n @Input() label?: string;\n @Input() placeholder?: Array<string>;\n @Input() value?: Array<string | null>;\n @Input() defaultValue?: Array<Date>;\n @Input() key?: {start: string, end: string, title: string};\n @Input() submit = false;\n @Input() clearValue = true;\n @Input() errorMessage = '';\n @Input() onePlaceholder?: string;\n @Input() hintText = 'MM/DD/YYYY - MM/DD/YYYY';\n @Output() resetForm = new EventEmitter<any>();\n @Output() selectionChange = new EventEmitter<any>();\n @ViewChild('picker') picker!: MatDateRangePicker<any>;\n @ViewChild('min') min!: ElementRef;\n isOpen = false;\n\n dateRangeForm = new UntypedFormGroup({\n startDate: new UntypedFormControl('', [Validators.maxLength(10)]),\n endDate: new UntypedFormControl('', [Validators.maxLength(10)]),\n });\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n if (this.defaultValue?.length) {\n this.dateRangeForm.patchValue({\n startDate: this.defaultValue[0],\n endDate: this.defaultValue[1]\n })\n }\n })\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n setTimeout(() => {\n if (changes['value']?.currentValue && !(changes['value'].currentValue[0])) {\n if (this.picker) {\n this.dateRangeForm.reset();\n this.picker.select(null)\n }\n } else if (changes['value'] && this.value?.length) {\n this.dateRangeForm.setValue({\n startDate: new Date(this.value[0] || ''),\n endDate: new Date(this.value[1] || '')\n })\n }\n }, 10)\n }\n\n clickForFocusOut(): void {\n setTimeout(() => {\n this.min.nativeElement.focus();\n this.min.nativeElement.blur();\n },120)\n }\n\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.submit);\n }\n };\n\n setDate(value: Array<string | null>, element: any): void {\n this.selectionChange.emit(value);\n element.blur();\n }\n\n keyEventHandler(event: KeyboardEvent,value: Array<string | null>, element: any): void {\n if (event.code === 'Enter') {\n this.setDate(value,element)\n }\n }\n\n}\n","<div class=\"flex_column relative mat-date-range-input\"\n [formGroup]=\"dateRangeForm\"\n>\n <div class=\"w-100\">\n <mat-label>\n {{ (label || '') | translate }}\n </mat-label>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\">\n <mat-date-range-input [rangePicker]=\"picker\">\n <input formControlName=\"startDate\"\n [placeholder]=\" (placeholder ? placeholder[0] : 'Start Date')\"\n [title]=\"key ? key.title : 'Date'\"\n [attr.data-accessKey]=\"key ? key.start : 'minStartDate'\"\n [attr.data-parentKey]=\"key ? (key.start + '_' + key.end) : 'minStartDate_maxEndDate'\"\n matStartDate #min\n dateMask\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [rangeFormControl]=\"dateRangeForm.controls['startDate']\"\n (keydown)=\"keyEventHandler($event,[min.value, max.value || null],min)\"\n (dateChange)=\"setDate([min.value, max.value || null],min)\">\n <input formControlName=\"endDate\"\n [placeholder]=\"(placeholder ? placeholder[1] : 'End Date')\"\n [title]=\"key ? key.title : 'Date'\"\n [attr.data-accessKey]=\"key ? key.end : 'maxEndDate'\"\n [attr.data-parentKey]=\"key ? (key.start + '_' + key.end) : 'minStartDate_maxEndDate'\"\n matEndDate #max\n dateMask\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [rangeFormControl]=\"dateRangeForm.controls['endDate']\"\n (keydown)=\"keyEventHandler($event,[min.value, max.value || null],max)\"\n (dateChange)=\"setDate([min.value, max.value || null],max)\">\n </mat-date-range-input>\n <i-tech-icon-button matSuffix\n [iconName]=\"'cancel'\"\n (buttonClick)=\"selectionChange.emit([null, null])\"\n class=\"default-form-icon-color\"\n *ngIf=\"dateRangeForm.get('startDate')?.value && this.dateRangeForm.get('endDate')?.value\"\n ></i-tech-icon-button>\n <i-tech-icon-button\n matSuffix\n [iconName]=\"'date_range'\"\n (buttonClick)=\"picker.open()\"\n class=\"default-form-icon-color\"\n ></i-tech-icon-button>\n <mat-date-range-picker\n #picker\n (closed)=\"isOpen = false;clickForFocusOut()\"\n (opened)=\"isOpen = true\"\n ></mat-date-range-picker>\n <mat-hint *ngIf=\"hintText && !errorMessage\">{{ hintText }}</mat-hint>\n </mat-form-field>\n</div>\n","export enum DropdownSelectionType {\n UPLOAD = \"UPLOAD\",\n DOWNLOAD = \"DOWNLOAD\",\n BLANK = \"BLANK\"\n}\n\nexport const DropdownItemIcon = {\n [DropdownSelectionType.UPLOAD]: 'upload',\n [DropdownSelectionType.DOWNLOAD]: 'download',\n [DropdownSelectionType.BLANK]: 'blank',\n}","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { ButtonType } from \"../../interfaces/button-types.enum\";\nimport { DropdownItemIcon, DropdownSelectionType } from \"../../interfaces/dropdown-selection.constants\";\nimport { MatMenu, MatMenuItem, MatMenuTrigger, MenuPositionX } from \"@angular/material/menu\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { NgClass, NgForOf, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { ButtonComponent } from \"../button/button.component\";\nimport { MatLabel } from \"@angular/material/form-field\";\n\n@Component({\n selector: \"i-tech-menu\",\n standalone: true,\n imports: [\n MatMenuTrigger,\n MatMenu,\n MatIcon,\n NgIf,\n NgForOf,\n MatMenuItem,\n TranslateModule,\n NgClass,\n ButtonComponent,\n MatLabel\n ],\n templateUrl: \"./menu.component.html\",\n styleUrls: [\"./menu.component.scss\"]\n})\nexport class MenuComponent {\n @Input() text!: string;\n @Input() dataName!: string;\n @Input() containerClass!: string;\n @Input() positionX: MenuPositionX = 'before';\n @Input() menuOptions: Array<{\n value: string;\n text: string;\n src?: string;\n class?: string;\n type?: DropdownSelectionType;\n }> = [];\n @Output() emitEvent = new EventEmitter<any>();\n protected readonly ButtonType = ButtonType;\n protected readonly DropdownItemIcon = DropdownItemIcon;\n matMenuState = false;\n}\n","<div class=\"custom_dropdown_container\"\n [attr.data-name]=\"dataName\"\n [ngClass]=\"containerClass\"\n>\n <i-tech-button\n [matMenuTriggerFor]=\"beforeMenu\"\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"'keyboard_arrow_down'\"\n [text]=\"(text || '') \"\n (menuOpened)=\"matMenuState = true\"\n (menuClosed)=\"matMenuState = false\"\n [activated]=\"matMenuState\"\n ></i-tech-button>\n <mat-menu #beforeMenu=\"matMenu\" [xPosition]=\"positionX\">\n <button mat-menu-item *ngFor=\"let option of menuOptions\" (click)=\"emitEvent.emit(option.value)\">\n <mat-icon *ngIf=\"option.type\" [svgIcon]=\"DropdownItemIcon[option.type]\"></mat-icon>\n <mat-label class=\"meu_item_label\">{{(option.text || '') | translate}}</mat-label>\n </button>\n </mat-menu>\n</div>\n","/*\n * Public API Surface of shared-components\n */\n\nexport * from './lib/pipes/generate-error-messages.pipe';\nexport * from './lib/pipes/array-to-string.pipe';\nexport * from './lib/pipes/get-value-by-key-from-object.pipe';\nexport * from './lib/services/input.service';\nexport * from './lib/interfaces/app-input.interface';\nexport * from './lib/interfaces/button-types.enum';\nexport * from './lib/interfaces/autocomplete-configs.interface';\nexport * from './lib/directives/input-mask.directive';\nexport * from './lib/components/icon-button/icon-button.component';\nexport * from './lib/components/text/text-input.component';\nexport * from './lib/components/button/button.component';\nexport * from './lib/components/autocomplete-select/autocomplete-select.component';\nexport * from './lib/components/date-picker/date-picker.component';\nexport * from './lib/components/clear-value/clear-value.component';\nexport * from './lib/components/date-range-datepicker/date-range-datepicker.component';\nexport * from './lib/components/menu/menu.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.InputService","i5","i6","i2","i3","i4"],"mappings":"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"}
@@ -16,6 +16,8 @@ export declare class DatePickerComponent {
16
16
  iconPrefixColor?: string;
17
17
  iconPrefixVariant?: string;
18
18
  valueChangeEmit?: boolean;
19
+ minDate: Date | null;
20
+ clearable: boolean;
19
21
  submit: boolean;
20
22
  inputElement: ElementRef;
21
23
  valueChangeEmitter: EventEmitter<void>;
@@ -31,5 +33,5 @@ export declare class DatePickerComponent {
31
33
  isErrorState: (control: any, form: any) => boolean;
32
34
  };
33
35
  static ɵfac: i0.ɵɵFactoryDeclaration<DatePickerComponent, never>;
34
- static ɵcmp: i0.ɵɵComponentDeclaration<DatePickerComponent, "i-tech-date-picker", never, { "label": { "alias": "label"; "required": false; }; "defaultPatternKey": { "alias": "defaultPatternKey"; "required": false; }; "required": { "alias": "required"; "required": false; }; "pastDatesDisabled": { "alias": "pastDatesDisabled"; "required": false; }; "hintText": { "alias": "hintText"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "iconPrefix": { "alias": "iconPrefix"; "required": false; }; "iconPrefixSvg": { "alias": "iconPrefixSvg"; "required": false; }; "iconPrefixTooltip": { "alias": "iconPrefixTooltip"; "required": false; }; "iconPrefixColor": { "alias": "iconPrefixColor"; "required": false; }; "iconPrefixVariant": { "alias": "iconPrefixVariant"; "required": false; }; "valueChangeEmit": { "alias": "valueChangeEmit"; "required": false; }; "submit": { "alias": "submit"; "required": false; }; }, { "valueChangeEmitter": "valueChangeEmitter"; }, never, never, true, never>;
36
+ static ɵcmp: i0.ɵɵComponentDeclaration<DatePickerComponent, "i-tech-date-picker", never, { "label": { "alias": "label"; "required": false; }; "defaultPatternKey": { "alias": "defaultPatternKey"; "required": false; }; "required": { "alias": "required"; "required": false; }; "pastDatesDisabled": { "alias": "pastDatesDisabled"; "required": false; }; "hintText": { "alias": "hintText"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "iconPrefix": { "alias": "iconPrefix"; "required": false; }; "iconPrefixSvg": { "alias": "iconPrefixSvg"; "required": false; }; "iconPrefixTooltip": { "alias": "iconPrefixTooltip"; "required": false; }; "iconPrefixColor": { "alias": "iconPrefixColor"; "required": false; }; "iconPrefixVariant": { "alias": "iconPrefixVariant"; "required": false; }; "valueChangeEmit": { "alias": "valueChangeEmit"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "submit": { "alias": "submit"; "required": false; }; }, { "valueChangeEmitter": "valueChangeEmitter"; }, never, never, true, never>;
35
37
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "i-tech-shared-components",
3
- "version": "1.1.21",
3
+ "version": "1.1.22",
4
4
  "peerDependencies": {
5
5
  "@angular/material": "~18.2.14",
6
6
  "@angular/animations": "~18.0.0",
@@ -33,6 +33,11 @@ body {
33
33
  .ag-row.error-row:hover:before {
34
34
  background-color: #{mat.get-theme-color($m3-light-theme, error, 98)} !important;
35
35
  }
36
+
37
+ .tooltip-cell-renderer {
38
+ overflow: hidden;
39
+ text-overflow: ellipsis;
40
+ }
36
41
  }
37
42
 
38
43
  .grid-with-toolbar {