i-tech-shared-components 1.2.51 → 1.3.1

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.
Files changed (48) hide show
  1. package/fesm2022/i-tech-shared-components.mjs +72 -72
  2. package/fesm2022/i-tech-shared-components.mjs.map +1 -1
  3. package/package.json +10 -12
  4. package/theme/_ag-grid.scss +10 -10
  5. package/theme/_buttons.scss +14 -4
  6. package/theme/_date_picker.scss +9 -9
  7. package/theme/_date_time_picker.scss +9 -9
  8. package/theme/_form_fields.scss +23 -23
  9. package/theme/_icon-button.scss +24 -12
  10. package/theme/_label.scss +51 -29
  11. package/theme/_mat-selects.scss +18 -18
  12. package/theme/_menu.scss +3 -3
  13. package/theme/_text_input.scss +12 -12
  14. package/theme.scss +16 -17
  15. package/esm2022/i-tech-shared-components.mjs +0 -5
  16. package/esm2022/lib/components/ag-grid/ag-grid-button-cell/ag-grid-button-cell.component.mjs +0 -25
  17. package/esm2022/lib/components/ag-grid/status-label-cell.component.mjs +0 -41
  18. package/esm2022/lib/components/ag-grid/tooltip-cell-renderer.component.mjs +0 -49
  19. package/esm2022/lib/components/autocomplete-select/autocomplete-select.component.mjs +0 -456
  20. package/esm2022/lib/components/button/button.component.mjs +0 -122
  21. package/esm2022/lib/components/clear-value/clear-value.component.mjs +0 -34
  22. package/esm2022/lib/components/date-picker/date-picker.component.mjs +0 -117
  23. package/esm2022/lib/components/date-range-datepicker/date-range-datepicker.component.mjs +0 -141
  24. package/esm2022/lib/components/date-time-picker/date-time-picker.component.mjs +0 -169
  25. package/esm2022/lib/components/icon-button/icon-button.component.mjs +0 -49
  26. package/esm2022/lib/components/label/label.component.mjs +0 -56
  27. package/esm2022/lib/components/menu/menu.component.mjs +0 -56
  28. package/esm2022/lib/components/new-sidebar/company-image/company-image.component.mjs +0 -26
  29. package/esm2022/lib/components/new-sidebar/new-sidebar.component.mjs +0 -201
  30. package/esm2022/lib/components/text/text-input.component.mjs +0 -97
  31. package/esm2022/lib/directives/date-mask.directive.mjs +0 -92
  32. package/esm2022/lib/directives/input-mask.directive.mjs +0 -95
  33. package/esm2022/lib/interfaces/app-input.interface.mjs +0 -2
  34. package/esm2022/lib/interfaces/auth.interface.mjs +0 -16
  35. package/esm2022/lib/interfaces/autocomplete-configs.interface.mjs +0 -2
  36. package/esm2022/lib/interfaces/button-types.enum.mjs +0 -19
  37. package/esm2022/lib/interfaces/dropdown-selection.constants.mjs +0 -12
  38. package/esm2022/lib/interfaces/hour-minute.interface.mjs +0 -2
  39. package/esm2022/lib/interfaces/label-type.enum.mjs +0 -30
  40. package/esm2022/lib/interfaces/navigation-link.interface.mjs +0 -2
  41. package/esm2022/lib/interfaces/timezone.interface.mjs +0 -2
  42. package/esm2022/lib/pipes/array-to-string.pipe.mjs +0 -17
  43. package/esm2022/lib/pipes/generate-error-messages.pipe.mjs +0 -29
  44. package/esm2022/lib/pipes/get-value-by-key-from-object.pipe.mjs +0 -45
  45. package/esm2022/lib/services/ag-grid-functions.service.mjs +0 -49
  46. package/esm2022/lib/services/input.service.mjs +0 -35
  47. package/esm2022/lib/services/parse-date.service.mjs +0 -70
  48. package/esm2022/public-api.mjs +0 -30
