i-tech-shared-components 1.1.32 → 1.1.34

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 (55) hide show
  1. package/README.md +26 -26
  2. package/esm2022/i-tech-shared-components.mjs +5 -0
  3. package/esm2022/lib/components/autocomplete-select/autocomplete-select.component.mjs +420 -0
  4. package/esm2022/lib/components/button/button.component.mjs +122 -0
  5. package/esm2022/lib/components/clear-value/clear-value.component.mjs +34 -0
  6. package/esm2022/lib/components/date-picker/date-picker.component.mjs +117 -0
  7. package/esm2022/lib/components/date-range-datepicker/date-range-datepicker.component.mjs +118 -0
  8. package/esm2022/lib/components/icon-button/icon-button.component.mjs +49 -0
  9. package/esm2022/lib/components/label/label.component.mjs +51 -0
  10. package/esm2022/lib/components/menu/menu.component.mjs +51 -0
  11. package/esm2022/lib/components/text/text-input.component.mjs +81 -0
  12. package/esm2022/lib/directives/date-mask.directive.mjs +92 -0
  13. package/esm2022/lib/directives/input-mask.directive.mjs +95 -0
  14. package/esm2022/lib/interfaces/app-input.interface.mjs +2 -0
  15. package/esm2022/lib/interfaces/autocomplete-configs.interface.mjs +2 -0
  16. package/esm2022/lib/interfaces/button-types.enum.mjs +17 -0
  17. package/esm2022/lib/interfaces/dropdown-selection.constants.mjs +12 -0
  18. package/esm2022/lib/interfaces/label-type.enum.mjs +18 -0
  19. package/esm2022/lib/pipes/array-to-string.pipe.mjs +17 -0
  20. package/esm2022/lib/pipes/generate-error-messages.pipe.mjs +29 -0
  21. package/esm2022/lib/pipes/get-value-by-key-from-object.pipe.mjs +45 -0
  22. package/esm2022/lib/services/input.service.mjs +35 -0
  23. package/esm2022/public-api.mjs +22 -0
  24. package/fesm2022/i-tech-shared-components.mjs +123 -334
  25. package/fesm2022/i-tech-shared-components.mjs.map +1 -1
  26. package/lib/components/label/label.component.d.ts +4 -4
  27. package/lib/components/text/text-input.component.d.ts +3 -2
  28. package/lib/interfaces/label-type.enum.d.ts +2 -1
  29. package/package.json +14 -13
  30. package/public-api.d.ts +1 -10
  31. package/theme/_ag-grid.scss +121 -95
  32. package/theme/_buttons.scss +58 -58
  33. package/theme/_color_themes.scss +136 -136
  34. package/theme/_date_picker.scss +77 -77
  35. package/theme/_form_fields.scss +116 -116
  36. package/theme/_icon-button.scss +123 -123
  37. package/theme/_label.scss +131 -133
  38. package/theme/_mat-selects.scss +266 -266
  39. package/theme/_menu.scss +9 -9
  40. package/theme/_text_input.scss +28 -28
  41. package/theme/variables/_colors.scss +20 -20
  42. package/theme.scss +32 -34
  43. package/lib/components/confirmation-dialog-by-type/confirmation-dialog-by-type.component.d.ts +0 -39
  44. package/lib/components/custom-dialog/custom-dialog.component.d.ts +0 -21
  45. package/lib/components/loading/loading.component.d.ts +0 -8
  46. package/lib/components/standard-dialog/standard-dialog.component.d.ts +0 -53
  47. package/lib/interfaces/confirmation-dialog-types.enum.d.ts +0 -4
  48. package/lib/interfaces/standard-dialog-button.interface.d.ts +0 -11
  49. package/lib/services/dialog.service.d.ts +0 -47
  50. package/theme/_flex.scss +0 -92
  51. package/theme/_margin_padding_height_width.scss +0 -143
  52. package/theme/_material_ovveride.scss +0 -82
  53. package/theme/_modal_and_cards.scss +0 -56
  54. package/theme/_texts.scss +0 -87
  55. package/theme/variables/_desctop_sizes.scss +0 -8
