i-tech-shared-components 1.1.44 → 1.1.45
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.
- package/esm2022/lib/components/date-range-datepicker/date-range-datepicker.component.mjs +28 -3
- package/fesm2022/i-tech-shared-components.mjs +27 -2
- package/fesm2022/i-tech-shared-components.mjs.map +1 -1
- package/lib/components/date-range-datepicker/date-range-datepicker.component.d.ts +2 -0
- package/package.json +1 -1
|
@@ -20,6 +20,7 @@ export class DateRangeDatepickerComponent {
|
|
|
20
20
|
this.resetForm = new EventEmitter();
|
|
21
21
|
this.selectionChange = new EventEmitter();
|
|
22
22
|
this.isOpen = false;
|
|
23
|
+
this.isSelectingRange = false;
|
|
23
24
|
this.dateRangeForm = new UntypedFormGroup({
|
|
24
25
|
startDate: new UntypedFormControl('', [Validators.maxLength(10)]),
|
|
25
26
|
endDate: new UntypedFormControl('', [Validators.maxLength(10)]),
|
|
@@ -63,7 +64,28 @@ export class DateRangeDatepickerComponent {
|
|
|
63
64
|
}, 120);
|
|
64
65
|
}
|
|
65
66
|
setDate(value, element) {
|
|
66
|
-
|
|
67
|
+
const startDate = value[0];
|
|
68
|
+
const endDate = value[1];
|
|
69
|
+
// If this is the start date being selected (matStartDate input)
|
|
70
|
+
if (element === this.min?.nativeElement) {
|
|
71
|
+
// We're starting a new selection process
|
|
72
|
+
this.isSelectingRange = true;
|
|
73
|
+
// Don't emit any event yet
|
|
74
|
+
}
|
|
75
|
+
// If this is the end date being selected (matEndDate input)
|
|
76
|
+
else if (element === this.max?.nativeElement) {
|
|
77
|
+
// We're completing a selection
|
|
78
|
+
this.isSelectingRange = false;
|
|
79
|
+
// Only emit when we have both dates
|
|
80
|
+
if (startDate && endDate) {
|
|
81
|
+
this.selectionChange.emit(value);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Handle clear operation (both null)
|
|
85
|
+
else if (startDate === null && endDate === null) {
|
|
86
|
+
this.isSelectingRange = false;
|
|
87
|
+
this.selectionChange.emit(value);
|
|
88
|
+
}
|
|
67
89
|
element.blur();
|
|
68
90
|
}
|
|
69
91
|
keyEventHandler(event, value, element) {
|
|
@@ -72,7 +94,7 @@ export class DateRangeDatepickerComponent {
|
|
|
72
94
|
}
|
|
73
95
|
}
|
|
74
96
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangeDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
75
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DateRangeDatepickerComponent, isStandalone: true, selector: "i-tech-mat-range-datepicker", inputs: { label: "label", placeholder: "placeholder", value: "value", defaultValue: "defaultValue", key: "key", submit: "submit", clearValue: "clearValue", errorMessage: "errorMessage", onePlaceholder: "onePlaceholder", hintText: "hintText" }, outputs: { resetForm: "resetForm", selectionChange: "selectionChange" }, viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true }, { propertyName: "min", first: true, predicate: ["min"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex_column relative mat-date-range-input\"\n [formGroup]=\"dateRangeForm\"\n>\n <div class=\"w-100\" *ngIf=\"label\">\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", dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i3.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i3.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i3.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i3.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { 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: i4.TranslatePipe, name: "translate" }, { kind: "component", type: IconButtonComponent, selector: "i-tech-icon-button", inputs: ["size", "type", "iconSvg", "iconName", "tooltip", "disabled"], outputs: ["buttonClick"] }, { kind: "directive", type: DateMaskDirective, selector: "[dateMask]", inputs: ["maskType", "matDatepicker", "rangeFormControl"] }] }); }
|
|
97
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DateRangeDatepickerComponent, isStandalone: true, selector: "i-tech-mat-range-datepicker", inputs: { label: "label", placeholder: "placeholder", value: "value", defaultValue: "defaultValue", key: "key", submit: "submit", clearValue: "clearValue", errorMessage: "errorMessage", onePlaceholder: "onePlaceholder", hintText: "hintText" }, outputs: { resetForm: "resetForm", selectionChange: "selectionChange" }, viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true }, { propertyName: "min", first: true, predicate: ["min"], descendants: true }, { propertyName: "max", first: true, predicate: ["max"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex_column relative mat-date-range-input\"\n [formGroup]=\"dateRangeForm\"\n>\n <div class=\"w-100\" *ngIf=\"label\">\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", dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i3.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i3.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i3.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i3.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { 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: i4.TranslatePipe, name: "translate" }, { kind: "component", type: IconButtonComponent, selector: "i-tech-icon-button", inputs: ["size", "type", "iconSvg", "iconName", "tooltip", "disabled"], outputs: ["buttonClick"] }, { kind: "directive", type: DateMaskDirective, selector: "[dateMask]", inputs: ["maskType", "matDatepicker", "rangeFormControl"] }] }); }
|
|
76
98
|
}
|
|
77
99
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangeDatepickerComponent, decorators: [{
|
|
78
100
|
type: Component,
|
|
@@ -114,5 +136,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
114
136
|
}], min: [{
|
|
115
137
|
type: ViewChild,
|
|
116
138
|
args: ['min']
|
|
139
|
+
}], max: [{
|
|
140
|
+
type: ViewChild,
|
|
141
|
+
args: ['max']
|
|
117
142
|
}] } });
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1kYXRlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXJhbmdlLWRhdGVwaWNrZXIvZGF0ZS1yYW5nZS1kYXRlcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXJhbmdlLWRhdGVwaWNrZXIvZGF0ZS1yYW5nZS1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBc0IsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7OztBQWV6RSxNQUFNLE9BQU8sNEJBQTRCO0lBYnpDO1FBbUJXLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsRUFBRSxD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SyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBQyxPQUFPLENBQUMsQ0FBQTtRQUM3QixDQUFDO0lBQ0gsQ0FBQzsrR0F2RVUsNEJBQTRCO21HQUE1Qiw0QkFBNEIsd2xCQy9CekMsNGlGQXFEQSwyQ0QvQkksa0JBQWtCLG1nQkFDbEIsbUJBQW1CLG0yQkFDbkIsbUJBQW1CLGtuQkFDbkIsT0FBTyxvRkFBRSxJQUFJLDRGQUNiLGVBQWUsNEZBQ2YsbUJBQW1CLGlLQUFFLGlCQUFpQjs7NEZBSTdCLDRCQUE0QjtrQkFieEMsU0FBUzsrQkFDRSw2QkFBNkIsV0FFOUI7d0JBQ1Asa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsT0FBTyxFQUFFLElBQUk7d0JBQ2IsZUFBZTt3QkFDZixtQkFBbUIsRUFBRSxpQkFBaUI7cUJBQ3ZDLGNBQ1csSUFBSTs4QkFHUCxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNjLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFDRCxHQUFHO3NCQUFwQixTQUFTO3VCQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlLCBNYXREYXRlUmFuZ2VQaWNrZXIgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlclwiO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdJZiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBJY29uQnV0dG9uQ29tcG9uZW50IH0gZnJvbSBcIi4uL2ljb24tYnV0dG9uL2ljb24tYnV0dG9uLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRGF0ZU1hc2tEaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZGlyZWN0aXZlcy9kYXRlLW1hc2suZGlyZWN0aXZlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ktdGVjaC1tYXQtcmFuZ2UtZGF0ZXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXJhbmdlLWRhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcbiAgICBOZ0NsYXNzLCBOZ0lmLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBJY29uQnV0dG9uQ29tcG9uZW50LCBEYXRlTWFza0RpcmVjdGl2ZVxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERhdGVSYW5nZURhdGVwaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBsYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/OiBBcnJheTxzdHJpbmc+O1xuICBASW5wdXQoKSB2YWx1ZT86IEFycmF5PHN0cmluZyB8IG51bGw+O1xuICBASW5wdXQoKSBkZWZhdWx0VmFsdWU/OiBBcnJheTxEYXRlPjtcbiAgQElucHV0KCkga2V5Pzoge3N0YXJ0OiBzdHJpbmcsIGVuZDogc3RyaW5nLCB0aXRsZTogc3RyaW5nfTtcbiAgQElucHV0KCkgc3VibWl0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsZWFyVmFsdWUgPSB0cnVlO1xuICBASW5wdXQoKSBlcnJvck1lc3NhZ2UgPSAnJztcbiAgQElucHV0KCkgb25lUGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGhpbnRUZXh0ID0gJ01NL0REL1lZWVkgLSBNTS9ERC9ZWVlZJztcbiAgQE91dHB1dCgpIHJlc2V0Rm9ybSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBWaWV3Q2hpbGQoJ3BpY2tlcicpIHBpY2tlciE6IE1hdERhdGVSYW5nZVBpY2tlcjxhbnk+O1xuICBAVmlld0NoaWxkKCdtaW4nKSBtaW4hOiBFbGVtZW50UmVmO1xuICBpc09wZW4gPSBmYWxzZTtcblxuICBkYXRlUmFuZ2VGb3JtID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe1xuICAgIHN0YXJ0RGF0ZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwKV0pLFxuICAgIGVuZERhdGU6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLm1heExlbmd0aCgxMCldKSxcbiAgfSk7XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGVmYXVsdFZhbHVlPy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5kYXRlUmFuZ2VGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIHN0YXJ0RGF0ZTogdGhpcy5kZWZhdWx0VmFsdWVbMF0sXG4gICAgICAgICAgZW5kRGF0ZTogdGhpcy5kZWZhdWx0VmFsdWVbMV1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKGNoYW5nZXNbJ3ZhbHVlJ10/LmN1cnJlbnRWYWx1ZSAmJiAhKGNoYW5nZXNbJ3ZhbHVlJ10uY3VycmVudFZhbHVlWzBdKSkge1xuICAgICAgICBpZiAodGhpcy5waWNrZXIpIHtcbiAgICAgICAgICB0aGlzLmRhdGVSYW5nZUZvcm0ucmVzZXQoKTtcbiAgICAgICAgICB0aGlzLnBpY2tlci5zZWxlY3QobnVsbClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjaGFuZ2VzWyd2YWx1ZSddICYmIHRoaXMudmFsdWU/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLmRhdGVSYW5nZUZvcm0uc2V0VmFsdWUoe1xuICAgICAgICAgIHN0YXJ0RGF0ZTogbmV3IERhdGUodGhpcy52YWx1ZVswXSB8fCAnJyksXG4gICAgICAgICAgZW5kRGF0ZTogbmV3IERhdGUodGhpcy52YWx1ZVsxXSB8fCAnJylcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LCAxMClcbiAgfVxuXG4gIGNsaWNrRm9yRm9jdXNPdXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm1pbi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB0aGlzLm1pbi5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICB9LDEyMClcbiAgfVxuXG4gIGN1c3RvbUVycm9yU3RhdGVNYXRjaGVyID0ge1xuICAgIGlzRXJyb3JTdGF0ZTogKGNvbnRyb2w6IGFueSwgZm9ybTogYW55KTogYm9vbGVhbiA9PiB7XG4gICAgICByZXR1cm4gISEoY29udHJvbCAmJiBjb250cm9sLmludmFsaWQgJiYgdGhpcy5zdWJtaXQpO1xuICAgIH1cbiAgfTtcblxuICBzZXREYXRlKHZhbHVlOiBBcnJheTxzdHJpbmcgfCBudWxsPiwgZWxlbWVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgZWxlbWVudC5ibHVyKCk7XG4gIH1cblxuICBrZXlFdmVudEhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQsdmFsdWU6IEFycmF5PHN0cmluZyB8IG51bGw+LCBlbGVtZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ0VudGVyJykge1xuICAgICAgdGhpcy5zZXREYXRlKHZhbHVlLGVsZW1lbnQpXG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4X2NvbHVtbiByZWxhdGl2ZSBtYXQtZGF0ZS1yYW5nZS1pbnB1dFwiXG4gICAgIFtmb3JtR3JvdXBdPVwiZGF0ZVJhbmdlRm9ybVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJ3LTEwMFwiICpuZ0lmPVwibGFiZWxcIj5cbiAgICA8bWF0LWxhYmVsPlxuICAgICAge3sgKGxhYmVsIHx8ICcnKSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LWxhYmVsPlxuICA8L2Rpdj5cbiAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgW25nQ2xhc3NdPVwieydvcGVuZWRfY2FsZW5kYXInOiBpc09wZW59XCI+XG4gICAgPG1hdC1kYXRlLXJhbmdlLWlucHV0IFtyYW5nZVBpY2tlcl09XCJwaWNrZXJcIj5cbiAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJzdGFydERhdGVcIlxuICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIgKHBsYWNlaG9sZGVyID8gcGxhY2Vob2xkZXJbMF0gOiAnU3RhcnQgRGF0ZScpXCJcbiAgICAgICAgICAgICBbdGl0bGVdPVwia2V5ID8ga2V5LnRpdGxlIDogICdEYXRlJ1wiXG4gICAgICAgICAgICAgW2F0dHIuZGF0YS1hY2Nlc3NLZXldPVwia2V5ID8ga2V5LnN0YXJ0IDogJ21pblN0YXJ0RGF0ZSdcIlxuICAgICAgICAgICAgIFthdHRyLmRhdGEtcGFyZW50S2V5XT1cImtleSA/IChrZXkuc3RhcnQgKyAnXycgKyBrZXkuZW5kKSA6ICdtaW5TdGFydERhdGVfbWF4RW5kRGF0ZSdcIlxuICAgICAgICAgICAgIG1hdFN0YXJ0RGF0ZSAjbWluXG4gICAgICAgICAgICAgZGF0ZU1hc2tcbiAgICAgICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwiY3VzdG9tRXJyb3JTdGF0ZU1hdGNoZXJcIlxuICAgICAgICAgICAgIFtyYW5nZUZvcm1Db250cm9sXT1cImRhdGVSYW5nZUZvcm0uY29udHJvbHNbJ3N0YXJ0RGF0ZSddXCJcbiAgICAgICAgICAgICAoa2V5ZG93bik9XCJrZXlFdmVudEhhbmRsZXIoJGV2ZW50LFttaW4udmFsdWUsIG1heC52YWx1ZSB8fCBudWxsXSxtaW4pXCJcbiAgICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJzZXREYXRlKFttaW4udmFsdWUsIG1heC52YWx1ZSB8fCBudWxsXSxtaW4pXCI+XG4gICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZW5kRGF0ZVwiXG4gICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIihwbGFjZWhvbGRlciAgPyBwbGFjZWhvbGRlclsxXSA6ICdFbmQgRGF0ZScpXCJcbiAgICAgICAgICAgICBbdGl0bGVdPVwia2V5ID8ga2V5LnRpdGxlIDogICdEYXRlJ1wiXG4gICAgICAgICAgICAgW2F0dHIuZGF0YS1hY2Nlc3NLZXldPVwia2V5ID8ga2V5LmVuZCA6ICdtYXhFbmREYXRlJ1wiXG4gICAgICAgICAgICAgW2F0dHIuZGF0YS1wYXJlbnRLZXldPVwia2V5ID8gKGtleS5zdGFydCArICdfJyArIGtleS5lbmQpIDogJ21pblN0YXJ0RGF0ZV9tYXhFbmREYXRlJ1wiXG4gICAgICAgICAgICAgbWF0RW5kRGF0ZSAjbWF4XG4gICAgICAgICAgICAgZGF0ZU1hc2tcbiAgICAgICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwiY3VzdG9tRXJyb3JTdGF0ZU1hdGNoZXJcIlxuICAgICAgICAgICAgIFtyYW5nZUZvcm1Db250cm9sXT1cImRhdGVSYW5nZUZvcm0uY29udHJvbHNbJ2VuZERhdGUnXVwiXG4gICAgICAgICAgICAgKGtleWRvd24pPVwia2V5RXZlbnRIYW5kbGVyKCRldmVudCxbbWluLnZhbHVlLCBtYXgudmFsdWUgfHwgbnVsbF0sbWF4KVwiXG4gICAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwic2V0RGF0ZShbbWluLnZhbHVlLCBtYXgudmFsdWUgfHwgbnVsbF0sbWF4KVwiPlxuICAgIDwvbWF0LWRhdGUtcmFuZ2UtaW5wdXQ+XG4gICAgPGktdGVjaC1pY29uLWJ1dHRvbiBtYXRTdWZmaXhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uTmFtZV09XCInY2FuY2VsJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwic2VsZWN0aW9uQ2hhbmdlLmVtaXQoW251bGwsIG51bGxdKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRlZmF1bHQtZm9ybS1pY29uLWNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGF0ZVJhbmdlRm9ybS5nZXQoJ3N0YXJ0RGF0ZScpPy52YWx1ZSAmJiB0aGlzLmRhdGVSYW5nZUZvcm0uZ2V0KCdlbmREYXRlJyk/LnZhbHVlXCJcbiAgICA+PC9pLXRlY2gtaWNvbi1idXR0b24+XG4gICAgPGktdGVjaC1pY29uLWJ1dHRvblxuICAgICAgbWF0U3VmZml4XG4gICAgICBbaWNvbk5hbWVdPVwiJ2RhdGVfcmFuZ2UnXCJcbiAgICAgIChidXR0b25DbGljayk9XCJwaWNrZXIub3BlbigpXCJcbiAgICAgIGNsYXNzPVwiZGVmYXVsdC1mb3JtLWljb24tY29sb3JcIlxuICAgID48L2ktdGVjaC1pY29uLWJ1dHRvbj5cbiAgICA8bWF0LWRhdGUtcmFuZ2UtcGlja2VyXG4gICAgICAjcGlja2VyXG4gICAgICAoY2xvc2VkKT1cImlzT3BlbiA9IGZhbHNlO2NsaWNrRm9yRm9jdXNPdXQoKVwiXG4gICAgICAob3BlbmVkKT1cImlzT3BlbiA9IHRydWVcIlxuICAgID48L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICA8bWF0LWhpbnQgKm5nSWY9XCJoaW50VGV4dCAmJiAhZXJyb3JNZXNzYWdlXCI+e3sgaGludFRleHQgfX08L21hdC1oaW50PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9kaXY+XG4iXX0=
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1kYXRlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXJhbmdlLWRhdGVwaWNrZXIvZGF0ZS1yYW5nZS1kYXRlcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXJhbmdlLWRhdGVwaWNrZXIvZGF0ZS1yYW5nZS1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBc0IsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7OztBQWV6RSxNQUFNLE9BQU8sNEJBQTRCO0lBYnpDO1FBbUJXLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsRUFBRSxD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QVM7K0JBQ0UsNkJBQTZCLFdBRTlCO3dCQUNQLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLE9BQU8sRUFBRSxJQUFJO3dCQUNiLGVBQWU7d0JBQ2YsbUJBQW1CLEVBQUUsaUJBQWlCO3FCQUN2QyxjQUNXLElBQUk7OEJBR1AsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDYyxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBQ0QsR0FBRztzQkFBcEIsU0FBUzt1QkFBQyxLQUFLO2dCQUNFLEdBQUc7c0JBQXBCLFNBQVM7dUJBQUMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCwgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUsIE1hdERhdGVSYW5nZVBpY2tlciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyXCI7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0lmIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IEljb25CdXR0b25Db21wb25lbnQgfSBmcm9tIFwiLi4vaWNvbi1idXR0b24vaWNvbi1idXR0b24uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEYXRlTWFza0RpcmVjdGl2ZSB9IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL2RhdGUtbWFzay5kaXJlY3RpdmVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaS10ZWNoLW1hdC1yYW5nZS1kYXRlcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UtZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIE5nQ2xhc3MsIE5nSWYsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIEljb25CdXR0b25Db21wb25lbnQsIERhdGVNYXNrRGlyZWN0aXZlXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVJhbmdlRGF0ZXBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcj86IEFycmF5PHN0cmluZz47XG4gIEBJbnB1dCgpIHZhbHVlPzogQXJyYXk8c3RyaW5nIHwgbnVsbD47XG4gIEBJbnB1dCgpIGRlZmF1bHRWYWx1ZT86IEFycmF5PERhdGU+O1xuICBASW5wdXQoKSBrZXk/OiB7c3RhcnQ6IHN0cmluZywgZW5kOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmd9O1xuICBASW5wdXQoKSBzdWJtaXQgPSBmYWxzZTtcbiAgQElucHV0KCkgY2xlYXJWYWx1ZSA9IHRydWU7XG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZSA9ICcnO1xuICBASW5wdXQoKSBvbmVQbGFjZWhvbGRlcj86IHN0cmluZztcbiAgQElucHV0KCkgaGludFRleHQgPSAnTU0vREQvWVlZWSAtIE1NL0REL1lZWVknO1xuICBAT3V0cHV0KCkgcmVzZXRGb3JtID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQFZpZXdDaGlsZCgncGlja2VyJykgcGlja2VyITogTWF0RGF0ZVJhbmdlUGlja2VyPGFueT47XG4gIEBWaWV3Q2hpbGQoJ21pbicpIG1pbiE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ21heCcpIG1heCE6IEVsZW1lbnRSZWY7XG4gIGlzT3BlbiA9IGZhbHNlO1xuICBpc1NlbGVjdGluZ1JhbmdlID0gZmFsc2U7XG5cbiAgZGF0ZVJhbmdlRm9ybSA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHtcbiAgICBzdGFydERhdGU6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLm1heExlbmd0aCgxMCldKSxcbiAgICBlbmREYXRlOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTApXSksXG4gIH0pO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmRlZmF1bHRWYWx1ZT8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuZGF0ZVJhbmdlRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICBzdGFydERhdGU6IHRoaXMuZGVmYXVsdFZhbHVlWzBdLFxuICAgICAgICAgIGVuZERhdGU6IHRoaXMuZGVmYXVsdFZhbHVlWzFdXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChjaGFuZ2VzWyd2YWx1ZSddPy5jdXJyZW50VmFsdWUgJiYgIShjaGFuZ2VzWyd2YWx1ZSddLmN1cnJlbnRWYWx1ZVswXSkpIHtcbiAgICAgICAgaWYgKHRoaXMucGlja2VyKSB7XG4gICAgICAgICAgdGhpcy5kYXRlUmFuZ2VGb3JtLnJlc2V0KCk7XG4gICAgICAgICAgdGhpcy5waWNrZXIuc2VsZWN0KG51bGwpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hhbmdlc1sndmFsdWUnXSAmJiB0aGlzLnZhbHVlPy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5kYXRlUmFuZ2VGb3JtLnNldFZhbHVlKHtcbiAgICAgICAgICBzdGFydERhdGU6IG5ldyBEYXRlKHRoaXMudmFsdWVbMF0gfHwgJycpLFxuICAgICAgICAgIGVuZERhdGU6IG5ldyBEYXRlKHRoaXMudmFsdWVbMV0gfHwgJycpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSwgMTApXG4gIH1cblxuICBjbGlja0ZvckZvY3VzT3V0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5taW4ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgdGhpcy5taW4ubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgfSwxMjApXG4gIH1cblxuICBjdXN0b21FcnJvclN0YXRlTWF0Y2hlciA9IHtcbiAgICBpc0Vycm9yU3RhdGU6IChjb250cm9sOiBhbnksIGZvcm06IGFueSk6IGJvb2xlYW4gPT4ge1xuICAgICAgcmV0dXJuICEhKGNvbnRyb2wgJiYgY29udHJvbC5pbnZhbGlkICYmIHRoaXMuc3VibWl0KTtcbiAgICB9XG4gIH07XG5cbiAgc2V0RGF0ZSh2YWx1ZTogQXJyYXk8c3RyaW5nIHwgbnVsbD4sIGVsZW1lbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHZhbHVlWzBdO1xuICAgIGNvbnN0IGVuZERhdGUgPSB2YWx1ZVsxXTtcblxuICAgIC8vIElmIHRoaXMgaXMgdGhlIHN0YXJ0IGRhdGUgYmVpbmcgc2VsZWN0ZWQgKG1hdFN0YXJ0RGF0ZSBpbnB1dClcbiAgICBpZiAoZWxlbWVudCA9PT0gdGhpcy5taW4/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIC8vIFdlJ3JlIHN0YXJ0aW5nIGEgbmV3IHNlbGVjdGlvbiBwcm9jZXNzXG4gICAgICB0aGlzLmlzU2VsZWN0aW5nUmFuZ2UgPSB0cnVlO1xuICAgICAgLy8gRG9uJ3QgZW1pdCBhbnkgZXZlbnQgeWV0XG4gICAgfVxuICAgIC8vIElmIHRoaXMgaXMgdGhlIGVuZCBkYXRlIGJlaW5nIHNlbGVjdGVkIChtYXRFbmREYXRlIGlucHV0KVxuICAgIGVsc2UgaWYgKGVsZW1lbnQgPT09IHRoaXMubWF4Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAvLyBXZSdyZSBjb21wbGV0aW5nIGEgc2VsZWN0aW9uXG4gICAgICB0aGlzLmlzU2VsZWN0aW5nUmFuZ2UgPSBmYWxzZTtcbiAgICAgIC8vIE9ubHkgZW1pdCB3aGVuIHdlIGhhdmUgYm90aCBkYXRlc1xuICAgICAgaWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBIYW5kbGUgY2xlYXIgb3BlcmF0aW9uIChib3RoIG51bGwpXG4gICAgZWxzZSBpZiAoc3RhcnREYXRlID09PSBudWxsICYmIGVuZERhdGUgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuaXNTZWxlY3RpbmdSYW5nZSA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZWxlbWVudC5ibHVyKCk7XG4gIH1cblxuICBrZXlFdmVudEhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQsdmFsdWU6IEFycmF5PHN0cmluZyB8IG51bGw+LCBlbGVtZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ0VudGVyJykge1xuICAgICAgdGhpcy5zZXREYXRlKHZhbHVlLGVsZW1lbnQpXG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4X2NvbHVtbiByZWxhdGl2ZSBtYXQtZGF0ZS1yYW5nZS1pbnB1dFwiXG4gICAgIFtmb3JtR3JvdXBdPVwiZGF0ZVJhbmdlRm9ybVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJ3LTEwMFwiICpuZ0lmPVwibGFiZWxcIj5cbiAgICA8bWF0LWxhYmVsPlxuICAgICAge3sgKGxhYmVsIHx8ICcnKSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LWxhYmVsPlxuICA8L2Rpdj5cbiAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgW25nQ2xhc3NdPVwieydvcGVuZWRfY2FsZW5kYXInOiBpc09wZW59XCI+XG4gICAgPG1hdC1kYXRlLXJhbmdlLWlucHV0IFtyYW5nZVBpY2tlcl09XCJwaWNrZXJcIj5cbiAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJzdGFydERhdGVcIlxuICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIgKHBsYWNlaG9sZGVyID8gcGxhY2Vob2xkZXJbMF0gOiAnU3RhcnQgRGF0ZScpXCJcbiAgICAgICAgICAgICBbdGl0bGVdPVwia2V5ID8ga2V5LnRpdGxlIDogICdEYXRlJ1wiXG4gICAgICAgICAgICAgW2F0dHIuZGF0YS1hY2Nlc3NLZXldPVwia2V5ID8ga2V5LnN0YXJ0IDogJ21pblN0YXJ0RGF0ZSdcIlxuICAgICAgICAgICAgIFthdHRyLmRhdGEtcGFyZW50S2V5XT1cImtleSA/IChrZXkuc3RhcnQgKyAnXycgKyBrZXkuZW5kKSA6ICdtaW5TdGFydERhdGVfbWF4RW5kRGF0ZSdcIlxuICAgICAgICAgICAgIG1hdFN0YXJ0RGF0ZSAjbWluXG4gICAgICAgICAgICAgZGF0ZU1hc2tcbiAgICAgICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwiY3VzdG9tRXJyb3JTdGF0ZU1hdGNoZXJcIlxuICAgICAgICAgICAgIFtyYW5nZUZvcm1Db250cm9sXT1cImRhdGVSYW5nZUZvcm0uY29udHJvbHNbJ3N0YXJ0RGF0ZSddXCJcbiAgICAgICAgICAgICAoa2V5ZG93bik9XCJrZXlFdmVudEhhbmRsZXIoJGV2ZW50LFttaW4udmFsdWUsIG1heC52YWx1ZSB8fCBudWxsXSxtaW4pXCJcbiAgICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJzZXREYXRlKFttaW4udmFsdWUsIG1heC52YWx1ZSB8fCBudWxsXSxtaW4pXCI+XG4gICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZW5kRGF0ZVwiXG4gICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIihwbGFjZWhvbGRlciAgPyBwbGFjZWhvbGRlclsxXSA6ICdFbmQgRGF0ZScpXCJcbiAgICAgICAgICAgICBbdGl0bGVdPVwia2V5ID8ga2V5LnRpdGxlIDogICdEYXRlJ1wiXG4gICAgICAgICAgICAgW2F0dHIuZGF0YS1hY2Nlc3NLZXldPVwia2V5ID8ga2V5LmVuZCA6ICdtYXhFbmREYXRlJ1wiXG4gICAgICAgICAgICAgW2F0dHIuZGF0YS1wYXJlbnRLZXldPVwia2V5ID8gKGtleS5zdGFydCArICdfJyArIGtleS5lbmQpIDogJ21pblN0YXJ0RGF0ZV9tYXhFbmREYXRlJ1wiXG4gICAgICAgICAgICAgbWF0RW5kRGF0ZSAjbWF4XG4gICAgICAgICAgICAgZGF0ZU1hc2tcbiAgICAgICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwiY3VzdG9tRXJyb3JTdGF0ZU1hdGNoZXJcIlxuICAgICAgICAgICAgIFtyYW5nZUZvcm1Db250cm9sXT1cImRhdGVSYW5nZUZvcm0uY29udHJvbHNbJ2VuZERhdGUnXVwiXG4gICAgICAgICAgICAgKGtleWRvd24pPVwia2V5RXZlbnRIYW5kbGVyKCRldmVudCxbbWluLnZhbHVlLCBtYXgudmFsdWUgfHwgbnVsbF0sbWF4KVwiXG4gICAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwic2V0RGF0ZShbbWluLnZhbHVlLCBtYXgudmFsdWUgfHwgbnVsbF0sbWF4KVwiPlxuICAgIDwvbWF0LWRhdGUtcmFuZ2UtaW5wdXQ+XG4gICAgPGktdGVjaC1pY29uLWJ1dHRvbiBtYXRTdWZmaXhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uTmFtZV09XCInY2FuY2VsJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwic2VsZWN0aW9uQ2hhbmdlLmVtaXQoW251bGwsIG51bGxdKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRlZmF1bHQtZm9ybS1pY29uLWNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGF0ZVJhbmdlRm9ybS5nZXQoJ3N0YXJ0RGF0ZScpPy52YWx1ZSAmJiB0aGlzLmRhdGVSYW5nZUZvcm0uZ2V0KCdlbmREYXRlJyk/LnZhbHVlXCJcbiAgICA+PC9pLXRlY2gtaWNvbi1idXR0b24+XG4gICAgPGktdGVjaC1pY29uLWJ1dHRvblxuICAgICAgbWF0U3VmZml4XG4gICAgICBbaWNvbk5hbWVdPVwiJ2RhdGVfcmFuZ2UnXCJcbiAgICAgIChidXR0b25DbGljayk9XCJwaWNrZXIub3BlbigpXCJcbiAgICAgIGNsYXNzPVwiZGVmYXVsdC1mb3JtLWljb24tY29sb3JcIlxuICAgID48L2ktdGVjaC1pY29uLWJ1dHRvbj5cbiAgICA8bWF0LWRhdGUtcmFuZ2UtcGlja2VyXG4gICAgICAjcGlja2VyXG4gICAgICAoY2xvc2VkKT1cImlzT3BlbiA9IGZhbHNlO2NsaWNrRm9yRm9jdXNPdXQoKVwiXG4gICAgICAob3BlbmVkKT1cImlzT3BlbiA9IHRydWVcIlxuICAgID48L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICA8bWF0LWhpbnQgKm5nSWY9XCJoaW50VGV4dCAmJiAhZXJyb3JNZXNzYWdlXCI+e3sgaGludFRleHQgfX08L21hdC1oaW50PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1201,6 +1201,7 @@ class DateRangeDatepickerComponent {
|
|
|
1201
1201
|
this.resetForm = new EventEmitter();
|
|
1202
1202
|
this.selectionChange = new EventEmitter();
|
|
1203
1203
|
this.isOpen = false;
|
|
1204
|
+
this.isSelectingRange = false;
|
|
1204
1205
|
this.dateRangeForm = new UntypedFormGroup({
|
|
1205
1206
|
startDate: new UntypedFormControl('', [Validators.maxLength(10)]),
|
|
1206
1207
|
endDate: new UntypedFormControl('', [Validators.maxLength(10)]),
|
|
@@ -1244,7 +1245,28 @@ class DateRangeDatepickerComponent {
|
|
|
1244
1245
|
}, 120);
|
|
1245
1246
|
}
|
|
1246
1247
|
setDate(value, element) {
|
|
1247
|
-
|
|
1248
|
+
const startDate = value[0];
|
|
1249
|
+
const endDate = value[1];
|
|
1250
|
+
// If this is the start date being selected (matStartDate input)
|
|
1251
|
+
if (element === this.min?.nativeElement) {
|
|
1252
|
+
// We're starting a new selection process
|
|
1253
|
+
this.isSelectingRange = true;
|
|
1254
|
+
// Don't emit any event yet
|
|
1255
|
+
}
|
|
1256
|
+
// If this is the end date being selected (matEndDate input)
|
|
1257
|
+
else if (element === this.max?.nativeElement) {
|
|
1258
|
+
// We're completing a selection
|
|
1259
|
+
this.isSelectingRange = false;
|
|
1260
|
+
// Only emit when we have both dates
|
|
1261
|
+
if (startDate && endDate) {
|
|
1262
|
+
this.selectionChange.emit(value);
|
|
1263
|
+
}
|
|
1264
|
+
}
|
|
1265
|
+
// Handle clear operation (both null)
|
|
1266
|
+
else if (startDate === null && endDate === null) {
|
|
1267
|
+
this.isSelectingRange = false;
|
|
1268
|
+
this.selectionChange.emit(value);
|
|
1269
|
+
}
|
|
1248
1270
|
element.blur();
|
|
1249
1271
|
}
|
|
1250
1272
|
keyEventHandler(event, value, element) {
|
|
@@ -1253,7 +1275,7 @@ class DateRangeDatepickerComponent {
|
|
|
1253
1275
|
}
|
|
1254
1276
|
}
|
|
1255
1277
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangeDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1256
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DateRangeDatepickerComponent, isStandalone: true, selector: "i-tech-mat-range-datepicker", inputs: { label: "label", placeholder: "placeholder", value: "value", defaultValue: "defaultValue", key: "key", submit: "submit", clearValue: "clearValue", errorMessage: "errorMessage", onePlaceholder: "onePlaceholder", hintText: "hintText" }, outputs: { resetForm: "resetForm", selectionChange: "selectionChange" }, viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true }, { propertyName: "min", first: true, predicate: ["min"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex_column relative mat-date-range-input\"\n [formGroup]=\"dateRangeForm\"\n>\n <div class=\"w-100\" *ngIf=\"label\">\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", dependencies: [{ 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.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i3$1.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i3$1.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i3$1.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i3$1.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { 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: i1.TranslatePipe, name: "translate" }, { kind: "component", type: IconButtonComponent, selector: "i-tech-icon-button", inputs: ["size", "type", "iconSvg", "iconName", "tooltip", "disabled"], outputs: ["buttonClick"] }, { kind: "directive", type: DateMaskDirective, selector: "[dateMask]", inputs: ["maskType", "matDatepicker", "rangeFormControl"] }] }); }
|
|
1278
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DateRangeDatepickerComponent, isStandalone: true, selector: "i-tech-mat-range-datepicker", inputs: { label: "label", placeholder: "placeholder", value: "value", defaultValue: "defaultValue", key: "key", submit: "submit", clearValue: "clearValue", errorMessage: "errorMessage", onePlaceholder: "onePlaceholder", hintText: "hintText" }, outputs: { resetForm: "resetForm", selectionChange: "selectionChange" }, viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true }, { propertyName: "min", first: true, predicate: ["min"], descendants: true }, { propertyName: "max", first: true, predicate: ["max"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex_column relative mat-date-range-input\"\n [formGroup]=\"dateRangeForm\"\n>\n <div class=\"w-100\" *ngIf=\"label\">\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", dependencies: [{ 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.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i3$1.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i3$1.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i3$1.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i3$1.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { 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: i1.TranslatePipe, name: "translate" }, { kind: "component", type: IconButtonComponent, selector: "i-tech-icon-button", inputs: ["size", "type", "iconSvg", "iconName", "tooltip", "disabled"], outputs: ["buttonClick"] }, { kind: "directive", type: DateMaskDirective, selector: "[dateMask]", inputs: ["maskType", "matDatepicker", "rangeFormControl"] }] }); }
|
|
1257
1279
|
}
|
|
1258
1280
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangeDatepickerComponent, decorators: [{
|
|
1259
1281
|
type: Component,
|
|
@@ -1295,6 +1317,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
1295
1317
|
}], min: [{
|
|
1296
1318
|
type: ViewChild,
|
|
1297
1319
|
args: ['min']
|
|
1320
|
+
}], max: [{
|
|
1321
|
+
type: ViewChild,
|
|
1322
|
+
args: ['max']
|
|
1298
1323
|
}] } });
|
|
1299
1324
|
|
|
1300
1325
|
var DropdownSelectionType;
|
|
@@ -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/services/parse-date.service.ts","../../../projects/shared-components/src/lib/interfaces/button-types.enum.ts","../../../projects/shared-components/src/lib/interfaces/label-type.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/lib/components/label/label.component.ts","../../../projects/shared-components/src/lib/components/label/label.component.html","../../../projects/shared-components/src/lib/components/date-time-picker/date-time-picker.component.ts","../../../projects/shared-components/src/lib/components/date-time-picker/date-time-picker.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","import { Injectable } from '@angular/core';\nimport moment from 'moment';\nimport * as momentTimezone from 'moment-timezone';\nimport { HourMinute } from \"../interfaces/hour-minute.interface\";\n\n@Injectable()\nexport class ParseDateService {\n\n toLocaleTime(time: any, format = '', timezoneId: string | null): string {\n format = (format) ? format : 'MM/DD/yyyy hh:mm A';\n const momentDate = momentTimezone.utc(time);\n if (timezoneId) {\n momentDate.tz(timezoneId);\n }\n return momentDate.format(format);\n }\n\n fromLocaleToUtc(time: any, format = '', timezoneId: string | null): string {\n format = (format) ? format : 'MM/DD/yyyy hh:mm A';\n if (timezoneId) {\n return momentTimezone.tz(moment(time).format(format), timezoneId).utc(false).format();\n }\n return '';\n }\n\n toDate(date: string | undefined): Date {\n return moment(date).toDate();\n }\n\n toDateWithFormat(date: string, format: string): Date {\n return moment(date, format).toDate();\n }\n\n getDayDifferentFromCurrentDay(date: Date): number {\n return moment(date).diff(moment(), 'days')\n }\n\n changeFormat(time: any, format: string): string {\n return moment(time).format(format);\n }\n\n changeLocalFormat(time: any, format: string, timezone: string): string {\n return moment(time).tz(timezone).format(format);\n }\n\n addToDate(date: Date | null, toAdd: {second?: number , minute?: number, days?: number} = {}, format?: string | null, type: 'format' | 'date' = 'format' ): string | Date {\n const momentDate = (date ? moment(date) : moment())\n .add(toAdd.second || 0, 'second')\n .add(toAdd.minute || 0, 'minute')\n .add(toAdd.days || 0, 'days');\n\n if (type === 'format') {\n return momentDate.format(format || 'MM/DD/yyyy');\n }\n\n return momentDate.toDate();\n }\n\n getDateForWeekDay(day: number, forWeek = 0): Date {\n return moment().add(forWeek, 'week').day(day).toDate();\n }\n\n getLocalDateForWeekDay(day: number, forWeek = 0, timezoneId: string): Date {\n return moment().tz(timezoneId).add(forWeek, 'week').day(day).toDate();\n }\n\n containsDay(startDate: string, endDate: string, date: string): boolean {\n return moment(date).isBetween(startDate, endDate, 'days', '[]');\n }\n\n getDiff(startDate: string, endDate: string): any {\n return moment(startDate).diff(endDate);\n }\n\n transformHourMinuteToCorrectFormat(data: string | HourMinute, format = 'hh:mm A'): string {\n const dateObj = JSON.parse(JSON.stringify(data));\n const time = '2022-12-12T' + ((+dateObj.hour < 10 ? ('0' + (+dateObj.hour)) : dateObj.hour)\n + ':' + (+dateObj.minute < 10 ? ('0' + (+dateObj.minute)) : dateObj.minute) + ':00');\n return this.changeFormat(time, format);\n }\n\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 /** A warning outlined button with a border and no background. */\n WARN_OUTLINE = 'WARN_OUTLINE'\n}\n","export enum LabelTypeEnum {\n 'purple' = 'purple',\n 'teal' = 'teal',\n 'olive' = 'olive',\n 'orange' = 'orange',\n 'blue' = 'blue',\n 'cyan' = 'cyan',\n 'raspberry' = 'raspberry',\n 'yellow' = 'yellow',\n 'wine' = 'wine',\n 'primary' = 'primary',\n 'green' = 'green',\n 'red' = 'red',\n 'neutral' = 'neutral',\n 'white' = 'white',\n 'gray' = 'gray',\n 'canceled' = 'canceled'\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 if (this.inputMask === 'string') {\n return this.checkingForTexts(value, event);\n } else {\n return true\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, ViewChild } 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 @ViewChild('inputElement', { static: true }) input!: MatInput;\n\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\n get inputData(): AppInputInterface {\n return this._inputData;\n }\n\n @Output() focusOutEmitter = new EventEmitter<void>();\n\n private _inputData!: AppInputInterface;\n ngControl: FormControlName;\n closed = false;\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 toggleEye(): void {\n this.closed = !this.closed;\n this.input.type = this.closed ? 'password' : 'text';\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 #inputElement\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 [float]=\"'' + (inputData.float || false)\"\n [min]=\"('' + inputData.min)\"\n [max]=\"('' + inputData.max)\"\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 <i-tech-icon-button\n *ngIf=\"inputData.type === 'password'\"\n [iconName]=\"closed ? 'visible' : 'visibility_off'\"\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)=\"toggleEye()\"\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=\"[ButtonType.OUTLINE,ButtonType.WARN_OUTLINE].includes(type)\"\n mat-stroked-button\n [attr.data-cy]=\"data_cy\"\n [ngClass]=\"(customClass || '') \"\n [color]=\"type === ButtonType.WARN_OUTLINE ? 'warn' : color\"\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 selectedOptionForMultipleSelection: Array<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.toggleShowingDataInSelectedOptionsMultipleCase(showingData);\n } else {\n this.inputFocusOut();\n }\n }\n\n this.setShowingValue(showingData);\n this.showPlaceholder = false;\n }\n\n toggleShowingDataInSelectedOptionsMultipleCase(showingData: any): void {\n const showingDataByJson = JSON.stringify(showingData);\n const indexOfExistingOption = this.selectedOptionForMultipleSelection.findIndex(\n (optionValue: any) => JSON.stringify(optionValue) === showingDataByJson\n )\n if (indexOfExistingOption >= 0) {\n this.selectedOptionForMultipleSelection.splice(indexOfExistingOption, 1);\n } else {\n this.selectedOptionForMultipleSelection.push(showingData);\n }\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 if (this.selectConfig.multiple && this.selectConfig.search) {\n const fullText: Array<string> = [];\n this.selectedOptionForMultipleSelection.forEach((optionData: any) => {\n fullText.push(this.collectAndGetSelectionToShowForOneOption(optionData))\n })\n this.showingValue = fullText.join(',');\n } else {\n this.showingValue = this.collectAndGetSelectionToShowForOneOption(data);\n }\n this.blockRecallDefaultValueSetter = true;\n }\n\n collectAndGetSelectionToShowForOneOption(data: any): string {\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 return include;\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 {{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 @if (selectConfig?.needTranslateOptions) {\n {{\n ((selectConfig.valueToShowByKey | getValueByKeyFromObject\n : item : selectConfig.valueToShowByParam : selectConfig.withParamSymbol) || '') | translate\n }}\n }@else {\n {{\n ((selectConfig.valueToShowByKey | getValueByKeyFromObject\n : item : selectConfig.valueToShowByParam : selectConfig.withParamSymbol) || '')\n }}\n }\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?.needTranslateOptions ? (selectConfig?.changeText[item].text | translate ) : selectConfig?.changeText[item].text}}\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\" *ngIf=\"label\">\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","import { Component, Input } from '@angular/core';\nimport { LabelTypeEnum } from \"../../interfaces/label-type.enum\";\nimport { MatChip } from \"@angular/material/chips\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { MatIcon } from \"@angular/material/icon\";\n\n@Component({\n selector: 'i-tech-label',\n templateUrl: './label.component.html',\n styleUrls: [],\n imports: [\n MatChip,\n MatTooltip,\n NgClass,\n TranslateModule,\n MatIcon,\n NgIf\n ],\n standalone: true\n})\nexport class LabelComponent {\n @Input() color: LabelTypeEnum = LabelTypeEnum.primary;\n @Input() text!: string;\n @Input() innerHtml!: string;\n @Input() bordered = false;\n @Input() tooltip?: string;\n @Input() size: 'small' | 'standard' = 'standard';\n @Input() iconName?: string;\n @Input() iconSvg = '';\n @Input() disableRipple = false;\n @Input() matChipAction = false;\n @Input() forTable = false;\n}\n","<div [class]=\"{table_row_item: forTable,'trailing-icon' : iconName || iconSvg}\">\n <mat-chip\n [class]=\"'label_' + color\"\n [ngClass]=\"{bordered: bordered, small: size === 'small', matChipAction: 'pointer'}\"\n [matTooltip]=\"(tooltip || '') | translate\"\n [disableRipple]=\"disableRipple\"\n >\n <div class=\"flex_align_center flex_gap\" [ngClass]=\"matChipAction ? 'pointer' : ''\">\n <span *ngIf=\"!innerHtml\">{{text | translate}}</span>\n <span *ngIf=\"innerHtml\" [innerHtml]=\"innerHtml | translate\"></span>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg!\"></mat-icon>\n </div>\n </mat-chip>\n</div>\n","import { AfterViewInit, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { NgxMaskDirective } from \"ngx-mask\";\nimport {\n FormControlName,\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup\n} from \"@angular/forms\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatError, MatLabel } from \"@angular/material/form-field\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { DateMaskDirective } from \"../../directives/date-mask.directive\";\nimport { ParseDateService } from \"../../services/parse-date.service\";\nimport { InputService } from \"../../services/input.service\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\n\n@Component({\n selector: 'i-tech-date-time-picker',\n imports: [MatDatepickerModule, NgxMaskDirective,DateMaskDirective, TranslateModule,\n FormsModule, NgClass, ReactiveFormsModule, MatLabel, GenerateErrorMessagesPipe, NgIf, MatError\n ],\n standalone: true,\n providers: [ParseDateService],\n templateUrl: './date-time-picker.component.html',\n styleUrl: './date-time-picker.component.scss'\n})\nexport class DateTimePickerComponent implements AfterViewInit {\n @Output() dateChangeEvent = new EventEmitter<void>();\n @Input() label!: string;\n @Input() submit = false;\n @Input() required = false;\n @Input() set disabled(disabled: boolean) {\n this._disabled = disabled;\n if (disabled) {\n this.form.get('time')?.disable();\n this.form.get('date')?.disable();\n } else {\n this.form.get('time')?.enable();\n this.form.get('date')?.enable();\n }\n };\n get disabled(): boolean {\n return this._disabled;\n }\n private _disabled = false;\n\n isFocused = false;\n form = new UntypedFormGroup({\n time: new UntypedFormControl(),\n date: new UntypedFormControl(),\n })\n ngControl: FormControlName;\n\n constructor(\n private inputService: InputService,\n private parseDateService: ParseDateService\n ) {\n this.ngControl = this.inputService.injectNgControl();\n }\n\n ngAfterViewInit(): void {\n this.setValue();\n this.ngControl.control.valueChanges.subscribe(() => {\n this.setValue()\n })\n }\n\n private setValue(): void {\n if (!this.ngControl?.control) {\n return;\n }\n const dateTime = this.ngControl.control.value;\n if (!dateTime) {\n this.form.patchValue({\n date: null,\n time: null\n }, { emitEvent: false });\n return;\n }\n\n this.form.patchValue({\n date: new Date(this.parseDateService.changeFormat(dateTime,'YYYY-MM-DD') + 'T' + '00:00:00'),\n time: this.parseDateService.changeFormat(dateTime,'HH:mm')\n }, { emitEvent: false })\n }\n\n public dateChange(timeInput: HTMLInputElement): void {\n if (!timeInput.value) {\n timeInput.focus();\n }\n this.setDatTimeValue()\n }\n\n public setDatTimeValue(): void {\n if (this.form.value.date && this.form.value.time) {\n const date = this.parseDateService.changeFormat(this.form.value.date , 'YYYY-MM-DD');\n const time = this.form.value.time;\n this.ngControl.control.patchValue(date + 'T' + time, { emitEvent: false });\n } else {\n this.ngControl.control.patchValue(null, { emitEvent: false });\n }\n this.dateChangeEvent.emit()\n }\n\n public onFocus(): void {\n this.isFocused = true;\n }\n\n public onBlur(): void {\n this.isFocused = false;\n }\n}\n","<div class=\"date_time_picker_container\"\n *ngIf=\"ngControl?.control\"\n [class.readonly_field]=\"disabled\"\n>\n <mat-label [ngClass]=\"{'readonly-color': disabled}\">{{label | translate}}</mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color': disabled}\"> *</span>\n\n <div class=\"date_time_picker\"\n [formGroup]=\"form\"\n [ngClass]=\"{'focused': isFocused, 'disabled': disabled}\"\n >\n <input type=\"text\" dateMask class=\"date\"\n placeholder=\"mm/dd/yy\"\n formControlName=\"date\"\n [matDatepicker]=\"DatePicker\"\n [disabled]=\"disabled\"\n (click)=\"!disabled && DatePicker.open()\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (selectionchange)=\"dateChange(dateElement)\"\n >\n <mat-datepicker #DatePicker></mat-datepicker>\n <input type=\"time\"\n #dateElement\n class=\"time\"\n formControlName=\"time\"\n [disabled]=\"disabled\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (change)=\"setDatTimeValue()\"\n />\n </div>\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ngControl.control | generateErrorMessages : (label || '')}}\n </mat-error>\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/services/parse-date.service';\nexport * from './lib/interfaces/app-input.interface';\nexport * from './lib/interfaces/button-types.enum';\nexport * from './lib/interfaces/label-type.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';\nexport * from './lib/components/label/label.component';\nexport * from './lib/components/date-time-picker/date-time-picker.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.InputService","i2","i1","i5","i6","i3","i4","i2.ParseDateService"],"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/services/parse-date.service.ts","../../../projects/shared-components/src/lib/interfaces/button-types.enum.ts","../../../projects/shared-components/src/lib/interfaces/label-type.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/lib/components/label/label.component.ts","../../../projects/shared-components/src/lib/components/label/label.component.html","../../../projects/shared-components/src/lib/components/date-time-picker/date-time-picker.component.ts","../../../projects/shared-components/src/lib/components/date-time-picker/date-time-picker.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","import { Injectable } from '@angular/core';\nimport moment from 'moment';\nimport * as momentTimezone from 'moment-timezone';\nimport { HourMinute } from \"../interfaces/hour-minute.interface\";\n\n@Injectable()\nexport class ParseDateService {\n\n toLocaleTime(time: any, format = '', timezoneId: string | null): string {\n format = (format) ? format : 'MM/DD/yyyy hh:mm A';\n const momentDate = momentTimezone.utc(time);\n if (timezoneId) {\n momentDate.tz(timezoneId);\n }\n return momentDate.format(format);\n }\n\n fromLocaleToUtc(time: any, format = '', timezoneId: string | null): string {\n format = (format) ? format : 'MM/DD/yyyy hh:mm A';\n if (timezoneId) {\n return momentTimezone.tz(moment(time).format(format), timezoneId).utc(false).format();\n }\n return '';\n }\n\n toDate(date: string | undefined): Date {\n return moment(date).toDate();\n }\n\n toDateWithFormat(date: string, format: string): Date {\n return moment(date, format).toDate();\n }\n\n getDayDifferentFromCurrentDay(date: Date): number {\n return moment(date).diff(moment(), 'days')\n }\n\n changeFormat(time: any, format: string): string {\n return moment(time).format(format);\n }\n\n changeLocalFormat(time: any, format: string, timezone: string): string {\n return moment(time).tz(timezone).format(format);\n }\n\n addToDate(date: Date | null, toAdd: {second?: number , minute?: number, days?: number} = {}, format?: string | null, type: 'format' | 'date' = 'format' ): string | Date {\n const momentDate = (date ? moment(date) : moment())\n .add(toAdd.second || 0, 'second')\n .add(toAdd.minute || 0, 'minute')\n .add(toAdd.days || 0, 'days');\n\n if (type === 'format') {\n return momentDate.format(format || 'MM/DD/yyyy');\n }\n\n return momentDate.toDate();\n }\n\n getDateForWeekDay(day: number, forWeek = 0): Date {\n return moment().add(forWeek, 'week').day(day).toDate();\n }\n\n getLocalDateForWeekDay(day: number, forWeek = 0, timezoneId: string): Date {\n return moment().tz(timezoneId).add(forWeek, 'week').day(day).toDate();\n }\n\n containsDay(startDate: string, endDate: string, date: string): boolean {\n return moment(date).isBetween(startDate, endDate, 'days', '[]');\n }\n\n getDiff(startDate: string, endDate: string): any {\n return moment(startDate).diff(endDate);\n }\n\n transformHourMinuteToCorrectFormat(data: string | HourMinute, format = 'hh:mm A'): string {\n const dateObj = JSON.parse(JSON.stringify(data));\n const time = '2022-12-12T' + ((+dateObj.hour < 10 ? ('0' + (+dateObj.hour)) : dateObj.hour)\n + ':' + (+dateObj.minute < 10 ? ('0' + (+dateObj.minute)) : dateObj.minute) + ':00');\n return this.changeFormat(time, format);\n }\n\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 /** A warning outlined button with a border and no background. */\n WARN_OUTLINE = 'WARN_OUTLINE'\n}\n","export enum LabelTypeEnum {\n 'purple' = 'purple',\n 'teal' = 'teal',\n 'olive' = 'olive',\n 'orange' = 'orange',\n 'blue' = 'blue',\n 'cyan' = 'cyan',\n 'raspberry' = 'raspberry',\n 'yellow' = 'yellow',\n 'wine' = 'wine',\n 'primary' = 'primary',\n 'green' = 'green',\n 'red' = 'red',\n 'neutral' = 'neutral',\n 'white' = 'white',\n 'gray' = 'gray',\n 'canceled' = 'canceled'\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 if (this.inputMask === 'string') {\n return this.checkingForTexts(value, event);\n } else {\n return true\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, ViewChild } 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 @ViewChild('inputElement', { static: true }) input!: MatInput;\n\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\n get inputData(): AppInputInterface {\n return this._inputData;\n }\n\n @Output() focusOutEmitter = new EventEmitter<void>();\n\n private _inputData!: AppInputInterface;\n ngControl: FormControlName;\n closed = false;\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 toggleEye(): void {\n this.closed = !this.closed;\n this.input.type = this.closed ? 'password' : 'text';\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 #inputElement\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 [float]=\"'' + (inputData.float || false)\"\n [min]=\"('' + inputData.min)\"\n [max]=\"('' + inputData.max)\"\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 <i-tech-icon-button\n *ngIf=\"inputData.type === 'password'\"\n [iconName]=\"closed ? 'visible' : 'visibility_off'\"\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)=\"toggleEye()\"\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=\"[ButtonType.OUTLINE,ButtonType.WARN_OUTLINE].includes(type)\"\n mat-stroked-button\n [attr.data-cy]=\"data_cy\"\n [ngClass]=\"(customClass || '') \"\n [color]=\"type === ButtonType.WARN_OUTLINE ? 'warn' : color\"\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 selectedOptionForMultipleSelection: Array<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.toggleShowingDataInSelectedOptionsMultipleCase(showingData);\n } else {\n this.inputFocusOut();\n }\n }\n\n this.setShowingValue(showingData);\n this.showPlaceholder = false;\n }\n\n toggleShowingDataInSelectedOptionsMultipleCase(showingData: any): void {\n const showingDataByJson = JSON.stringify(showingData);\n const indexOfExistingOption = this.selectedOptionForMultipleSelection.findIndex(\n (optionValue: any) => JSON.stringify(optionValue) === showingDataByJson\n )\n if (indexOfExistingOption >= 0) {\n this.selectedOptionForMultipleSelection.splice(indexOfExistingOption, 1);\n } else {\n this.selectedOptionForMultipleSelection.push(showingData);\n }\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 if (this.selectConfig.multiple && this.selectConfig.search) {\n const fullText: Array<string> = [];\n this.selectedOptionForMultipleSelection.forEach((optionData: any) => {\n fullText.push(this.collectAndGetSelectionToShowForOneOption(optionData))\n })\n this.showingValue = fullText.join(',');\n } else {\n this.showingValue = this.collectAndGetSelectionToShowForOneOption(data);\n }\n this.blockRecallDefaultValueSetter = true;\n }\n\n collectAndGetSelectionToShowForOneOption(data: any): string {\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 return include;\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 {{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 @if (selectConfig?.needTranslateOptions) {\n {{\n ((selectConfig.valueToShowByKey | getValueByKeyFromObject\n : item : selectConfig.valueToShowByParam : selectConfig.withParamSymbol) || '') | translate\n }}\n }@else {\n {{\n ((selectConfig.valueToShowByKey | getValueByKeyFromObject\n : item : selectConfig.valueToShowByParam : selectConfig.withParamSymbol) || '')\n }}\n }\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?.needTranslateOptions ? (selectConfig?.changeText[item].text | translate ) : selectConfig?.changeText[item].text}}\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 @ViewChild('max') max!: ElementRef;\n isOpen = false;\n isSelectingRange = 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 const startDate = value[0];\n const endDate = value[1];\n\n // If this is the start date being selected (matStartDate input)\n if (element === this.min?.nativeElement) {\n // We're starting a new selection process\n this.isSelectingRange = true;\n // Don't emit any event yet\n }\n // If this is the end date being selected (matEndDate input)\n else if (element === this.max?.nativeElement) {\n // We're completing a selection\n this.isSelectingRange = false;\n // Only emit when we have both dates\n if (startDate && endDate) {\n this.selectionChange.emit(value);\n }\n }\n // Handle clear operation (both null)\n else if (startDate === null && endDate === null) {\n this.isSelectingRange = false;\n this.selectionChange.emit(value);\n }\n\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\" *ngIf=\"label\">\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","import { Component, Input } from '@angular/core';\nimport { LabelTypeEnum } from \"../../interfaces/label-type.enum\";\nimport { MatChip } from \"@angular/material/chips\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { MatIcon } from \"@angular/material/icon\";\n\n@Component({\n selector: 'i-tech-label',\n templateUrl: './label.component.html',\n styleUrls: [],\n imports: [\n MatChip,\n MatTooltip,\n NgClass,\n TranslateModule,\n MatIcon,\n NgIf\n ],\n standalone: true\n})\nexport class LabelComponent {\n @Input() color: LabelTypeEnum = LabelTypeEnum.primary;\n @Input() text!: string;\n @Input() innerHtml!: string;\n @Input() bordered = false;\n @Input() tooltip?: string;\n @Input() size: 'small' | 'standard' = 'standard';\n @Input() iconName?: string;\n @Input() iconSvg = '';\n @Input() disableRipple = false;\n @Input() matChipAction = false;\n @Input() forTable = false;\n}\n","<div [class]=\"{table_row_item: forTable,'trailing-icon' : iconName || iconSvg}\">\n <mat-chip\n [class]=\"'label_' + color\"\n [ngClass]=\"{bordered: bordered, small: size === 'small', matChipAction: 'pointer'}\"\n [matTooltip]=\"(tooltip || '') | translate\"\n [disableRipple]=\"disableRipple\"\n >\n <div class=\"flex_align_center flex_gap\" [ngClass]=\"matChipAction ? 'pointer' : ''\">\n <span *ngIf=\"!innerHtml\">{{text | translate}}</span>\n <span *ngIf=\"innerHtml\" [innerHtml]=\"innerHtml | translate\"></span>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg!\"></mat-icon>\n </div>\n </mat-chip>\n</div>\n","import { AfterViewInit, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { NgxMaskDirective } from \"ngx-mask\";\nimport {\n FormControlName,\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup\n} from \"@angular/forms\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatError, MatLabel } from \"@angular/material/form-field\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { DateMaskDirective } from \"../../directives/date-mask.directive\";\nimport { ParseDateService } from \"../../services/parse-date.service\";\nimport { InputService } from \"../../services/input.service\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\n\n@Component({\n selector: 'i-tech-date-time-picker',\n imports: [MatDatepickerModule, NgxMaskDirective,DateMaskDirective, TranslateModule,\n FormsModule, NgClass, ReactiveFormsModule, MatLabel, GenerateErrorMessagesPipe, NgIf, MatError\n ],\n standalone: true,\n providers: [ParseDateService],\n templateUrl: './date-time-picker.component.html',\n styleUrl: './date-time-picker.component.scss'\n})\nexport class DateTimePickerComponent implements AfterViewInit {\n @Output() dateChangeEvent = new EventEmitter<void>();\n @Input() label!: string;\n @Input() submit = false;\n @Input() required = false;\n @Input() set disabled(disabled: boolean) {\n this._disabled = disabled;\n if (disabled) {\n this.form.get('time')?.disable();\n this.form.get('date')?.disable();\n } else {\n this.form.get('time')?.enable();\n this.form.get('date')?.enable();\n }\n };\n get disabled(): boolean {\n return this._disabled;\n }\n private _disabled = false;\n\n isFocused = false;\n form = new UntypedFormGroup({\n time: new UntypedFormControl(),\n date: new UntypedFormControl(),\n })\n ngControl: FormControlName;\n\n constructor(\n private inputService: InputService,\n private parseDateService: ParseDateService\n ) {\n this.ngControl = this.inputService.injectNgControl();\n }\n\n ngAfterViewInit(): void {\n this.setValue();\n this.ngControl.control.valueChanges.subscribe(() => {\n this.setValue()\n })\n }\n\n private setValue(): void {\n if (!this.ngControl?.control) {\n return;\n }\n const dateTime = this.ngControl.control.value;\n if (!dateTime) {\n this.form.patchValue({\n date: null,\n time: null\n }, { emitEvent: false });\n return;\n }\n\n this.form.patchValue({\n date: new Date(this.parseDateService.changeFormat(dateTime,'YYYY-MM-DD') + 'T' + '00:00:00'),\n time: this.parseDateService.changeFormat(dateTime,'HH:mm')\n }, { emitEvent: false })\n }\n\n public dateChange(timeInput: HTMLInputElement): void {\n if (!timeInput.value) {\n timeInput.focus();\n }\n this.setDatTimeValue()\n }\n\n public setDatTimeValue(): void {\n if (this.form.value.date && this.form.value.time) {\n const date = this.parseDateService.changeFormat(this.form.value.date , 'YYYY-MM-DD');\n const time = this.form.value.time;\n this.ngControl.control.patchValue(date + 'T' + time, { emitEvent: false });\n } else {\n this.ngControl.control.patchValue(null, { emitEvent: false });\n }\n this.dateChangeEvent.emit()\n }\n\n public onFocus(): void {\n this.isFocused = true;\n }\n\n public onBlur(): void {\n this.isFocused = false;\n }\n}\n","<div class=\"date_time_picker_container\"\n *ngIf=\"ngControl?.control\"\n [class.readonly_field]=\"disabled\"\n>\n <mat-label [ngClass]=\"{'readonly-color': disabled}\">{{label | translate}}</mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color': disabled}\"> *</span>\n\n <div class=\"date_time_picker\"\n [formGroup]=\"form\"\n [ngClass]=\"{'focused': isFocused, 'disabled': disabled}\"\n >\n <input type=\"text\" dateMask class=\"date\"\n placeholder=\"mm/dd/yy\"\n formControlName=\"date\"\n [matDatepicker]=\"DatePicker\"\n [disabled]=\"disabled\"\n (click)=\"!disabled && DatePicker.open()\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (selectionchange)=\"dateChange(dateElement)\"\n >\n <mat-datepicker #DatePicker></mat-datepicker>\n <input type=\"time\"\n #dateElement\n class=\"time\"\n formControlName=\"time\"\n [disabled]=\"disabled\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (change)=\"setDatTimeValue()\"\n />\n </div>\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ngControl.control | generateErrorMessages : (label || '')}}\n </mat-error>\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/services/parse-date.service';\nexport * from './lib/interfaces/app-input.interface';\nexport * from './lib/interfaces/button-types.enum';\nexport * from './lib/interfaces/label-type.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';\nexport * from './lib/components/label/label.component';\nexport * from './lib/components/date-time-picker/date-time-picker.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.InputService","i2","i1","i5","i6","i3","i4","i2.ParseDateService"],"mappings":"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"}
|
|
@@ -21,7 +21,9 @@ export declare class DateRangeDatepickerComponent implements OnChanges, AfterVie
|
|
|
21
21
|
selectionChange: EventEmitter<any>;
|
|
22
22
|
picker: MatDateRangePicker<any>;
|
|
23
23
|
min: ElementRef;
|
|
24
|
+
max: ElementRef;
|
|
24
25
|
isOpen: boolean;
|
|
26
|
+
isSelectingRange: boolean;
|
|
25
27
|
dateRangeForm: UntypedFormGroup;
|
|
26
28
|
ngAfterViewInit(): void;
|
|
27
29
|
ngOnChanges(changes: SimpleChanges): void;
|