@@ -1,122 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { MatButton } from "@angular/material/button";
3
- import { NgClass, NgIf } from "@angular/common";
4
- import { MatProgressSpinner } from "@angular/material/progress-spinner";
5
- import { MatIconModule } from "@angular/material/icon";
6
- import { TranslateModule, TranslatePipe, TranslateService } from "@ngx-translate/core";
7
- import { ButtonType } from '../../interfaces/button-types.enum';
8
- import { NgxMaskDirective, NgxMaskPipe } from 'ngx-mask';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/material/icon";
11
- import * as i2 from "@ngx-translate/core";
12
- /**
13
- * A reusable button component with Material Design styling and custom functionality.
14
- */
15
- export class ButtonComponent {
16
- constructor() {
17
- /**
18
- * The text displayed inside the button.
19
- */
20
- this.text = '';
21
- /**
22
- * Data attribute used for Cypress or other testing frameworks.
23
- */
24
- this.data_cy = '';
25
- /**
26
- * Font icon class for displaying an icon (e.g., Material Icons).
27
- */
28
- this.fontIcon = '';
29
- /**
30
- * SVG icon name for displaying an SVG icon.
31
- */
32
- this.svgIcon = '';
33
- /**
34
- * Defines the type of button (e.g., `FILLED`, `OUTLINED`).
35
- */
36
- this.type = ButtonType.FILLED;
37
- /**
38
- * Additional custom classes to style the button.
39
- */
40
- this.customClass = '';
41
- /**
42
- * If true, the button acts as a submit button.
43
- */
44
- this.submit = false;
45
- /**
46
- * If true, the button is disabled and cannot be clicked.
47
- */
48
- this.disabled = false;
49
- /**
50
- * Indicates whether the button is currently activated.
51
- */
52
- this.activated = false;
53
- /**
54
- * The color of the button (e.g., `primary`, `warn`).
55
- */
56
- this.color = 'primary';
57
- /**
58
- * Emits an event when the button is clicked.
59
- */
60
- this.buttonClick = new EventEmitter();
61
- /**
62
- * Enum reference for `ButtonType` to use in templates.
63
- */
64
- this.ButtonType = ButtonType;
65
- }
66
- /**
67
- * Handles the button click event.
68
- *
69
- * @param event - The mouse event triggered by clicking the button.
70
- */
71
- onClick(event) {
72
- if (!this.disabled && !this.submit) {
73
- this.buttonClick.emit();
74
- }
75
- }
76
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
77
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ButtonComponent, isStandalone: true, selector: "i-tech-button", inputs: { text: "text", data_cy: "data_cy", fontIcon: "fontIcon", svgIcon: "svgIcon", type: "type", customClass: "customClass", submit: "submit", disabled: "disabled", activated: "activated", color: "color" }, outputs: { buttonClick: "buttonClick" }, providers: [
78
- NgxMaskDirective,
79
- NgxMaskPipe,
80
- TranslatePipe,
81
- TranslateService
82
- ], ngImport: i0, template: "<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", styles: [""], dependencies: [{ kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
83
- }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ButtonComponent, decorators: [{
85
- type: Component,
86
- args: [{ selector: 'i-tech-button', standalone: true, imports: [
87
- MatButton,
88
- NgClass,
89
- MatProgressSpinner,
90
- NgIf,
91
- MatIconModule,
92
- TranslateModule
93
- ], providers: [
94
- NgxMaskDirective,
95
- NgxMaskPipe,
96
- TranslatePipe,
97
- TranslateService
98
- ], template: "<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" }]
99
- }], propDecorators: { text: [{
100
- type: Input
101
- }], data_cy: [{
102
- type: Input
103
- }], fontIcon: [{
104
- type: Input
105
- }], svgIcon: [{
106
- type: Input
107
- }], type: [{
108
- type: Input
109
- }], customClass: [{
110
- type: Input
111
- }], submit: [{
112
- type: Input
113
- }], disabled: [{
114
- type: Input
115
- }], activated: [{
116
- type: Input
117
- }], color: [{
118
- type: Input
119
- }], buttonClick: [{
120
- type: Output
121
- }] } });
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7QUFFekQ7O0dBRUc7QUFxQkgsTUFBTSxPQUFPLGVBQWU7SUFwQjVCO1FBcUJFOztXQUVHO1FBQ00sU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUVuQjs7V0FFRztRQUNNLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFFdEI7O1dBRUc7UUFDTSxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBRXZCOztXQUVHO1FBQ00sWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUV0Qjs7V0FFRztRQUNNLFNBQUksR0FBZSxVQUFVLENBQUMsTUFBTSxDQUFDO1FBRTlDOztXQUVHO1FBQ00sZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFFMUI7O1dBRUc7UUFDTSxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXhCOztXQUVHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBQztRQUUxQjs7V0FFRztRQUNNLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFM0I7O1dBRUc7UUFDTSxVQUFLLEdBQXVCLFNBQVMsQ0FBQztRQUUvQzs7V0FFRztRQUNPLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVqRDs7V0FFRztRQUNnQixlQUFVLEdBQUcsVUFBVSxDQUFDO0tBWTVDO0lBVkM7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDOytHQXRFVSxlQUFlO21HQUFmLGVBQWUsdVRBUGY7WUFDVCxnQkFBZ0I7WUFDaEIsV0FBVztZQUNYLGFBQWE7WUFDYixnQkFBZ0I7U0FDakIsMEJDOUJILHFoRUFnREEsMEREaENJLFNBQVMsaUxBQ1QsT0FBTyxvRkFDUCxrQkFBa0IsK0tBQ2xCLElBQUksNEZBQ0osYUFBYSxtTEFDYixlQUFlOzs0RkFXTixlQUFlO2tCQXBCM0IsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QsT0FBTzt3QkFDUCxrQkFBa0I7d0JBQ2xCLElBQUk7d0JBQ0osYUFBYTt3QkFDYixlQUFlO3FCQUNoQixhQUdVO3dCQUNULGdCQUFnQjt3QkFDaEIsV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakI7OEJBTVEsSUFBSTtzQkFBWixLQUFLO2dCQUtHLE9BQU87c0JBQWYsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLE9BQU87c0JBQWYsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csV0FBVztzQkFBbkIsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFLSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcbmltcG9ydCB7IE5nQ2xhc3MsIE5nSWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXIgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lclwiO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVBpcGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgQnV0dG9uVHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYnV0dG9uLXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgTmd4TWFza0RpcmVjdGl2ZSwgTmd4TWFza1BpcGUgfSBmcm9tICduZ3gtbWFzayc7XG5cbi8qKlxuICogQSByZXVzYWJsZSBidXR0b24gY29tcG9uZW50IHdpdGggTWF0ZXJpYWwgRGVzaWduIHN0eWxpbmcgYW5kIGN1c3RvbSBmdW5jdGlvbmFsaXR5LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpLXRlY2gtYnV0dG9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdEJ1dHRvbixcbiAgICBOZ0NsYXNzLFxuICAgIE1hdFByb2dyZXNzU3Bpbm5lcixcbiAgICBOZ0lmLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5jc3MnLFxuICBwcm92aWRlcnM6IFtcbiAgICBOZ3hNYXNrRGlyZWN0aXZlLFxuICAgIE5neE1hc2tQaXBlLFxuICAgIFRyYW5zbGF0ZVBpcGUsXG4gICAgVHJhbnNsYXRlU2VydmljZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgdGV4dCBkaXNwbGF5ZWQgaW5zaWRlIHRoZSBidXR0b24uXG4gICAqL1xuICBASW5wdXQoKSB0ZXh0ID0gJyc7XG5cbiAgLyoqXG4gICAqIERhdGEgYXR0cmlidXRlIHVzZWQgZm9yIEN5cHJlc3Mgb3Igb3RoZXIgdGVzdGluZyBmcmFtZXdvcmtzLlxuICAgKi9cbiAgQElucHV0KCkgZGF0YV9jeSA9ICcnO1xuXG4gIC8qKlxuICAgKiBGb250IGljb24gY2xhc3MgZm9yIGRpc3BsYXlpbmcgYW4gaWNvbiAoZS5nLiwgTWF0ZXJpYWwgSWNvbnMpLlxuICAgKi9cbiAgQElucHV0KCkgZm9udEljb24gPSAnJztcblxuICAvKipcbiAgICogU1ZHIGljb24gbmFtZSBmb3IgZGlzcGxheWluZyBhbiBTVkcgaWNvbi5cbiAgICovXG4gIEBJbnB1dCgpIHN2Z0ljb24gPSAnJztcblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgdHlwZSBvZiBidXR0b24gKGUuZy4sIGBGSUxMRURgLCBgT1VUTElORURgKS5cbiAgICovXG4gIEBJbnB1dCgpIHR5cGU6IEJ1dHRvblR5cGUgPSBCdXR0b25UeXBlLkZJTExFRDtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBjdXN0b20gY2xhc3NlcyB0byBzdHlsZSB0aGUgYnV0dG9uLlxuICAgKi9cbiAgQElucHV0KCkgY3VzdG9tQ2xhc3MgPSAnJztcblxuICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGJ1dHRvbiBhY3RzIGFzIGEgc3VibWl0IGJ1dHRvbi5cbiAgICovXG4gIEBJbnB1dCgpIHN1Ym1pdCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgYnV0dG9uIGlzIGRpc2FibGVkIGFuZCBjYW5ub3QgYmUgY2xpY2tlZC5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBidXR0b24gaXMgY3VycmVudGx5IGFjdGl2YXRlZC5cbiAgICovXG4gIEBJbnB1dCgpIGFjdGl2YXRlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgY29sb3Igb2YgdGhlIGJ1dHRvbiAoZS5nLiwgYHByaW1hcnlgLCBgd2FybmApLlxuICAgKi9cbiAgQElucHV0KCkgY29sb3I6ICdwcmltYXJ5JyB8ICd3YXJuJyA9ICdwcmltYXJ5JztcblxuICAvKipcbiAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEVudW0gcmVmZXJlbmNlIGZvciBgQnV0dG9uVHlwZWAgdG8gdXNlIGluIHRlbXBsYXRlcy5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBCdXR0b25UeXBlID0gQnV0dG9uVHlwZTtcblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgYnV0dG9uIGNsaWNrIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgbW91c2UgZXZlbnQgdHJpZ2dlcmVkIGJ5IGNsaWNraW5nIHRoZSBidXR0b24uXG4gICAqL1xuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLnN1Ym1pdCkge1xuICAgICAgdGhpcy5idXR0b25DbGljay5lbWl0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8YnV0dG9uICpuZ0lmPVwiW0J1dHRvblR5cGUuRklMTEVELEJ1dHRvblR5cGUuV0FSTklOR10uaW5jbHVkZXModHlwZSlcIlxuICAgICAgICBtYXQtZmxhdC1idXR0b25cbiAgICAgICAgW2F0dHIuZGF0YS1jeV09XCJkYXRhX2N5XCJcbiAgICAgICAgW2NvbG9yXT1cInR5cGUgPT09IEJ1dHRvblR5cGUuV0FSTklORyA/ICd3YXJuJyA6IGNvbG9yXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2YXRlZF09XCJhY3RpdmF0ZWRcIlxuICAgICAgICBbbmdDbGFzc109XCIoY3VzdG9tQ2xhc3MgfHwgJycpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHN1Ym1pdFwiXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cInN1Ym1pdFwiIGNsYXNzPVwic3Bpbm5lci1vdmVybGF5XCI+XG4gICAgICAgICAgICA8bWF0LXNwaW5uZXIgZGlhbWV0ZXI9XCIxNlwiPjwvbWF0LXNwaW5uZXI+XG4gICAgICAgIDwvc3Bhbj5cbiAgPG1hdC1pY29uICpuZ0lmPVwiZm9udEljb24gJiYgIXN1Ym1pdFwiPnt7Zm9udEljb259fTwvbWF0LWljb24+XG4gIDxtYXQtaWNvbiAqbmdJZj1cInN2Z0ljb24gJiYgIXN1Ym1pdFwiIFtzdmdJY29uXT1cInN2Z0ljb25cIj48L21hdC1pY29uPlxuICA8c3Bhbj57e3RleHQgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbjwvYnV0dG9uPlxuPGJ1dHRvbiAqbmdJZj1cIltCdXR0b25UeXBlLlRPTkFMLEJ1dHRvblR5cGUuVEVYVF0uaW5jbHVkZXModHlwZSlcIlxuICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgIFthdHRyLmRhdGEtY3ldPVwiZGF0YV9jeVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIih0eXBlID09PSBCdXR0b25UeXBlLlRPTkFMID8gJ3RlcnRpYXJ5ICcgOiAnJykgKyAoY3VzdG9tQ2xhc3MgfHwgJycpXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2YXRlZF09XCJhY3RpdmF0ZWRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgc3VibWl0XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiXG4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwic3VibWl0XCIgIGNsYXNzPVwic3Bpbm5lci1vdmVybGF5XCI+XG4gICAgICAgICAgICA8bWF0LXNwaW5uZXIgZGlhbWV0ZXI9XCIxNlwiPjwvbWF0LXNwaW5uZXI+XG4gICAgICAgIDwvc3Bhbj5cbiAgPG1hdC1pY29uICpuZ0lmPVwiZm9udEljb24gJiYgIXN1Ym1pdFwiPnt7Zm9udEljb259fTwvbWF0LWljb24+XG4gIDxtYXQtaWNvbiAqbmdJZj1cInN2Z0ljb24gJiYgIXN1Ym1pdFwiIFtzdmdJY29uXT1cInN2Z0ljb25cIj48L21hdC1pY29uPlxuXG4gIDxzcGFuPnt7dGV4dCB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuPC9idXR0b24+XG48YnV0dG9uICpuZ0lmPVwiW0J1dHRvblR5cGUuT1VUTElORSxCdXR0b25UeXBlLldBUk5fT1VUTElORV0uaW5jbHVkZXModHlwZSlcIlxuICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgW2F0dHIuZGF0YS1jeV09XCJkYXRhX2N5XCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGN1c3RvbUNsYXNzIHx8ICcnKSBcIlxuICAgICAgICBbY29sb3JdPVwidHlwZSA9PT0gQnV0dG9uVHlwZS5XQVJOX09VVExJTkUgPyAnd2FybicgOiBjb2xvclwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBzdWJtaXRcIlxuICAgICAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2YXRlZF09XCJhY3RpdmF0ZWRcIlxuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cInN1Ym1pdFwiICBjbGFzcz1cInNwaW5uZXItb3ZlcmxheVwiPlxuICAgICAgICAgICAgPG1hdC1zcGlubmVyIGRpYW1ldGVyPVwiMTZcIj48L21hdC1zcGlubmVyPlxuICAgICAgICA8L3NwYW4+XG4gIDxtYXQtaWNvbiAqbmdJZj1cImZvbnRJY29uICYmICFzdWJtaXRcIiA+e3tmb250SWNvbn19PC9tYXQtaWNvbj5cbiAgPG1hdC1pY29uICpuZ0lmPVwic3ZnSWNvbiAmJiAhc3VibWl0XCIgW3N2Z0ljb25dPVwic3ZnSWNvblwiPjwvbWF0LWljb24+XG4gIDxzcGFuPnt7dGV4dCB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuPC9idXR0b24+XG4iXX0=
@@ -1,34 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { NgClass, NgOptimizedImage } from "@angular/common";
3
- import * as i0 from "@angular/core";
4
- export class ClearValueComponent {
5
- constructor() {
6
- this.resetValue = new EventEmitter();
7
- }
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ClearValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ClearValueComponent, isStandalone: true, selector: "i-tech-clear-value", inputs: { className: "className", additionalClass: "additionalClass" }, outputs: { resetValue: "resetValue" }, ngImport: i0, template: `<img
10
- class="pointer"
11
- [ngClass]="className || 'standard'"
12
- (click)="resetValue.emit()"
13
- ngSrc="./ic_close.svg"
14
- height="24" width="24" alt=""/>`, isInline: true, styles: ["img{position:absolute;width:15px;height:15px}.big{width:25px;height:25px}.range_date{right:-65px;top:15px}.standard{right:-20px;top:40px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }] }); }
15
- }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ClearValueComponent, decorators: [{
17
- type: Component,
18
- args: [{ selector: 'i-tech-clear-value', template: `<img
19
- class="pointer"
20
- [ngClass]="className || 'standard'"
21
- (click)="resetValue.emit()"
22
- ngSrc="./ic_close.svg"
23
- height="24" width="24" alt=""/>`, imports: [
24
- NgClass,
25
- NgOptimizedImage
26
- ], standalone: true, styles: ["img{position:absolute;width:15px;height:15px}.big{width:25px;height:25px}.range_date{right:-65px;top:15px}.standard{right:-20px;top:40px}\n"] }]
27
- }], propDecorators: { className: [{
28
- type: Input
29
- }], additionalClass: [{
30
- type: Input
31
- }], resetValue: [{
32
- type: Output
33
- }] } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXItdmFsdWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NsZWFyLXZhbHVlL2NsZWFyLXZhbHVlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFzQzVELE1BQU0sT0FBTyxtQkFBbUI7SUFwQ2hDO1FBdUNZLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0tBQ2hEOytHQUpZLG1CQUFtQjttR0FBbkIsbUJBQW1CLDZMQWxDcEI7Ozs7O29DQUt3QixxTkF3QmhDLE9BQU8sb0ZBQ1AsZ0JBQWdCOzs0RkFJUCxtQkFBbUI7a0JBcEMvQixTQUFTOytCQUNFLG9CQUFvQixZQUNwQjs7Ozs7b0NBS3dCLFdBdUJ6Qjt3QkFDUCxPQUFPO3dCQUNQLGdCQUFnQjtxQkFDakIsY0FDVyxJQUFJOzhCQUdQLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nT3B0aW1pemVkSW1hZ2UgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ktdGVjaC1jbGVhci12YWx1ZScsXG4gIHRlbXBsYXRlOiBgPGltZ1xuICAgIGNsYXNzPVwicG9pbnRlclwiXG4gICAgW25nQ2xhc3NdPVwiY2xhc3NOYW1lIHx8ICdzdGFuZGFyZCdcIlxuICAgIChjbGljayk9XCJyZXNldFZhbHVlLmVtaXQoKVwiXG4gICAgbmdTcmM9XCIuL2ljX2Nsb3NlLnN2Z1wiXG4gICAgaGVpZ2h0PVwiMjRcIiB3aWR0aD1cIjI0XCIgYWx0PVwiXCIvPmAsXG4gIHN0eWxlczogW2BcbiAgICBpbWcge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgd2lkdGg6IDE1cHg7XG4gICAgICBoZWlnaHQ6IDE1cHg7XG4gICAgfVxuXG4gICAgLmJpZyB7XG4gICAgICB3aWR0aDogMjVweDtcbiAgICAgIGhlaWdodDogMjVweDtcbiAgICB9XG5cbiAgICAucmFuZ2VfZGF0ZSB7XG4gICAgICByaWdodDogLTY1cHg7XG4gICAgICB0b3A6IDE1cHg7XG4gICAgfVxuXG4gICAgLnN0YW5kYXJkIHtcbiAgICAgIHJpZ2h0OiAtMjBweDtcbiAgICAgIHRvcDogNDBweDtcbiAgICB9XG4gIGBdLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBOZ09wdGltaXplZEltYWdlXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQ2xlYXJWYWx1ZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNsYXNzTmFtZSE6IHN0cmluZztcbiAgQElucHV0KCkgYWRkaXRpb25hbENsYXNzITogc3RyaW5nO1xuICBAT3V0cHV0KCkgcmVzZXRWYWx1ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xufVxuIl19
@@ -1,117 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import { ReactiveFormsModule } from "@angular/forms";
3
- import { NgClass, NgIf } from "@angular/common";
4
- import { TranslateModule } from "@ngx-translate/core";
5
- import { MatFormFieldModule } from "@angular/material/form-field";
6
- import { MatDatepickerModule } from "@angular/material/datepicker";
7
- import { MatInput } from "@angular/material/input";
8
- import { MatTooltip } from "@angular/material/tooltip";
9
- import { MatIconModule } from "@angular/material/icon";
10
- import { DateMaskDirective } from "../../directives/date-mask.directive";
11
- import { GenerateErrorMessagesPipe } from "../../pipes/generate-error-messages.pipe";
12
- import { IconButtonComponent } from "../icon-button/icon-button.component";
13
- import * as i0 from "@angular/core";
14
- import * as i1 from "../../services/input.service";
15
- import * as i2 from "@ngx-translate/core";
16
- import * as i3 from "@angular/forms";
17
- import * as i4 from "@angular/material/form-field";
18
- import * as i5 from "@angular/material/datepicker";
19
- import * as i6 from "@angular/material/icon";
20
- export class DatePickerComponent {
21
- constructor(inputService) {
22
- this.inputService = inputService;
23
- this.label = '';
24
- this.required = false;
25
- this.pastDatesDisabled = false;
26
- this.hintText = '';
27
- this.placeholder = 'MM/DD/YYYY';
28
- this.minDate = null;
29
- this.clearable = false;
30
- this.submit = false;
31
- this.valueChangeEmitter = new EventEmitter();
32
- this.isOpen = false;
33
- this.focused = false;
34
- this.today = new Date();
35
- // Filter to disable past dates
36
- this.dateFilter = (date) => {
37
- if (this.pastDatesDisabled) {
38
- const today = this.today;
39
- return date ? date >= today : false;
40
- }
41
- else {
42
- return true;
43
- }
44
- };
45
- this.customErrorStateMatcher = {
46
- isErrorState: (control, form) => {
47
- return !!(control && control.invalid && this.submit);
48
- }
49
- };
50
- this.ngControl = this.inputService.injectNgControl();
51
- }
52
- emitChange() {
53
- if (!this.valueChangeEmit) {
54
- return;
55
- }
56
- this.valueChangeEmitter.emit();
57
- }
58
- clickForFocusOut() {
59
- setTimeout(() => {
60
- this.inputElement.nativeElement.focus();
61
- this.inputElement.nativeElement.blur();
62
- }, 120);
63
- }
64
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatePickerComponent, deps: [{ token: i1.InputService }], target: i0.ɵɵFactoryTarget.Component }); }
65
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DatePickerComponent, isStandalone: true, selector: "i-tech-date-picker", inputs: { label: "label", defaultPatternKey: "defaultPatternKey", required: "required", pastDatesDisabled: "pastDatesDisabled", hintText: "hintText", placeholder: "placeholder", iconPrefix: "iconPrefix", iconPrefixSvg: "iconPrefixSvg", iconPrefixTooltip: "iconPrefixTooltip", iconPrefixColor: "iconPrefixColor", iconPrefixVariant: "iconPrefixVariant", valueChangeEmit: "valueChangeEmit", minDate: "minDate", clearable: "clearable", submit: "submit" }, outputs: { valueChangeEmitter: "valueChangeEmitter" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0, template: "<div class=\"flex_column relative mat-date-range-input\" *ngIf=\"ngControl\" [ngClass]=\"{'check_requirements': submit}\">\n <div class=\"w-100\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && submit)\n }\">\n {{ label | translate }}\n </mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\"\n [class.readonly-field]=\"ngControl.control.disabled\">\n <input matInput #inputElement\n type=\"text\"\n [formControl]=\"ngControl.control\"\n [placeholder]=\"placeholder | translate\"\n [min]=\"minDate\"\n dateMask\n [matDatepicker]=\"datePicker\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [matDatepickerFilter]=\"dateFilter\"\n (focus)=\"focused = true\"\n (click)=\"datePicker.open();\"\n (dateChange)=\"emitChange()\"\n >\n\n <mat-icon *ngIf=\"iconPrefix\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [style.color]=\"iconPrefixColor\"\n >{{ iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"iconPrefixSvg\"\n ></mat-icon>\n\n <app-icon-button\n *ngIf=\"clearable && !ngControl.control.disabled && !!ngControl.control.value\"\n iconName=\"cancel\"\n matSuffix\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"$event.stopPropagation();$event.preventDefault();ngControl.control.reset(null);\"\n >\n </app-icon-button>\n\n <i-tech-icon-button matSuffix\n [iconName]=\"'date_range'\"\n [disabled]=\"ngControl.control.disabled\"\n (click)=\"datePicker.open()\"\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n ></i-tech-icon-button>\n\n <mat-datepicker #datePicker (closed)=\"isOpen = false;clickForFocusOut()\"\n (opened)=\"isOpen = true;focused = true\"></mat-datepicker>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ ngControl.control | generateErrorMessages : label : defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && submit)) && hintText\"\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\"\n >\n {{ hintText | translate }}\n </mat-hint>\n\n </mat-form-field>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i5.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i5.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: DateMaskDirective, selector: "[dateMask]", inputs: ["maskType", "matDatepicker", "rangeFormControl"] }, { kind: "pipe", type: GenerateErrorMessagesPipe, name: "generateErrorMessages" }, { kind: "component", type: IconButtonComponent, selector: "i-tech-icon-button", inputs: ["size", "type", "iconSvg", "iconName", "tooltip", "disabled"], outputs: ["buttonClick"] }] }); }
66
- }
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatePickerComponent, decorators: [{
68
- type: Component,
69
- args: [{ selector: 'i-tech-date-picker', imports: [
70
- NgClass, NgIf,
71
- TranslateModule,
72
- ReactiveFormsModule,
73
- MatFormFieldModule,
74
- MatDatepickerModule,
75
- MatInput,
76
- MatTooltip,
77
- MatIconModule,
78
- DateMaskDirective,
79
- GenerateErrorMessagesPipe, IconButtonComponent
80
- ], standalone: true, template: "<div class=\"flex_column relative mat-date-range-input\" *ngIf=\"ngControl\" [ngClass]=\"{'check_requirements': submit}\">\n <div class=\"w-100\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && submit)\n }\">\n {{ label | translate }}\n </mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\"\n [class.readonly-field]=\"ngControl.control.disabled\">\n <input matInput #inputElement\n type=\"text\"\n [formControl]=\"ngControl.control\"\n [placeholder]=\"placeholder | translate\"\n [min]=\"minDate\"\n dateMask\n [matDatepicker]=\"datePicker\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [matDatepickerFilter]=\"dateFilter\"\n (focus)=\"focused = true\"\n (click)=\"datePicker.open();\"\n (dateChange)=\"emitChange()\"\n >\n\n <mat-icon *ngIf=\"iconPrefix\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [style.color]=\"iconPrefixColor\"\n >{{ iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"iconPrefixSvg\"\n ></mat-icon>\n\n <app-icon-button\n *ngIf=\"clearable && !ngControl.control.disabled && !!ngControl.control.value\"\n iconName=\"cancel\"\n matSuffix\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"$event.stopPropagation();$event.preventDefault();ngControl.control.reset(null);\"\n >\n </app-icon-button>\n\n <i-tech-icon-button matSuffix\n [iconName]=\"'date_range'\"\n [disabled]=\"ngControl.control.disabled\"\n (click)=\"datePicker.open()\"\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n ></i-tech-icon-button>\n\n <mat-datepicker #datePicker (closed)=\"isOpen = false;clickForFocusOut()\"\n (opened)=\"isOpen = true;focused = true\"></mat-datepicker>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ ngControl.control | generateErrorMessages : label : defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && submit)) && hintText\"\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\"\n >\n {{ hintText | translate }}\n </mat-hint>\n\n </mat-form-field>\n</div>\n" }]
81
- }], ctorParameters: () => [{ type: i1.InputService }], propDecorators: { label: [{
82
- type: Input
83
- }], defaultPatternKey: [{
84
- type: Input
85
- }], required: [{
86
- type: Input
87
- }], pastDatesDisabled: [{
88
- type: Input
89
- }], hintText: [{
90
- type: Input
91
- }], placeholder: [{
92
- type: Input
93
- }], iconPrefix: [{
94
- type: Input
95
- }], iconPrefixSvg: [{
96
- type: Input
97
- }], iconPrefixTooltip: [{
98
- type: Input
99
- }], iconPrefixColor: [{
100
- type: Input
101
- }], iconPrefixVariant: [{
102
- type: Input
103
- }], valueChangeEmit: [{
104
- type: Input
105
- }], minDate: [{
106
- type: Input
107
- }], clearable: [{
108
- type: Input
109
- }], submit: [{
110
- type: Input
111
- }], inputElement: [{
112
- type: ViewChild,
113
- args: ['inputElement']
114
- }], valueChangeEmitter: [{
115
- type: Output
116
- }] } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQW1CLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDckYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7O0FBbUIzRSxNQUFN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Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUNxQixZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ2Ysa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2xOYW1lLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBJbnB1dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbnB1dC5zZXJ2aWNlJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nSWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlclwiO1xuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcbmltcG9ydCB7IE1hdFRvb2x0aXAgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcFwiO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XG5pbXBvcnQgeyBEYXRlTWFza0RpcmVjdGl2ZSB9IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL2RhdGUtbWFzay5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IEdlbmVyYXRlRXJyb3JNZXNzYWdlc1BpcGUgfSBmcm9tIFwiLi4vLi4vcGlwZXMvZ2VuZXJhdGUtZXJyb3ItbWVzc2FnZXMucGlwZVwiO1xuaW1wb3J0IHsgSWNvbkJ1dHRvbkNvbXBvbmVudCB9IGZyb20gXCIuLi9pY29uLWJ1dHRvbi9pY29uLWJ1dHRvbi5jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaS10ZWNoLWRhdGUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgaW1wb3J0czogW1xuICAgIE5nQ2xhc3MsIE5nSWYsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gICAgTWF0SW5wdXQsXG4gICAgTWF0VG9vbHRpcCxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIERhdGVNYXNrRGlyZWN0aXZlLFxuICAgIEdlbmVyYXRlRXJyb3JNZXNzYWdlc1BpcGUsIEljb25CdXR0b25Db21wb25lbnRcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuICAgIEBJbnB1dCgpIGRlZmF1bHRQYXR0ZXJuS2V5ITogc3RyaW5nIDtcbiAgICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHBhc3REYXRlc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgQElucHV0KCkgaGludFRleHQgPSAnJztcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdNTS9ERC9ZWVlZJztcbiAgICBASW5wdXQoKSBpY29uUHJlZml4Pzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGljb25QcmVmaXhTdmc/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgaWNvblByZWZpeFRvb2x0aXA/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgaWNvblByZWZpeENvbG9yPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGljb25QcmVmaXhWYXJpYW50Pzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHZhbHVlQ2hhbmdlRW1pdD86IGJvb2xlYW47XG4gICAgQElucHV0KCkgbWluRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIGNsZWFyYWJsZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgc3VibWl0ID0gZmFsc2U7XG4gICAgQFZpZXdDaGlsZCgnaW5wdXRFbGVtZW50JykgaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjtcbiAgICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2VFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgaXNPcGVuID0gZmFsc2U7XG4gICAgZm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgbmdDb250cm9sOiBGb3JtQ29udHJvbE5hbWU7XG5cbiAgICB0b2RheTogRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAvLyBGaWx0ZXIgdG8gZGlzYWJsZSBwYXN0IGRhdGVzXG4gICAgZGF0ZUZpbHRlciA9IChkYXRlOiBEYXRlIHwgbnVsbCk6IGJvb2xlYW4gPT4ge1xuICAgICAgaWYgKHRoaXMucGFzdERhdGVzRGlzYWJsZWQpIHtcbiAgICAgICAgY29uc3QgdG9kYXkgPSB0aGlzLnRvZGF5O1xuICAgICAgICByZXR1cm4gZGF0ZSA/IGRhdGUgPj0gdG9kYXkgOiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlucHV0U2VydmljZTogSW5wdXRTZXJ2aWNlKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbCA9IHRoaXMuaW5wdXRTZXJ2aWNlLmluamVjdE5nQ29udHJvbCgpIGFzIEZvcm1Db250cm9sTmFtZTtcbiAgICB9XG5cbiAgICBlbWl0Q2hhbmdlKCk6IHZvaWQge1xuICAgICAgaWYgKCF0aGlzLnZhbHVlQ2hhbmdlRW1pdCkgeyByZXR1cm47IH1cbiAgICAgIHRoaXMudmFsdWVDaGFuZ2VFbWl0dGVyLmVtaXQoKTtcbiAgICB9XG5cbiAgICBjbGlja0ZvckZvY3VzT3V0KCk6IHZvaWQge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICB9LDEyMClcbiAgICB9XG5cbiAgICBjdXN0b21FcnJvclN0YXRlTWF0Y2hlciA9IHtcbiAgICAgIGlzRXJyb3JTdGF0ZTogKGNvbnRyb2w6IGFueSwgZm9ybTogYW55KTogYm9vbGVhbiA9PiB7XG4gICAgICAgIHJldHVybiAhIShjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZCAmJiB0aGlzLnN1Ym1pdCk7XG4gICAgICB9XG4gICAgfTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4X2NvbHVtbiByZWxhdGl2ZSBtYXQtZGF0ZS1yYW5nZS1pbnB1dFwiICpuZ0lmPVwibmdDb250cm9sXCIgW25nQ2xhc3NdPVwieydjaGVja19yZXF1aXJlbWVudHMnOiBzdWJtaXR9XCI+XG4gIDxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxuICAgIDxtYXQtbGFiZWwgW25nQ2xhc3NdPVwie1xuICAgICAgICAncmVhZG9ubHktY29sb3InIDogbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQsXG4gICAgICAgICdpbnZhbGlkLWxhYmVsLWNvbG9yJzogISEobmdDb250cm9sLmNvbnRyb2wuZXJyb3JzICYmIHN1Ym1pdClcbiAgICAgICAgfVwiPlxuICAgICAge3sgbGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICA8L21hdC1sYWJlbD5cbiAgICA8c3BhbiAqbmdJZj1cInJlcXVpcmVkXCIgY2xhc3M9XCJyZXF1aXJlZC1pbnB1dFwiIFtuZ0NsYXNzXT1cInsncmVhZG9ubHktY29sb3InIDogbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWR9XCI+Kjwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIFtuZ0NsYXNzXT1cInsnb3BlbmVkX2NhbGVuZGFyJzogaXNPcGVufVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MucmVhZG9ubHktZmllbGRdPVwibmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWRcIj5cbiAgICA8aW5wdXQgbWF0SW5wdXQgI2lucHV0RWxlbWVudFxuICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJuZ0NvbnRyb2wuY29udHJvbFwiXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgIFttaW5dPVwibWluRGF0ZVwiXG4gICAgICAgICAgIGRhdGVNYXNrXG4gICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cImRhdGVQaWNrZXJcIlxuICAgICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwiY3VzdG9tRXJyb3JTdGF0ZU1hdGNoZXJcIlxuICAgICAgICAgICBbbWF0RGF0ZXBpY2tlckZpbHRlcl09XCJkYXRlRmlsdGVyXCJcbiAgICAgICAgICAgKGZvY3VzKT1cImZvY3VzZWQgPSB0cnVlXCJcbiAgICAgICAgICAgKGNsaWNrKT1cImRhdGVQaWNrZXIub3BlbigpO1wiXG4gICAgICAgICAgIChkYXRlQ2hhbmdlKT1cImVtaXRDaGFuZ2UoKVwiXG4gICAgPlxuXG4gICAgPG1hdC1pY29uICpuZ0lmPVwiaWNvblByZWZpeFwiXG4gICAgICAgICAgICAgIG1hdFByZWZpeFxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoKGljb25QcmVmaXhUb29sdGlwIHx8ICcnKSB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiaWNvblByZWZpeENvbG9yXCJcbiAgICA+e3sgaWNvblByZWZpeCB9fVxuICAgIDwvbWF0LWljb24+XG5cbiAgICA8bWF0LWljb24gKm5nSWY9XCJpY29uUHJlZml4U3ZnXCJcbiAgICAgICAgICAgICAgbWF0UHJlZml4XG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIigoaWNvblByZWZpeFRvb2x0aXAgfHwgJycpIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgIFtzdmdJY29uXT1cImljb25QcmVmaXhTdmdcIlxuICAgID48L21hdC1pY29uPlxuXG4gICAgPGFwcC1pY29uLWJ1dHRvblxuICAgICAgKm5nSWY9XCJjbGVhcmFibGUgJiYgIW5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkICYmICEhbmdDb250cm9sLmNvbnRyb2wudmFsdWVcIlxuICAgICAgaWNvbk5hbWU9XCJjYW5jZWxcIlxuICAgICAgbWF0U3VmZml4XG4gICAgICBbbmdDbGFzc109XCJuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCA/ICdyZWFkb25seS1jb2xvcicgOiAnZGVmYXVsdC1mb3JtLWljb24tY29sb3InXCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7bmdDb250cm9sLmNvbnRyb2wucmVzZXQobnVsbCk7XCJcbiAgICA+XG4gICAgPC9hcHAtaWNvbi1idXR0b24+XG5cbiAgICA8aS10ZWNoLWljb24tYnV0dG9uIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25OYW1lXT1cIidkYXRlX3JhbmdlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVQaWNrZXIub3BlbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIm5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkID8gJ3JlYWRvbmx5LWNvbG9yJyA6ICdkZWZhdWx0LWZvcm0taWNvbi1jb2xvcidcIlxuICAgID48L2ktdGVjaC1pY29uLWJ1dHRvbj5cblxuICAgIDxtYXQtZGF0ZXBpY2tlciAjZGF0ZVBpY2tlciAoY2xvc2VkKT1cImlzT3BlbiA9IGZhbHNlO2NsaWNrRm9yRm9jdXNPdXQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChvcGVuZWQpPVwiaXNPcGVuID0gdHJ1ZTtmb2N1c2VkID0gdHJ1ZVwiPjwvbWF0LWRhdGVwaWNrZXI+XG5cbiAgICA8IS0tIEVycm9yIE1lc3NhZ2VzIC0tPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCIhIShuZ0NvbnRyb2wuY29udHJvbC5lcnJvcnMgJiYgc3VibWl0KVwiPlxuICAgICAge3sgbmdDb250cm9sLmNvbnRyb2wgfCBnZW5lcmF0ZUVycm9yTWVzc2FnZXMgOiBsYWJlbCA6IGRlZmF1bHRQYXR0ZXJuS2V5IH19XG4gICAgPC9tYXQtZXJyb3I+XG5cbiAgICA8IS0tIEhlbHBlciBUZXh0IC0tPlxuICAgIDxtYXQtaGludCAqbmdJZj1cIiEoISEobmdDb250cm9sLmNvbnRyb2wuZXJyb3JzICYmIHN1Ym1pdCkpICYmIGhpbnRUZXh0XCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydyZWFkb25seS1jb2xvcicgOiBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZH1cIlxuICAgID5cbiAgICAgIHt7IGhpbnRUZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgPC9tYXQtaGludD5cblxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9kaXY+XG4iXX0=
@@ -1,141 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import { MatDatepickerModule } from "@angular/material/datepicker";
3
- import { ReactiveFormsModule, UntypedFormControl, UntypedFormGroup, Validators } from "@angular/forms";
4
- import { MatFormFieldModule } from "@angular/material/form-field";
5
- import { NgClass, NgIf } from "@angular/common";
6
- import { TranslateModule } from "@ngx-translate/core";
7
- import { IconButtonComponent } from "../icon-button/icon-button.component";
8
- import { DateMaskDirective } from "../../directives/date-mask.directive";
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/material/form-field";
11
- import * as i2 from "@angular/forms";
12
- import * as i3 from "@angular/material/datepicker";
13
- import * as i4 from "@ngx-translate/core";
14
- export class DateRangeDatepickerComponent {
15
- constructor() {
16
- this.submit = false;
17
- this.clearValue = true;
18
- this.errorMessage = '';
19
- this.hintText = 'MM/DD/YYYY - MM/DD/YYYY';
20
- this.resetForm = new EventEmitter();
21
- this.selectionChange = new EventEmitter();
22
- this.isOpen = false;
23
- this.isSelectingRange = false;
24
- this.dateRangeForm = new UntypedFormGroup({
25
- startDate: new UntypedFormControl('', [Validators.maxLength(10)]),
26
- endDate: new UntypedFormControl('', [Validators.maxLength(10)]),
27
- });
28
- this.customErrorStateMatcher = {
29
- isErrorState: (control, form) => {
30
- return !!(control && control.invalid && this.submit);
31
- }
32
- };
33
- }
34
- ngAfterViewInit() {
35
- setTimeout(() => {
36
- if (this.defaultValue?.length) {
37
- this.dateRangeForm.patchValue({
38
- startDate: this.defaultValue[0],
39
- endDate: this.defaultValue[1]
40
- });
41
- }
42
- });
43
- }
44
- ngOnChanges(changes) {
45
- setTimeout(() => {
46
- if (changes['value']?.currentValue && !(changes['value'].currentValue[0])) {
47
- if (this.picker) {
48
- this.dateRangeForm.reset();
49
- this.picker.select(null);
50
- }
51
- }
52
- else if (changes['value'] && this.value?.length) {
53
- this.dateRangeForm.setValue({
54
- startDate: new Date(this.value[0] || ''),
55
- endDate: new Date(this.value[1] || '')
56
- });
57
- }
58
- }, 10);
59
- }
60
- clickForFocusOut() {
61
- setTimeout(() => {
62
- this.min.nativeElement.focus();
63
- this.min.nativeElement.blur();
64
- }, 120);
65
- }
66
- setDate(value, element) {
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
- if (startDate === null && endDate === null) {
80
- this.dateRangeForm.reset();
81
- this.selectionChange.emit(value);
82
- }
83
- else if (startDate && endDate) {
84
- this.selectionChange.emit(value);
85
- }
86
- }
87
- element.blur();
88
- }
89
- keyEventHandler(event, value, element) {
90
- if (event.code === 'Enter') {
91
- this.setDate(value, element);
92
- }
93
- }
94
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangeDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
95
- 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)=\"setDate([null,null], max)\"\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"] }] }); }
96
- }
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangeDatepickerComponent, decorators: [{
98
- type: Component,
99
- args: [{ selector: 'i-tech-mat-range-datepicker', imports: [
100
- MatFormFieldModule,
101
- ReactiveFormsModule,
102
- MatDatepickerModule,
103
- NgClass, NgIf,
104
- TranslateModule,
105
- IconButtonComponent, DateMaskDirective
106
- ], standalone: true, 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)=\"setDate([null,null], max)\"\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" }]
107
- }], propDecorators: { label: [{
108
- type: Input
109
- }], placeholder: [{
110
- type: Input
111
- }], value: [{
112
- type: Input
113
- }], defaultValue: [{
114
- type: Input
115
- }], key: [{
116
- type: Input
117
- }], submit: [{
118
- type: Input
119
- }], clearValue: [{
120
- type: Input
121
- }], errorMessage: [{
122
- type: Input
123
- }], onePlaceholder: [{
124
- type: Input
125
- }], hintText: [{
126
- type: Input
127
- }], resetForm: [{
128
- type: Output
129
- }], selectionChange: [{
130
- type: Output
131
- }], picker: [{
132
- type: ViewChild,
133
- args: ['picker']
134
- }], min: [{
135
- type: ViewChild,
136
- args: ['min']
137
- }], max: [{
138
- type: ViewChild,
139
- args: ['max']
140
- }] } });
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1kYXRlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXJhbmdlLWRhdGVwaWNrZXIvZGF0ZS1yYW5nZS1kYXRlcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXJhbmdlLWRhdGVwaWNrZXIvZGF0ZS1yYW5nZS1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBc0IsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7OztBQWV6RSxNQUFNLE9BQU8sNEJBQTRCO0lBYnpDO1FBbUJXLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsRUFBRSxD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Qjt3QkFDUCxrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixPQUFPLEVBQUUsSUFBSTt3QkFDYixlQUFlO3dCQUNmLG1CQUFtQixFQUFFLGlCQUFpQjtxQkFDdkMsY0FDVyxJQUFJOzhCQUdQLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ2MsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNELEdBQUc7c0JBQXBCLFNBQVM7dUJBQUMsS0FBSztnQkFDRSxHQUFHO3NCQUFwQixTQUFTO3VCQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlLCBNYXREYXRlUmFuZ2VQaWNrZXIgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlclwiO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdJZiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBJY29uQnV0dG9uQ29tcG9uZW50IH0gZnJvbSBcIi4uL2ljb24tYnV0dG9uL2ljb24tYnV0dG9uLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRGF0ZU1hc2tEaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZGlyZWN0aXZlcy9kYXRlLW1hc2suZGlyZWN0aXZlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ktdGVjaC1tYXQtcmFuZ2UtZGF0ZXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXJhbmdlLWRhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcbiAgICBOZ0NsYXNzLCBOZ0lmLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBJY29uQnV0dG9uQ29tcG9uZW50LCBEYXRlTWFza0RpcmVjdGl2ZVxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERhdGVSYW5nZURhdGVwaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBsYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/OiBBcnJheTxzdHJpbmc+O1xuICBASW5wdXQoKSB2YWx1ZT86IEFycmF5PHN0cmluZyB8IG51bGw+O1xuICBASW5wdXQoKSBkZWZhdWx0VmFsdWU/OiBBcnJheTxEYXRlPjtcbiAgQElucHV0KCkga2V5Pzoge3N0YXJ0OiBzdHJpbmcsIGVuZDogc3RyaW5nLCB0aXRsZTogc3RyaW5nfTtcbiAgQElucHV0KCkgc3VibWl0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsZWFyVmFsdWUgPSB0cnVlO1xuICBASW5wdXQoKSBlcnJvck1lc3NhZ2UgPSAnJztcbiAgQElucHV0KCkgb25lUGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGhpbnRUZXh0ID0gJ01NL0REL1lZWVkgLSBNTS9ERC9ZWVlZJztcbiAgQE91dHB1dCgpIHJlc2V0Rm9ybSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBWaWV3Q2hpbGQoJ3BpY2tlcicpIHBpY2tlciE6IE1hdERhdGVSYW5nZVBpY2tlcjxhbnk+O1xuICBAVmlld0NoaWxkKCdtaW4nKSBtaW4hOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdtYXgnKSBtYXghOiBFbGVtZW50UmVmO1xuICBpc09wZW4gPSBmYWxzZTtcbiAgaXNTZWxlY3RpbmdSYW5nZSA9IGZhbHNlO1xuXG4gIGRhdGVSYW5nZUZvcm0gPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7XG4gICAgc3RhcnREYXRlOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTApXSksXG4gICAgZW5kRGF0ZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwKV0pLFxuICB9KTtcblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5kZWZhdWx0VmFsdWU/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLmRhdGVSYW5nZUZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgc3RhcnREYXRlOiB0aGlzLmRlZmF1bHRWYWx1ZVswXSxcbiAgICAgICAgICBlbmREYXRlOiB0aGlzLmRlZmF1bHRWYWx1ZVsxXVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoY2hhbmdlc1sndmFsdWUnXT8uY3VycmVudFZhbHVlICYmICEoY2hhbmdlc1sndmFsdWUnXS5jdXJyZW50VmFsdWVbMF0pKSB7XG4gICAgICAgIGlmICh0aGlzLnBpY2tlcikge1xuICAgICAgICAgIHRoaXMuZGF0ZVJhbmdlRm9ybS5yZXNldCgpO1xuICAgICAgICAgIHRoaXMucGlja2VyLnNlbGVjdChudWxsKVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNoYW5nZXNbJ3ZhbHVlJ10gJiYgdGhpcy52YWx1ZT8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuZGF0ZVJhbmdlRm9ybS5zZXRWYWx1ZSh7XG4gICAgICAgICAgc3RhcnREYXRlOiBuZXcgRGF0ZSh0aGlzLnZhbHVlWzBdIHx8ICcnKSxcbiAgICAgICAgICBlbmREYXRlOiBuZXcgRGF0ZSh0aGlzLnZhbHVlWzFdIHx8ICcnKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sIDEwKVxuICB9XG5cbiAgY2xpY2tGb3JGb2N1c091dCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubWluLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIHRoaXMubWluLm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgIH0sMTIwKVxuICB9XG5cbiAgY3VzdG9tRXJyb3JTdGF0ZU1hdGNoZXIgPSB7XG4gICAgaXNFcnJvclN0YXRlOiAoY29udHJvbDogYW55LCBmb3JtOiBhbnkpOiBib29sZWFuID0+IHtcbiAgICAgIHJldHVybiAhIShjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZCAmJiB0aGlzLnN1Ym1pdCk7XG4gICAgfVxuICB9O1xuXG4gIHNldERhdGUodmFsdWU6IEFycmF5PHN0cmluZyB8IG51bGw+LCBlbGVtZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBzdGFydERhdGUgPSB2YWx1ZVswXTtcbiAgICBjb25zdCBlbmREYXRlID0gdmFsdWVbMV07XG5cbiAgICAvLyBJZiB0aGlzIGlzIHRoZSBzdGFydCBkYXRlIGJlaW5nIHNlbGVjdGVkIChtYXRTdGFydERhdGUgaW5wdXQpXG4gICAgaWYgKGVsZW1lbnQgPT09IHRoaXMubWluPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAvLyBXZSdyZSBzdGFydGluZyBhIG5ldyBzZWxlY3Rpb24gcHJvY2Vzc1xuICAgICAgdGhpcy5pc1NlbGVjdGluZ1JhbmdlID0gdHJ1ZTtcbiAgICAgIC8vIERvbid0IGVtaXQgYW55IGV2ZW50IHlldFxuICAgIH1cbiAgICAvLyBJZiB0aGlzIGlzIHRoZSBlbmQgZGF0ZSBiZWluZyBzZWxlY3RlZCAobWF0RW5kRGF0ZSBpbnB1dClcbiAgICBlbHNlIGlmIChlbGVtZW50ID09PSB0aGlzLm1heD8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgLy8gV2UncmUgY29tcGxldGluZyBhIHNlbGVjdGlvblxuICAgICAgdGhpcy5pc1NlbGVjdGluZ1JhbmdlID0gZmFsc2U7XG5cbiAgICAgIGlmIChzdGFydERhdGUgPT09IG51bGwgJiYgZW5kRGF0ZSA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLmRhdGVSYW5nZUZvcm0ucmVzZXQoKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGVsZW1lbnQuYmx1cigpO1xuICB9XG5cbiAga2V5RXZlbnRIYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LHZhbHVlOiBBcnJheTxzdHJpbmcgfCBudWxsPiwgZWxlbWVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmNvZGUgPT09ICdFbnRlcicpIHtcbiAgICAgIHRoaXMuc2V0RGF0ZSh2YWx1ZSxlbGVtZW50KVxuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleF9jb2x1bW4gcmVsYXRpdmUgbWF0LWRhdGUtcmFuZ2UtaW5wdXRcIlxuICAgICBbZm9ybUdyb3VwXT1cImRhdGVSYW5nZUZvcm1cIlxuPlxuICA8ZGl2IGNsYXNzPVwidy0xMDBcIiAqbmdJZj1cImxhYmVsXCI+XG4gICAgPG1hdC1sYWJlbD5cbiAgICAgIHt7IChsYWJlbCB8fCAnJykgfCB0cmFuc2xhdGUgfX1cbiAgICA8L21hdC1sYWJlbD5cbiAgPC9kaXY+XG4gIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIFtuZ0NsYXNzXT1cInsnb3BlbmVkX2NhbGVuZGFyJzogaXNPcGVufVwiPlxuICAgIDxtYXQtZGF0ZS1yYW5nZS1pbnB1dCBbcmFuZ2VQaWNrZXJdPVwicGlja2VyXCI+XG4gICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwic3RhcnREYXRlXCJcbiAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiIChwbGFjZWhvbGRlciA/IHBsYWNlaG9sZGVyWzBdIDogJ1N0YXJ0IERhdGUnKVwiXG4gICAgICAgICAgICAgW3RpdGxlXT1cImtleSA/IGtleS50aXRsZSA6ICAnRGF0ZSdcIlxuICAgICAgICAgICAgIFthdHRyLmRhdGEtYWNjZXNzS2V5XT1cImtleSA/IGtleS5zdGFydCA6ICdtaW5TdGFydERhdGUnXCJcbiAgICAgICAgICAgICBbYXR0ci5kYXRhLXBhcmVudEtleV09XCJrZXkgPyAoa2V5LnN0YXJ0ICsgJ18nICsga2V5LmVuZCkgOiAnbWluU3RhcnREYXRlX21heEVuZERhdGUnXCJcbiAgICAgICAgICAgICBtYXRTdGFydERhdGUgI21pblxuICAgICAgICAgICAgIGRhdGVNYXNrXG4gICAgICAgICAgICAgW2Vycm9yU3RhdGVNYXRjaGVyXT1cImN1c3RvbUVycm9yU3RhdGVNYXRjaGVyXCJcbiAgICAgICAgICAgICBbcmFuZ2VGb3JtQ29udHJvbF09XCJkYXRlUmFuZ2VGb3JtLmNvbnRyb2xzWydzdGFydERhdGUnXVwiXG4gICAgICAgICAgICAgKGtleWRvd24pPVwia2V5RXZlbnRIYW5kbGVyKCRldmVudCxbbWluLnZhbHVlLCBtYXgudmFsdWUgfHwgbnVsbF0sbWluKVwiXG4gICAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwic2V0RGF0ZShbbWluLnZhbHVlLCBtYXgudmFsdWUgfHwgbnVsbF0sbWluKVwiPlxuICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImVuZERhdGVcIlxuICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIocGxhY2Vob2xkZXIgID8gcGxhY2Vob2xkZXJbMV0gOiAnRW5kIERhdGUnKVwiXG4gICAgICAgICAgICAgW3RpdGxlXT1cImtleSA/IGtleS50aXRsZSA6ICAnRGF0ZSdcIlxuICAgICAgICAgICAgIFthdHRyLmRhdGEtYWNjZXNzS2V5XT1cImtleSA/IGtleS5lbmQgOiAnbWF4RW5kRGF0ZSdcIlxuICAgICAgICAgICAgIFthdHRyLmRhdGEtcGFyZW50S2V5XT1cImtleSA/IChrZXkuc3RhcnQgKyAnXycgKyBrZXkuZW5kKSA6ICdtaW5TdGFydERhdGVfbWF4RW5kRGF0ZSdcIlxuICAgICAgICAgICAgIG1hdEVuZERhdGUgI21heFxuICAgICAgICAgICAgIGRhdGVNYXNrXG4gICAgICAgICAgICAgW2Vycm9yU3RhdGVNYXRjaGVyXT1cImN1c3RvbUVycm9yU3RhdGVNYXRjaGVyXCJcbiAgICAgICAgICAgICBbcmFuZ2VGb3JtQ29udHJvbF09XCJkYXRlUmFuZ2VGb3JtLmNvbnRyb2xzWydlbmREYXRlJ11cIlxuICAgICAgICAgICAgIChrZXlkb3duKT1cImtleUV2ZW50SGFuZGxlcigkZXZlbnQsW21pbi52YWx1ZSwgbWF4LnZhbHVlIHx8IG51bGxdLG1heClcIlxuICAgICAgICAgICAgIChkYXRlQ2hhbmdlKT1cInNldERhdGUoW21pbi52YWx1ZSwgbWF4LnZhbHVlIHx8IG51bGxdLG1heClcIj5cbiAgICA8L21hdC1kYXRlLXJhbmdlLWlucHV0PlxuICAgIDxpLXRlY2gtaWNvbi1idXR0b24gbWF0U3VmZml4XG4gICAgICAgICAgICAgICAgICAgICAgICBbaWNvbk5hbWVdPVwiJ2NhbmNlbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGJ1dHRvbkNsaWNrKT1cInNldERhdGUoW251bGwsbnVsbF0sIG1heClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkZWZhdWx0LWZvcm0taWNvbi1jb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRhdGVSYW5nZUZvcm0uZ2V0KCdzdGFydERhdGUnKT8udmFsdWUgJiYgdGhpcy5kYXRlUmFuZ2VGb3JtLmdldCgnZW5kRGF0ZScpPy52YWx1ZVwiXG4gICAgPjwvaS10ZWNoLWljb24tYnV0dG9uPlxuICAgIDxpLXRlY2gtaWNvbi1idXR0b25cbiAgICAgIG1hdFN1ZmZpeFxuICAgICAgW2ljb25OYW1lXT1cIidkYXRlX3JhbmdlJ1wiXG4gICAgICAoYnV0dG9uQ2xpY2spPVwicGlja2VyLm9wZW4oKVwiXG4gICAgICBjbGFzcz1cImRlZmF1bHQtZm9ybS1pY29uLWNvbG9yXCJcbiAgICA+PC9pLXRlY2gtaWNvbi1idXR0b24+XG4gICAgPG1hdC1kYXRlLXJhbmdlLXBpY2tlclxuICAgICAgI3BpY2tlclxuICAgICAgKGNsb3NlZCk9XCJpc09wZW4gPSBmYWxzZTtjbGlja0ZvckZvY3VzT3V0KClcIlxuICAgICAgKG9wZW5lZCk9XCJpc09wZW4gPSB0cnVlXCJcbiAgICA+PC9tYXQtZGF0ZS1yYW5nZS1waWNrZXI+XG4gICAgPG1hdC1oaW50ICpuZ0lmPVwiaGludFRleHQgJiYgIWVycm9yTWVzc2FnZVwiPnt7IGhpbnRUZXh0IH19PC9tYXQtaGludD5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvZGl2PlxuIl19