@@ -0,0 +1,51 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { LabelTypeEnum } from "../../interfaces/label-type.enum";
3
+ import { MatChip } from "@angular/material/chips";
4
+ import { MatTooltip } from "@angular/material/tooltip";
5
+ import { NgClass } from "@angular/common";
6
+ import { TranslateModule } from "@ngx-translate/core";
7
+ import { MatIcon } from "@angular/material/icon";
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@ngx-translate/core";
10
+ export class LabelComponent {
11
+ constructor() {
12
+ this.color = LabelTypeEnum.primary;
13
+ this.bordered = false;
14
+ this.size = 'standard';
15
+ this.disableRipple = false;
16
+ this.matChipAction = false;
17
+ }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
19
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LabelComponent, isStandalone: true, selector: "i-tech-label", inputs: { color: "color", text: "text", innerHtml: "innerHtml", bordered: "bordered", tooltip: "tooltip", size: "size", iconName: "iconName", iconSvg: "iconSvg", disableRipple: "disableRipple", matChipAction: "matChipAction" }, ngImport: i0, template: "<div [class]=\"iconName || iconSvg ? 'trailing-icon flex' : 'flex'\">\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", dependencies: [{ kind: "component", type: MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
20
+ }
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LabelComponent, decorators: [{
22
+ type: Component,
23
+ args: [{ selector: 'i-tech-label', imports: [
24
+ MatChip,
25
+ MatTooltip,
26
+ NgClass,
27
+ TranslateModule,
28
+ MatIcon
29
+ ], standalone: true, template: "<div [class]=\"iconName || iconSvg ? 'trailing-icon flex' : 'flex'\">\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" }]
30
+ }], propDecorators: { color: [{
31
+ type: Input
32
+ }], text: [{
33
+ type: Input
34
+ }], innerHtml: [{
35
+ type: Input
36
+ }], bordered: [{
37
+ type: Input
38
+ }], tooltip: [{
39
+ type: Input
40
+ }], size: [{
41
+ type: Input
42
+ }], iconName: [{
43
+ type: Input
44
+ }], iconSvg: [{
45
+ type: Input
46
+ }], disableRipple: [{
47
+ type: Input
48
+ }], matChipAction: [{
49
+ type: Input
50
+ }] } });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2xhYmVsL2xhYmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9sYWJlbC9sYWJlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBZWpELE1BQU0sT0FBTyxjQUFjO0lBYjNCO1FBY1csVUFBSyxHQUFrQixhQUFhLENBQUMsT0FBTyxDQUFDO1FBRzdDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsU0FBSSxHQUF5QixVQUFVLENBQUM7UUFHeEMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7S0FDaEM7K0dBWFksY0FBYzttR0FBZCxjQUFjLDRTQ3JCM0Isc3dCQWVBLDRDREZJLE9BQU8sa1NBQ1AsVUFBVSxpUkFDVixPQUFPLG1GQUNQLGVBQWUsNEZBQ2YsT0FBTzs7NEZBSUUsY0FBYztrQkFiMUIsU0FBUzsrQkFDRSxjQUFjLFdBR2Y7d0JBQ1AsT0FBTzt3QkFDUCxVQUFVO3dCQUNWLE9BQU87d0JBQ1AsZUFBZTt3QkFDZixPQUFPO3FCQUNSLGNBQ1csSUFBSTs4QkFHUCxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExhYmVsVHlwZUVudW0gfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9sYWJlbC10eXBlLmVudW1cIjtcbmltcG9ydCB7IE1hdENoaXAgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHNcIjtcbmltcG9ydCB7IE1hdFRvb2x0aXAgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcFwiO1xuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaS10ZWNoLWxhYmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xhYmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgaW1wb3J0czogW1xuICAgIE1hdENoaXAsXG4gICAgTWF0VG9vbHRpcCxcbiAgICBOZ0NsYXNzLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBNYXRJY29uXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTGFiZWxDb21wb25lbnQge1xuICBASW5wdXQoKSBjb2xvcjogTGFiZWxUeXBlRW51bSA9IExhYmVsVHlwZUVudW0ucHJpbWFyeTtcbiAgQElucHV0KCkgdGV4dCE6IHN0cmluZztcbiAgQElucHV0KCkgaW5uZXJIdG1sITogc3RyaW5nO1xuICBASW5wdXQoKSBib3JkZXJlZCA9IGZhbHNlO1xuICBASW5wdXQoKSB0b29sdGlwPzogc3RyaW5nO1xuICBASW5wdXQoKSBzaXplOiAnc21hbGwnIHwgJ3N0YW5kYXJkJyA9ICdzdGFuZGFyZCc7XG4gIEBJbnB1dCgpIGljb25OYW1lPzogc3RyaW5nO1xuICBASW5wdXQoKSBpY29uU3ZnPzogc3RyaW5nO1xuICBASW5wdXQoKSBkaXNhYmxlUmlwcGxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1hdENoaXBBY3Rpb24gPSBmYWxzZTtcbn1cbiIsIjxkaXYgW2NsYXNzXT1cImljb25OYW1lIHx8IGljb25TdmcgPyAndHJhaWxpbmctaWNvbiBmbGV4JyA6ICdmbGV4J1wiPlxuICAgIDxtYXQtY2hpcFxuICAgICAgICAgICAgW2NsYXNzXT1cIidsYWJlbF8nICsgY29sb3JcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie2JvcmRlcmVkOiBib3JkZXJlZCwgc21hbGw6IHNpemUgPT09ICdzbWFsbCcsIG1hdENoaXBBY3Rpb246ICdwb2ludGVyJ31cIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKHRvb2x0aXAgfHwgJycpIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlUmlwcGxlXT1cImRpc2FibGVSaXBwbGVcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhfYWxpZ25fY2VudGVyIGZsZXhfZ2FwXCIgW25nQ2xhc3NdPVwibWF0Q2hpcEFjdGlvbiA/ICdwb2ludGVyJyA6ICcnXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpbm5lckh0bWxcIj57e3RleHQgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaW5uZXJIdG1sXCIgW2lubmVySHRtbF09XCJpbm5lckh0bWwgfCB0cmFuc2xhdGVcIj48L3NwYW4+XG4gICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJpY29uTmFtZVwiPnt7aWNvbk5hbWV9fTwvbWF0LWljb24+XG4gICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJpY29uU3ZnXCIgW3N2Z0ljb25dPVwiaWNvblN2ZyFcIj48L21hdC1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L21hdC1jaGlwPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,51 @@
1
+ import { Component, EventEmitter, Input, Output } from "@angular/core";
2
+ import { ButtonType } from "../../interfaces/button-types.enum";
3
+ import { DropdownItemIcon } from "../../interfaces/dropdown-selection.constants";
4
+ import { MatMenu, MatMenuItem, MatMenuTrigger } from "@angular/material/menu";
5
+ import { MatIcon } from "@angular/material/icon";
6
+ import { NgClass, NgForOf, NgIf } from "@angular/common";
7
+ import { TranslateModule } from "@ngx-translate/core";
8
+ import { ButtonComponent } from "../button/button.component";
9
+ import { MatLabel } from "@angular/material/form-field";
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@ngx-translate/core";
12
+ export class MenuComponent {
13
+ constructor() {
14
+ this.positionX = 'before';
15
+ this.menuOptions = [];
16
+ this.emitEvent = new EventEmitter();
17
+ this.ButtonType = ButtonType;
18
+ this.DropdownItemIcon = DropdownItemIcon;
19
+ this.matMenuState = false;
20
+ }
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
22
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MenuComponent, isStandalone: true, selector: "i-tech-menu", inputs: { text: "text", dataName: "dataName", containerClass: "containerClass", positionX: "positionX", menuOptions: "menuOptions" }, outputs: { emitEvent: "emitEvent" }, ngImport: i0, template: "<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", styles: [".custom_dropdown_container i-tech-button{display:inline-block}mat-menu{height:max-content}\n"], dependencies: [{ kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonComponent, selector: "i-tech-button", inputs: ["text", "data_cy", "fontIcon", "svgIcon", "type", "customClass", "submit", "disabled", "activated", "color"], outputs: ["buttonClick"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }] }); }
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MenuComponent, decorators: [{
25
+ type: Component,
26
+ args: [{ selector: "i-tech-menu", standalone: true, imports: [
27
+ MatMenuTrigger,
28
+ MatMenu,
29
+ MatIcon,
30
+ NgIf,
31
+ NgForOf,
32
+ MatMenuItem,
33
+ TranslateModule,
34
+ NgClass,
35
+ ButtonComponent,
36
+ MatLabel
37
+ ], template: "<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", styles: [".custom_dropdown_container i-tech-button{display:inline-block}mat-menu{height:max-content}\n"] }]
38
+ }], propDecorators: { text: [{
39
+ type: Input
40
+ }], dataName: [{
41
+ type: Input
42
+ }], containerClass: [{
43
+ type: Input
44
+ }], positionX: [{
45
+ type: Input
46
+ }], menuOptions: [{
47
+ type: Input
48
+ }], emitEvent: [{
49
+ type: Output
50
+ }] } });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbWVudS9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9tZW51L21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUF5QixNQUFNLCtDQUErQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBaUIsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQW9CeEQsTUFBTSxPQUFPLGFBQWE7SUFsQjFCO1FBc0JXLGNBQVMsR0FBa0IsUUFBUSxDQUFDO1FBQ3BDLGdCQUFXLEdBTWYsRUFBRSxDQUFDO1FBQ0UsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDM0IsZUFBVSxHQUFHLFVBQVUsQ0FBQztRQUN4QixxQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN2RCxpQkFBWSxHQUFHLEtBQUssQ0FBQztLQUN0QjsrR0FoQlksYUFBYTttR0FBYixhQUFhLGtQQzVCMUIsdTRCQW9CQSxzSkROSSxjQUFjLHFTQUNkLE9BQU8sMlFBQ1AsT0FBTywySUFDUCxJQUFJLDZGQUNKLE9BQU8sbUhBQ1AsV0FBVyxxSUFDWCxlQUFlLDRGQUNmLE9BQU8sb0ZBQ1AsZUFBZSwyTUFDZixRQUFROzs0RkFLQyxhQUFhO2tCQWxCekIsU0FBUzsrQkFDRSxhQUFhLGNBQ1gsSUFBSSxXQUNQO3dCQUNQLGNBQWM7d0JBQ2QsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLElBQUk7d0JBQ0osT0FBTzt3QkFDUCxXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsT0FBTzt3QkFDUCxlQUFlO3dCQUNmLFFBQVE7cUJBQ1Q7OEJBS1EsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBT0ksU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEJ1dHRvblR5cGUgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9idXR0b24tdHlwZXMuZW51bVwiO1xuaW1wb3J0IHsgRHJvcGRvd25JdGVtSWNvbiwgRHJvcGRvd25TZWxlY3Rpb25UeXBlIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvZHJvcGRvd24tc2VsZWN0aW9uLmNvbnN0YW50c1wiO1xuaW1wb3J0IHsgTWF0TWVudSwgTWF0TWVudUl0ZW0sIE1hdE1lbnVUcmlnZ2VyLCBNZW51UG9zaXRpb25YIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdGb3JPZiwgTmdJZiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tIFwiLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnRcIjtcbmltcG9ydCB7IE1hdExhYmVsIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImktdGVjaC1tZW51XCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXRNZW51VHJpZ2dlcixcbiAgICBNYXRNZW51LFxuICAgIE1hdEljb24sXG4gICAgTmdJZixcbiAgICBOZ0Zvck9mLFxuICAgIE1hdE1lbnVJdGVtLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBOZ0NsYXNzLFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBNYXRMYWJlbFxuICBdLFxuICB0ZW1wbGF0ZVVybDogXCIuL21lbnUuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL21lbnUuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgTWVudUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRleHQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRhdGFOYW1lITogc3RyaW5nO1xuICBASW5wdXQoKSBjb250YWluZXJDbGFzcyE6IHN0cmluZztcbiAgQElucHV0KCkgcG9zaXRpb25YOiBNZW51UG9zaXRpb25YID0gJ2JlZm9yZSc7XG4gIEBJbnB1dCgpIG1lbnVPcHRpb25zOiBBcnJheTx7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICB0ZXh0OiBzdHJpbmc7XG4gICAgc3JjPzogc3RyaW5nO1xuICAgIGNsYXNzPzogc3RyaW5nO1xuICAgIHR5cGU/OiBEcm9wZG93blNlbGVjdGlvblR5cGU7XG4gIH0+ID0gW107XG4gIEBPdXRwdXQoKSBlbWl0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEJ1dHRvblR5cGUgPSBCdXR0b25UeXBlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgRHJvcGRvd25JdGVtSWNvbiA9IERyb3Bkb3duSXRlbUljb247XG4gIG1hdE1lbnVTdGF0ZSA9IGZhbHNlO1xufVxuIiwiPGRpdiBjbGFzcz1cImN1c3RvbV9kcm9wZG93bl9jb250YWluZXJcIlxuICAgICBbYXR0ci5kYXRhLW5hbWVdPVwiZGF0YU5hbWVcIlxuICAgICBbbmdDbGFzc109XCJjb250YWluZXJDbGFzc1wiXG4+XG4gICAgPGktdGVjaC1idXR0b25cbiAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJiZWZvcmVNZW51XCJcbiAgICAgICAgICAgIFt0eXBlXT1cIkJ1dHRvblR5cGUuT1VUTElORVwiXG4gICAgICAgICAgICBbZm9udEljb25dPVwiJ2tleWJvYXJkX2Fycm93X2Rvd24nXCJcbiAgICAgICAgICAgIFt0ZXh0XT1cIih0ZXh0IHx8ICcnKSBcIlxuICAgICAgICAgICAgKG1lbnVPcGVuZWQpPVwibWF0TWVudVN0YXRlICA9IHRydWVcIlxuICAgICAgICAgICAgKG1lbnVDbG9zZWQpPVwibWF0TWVudVN0YXRlICA9IGZhbHNlXCJcbiAgICAgICAgICAgIFthY3RpdmF0ZWRdPVwibWF0TWVudVN0YXRlXCJcbiAgICA+PC9pLXRlY2gtYnV0dG9uPlxuICAgIDxtYXQtbWVudSAjYmVmb3JlTWVudT1cIm1hdE1lbnVcIiBbeFBvc2l0aW9uXT1cInBvc2l0aW9uWFwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBtZW51T3B0aW9uc1wiIChjbGljayk9XCJlbWl0RXZlbnQuZW1pdChvcHRpb24udmFsdWUpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJvcHRpb24udHlwZVwiIFtzdmdJY29uXT1cIkRyb3Bkb3duSXRlbUljb25bb3B0aW9uLnR5cGVdXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJtZXVfaXRlbV9sYWJlbFwiPnt7KG9wdGlvbi50ZXh0IHx8ICcnKSB8IHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LW1lbnU+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,81 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
+ import { ReactiveFormsModule } from '@angular/forms';
3
+ import { MatFormFieldModule } from "@angular/material/form-field";
4
+ import { TranslateModule } from "@ngx-translate/core";
5
+ import { NgClass, NgIf } from "@angular/common";
6
+ import { MatIcon } from "@angular/material/icon";
7
+ import { MatTooltip } from "@angular/material/tooltip";
8
+ import { MatInput } from "@angular/material/input";
9
+ import { GenerateErrorMessagesPipe } from "../../pipes/generate-error-messages.pipe";
10
+ import { IconButtonComponent } from "../icon-button/icon-button.component";
11
+ import { InputMaskDirective } from "../../directives/input-mask.directive";
12
+ import { NgxMaskDirective } from "ngx-mask";
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
+ export class TextInputComponent {
19
+ set inputData(data) {
20
+ // If submit becomes true, mark the control as touched
21
+ if (data?.submit && this.ngControl.control) {
22
+ this.ngControl.control.markAsTouched();
23
+ }
24
+ this._inputData = data;
25
+ }
26
+ get inputData() {
27
+ return this._inputData;
28
+ }
29
+ constructor(inputService) {
30
+ this.inputService = inputService;
31
+ this.focusOutEmitter = new EventEmitter();
32
+ this.closed = false;
33
+ this.customErrorStateMatcher = {
34
+ isErrorState: (control, form) => {
35
+ return !!(control && control.invalid && this.inputData?.submit);
36
+ }
37
+ };
38
+ this.ngControl = this.inputService.injectNgControl();
39
+ }
40
+ onFocusOut() {
41
+ if (this._inputData.focusOutEmit) {
42
+ this.focusOutEmitter.emit();
43
+ }
44
+ }
45
+ clear() {
46
+ if (this.ngControl) {
47
+ this.ngControl.control.reset();
48
+ }
49
+ }
50
+ toggleEye() {
51
+ this.closed = !this.closed;
52
+ this.input.type = this.closed ? 'password' : 'text';
53
+ }
54
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextInputComponent, deps: [{ token: i1.InputService }], target: i0.ɵɵFactoryTarget.Component }); }
55
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TextInputComponent, isStandalone: true, selector: "i-tech-text-input", inputs: { inputData: "inputData" }, outputs: { focusOutEmitter: "focusOutEmitter" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["inputElement"], descendants: true, static: true }], ngImport: i0, template: "<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 [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", dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { 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: "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.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: GenerateErrorMessagesPipe, name: "generateErrorMessages" }, { kind: "component", type: IconButtonComponent, selector: "i-tech-icon-button", inputs: ["size", "type", "iconSvg", "iconName", "tooltip", "disabled"], outputs: ["buttonClick"] }, { kind: "directive", type: InputMaskDirective, selector: "[inputMask]", inputs: ["inputMask", "min", "max", "float"] }, { kind: "directive", type: NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { 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"] }] }); }
56
+ }
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextInputComponent, decorators: [{
58
+ type: Component,
59
+ args: [{ selector: 'i-tech-text-input', imports: [
60
+ TranslateModule,
61
+ NgClass,
62
+ MatIcon,
63
+ MatTooltip,
64
+ MatInput,
65
+ ReactiveFormsModule,
66
+ NgIf,
67
+ GenerateErrorMessagesPipe,
68
+ IconButtonComponent,
69
+ InputMaskDirective,
70
+ NgxMaskDirective,
71
+ MatFormFieldModule
72
+ ], standalone: true, template: "<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 [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" }]
73
+ }], ctorParameters: () => [{ type: i1.InputService }], propDecorators: { input: [{
74
+ type: ViewChild,
75
+ args: ['inputElement', { static: true }]
76
+ }], inputData: [{
77
+ type: Input
78
+ }], focusOutEmitter: [{
79
+ type: Output
80
+ }] } });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvdGV4dC90ZXh0LWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy90ZXh0L3RleHQtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFtQixtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7O0FBc0I1QyxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLElBQWEsU0FBUyxDQUFDLElBQXVCO1FBQzVDLHNEQUFzRDtRQUN0RCxJQUFJLElBQUksRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBUUQsWUFBb0IsWUFBMEI7UUFBMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFOcEMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBSXJELFdBQU0sR0FBRyxLQUFLLENBQUM7UUF1QmYsNEJBQXVCLEdBQUc7WUFDeEIsWUFBWSxFQUFFLENBQUMsT0FBWSxFQUFFLElBQVMsRUFBVyxFQUFFO2dCQUNqRCxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDbEUsQ0FBQztTQUNGLENBQUM7UUF4QkEsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDdEQsQ0FBQzsrR0F4Q1Usa0JBQWtCO21HQUFsQixrQkFBa0IsdVJDbkMvQixvM0lBdUdBLDJDRG5GSSxlQUFlLDRGQUNmLE9BQU8sb0ZBQ1AsT0FBTywySUFDUCxVQUFVLGlSQUNWLFFBQVEsZ1VBQ1IsbUJBQW1CLG11QkFDbkIsSUFBSSx3RkFDSix5QkFBeUIsOERBQ3pCLG1CQUFtQixpS0FDbkIsa0JBQWtCLHNHQUNsQixnQkFBZ0IsZ2pCQUNoQixrQkFBa0I7OzRGQUlULGtCQUFrQjtrQkFwQjlCLFNBQVM7K0JBQ0UsbUJBQW1CLFdBR3BCO3dCQUNQLGVBQWU7d0JBQ2YsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLFVBQVU7d0JBQ1YsUUFBUTt3QkFDUixtQkFBbUI7d0JBQ25CLElBQUk7d0JBQ0oseUJBQXlCO3dCQUN6QixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixrQkFBa0I7cUJBQ25CLGNBQ1csSUFBSTtpRkFHNkIsS0FBSztzQkFBakQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUU5QixTQUFTO3NCQUFyQixLQUFLO2dCQVlJLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbE5hbWUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbnB1dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbnB1dC5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcElucHV0SW50ZXJmYWNlIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvYXBwLWlucHV0LmludGVyZmFjZVwiO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0lmIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XG5pbXBvcnQgeyBNYXRUb29sdGlwIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XG5pbXBvcnQgeyBHZW5lcmF0ZUVycm9yTWVzc2FnZXNQaXBlIH0gZnJvbSBcIi4uLy4uL3BpcGVzL2dlbmVyYXRlLWVycm9yLW1lc3NhZ2VzLnBpcGVcIjtcbmltcG9ydCB7IEljb25CdXR0b25Db21wb25lbnQgfSBmcm9tIFwiLi4vaWNvbi1idXR0b24vaWNvbi1idXR0b24uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBJbnB1dE1hc2tEaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZGlyZWN0aXZlcy9pbnB1dC1tYXNrLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgTmd4TWFza0RpcmVjdGl2ZSB9IGZyb20gXCJuZ3gtbWFza1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpLXRlY2gtdGV4dC1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgaW1wb3J0czogW1xuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBOZ0NsYXNzLFxuICAgIE1hdEljb24sXG4gICAgTWF0VG9vbHRpcCxcbiAgICBNYXRJbnB1dCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE5nSWYsXG4gICAgR2VuZXJhdGVFcnJvck1lc3NhZ2VzUGlwZSxcbiAgICBJY29uQnV0dG9uQ29tcG9uZW50LFxuICAgIElucHV0TWFza0RpcmVjdGl2ZSxcbiAgICBOZ3hNYXNrRGlyZWN0aXZlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZVxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRleHRJbnB1dENvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0ITogTWF0SW5wdXQ7XG5cbiAgQElucHV0KCkgc2V0IGlucHV0RGF0YShkYXRhOiBBcHBJbnB1dEludGVyZmFjZSkge1xuICAgIC8vIElmIHN1Ym1pdCBiZWNvbWVzIHRydWUsIG1hcmsgdGhlIGNvbnRyb2wgYXMgdG91Y2hlZFxuICAgIGlmIChkYXRhPy5zdWJtaXQgJiYgdGhpcy5uZ0NvbnRyb2wuY29udHJvbCkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgfVxuICAgIHRoaXMuX2lucHV0RGF0YSA9IGRhdGE7XG4gIH1cblxuICBnZXQgaW5wdXREYXRhKCk6IEFwcElucHV0SW50ZXJmYWNlIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXREYXRhO1xuICB9XG5cbiAgQE91dHB1dCgpIGZvY3VzT3V0RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIF9pbnB1dERhdGEhOiBBcHBJbnB1dEludGVyZmFjZTtcbiAgbmdDb250cm9sOiBGb3JtQ29udHJvbE5hbWU7XG4gIGNsb3NlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5wdXRTZXJ2aWNlOiBJbnB1dFNlcnZpY2UpIHtcbiAgICB0aGlzLm5nQ29udHJvbCA9IHRoaXMuaW5wdXRTZXJ2aWNlLmluamVjdE5nQ29udHJvbCgpO1xuICB9XG5cbiAgb25Gb2N1c091dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faW5wdXREYXRhLmZvY3VzT3V0RW1pdCkge1xuICAgICAgdGhpcy5mb2N1c091dEVtaXR0ZXIuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5yZXNldCgpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUV5ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlZCA9ICF0aGlzLmNsb3NlZDtcbiAgICB0aGlzLmlucHV0LnR5cGUgPSB0aGlzLmNsb3NlZCA/ICdwYXNzd29yZCcgOiAndGV4dCc7XG4gIH1cblxuICBjdXN0b21FcnJvclN0YXRlTWF0Y2hlciA9IHtcbiAgICBpc0Vycm9yU3RhdGU6IChjb250cm9sOiBhbnksIGZvcm06IGFueSk6IGJvb2xlYW4gPT4ge1xuICAgICAgcmV0dXJuICEhKGNvbnRyb2wgJiYgY29udHJvbC5pbnZhbGlkICYmIHRoaXMuaW5wdXREYXRhPy5zdWJtaXQpO1xuICAgIH1cbiAgfTtcbn1cbiIsIjxkaXYgKm5nSWY9XCJpbnB1dERhdGEgJiYgbmdDb250cm9sXCI+XG4gIDxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxuICAgIDxtYXQtbGFiZWwgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdyZWFkb25seS1jb2xvcicgOiBpbnB1dERhdGEucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQsXG4gICAgICAgICAgJ2ludmFsaWQtbGFiZWwtY29sb3InOiAhIShuZ0NvbnRyb2wuY29udHJvbC5lcnJvcnMgJiYgaW5wdXREYXRhLnN1Ym1pdClcbiAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICpuZ0lmPVwiaW5wdXREYXRhLmxhYmVsXCI+XG4gICAgICB7eyBpbnB1dERhdGEubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICA8L21hdC1sYWJlbD5cbiAgICA8c3BhbiAqbmdJZj1cImlucHV0RGF0YS5yZXF1aXJlZFwiIGNsYXNzPVwicmVxdWlyZWQtaW5wdXRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsncmVhZG9ubHktY29sb3InIDogaW5wdXREYXRhLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkfVwiPio8L3NwYW4+XG4gIDwvZGl2PlxuICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInctMTAwXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5yZWFkb25seS1maWVsZF09XCJpbnB1dERhdGEucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWRcIlxuICA+XG4gICAgPCEtLSBMZWFkaW5nIEljb24gLS0+XG4gICAgPG1hdC1pY29uICpuZ0lmPVwiaW5wdXREYXRhLmljb25QcmVmaXhcIlxuICAgICAgICAgICAgICBtYXRQcmVmaXhcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAncmVhZG9ubHktY29sb3InIDogIWlucHV0RGF0YS5pY29uUHJlZml4Q29sb3IgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXREYXRhLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkKSxcbiAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJyA6ICFpbnB1dERhdGEuaWNvblByZWZpeENvbG9yICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhKGlucHV0RGF0YS5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIigoaW5wdXREYXRhLmljb25QcmVmaXhUb29sdGlwIHx8ICcnKSB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiaW5wdXREYXRhLmljb25QcmVmaXhDb2xvciB8fCBudWxsXCJcbiAgICA+e3sgaW5wdXREYXRhLmljb25QcmVmaXggfX1cbiAgICA8L21hdC1pY29uPlxuXG4gICAgPG1hdC1pY29uICpuZ0lmPVwiaW5wdXREYXRhLmljb25QcmVmaXhTdmdcIlxuICAgICAgICAgICAgICBtYXRQcmVmaXhcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKChpbnB1dERhdGEuaWNvblByZWZpeFRvb2x0aXAgfHwgJycpIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgIFtzdmdJY29uXT1cImlucHV0RGF0YS5pY29uUHJlZml4U3ZnXCJcbiAgICA+PC9tYXQtaWNvbj5cblxuICAgIDwhLS0gSW5wdXQgRmllbGQgLS0+XG4gICAgPGlucHV0IG1hdElucHV0ICNpbnB1dEVsZW1lbnRcbiAgICAgICAgICAgKm5nSWY9XCIhaW5wdXREYXRhLnRleHRhcmVhXCJcbiAgICAgICAgICAgW3R5cGVdPVwiaW5wdXREYXRhLnR5cGUgfHwgJ3RleHQnXCJcbiAgICAgICAgICAgW3JlYWRvbmx5XT1cImlucHV0RGF0YS5yZWFkT25seVwiXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIoaW5wdXREYXRhLnBsYWNlaG9sZGVyIHx8ICcnKSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgIFtwYXR0ZXJuXT1cImlucHV0RGF0YS5wYXR0ZXJuIVwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJuZ0NvbnRyb2wuY29udHJvbFwiXG4gICAgICAgICAgIFttYXNrXT1cImlucHV0RGF0YS5tYXNrIHx8ICcnXCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieydyZWFkb25seS1jb2xvciByZWFkb25seS1jdXJzb3InIDogaW5wdXREYXRhLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkfVwiXG4gICAgICAgICAgIFtpbnB1dE1hc2tdPVwiaW5wdXREYXRhLmlucHV0TWFzayFcIlxuICAgICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwiY3VzdG9tRXJyb3JTdGF0ZU1hdGNoZXJcIlxuICAgICAgICAgICAoYmx1cik9XCJvbkZvY3VzT3V0KClcIlxuICAgID5cblxuICAgIDx0ZXh0YXJlYSBtYXRJbnB1dFxuICAgICAgICAgICAgICAqbmdJZj1cImlucHV0RGF0YS50ZXh0YXJlYVwiXG4gICAgICAgICAgICAgIFt0eXBlXT1cImlucHV0RGF0YS50eXBlIHx8ICd0ZXh0J1wiXG4gICAgICAgICAgICAgIFtyZWFkb25seV09XCJpbnB1dERhdGEucmVhZE9ubHlcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKGlucHV0RGF0YS5wbGFjZWhvbGRlciB8fCAnJykgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbcGF0dGVybl09XCJpbnB1dERhdGEucGF0dGVybiFcIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibmdDb250cm9sLmNvbnRyb2xcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3JlYWRvbmx5LWNvbG9yJyA6IGlucHV0RGF0YS5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZH1cIlxuICAgICAgICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwiY3VzdG9tRXJyb3JTdGF0ZU1hdGNoZXJcIlxuICAgID48L3RleHRhcmVhPlxuXG4gICAgPCEtLSBDbGVhciBJY29uIC0tPlxuICAgIDxpLXRlY2gtaWNvbi1idXR0b25cbiAgICAgICpuZ0lmPVwiaW5wdXREYXRhLmNsZWFyYWJsZVwiXG4gICAgICBpY29uTmFtZT1cImNhbmNlbFwiXG4gICAgICBtYXRTdWZmaXhcbiAgICAgIFtkaXNhYmxlZF09XCJpbnB1dERhdGEucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgfHwgZmFsc2VcIlxuICAgICAgW25nQ2xhc3NdPVwiaW5wdXREYXRhLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkID8gJ3JlYWRvbmx5LWNvbG9yJyA6ICdkZWZhdWx0LWZvcm0taWNvbi1jb2xvcidcIlxuICAgICAgKGNsaWNrKT1cImNsZWFyKClcIlxuICAgID5cbiAgICA8L2ktdGVjaC1pY29uLWJ1dHRvbj5cblxuICAgIDxpLXRlY2gtaWNvbi1idXR0b25cbiAgICAgICpuZ0lmPVwiaW5wdXREYXRhLnR5cGUgPT09ICdwYXNzd29yZCdcIlxuICAgICAgW2ljb25OYW1lXT1cImNsb3NlZCA/ICd2aXNpYmxlJyA6ICd2aXNpYmlsaXR5X29mZidcIlxuICAgICAgbWF0U3VmZml4XG4gICAgICBbZGlzYWJsZWRdPVwiaW5wdXREYXRhLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkIHx8IGZhbHNlXCJcbiAgICAgIFtuZ0NsYXNzXT1cImlucHV0RGF0YS5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCA/ICdyZWFkb25seS1jb2xvcicgOiAnZGVmYXVsdC1mb3JtLWljb24tY29sb3InXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVFeWUoKVwiXG4gICAgPlxuICAgIDwvaS10ZWNoLWljb24tYnV0dG9uPlxuXG4gICAgPCEtLSBUcmFpbGluZyBJY29uIC0tPlxuICAgIDxpLXRlY2gtaWNvbi1idXR0b25cbiAgICAgICpuZ0lmPVwiaW5wdXREYXRhLmljb25TdWZmaXhcIlxuICAgICAgW2ljb25OYW1lXT1cImlucHV0RGF0YS5pY29uU3VmZml4XCJcbiAgICAgIFtkaXNhYmxlZF09XCJpbnB1dERhdGEucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgIHx8IGZhbHNlXCJcbiAgICAgIFtuZ0NsYXNzXT1cImlucHV0RGF0YS5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCA/ICdyZWFkb25seS1jb2xvcicgOiAnZGVmYXVsdC1mb3JtLWljb24tY29sb3InXCJcbiAgICAgIG1hdFN1ZmZpeFxuICAgID5cbiAgICA8L2ktdGVjaC1pY29uLWJ1dHRvbj5cblxuICAgIDwhLS0gRXJyb3IgTWVzc2FnZXMgLS0+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cIiEhKG5nQ29udHJvbC5jb250cm9sLmVycm9ycyAmJiBpbnB1dERhdGEuc3VibWl0KVwiPlxuICAgICAge3sgbmdDb250cm9sLmNvbnRyb2wgfCBnZW5lcmF0ZUVycm9yTWVzc2FnZXMgOiAoaW5wdXREYXRhLmxhYmVsIHx8ICcnKSA6IGlucHV0RGF0YS5kZWZhdWx0UGF0dGVybktleSB9fVxuICAgIDwvbWF0LWVycm9yPlxuXG4gICAgPCEtLSBIZWxwZXIgVGV4dCAtLT5cbiAgICA8bWF0LWhpbnQgKm5nSWY9XCIhKCEhKG5nQ29udHJvbC5jb250cm9sLmVycm9ycyAmJiBpbnB1dERhdGEuc3VibWl0KSkgJiYgaW5wdXREYXRhLmhpbnRcIj5cbiAgICAgIHt7IGlucHV0RGF0YS5oaW50IHwgdHJhbnNsYXRlIH19XG4gICAgPC9tYXQtaGludD5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvZGl2PlxuIl19
@@ -0,0 +1,92 @@
1
+ import { Directive, HostListener, Input } from '@angular/core';
2
+ import { NgxMaskDirective, NgxMaskService } from 'ngx-mask';
3
+ import * as i0 from "@angular/core";
4
+ export class DateMaskDirective {
5
+ constructor(elementRef, injector) {
6
+ this.elementRef = elementRef;
7
+ this.injector = injector;
8
+ this.expressions = {
9
+ DMY: 'M0/d0/0000',
10
+ DM: 'M0/d0'
11
+ };
12
+ this.dateRegex = new RegExp(/^\s*(1[012]|0?[1-9])\/(3[01]|[12][0-9]|0?[1-9])\/((?:19|20)\d{2})\s*$/);
13
+ this.dayMonthRegex = new RegExp(/^\s*(1[012]|0?[1-9])\/(3[01]|[12][0-9]|0?[1-9])$/);
14
+ this.previousValue = '';
15
+ this.maskService = this.injector.get(NgxMaskService);
16
+ }
17
+ onInput() {
18
+ let value = this.elementRef.nativeElement.value;
19
+ if (this.existsZerosInString(value)) {
20
+ value = this.previousValue;
21
+ }
22
+ const maskedValue = this.maskService.applyMask(value, this.maskType === 'DAY_MONTH' ? this.expressions.DM : this.expressions.DMY);
23
+ if (this.maskType !== 'DAY_MONTH' && !isNaN(new Date(maskedValue).getTime())) {
24
+ if (this.matDatepicker) {
25
+ this.matDatepicker.select(new Date(maskedValue));
26
+ }
27
+ else if (this.rangeFormControl) {
28
+ this.rangeFormControl.setValue(new Date(maskedValue));
29
+ }
30
+ }
31
+ if (isNaN(new Date(maskedValue).getTime())) {
32
+ this.matDatepicker.select(null);
33
+ }
34
+ this.elementRef.nativeElement.value = maskedValue || null;
35
+ this.previousValue = maskedValue || null;
36
+ }
37
+ onPaste(event) {
38
+ const pastedValue = event.clipboardData?.getData('text/plain');
39
+ if (!pastedValue) {
40
+ return;
41
+ }
42
+ if (this.maskType === 'DAY_MONTH') {
43
+ if (!this.dayMonthRegex.test(pastedValue)) {
44
+ event?.preventDefault();
45
+ }
46
+ }
47
+ else {
48
+ if (!this.dateRegex.test(pastedValue)) {
49
+ event?.preventDefault();
50
+ }
51
+ }
52
+ }
53
+ existsZerosInString(date) {
54
+ const dateToArray = date.split('/');
55
+ let isValid;
56
+ if (this.maskType === 'DAY_MONTH') {
57
+ isValid = !!dateToArray.find((part) => part.includes('00'));
58
+ }
59
+ else {
60
+ if (dateToArray.length < 3) {
61
+ isValid = !!dateToArray.find((part) => part.includes('00'));
62
+ }
63
+ else {
64
+ isValid = (dateToArray[2][0] == '0') || (+dateToArray[2][0] > 2);
65
+ }
66
+ }
67
+ return isValid;
68
+ }
69
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateMaskDirective, deps: [{ token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
70
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DateMaskDirective, isStandalone: true, selector: "[dateMask]", inputs: { maskType: "maskType", matDatepicker: "matDatepicker", rangeFormControl: "rangeFormControl" }, host: { listeners: { "input": "onInput()", "paste": "onPaste($event)" } }, providers: [NgxMaskDirective], ngImport: i0 }); }
71
+ }
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateMaskDirective, decorators: [{
73
+ type: Directive,
74
+ args: [{
75
+ selector: '[dateMask]',
76
+ providers: [NgxMaskDirective],
77
+ standalone: true
78
+ }]
79
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Injector }], propDecorators: { maskType: [{
80
+ type: Input
81
+ }], matDatepicker: [{
82
+ type: Input
83
+ }], rangeFormControl: [{
84
+ type: Input
85
+ }], onInput: [{
86
+ type: HostListener,
87
+ args: ['input']
88
+ }], onPaste: [{
89
+ type: HostListener,
90
+ args: ['paste', ['$event']]
91
+ }] } });
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1tYXNrLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvZGlyZWN0aXZlcy9kYXRlLW1hc2suZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNGLEtBQUssRUFDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFTNUQsTUFBTSxPQUFPLGlCQUFpQjtJQWM1QixZQUNZLFVBQXNCLEVBQ3RCLFFBQWtCO1FBRGxCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQVg5QixnQkFBVyxHQUFHO1lBQ1osR0FBRyxFQUFFLFlBQVk7WUFDakIsRUFBRSxFQUFFLE9BQU87U0FDWixDQUFBO1FBRUQsY0FBUyxHQUFHLElBQUksTUFBTSxDQUFDLHVFQUF1RSxDQUFDLENBQUM7UUFDaEcsa0JBQWEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBQy9FLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBTWpCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUdELE9BQU87UUFDTCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUFFaEQsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUM3QixDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQzVDLEtBQUss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UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOytHQS9FVSxpQkFBaUI7bUdBQWpCLGlCQUFpQiw0T0FIbEIsQ0FBQyxnQkFBZ0IsQ0FBQzs7NEZBR2pCLGlCQUFpQjtrQkFMN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsU0FBUyxFQUFDLENBQUMsZ0JBQWdCLENBQUM7b0JBQzVCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjtzR0FFVSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQW1CTixPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTztnQkE4QnJCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0b3IsIElucHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd4TWFza0RpcmVjdGl2ZSwgTmd4TWFza1NlcnZpY2UgfSBmcm9tICduZ3gtbWFzayc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXJcIjtcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZGF0ZU1hc2tdJyxcbiAgcHJvdmlkZXJzOltOZ3hNYXNrRGlyZWN0aXZlXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlTWFza0RpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpIG1hc2tUeXBlITogc3RyaW5nO1xuICBASW5wdXQoKSBtYXREYXRlcGlja2VyITogTWF0RGF0ZXBpY2tlcjxhbnk+O1xuICBASW5wdXQoKSByYW5nZUZvcm1Db250cm9sITogQWJzdHJhY3RDb250cm9sO1xuXG4gIGV4cHJlc3Npb25zID0ge1xuICAgIERNWTogJ00wL2QwLzAwMDAnLFxuICAgIERNOiAnTTAvZDAnXG4gIH1cbiAgbWFza1NlcnZpY2U6IGFueTtcbiAgZGF0ZVJlZ2V4ID0gbmV3IFJlZ0V4cCgvXlxccyooMVswMTJdfDA/WzEtOV0pXFwvKDNbMDFdfFsxMl1bMC05XXwwP1sxLTldKVxcLygoPzoxOXwyMClcXGR7Mn0pXFxzKiQvKTtcbiAgZGF5TW9udGhSZWdleCA9IG5ldyBSZWdFeHAoL15cXHMqKDFbMDEyXXwwP1sxLTldKVxcLygzWzAxXXxbMTJdWzAtOV18MD9bMS05XSkkLyk7XG4gIHByZXZpb3VzVmFsdWUgPSAnJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICApIHtcbiAgICB0aGlzLm1hc2tTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoTmd4TWFza1NlcnZpY2UpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnKVxuICBvbklucHV0KCkge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHRoaXMuZXhpc3RzWmVyb3NJblN0cmluZyh2YWx1ZSkpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5wcmV2aW91c1ZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IG1hc2tlZFZhbHVlID0gdGhpcy5tYXNrU2VydmljZS5hcHBseU1hc2soXG4gICAgICB2YWx1ZSxcbiAgICAgIHRoaXMubWFza1R5cGUgPT09ICdEQVlfTU9OVEgnID8gdGhpcy5leHByZXNzaW9ucy5ETSA6IHRoaXMuZXhwcmVzc2lvbnMuRE1ZXG4gICAgKTtcblxuICAgIGlmICh0aGlzLm1hc2tUeXBlICE9PSAnREFZX01PTlRIJyAmJiAhaXNOYU4obmV3IERhdGUobWFza2VkVmFsdWUpLmdldFRpbWUoKSkpIHtcbiAgICAgIGlmICh0aGlzLm1hdERhdGVwaWNrZXIpIHtcbiAgICAgICAgdGhpcy5tYXREYXRlcGlja2VyLnNlbGVjdChuZXcgRGF0ZShtYXNrZWRWYWx1ZSkpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnJhbmdlRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgdGhpcy5yYW5nZUZvcm1Db250cm9sLnNldFZhbHVlKG5ldyBEYXRlKG1hc2tlZFZhbHVlKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKG5ldyBEYXRlKG1hc2tlZFZhbHVlKS5nZXRUaW1lKCkpKSB7XG4gICAgICB0aGlzLm1hdERhdGVwaWNrZXIuc2VsZWN0KG51bGwpXG4gICAgfVxuXG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBtYXNrZWRWYWx1ZSB8fCBudWxsO1xuICAgIHRoaXMucHJldmlvdXNWYWx1ZSA9IG1hc2tlZFZhbHVlIHx8IG51bGw7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdwYXN0ZScsIFsnJGV2ZW50J10pXG4gIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSB7XG4gICAgY29uc3QgcGFzdGVkVmFsdWUgPSBldmVudC5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0L3BsYWluJyk7XG4gICAgaWYgKCFwYXN0ZWRWYWx1ZSkgeyByZXR1cm47IH1cbiAgICBpZiAodGhpcy5tYXNrVHlwZSA9PT0gJ0RBWV9NT05USCcpIHtcbiAgICAgIGlmICghdGhpcy5kYXlNb250aFJlZ2V4LnRlc3QocGFzdGVkVmFsdWUpKSB7XG4gICAgICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMuZGF0ZVJlZ2V4LnRlc3QocGFzdGVkVmFsdWUpKSB7XG4gICAgICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGV4aXN0c1plcm9zSW5TdHJpbmcoZGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZGF0ZVRvQXJyYXkgPSBkYXRlLnNwbGl0KCcvJyk7XG4gICAgbGV0IGlzVmFsaWQ7XG4gICAgaWYgKHRoaXMubWFza1R5cGUgPT09ICdEQVlfTU9OVEgnKSB7XG4gICAgICBpc1ZhbGlkID0gISFkYXRlVG9BcnJheS5maW5kKChwYXJ0OiBzdHJpbmcpID0+IHBhcnQuaW5jbHVkZXMoJzAwJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZGF0ZVRvQXJyYXkubGVuZ3RoIDwgMykge1xuICAgICAgICBpc1ZhbGlkID0gISFkYXRlVG9BcnJheS5maW5kKChwYXJ0OiBzdHJpbmcpID0+IHBhcnQuaW5jbHVkZXMoJzAwJykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXNWYWxpZCA9IChkYXRlVG9BcnJheVsyXVswXSA9PSAnMCcpIHx8ICgrZGF0ZVRvQXJyYXlbMl1bMF0gPiAyKTtcbiAgICAgIH1cblxuICAgIH1cbiAgICByZXR1cm4gaXNWYWxpZDtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,95 @@
1
+ import { Directive, HostListener, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class InputMaskDirective {
4
+ set min(value) {
5
+ this.minimumValue = Number(value);
6
+ }
7
+ set max(value) {
8
+ this.maximumValue = Number(value);
9
+ }
10
+ set float(value) {
11
+ this.isFloat = value === 'true';
12
+ }
13
+ onPaste(event) {
14
+ this.makeValidation(event, true);
15
+ }
16
+ constructor(elementRef) {
17
+ this.elementRef = elementRef;
18
+ this.regexFloat = new RegExp(/^([0-9]*[.])?[0-9]+$/);
19
+ this.regexOnlyNumbers = new RegExp(/^-?[0-9]+(?:\.[0-9]+)?$/);
20
+ this.elementRef.nativeElement.addEventListener('keypress', (event) => {
21
+ this.makeValidation(event);
22
+ });
23
+ }
24
+ makeValidation(event, fromPaste = false) {
25
+ let value;
26
+ let newChar;
27
+ if (!fromPaste) {
28
+ newChar = String.fromCharCode(event.keyCode);
29
+ const cursorPos = event.target.selectionStart;
30
+ const inputText = event.target.value;
31
+ value = `${inputText.slice(0, cursorPos)}${newChar}${inputText.slice(cursorPos, inputText.length)}`;
32
+ }
33
+ else {
34
+ value = event.clipboardData?.getData('text/plain');
35
+ }
36
+ if (this.inputMask === 'number') {
37
+ return this.checkingForNumbers(value, event, newChar, fromPaste);
38
+ }
39
+ else if (this.inputMask === 'string') {
40
+ return this.checkingForTexts(value, event);
41
+ }
42
+ else {
43
+ return true;
44
+ }
45
+ }
46
+ checkingForNumbers(value, event, newChar, fromPaste = false) {
47
+ if ((isNaN(this.minimumValue) || this.minimumValue < 0) && value === '-') {
48
+ value = Number('-0');
49
+ }
50
+ if (this.isFloat && (newChar === '.')) {
51
+ value += '0';
52
+ }
53
+ if (!this.isFloat && fromPaste && value.includes('.')) {
54
+ event.preventDefault();
55
+ return false;
56
+ }
57
+ const regex = (this.isFloat) ? this.regexFloat : this.regexOnlyNumbers;
58
+ if (!regex.test(value) ||
59
+ (this.minimumValue && value < this.minimumValue) ||
60
+ (this.maximumValue && value > this.maximumValue)) {
61
+ event.preventDefault();
62
+ return false;
63
+ }
64
+ return true;
65
+ }
66
+ checkingForTexts(value, event) {
67
+ const regex = new RegExp(/^[A-Za-z0-9]*$/);
68
+ if (!regex.test(value)) {
69
+ event.preventDefault();
70
+ return false;
71
+ }
72
+ return true;
73
+ }
74
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InputMaskDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
75
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: InputMaskDirective, isStandalone: true, selector: "[inputMask]", inputs: { inputMask: "inputMask", min: "min", max: "max", float: "float" }, host: { listeners: { "paste": "onPaste($event)" } }, ngImport: i0 }); }
76
+ }
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InputMaskDirective, decorators: [{
78
+ type: Directive,
79
+ args: [{
80
+ selector: '[inputMask]',
81
+ standalone: true
82
+ }]
83
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { inputMask: [{
84
+ type: Input
85
+ }], min: [{
86
+ type: Input
87
+ }], max: [{
88
+ type: Input
89
+ }], float: [{
90
+ type: Input
91
+ }], onPaste: [{
92
+ type: HostListener,
93
+ args: ['paste', ['$event']]
94
+ }] } });
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbWFzay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL2RpcmVjdGl2ZXMvaW5wdXQtbWFzay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDRyxZQUFZLEVBQ3hCLEtBQUssRUFDTixNQUFNLGVBQWUsQ0FBQzs7QUFNdkIsTUFBTSxPQUFPLGtCQUFrQjtJQUU3QixJQUFhLEdBQUcsQ0FBQyxLQUFhO1FBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxJQUFhLEdBQUcsQ0FBQyxLQUFhO1FBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxJQUFhLEtBQUssQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxLQUFLLE1BQU0sQ0FBQztJQUNsQyxDQUFDO0lBUUQsT0FBTyxDQUFDLEtBQVU7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVELFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFSMUMsZUFBVSxHQUFHLElBQUksTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDaEQscUJBQWdCLEdBQUcsSUFBSSxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQVF2RCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUMxRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzVCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJ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S0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzsrR0FsRlUsa0JBQWtCO21HQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjsrRUFFVSxTQUFTO3NCQUFqQixLQUFLO2dCQUNPLEdBQUc7c0JBQWYsS0FBSztnQkFHTyxHQUFHO3NCQUFmLEtBQUs7Z0JBR08sS0FBSztzQkFBakIsS0FBSztnQkFVTixPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsXG4gIElucHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbaW5wdXRNYXNrXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRNYXNrRGlyZWN0aXZlIHtcbiAgQElucHV0KCkgaW5wdXRNYXNrITogJ251bWJlcicgfCAnc3RyaW5nJztcbiAgQElucHV0KCkgc2V0IG1pbih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5taW5pbXVtVmFsdWUgPSBOdW1iZXIodmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBtYXgodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMubWF4aW11bVZhbHVlID0gTnVtYmVyKHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgZmxvYXQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuaXNGbG9hdCA9IHZhbHVlID09PSAndHJ1ZSc7XG4gIH1cbiAgbWluaW11bVZhbHVlITogbnVtYmVyO1xuICBtYXhpbXVtVmFsdWUhOiBudW1iZXI7XG4gIGlzRmxvYXQhOiBib29sZWFuO1xuICByZWdleEZsb2F0ID0gbmV3IFJlZ0V4cCgvXihbMC05XSpbLl0pP1swLTldKyQvKTtcbiAgcmVnZXhPbmx5TnVtYmVycyA9IG5ldyBSZWdFeHAoL14tP1swLTldKyg/OlxcLlswLTldKyk/JC8pO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ3Bhc3RlJywgWyckZXZlbnQnXSlcbiAgb25QYXN0ZShldmVudDogYW55KSB7XG4gICAgdGhpcy5tYWtlVmFsaWRhdGlvbihldmVudCwgdHJ1ZSlcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXByZXNzJywgKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgdGhpcy5tYWtlVmFsaWRhdGlvbihldmVudClcbiAgICB9KVxuICB9XG5cbiAgbWFrZVZhbGlkYXRpb24oZXZlbnQ6IGFueSwgZnJvbVBhc3RlID0gZmFsc2UpOiBib29sZWFuIHtcbiAgICBsZXQgdmFsdWU6IGFueTtcbiAgICBsZXQgbmV3Q2hhcjogYW55O1xuXG4gICAgaWYgKCFmcm9tUGFzdGUpIHtcbiAgICAgIG5ld0NoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGV2ZW50LmtleUNvZGUpO1xuICAgICAgY29uc3QgY3Vyc29yUG9zID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xuICAgICAgY29uc3QgaW5wdXRUZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgdmFsdWUgPSBgJHtpbnB1dFRleHQuc2xpY2UoMCwgY3Vyc29yUG9zKX0ke25ld0NoYXJ9JHtpbnB1dFRleHQuc2xpY2UoY3Vyc29yUG9zLCBpbnB1dFRleHQubGVuZ3RoKX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IGV2ZW50LmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQvcGxhaW4nKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbnB1dE1hc2sgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5jaGVja2luZ0Zvck51bWJlcnModmFsdWUsIGV2ZW50LCBuZXdDaGFyLCBmcm9tUGFzdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dE1hc2sgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdGhpcy5jaGVja2luZ0ZvclRleHRzKHZhbHVlLCBldmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgY2hlY2tpbmdGb3JOdW1iZXJzKHZhbHVlOiBhbnksIGV2ZW50OiBhbnksIG5ld0NoYXI6IHN0cmluZywgZnJvbVBhc3RlID0gZmFsc2UpOiBib29sZWFuIHtcbiAgICBpZiAoKGlzTmFOKHRoaXMubWluaW11bVZhbHVlKSB8fCB0aGlzLm1pbmltdW1WYWx1ZSA8IDApICYmIHZhbHVlID09PSAnLScpIHsgdmFsdWUgPSBOdW1iZXIoJy0wJyk7IH1cblxuICAgIGlmICh0aGlzLmlzRmxvYXQgJiYgKG5ld0NoYXIgPT09ICcuJykpIHtcbiAgICAgIHZhbHVlICs9ICcwJztcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzRmxvYXQgJiYgZnJvbVBhc3RlICYmIHZhbHVlLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgcmVnZXggPSAodGhpcy5pc0Zsb2F0KSA/IHRoaXMucmVnZXhGbG9hdCA6IHRoaXMucmVnZXhPbmx5TnVtYmVycztcblxuICAgIGlmICghcmVnZXgudGVzdCh2YWx1ZSkgfHxcbiAgICAgICAgKHRoaXMubWluaW11bVZhbHVlICYmIHZhbHVlIDwgdGhpcy5taW5pbXVtVmFsdWUpIHx8XG4gICAgICAgICh0aGlzLm1heGltdW1WYWx1ZSAmJiB2YWx1ZSA+IHRoaXMubWF4aW11bVZhbHVlKVxuICAgICkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNoZWNraW5nRm9yVGV4dHModmFsdWU6IGFueSwgZXZlbnQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cCgvXltBLVphLXowLTldKiQvKTtcbiAgICBpZiAoIXJlZ2V4LnRlc3QodmFsdWUpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWlucHV0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvaW50ZXJmYWNlcy9hcHAtaW5wdXQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEFwcElucHV0SW50ZXJmYWNlIHtcbiAgICBhY3RpdmVTdGF0ZUljb25Vcmw/OiBzdHJpbmdcbiAgICBjbGVhcmFibGU/OiBib29sZWFuLFxuICAgIGNvbnRhaW5lckNsYXNzPzogc3RyaW5nLFxuICAgIGRhdGVQaWNrZXI/OiBib29sZWFuLFxuICAgIGRpc2FibGVkPzogYm9vbGVhbixcbiAgICBkb250UmVzZXRWYWx1ZUluQ2xlYXJBY3Rpb24/OiBib29sZWFuLFxuICAgIGhpbnQ/OiBzdHJpbmcsXG4gICAgaWNvblByZWZpeD86IHN0cmluZyxcbiAgICBpY29uUHJlZml4U3ZnPzogc3RyaW5nLFxuICAgIGljb25QcmVmaXhUb29sdGlwPzogc3RyaW5nLFxuICAgIGljb25QcmVmaXhDb2xvcj86IHN0cmluZyxcbiAgICBpY29uUHJlZml4VmFyaWFudD86IHN0cmluZyxcbiAgICBpY29uU3VmZml4Pzogc3RyaW5nLFxuICAgIC8vIFRPRE8gLSBSZW1vdmUgaWNvblVybCB3aGVuIGFsbCBpbnB1dHMgYXJlIHVwZGF0ZWRcbiAgICBpY29uVXJsPzogc3RyaW5nLFxuICAgIGlucHV0Q2xhc3M/OiBzdHJpbmcsXG4gICAgaW5wdXRNYXNrPzogJ251bWJlcicgfCAnc3RyaW5nJyxcbiAgICBsYWJlbD86IHN0cmluZyxcbiAgICBsZWFkWmVyb0RhdGVUaW1lPzogYm9vbGVhbixcbiAgICBtYXNrPzogc3RyaW5nLFxuICAgIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAsXG4gICAgcGxhY2Vob2xkZXI6IHN0cmluZyxcbiAgICBwcmVmaXg/OiBzdHJpbmcsXG4gICAgcmVxdWlyZWQ/OiBib29sZWFuLFxuICAgIHJlYWRPbmx5PzogYm9vbGVhbixcbiAgICBzdWJtaXQ6IGJvb2xlYW4sXG4gICAgdGV4dGFyZWE/OiBib29sZWFuLFxuICAgIHR5cGU6IHN0cmluZyxcbiAgICBkZWZhdWx0UGF0dGVybktleT86IHN0cmluZyxcbiAgICBmb2N1c091dEVtaXQ/OiBib29sZWFuXG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWNvbmZpZ3MuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9pbnRlcmZhY2VzL2F1dG9jb21wbGV0ZS1jb25maWdzLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBdXRvY29tcGxldGVDb25maWdzSW50ZXJmYWNlIHtcbiAgICBsYWJlbDogc3RyaW5nLFxuICAgIGhpZGVMYWJlbD86IGJvb2xlYW4sXG4gICAgcGFnaW5hdGU6IGFueSxcbiAgICBwYWdpbmF0ZU9uU2Nyb2xsPzogYm9vbGVhbixcbiAgICB2YWx1ZUJ5S2V5OiBBcnJheTxzdHJpbmc+LFxuICAgIHZhbHVlVG9TaG93QnlLZXk6IEFycmF5PHN0cmluZz4sXG4gICAgdmFsdWVUb1Nob3dCeVBhcmFtPzogQXJyYXk8c3RyaW5nIHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPj4sXG4gICAgd2l0aFBhcmFtU3ltYm9sPzogc3RyaW5nLFxuICAgIG11bHRpcGxlPzogYm9vbGVhbixcbiAgICBoaWRlU2VsZWN0QWxsT3B0aW9uPzogYm9vbGVhbixcbiAgICByZXNldD86IGJvb2xlYW4sXG4gICAgc2VhcmNoPzogYm9vbGVhbixcbiAgICBkaXNhYmxlZD86IGJvb2xlYW4sXG4gICAgZXJyb3JNZXNzYWdlPzogc3RyaW5nLFxuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nLFxuICAgIGZpbHRyYXRpb25LZXk/OiBzdHJpbmcsXG4gICAgcmVxdWlyZWQ/OiBib29sZWFuLFxuICAgIGhvdmVyPzogc3RyaW5nLFxuICAgIGNoYW5nZVRleHQ/OiBhbnksXG4gICAgaWNvblVybD86IHN0cmluZyxcbiAgICBhY3RpdmVTdGF0ZUljb25Vcmw/OiBzdHJpbmcsXG4gICAgbWF0SWNvbk5hbWU/OiBzdHJpbmcsXG4gICAgbWF0SWNvblN2Zz86IHN0cmluZyxcbiAgICBhY3Rpb25zPzogYW55LFxuICAgIGJsb2NrUGFnaW5hdGlvbj86IGJvb2xlYW4sXG4gICAgdmFsdWVCeUlkPzogc3RyaW5nLFxuICAgIHNob3dGdWxsVGV4dFdpdGhPcHRpb25hbE9uU2VsZWN0ZWRWYWx1ZT86IGJvb2xlYW4sXG4gICAgaWNvblByZWZpeD86IHN0cmluZyxcbiAgICByZWFkT25seT86IGJvb2xlYW4sXG4gICAgaWNvblN1ZmZpeD86IHN0cmluZyxcbiAgICBjbGVhcmFibGU/OiBib29sZWFuLFxuICAgIGRlZmF1bHRQYXR0ZXJuS2V5Pzogc3RyaW5nLFxuICAgIGljb25QcmVmaXhUb29sdGlwPzogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIGljb25QcmVmaXhTdmc/OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgaWNvblByZWZpeENvbG9yPzogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIG5lZWRUcmFuc2xhdGVPcHRpb25zPzogYm9vbGVhblxufVxuIl19
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Enum representing different types of buttons.
3
+ */
4
+ export var ButtonType;
5
+ (function (ButtonType) {
6
+ /** A filled button with solid background, typically used for primary actions. */
7
+ ButtonType["FILLED"] = "FILLED";
8
+ /** A tonal button with lighter background, used for secondary actions. */
9
+ ButtonType["TONAL"] = "TONAL";
10
+ /** An outlined button with a border and no background. */
11
+ ButtonType["OUTLINE"] = "OUTLINE";
12
+ /** A text button with no background or border, ideal for minimal UI. */
13
+ ButtonType["TEXT"] = "TEXT";
14
+ /** A warning button with special styling to indicate caution or alert actions. */
15
+ ButtonType["WARNING"] = "WARNING";
16
+ })(ButtonType || (ButtonType = {}));
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXR5cGVzLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL2ludGVyZmFjZXMvYnV0dG9uLXR5cGVzLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxVQWVYO0FBZkQsV0FBWSxVQUFVO0lBQ3BCLGlGQUFpRjtJQUNqRiwrQkFBaUIsQ0FBQTtJQUVqQiwwRUFBMEU7SUFDMUUsNkJBQWUsQ0FBQTtJQUVmLDBEQUEwRDtJQUMxRCxpQ0FBbUIsQ0FBQTtJQUVuQix3RUFBd0U7SUFDeEUsMkJBQWEsQ0FBQTtJQUViLGtGQUFrRjtJQUNsRixpQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBZlcsVUFBVSxLQUFWLFVBQVUsUUFlckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEVudW0gcmVwcmVzZW50aW5nIGRpZmZlcmVudCB0eXBlcyBvZiBidXR0b25zLlxuICovXG5leHBvcnQgZW51bSBCdXR0b25UeXBlIHtcbiAgLyoqIEEgZmlsbGVkIGJ1dHRvbiB3aXRoIHNvbGlkIGJhY2tncm91bmQsIHR5cGljYWxseSB1c2VkIGZvciBwcmltYXJ5IGFjdGlvbnMuICovXG4gIEZJTExFRCA9ICdGSUxMRUQnLFxuXG4gIC8qKiBBIHRvbmFsIGJ1dHRvbiB3aXRoIGxpZ2h0ZXIgYmFja2dyb3VuZCwgdXNlZCBmb3Igc2Vjb25kYXJ5IGFjdGlvbnMuICovXG4gIFRPTkFMID0gJ1RPTkFMJyxcblxuICAvKiogQW4gb3V0bGluZWQgYnV0dG9uIHdpdGggYSBib3JkZXIgYW5kIG5vIGJhY2tncm91bmQuICovXG4gIE9VVExJTkUgPSAnT1VUTElORScsXG5cbiAgLyoqIEEgdGV4dCBidXR0b24gd2l0aCBubyBiYWNrZ3JvdW5kIG9yIGJvcmRlciwgaWRlYWwgZm9yIG1pbmltYWwgVUkuICovXG4gIFRFWFQgPSAnVEVYVCcsXG5cbiAgLyoqIEEgd2FybmluZyBidXR0b24gd2l0aCBzcGVjaWFsIHN0eWxpbmcgdG8gaW5kaWNhdGUgY2F1dGlvbiBvciBhbGVydCBhY3Rpb25zLiAqL1xuICBXQVJOSU5HID0gJ1dBUk5JTkcnLFxufVxuIl19
@@ -0,0 +1,12 @@
1
+ export var DropdownSelectionType;
2
+ (function (DropdownSelectionType) {
3
+ DropdownSelectionType["UPLOAD"] = "UPLOAD";
4
+ DropdownSelectionType["DOWNLOAD"] = "DOWNLOAD";
5
+ DropdownSelectionType["BLANK"] = "BLANK";
6
+ })(DropdownSelectionType || (DropdownSelectionType = {}));
7
+ export const DropdownItemIcon = {
8
+ [DropdownSelectionType.UPLOAD]: 'upload',
9
+ [DropdownSelectionType.DOWNLOAD]: 'download',
10
+ [DropdownSelectionType.BLANK]: 'blank',
11
+ };
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tc2VsZWN0aW9uLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvaW50ZXJmYWNlcy9kcm9wZG93bi1zZWxlY3Rpb24uY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLHFCQUlYO0FBSkQsV0FBWSxxQkFBcUI7SUFDN0IsMENBQWlCLENBQUE7SUFDakIsOENBQXFCLENBQUE7SUFDckIsd0NBQWUsQ0FBQTtBQUNuQixDQUFDLEVBSlcscUJBQXFCLEtBQXJCLHFCQUFxQixRQUloQztBQUVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUTtJQUN4QyxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVU7SUFDNUMsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO0NBQ3ZDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBEcm9wZG93blNlbGVjdGlvblR5cGUge1xuICAgIFVQTE9BRCA9IFwiVVBMT0FEXCIsXG4gICAgRE9XTkxPQUQgPSBcIkRPV05MT0FEXCIsXG4gICAgQkxBTksgPSBcIkJMQU5LXCJcbn1cblxuZXhwb3J0IGNvbnN0IERyb3Bkb3duSXRlbUljb24gPSB7XG4gIFtEcm9wZG93blNlbGVjdGlvblR5cGUuVVBMT0FEXTogJ3VwbG9hZCcsXG4gIFtEcm9wZG93blNlbGVjdGlvblR5cGUuRE9XTkxPQURdOiAnZG93bmxvYWQnLFxuICBbRHJvcGRvd25TZWxlY3Rpb25UeXBlLkJMQU5LXTogJ2JsYW5rJyxcbn0iXX0=
@@ -0,0 +1,18 @@
1
+ export var LabelTypeEnum;
2
+ (function (LabelTypeEnum) {
3
+ LabelTypeEnum["purple"] = "purple";
4
+ LabelTypeEnum["teal"] = "teal";
5
+ LabelTypeEnum["olive"] = "olive";
6
+ LabelTypeEnum["orange"] = "orange";
7
+ LabelTypeEnum["blue"] = "blue";
8
+ LabelTypeEnum["cyan"] = "cyan";
9
+ LabelTypeEnum["raspberry"] = "raspberry";
10
+ LabelTypeEnum["yellow"] = "yellow";
11
+ LabelTypeEnum["wine"] = "wine";
12
+ LabelTypeEnum["primary"] = "primary";
13
+ LabelTypeEnum["green"] = "green";
14
+ LabelTypeEnum["red"] = "red";
15
+ LabelTypeEnum["neutral"] = "neutral";
16
+ LabelTypeEnum["white"] = "white";
17
+ })(LabelTypeEnum || (LabelTypeEnum = {}));
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwtdHlwZS5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9pbnRlcmZhY2VzL2xhYmVsLXR5cGUuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxhQWVYO0FBZkQsV0FBWSxhQUFhO0lBQ3JCLGtDQUFtQixDQUFBO0lBQ25CLDhCQUFlLENBQUE7SUFDZixnQ0FBaUIsQ0FBQTtJQUNqQixrQ0FBbUIsQ0FBQTtJQUNuQiw4QkFBZSxDQUFBO0lBQ2YsOEJBQWUsQ0FBQTtJQUNmLHdDQUF5QixDQUFBO0lBQ3pCLGtDQUFtQixDQUFBO0lBQ25CLDhCQUFlLENBQUE7SUFDZixvQ0FBcUIsQ0FBQTtJQUNyQixnQ0FBaUIsQ0FBQTtJQUNqQiw0QkFBYSxDQUFBO0lBQ2Isb0NBQXFCLENBQUE7SUFDckIsZ0NBQWlCLENBQUE7QUFDckIsQ0FBQyxFQWZXLGFBQWEsS0FBYixhQUFhLFFBZXhCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gTGFiZWxUeXBlRW51bSB7XG4gICAgJ3B1cnBsZScgPSAncHVycGxlJyxcbiAgICAndGVhbCcgPSAndGVhbCcsXG4gICAgJ29saXZlJyA9ICdvbGl2ZScsXG4gICAgJ29yYW5nZScgPSAnb3JhbmdlJyxcbiAgICAnYmx1ZScgPSAnYmx1ZScsXG4gICAgJ2N5YW4nID0gJ2N5YW4nLFxuICAgICdyYXNwYmVycnknID0gJ3Jhc3BiZXJyeScsXG4gICAgJ3llbGxvdycgPSAneWVsbG93JyxcbiAgICAnd2luZScgPSAnd2luZScsXG4gICAgJ3ByaW1hcnknID0gJ3ByaW1hcnknLFxuICAgICdncmVlbicgPSAnZ3JlZW4nLFxuICAgICdyZWQnID0gJ3JlZCcsXG4gICAgJ25ldXRyYWwnID0gJ25ldXRyYWwnLFxuICAgICd3aGl0ZScgPSAnd2hpdGUnXG59XG4iXX0=
@@ -0,0 +1,17 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ArrayToStringPipe {
4
+ transform(value) {
5
+ return (typeof value === 'string') ? value : value.join(',');
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArrayToStringPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ArrayToStringPipe, isStandalone: true, name: "arrayToString" }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArrayToStringPipe, decorators: [{
11
+ type: Pipe,
12
+ args: [{
13
+ name: 'arrayToString',
14
+ standalone: true
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktdG8tc3RyaW5nLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL3BpcGVzL2FycmF5LXRvLXN0cmluZy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1wRCxNQUFNLE9BQU8saUJBQWlCO0lBRTVCLFNBQVMsQ0FBQyxLQUFzQztRQUM5QyxPQUFPLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvRCxDQUFDOytHQUpVLGlCQUFpQjs2R0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUo3QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxlQUFlO29CQUNyQixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2FycmF5VG9TdHJpbmcnLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5VG9TdHJpbmdQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+IHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpID8gdmFsdWUgOiB2YWx1ZS5qb2luKCcsJyk7XG4gIH1cblxufVxuIl19