i-tech-shared-components 1.2.51 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/i-tech-shared-components.mjs +72 -72
- package/fesm2022/i-tech-shared-components.mjs.map +1 -1
- package/package.json +10 -12
- package/esm2022/i-tech-shared-components.mjs +0 -5
- package/esm2022/lib/components/ag-grid/ag-grid-button-cell/ag-grid-button-cell.component.mjs +0 -25
- package/esm2022/lib/components/ag-grid/status-label-cell.component.mjs +0 -41
- package/esm2022/lib/components/ag-grid/tooltip-cell-renderer.component.mjs +0 -49
- package/esm2022/lib/components/autocomplete-select/autocomplete-select.component.mjs +0 -456
- package/esm2022/lib/components/button/button.component.mjs +0 -122
- package/esm2022/lib/components/clear-value/clear-value.component.mjs +0 -34
- package/esm2022/lib/components/date-picker/date-picker.component.mjs +0 -117
- package/esm2022/lib/components/date-range-datepicker/date-range-datepicker.component.mjs +0 -141
- package/esm2022/lib/components/date-time-picker/date-time-picker.component.mjs +0 -169
- package/esm2022/lib/components/icon-button/icon-button.component.mjs +0 -49
- package/esm2022/lib/components/label/label.component.mjs +0 -56
- package/esm2022/lib/components/menu/menu.component.mjs +0 -56
- package/esm2022/lib/components/new-sidebar/company-image/company-image.component.mjs +0 -26
- package/esm2022/lib/components/new-sidebar/new-sidebar.component.mjs +0 -201
- package/esm2022/lib/components/text/text-input.component.mjs +0 -97
- package/esm2022/lib/directives/date-mask.directive.mjs +0 -92
- package/esm2022/lib/directives/input-mask.directive.mjs +0 -95
- package/esm2022/lib/interfaces/app-input.interface.mjs +0 -2
- package/esm2022/lib/interfaces/auth.interface.mjs +0 -16
- package/esm2022/lib/interfaces/autocomplete-configs.interface.mjs +0 -2
- package/esm2022/lib/interfaces/button-types.enum.mjs +0 -19
- package/esm2022/lib/interfaces/dropdown-selection.constants.mjs +0 -12
- package/esm2022/lib/interfaces/hour-minute.interface.mjs +0 -2
- package/esm2022/lib/interfaces/label-type.enum.mjs +0 -30
- package/esm2022/lib/interfaces/navigation-link.interface.mjs +0 -2
- package/esm2022/lib/interfaces/timezone.interface.mjs +0 -2
- package/esm2022/lib/pipes/array-to-string.pipe.mjs +0 -17
- package/esm2022/lib/pipes/generate-error-messages.pipe.mjs +0 -29
- package/esm2022/lib/pipes/get-value-by-key-from-object.pipe.mjs +0 -45
- package/esm2022/lib/services/ag-grid-functions.service.mjs +0 -49
- package/esm2022/lib/services/input.service.mjs +0 -35
- package/esm2022/lib/services/parse-date.service.mjs +0 -70
- package/esm2022/public-api.mjs +0 -30
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import { MatDatepickerModule } from "@angular/material/datepicker";
|
|
3
|
-
import { NgxMaskDirective } from "ngx-mask";
|
|
4
|
-
import { FormsModule, ReactiveFormsModule, UntypedFormControl, UntypedFormGroup } from "@angular/forms";
|
|
5
|
-
import { NgClass, NgIf } from "@angular/common";
|
|
6
|
-
import { MatError, MatLabel } from "@angular/material/form-field";
|
|
7
|
-
import { TranslateModule } from "@ngx-translate/core";
|
|
8
|
-
import { DateMaskDirective } from "../../directives/date-mask.directive";
|
|
9
|
-
import { ParseDateService } from "../../services/parse-date.service";
|
|
10
|
-
import { GenerateErrorMessagesPipe } from "../../pipes/generate-error-messages.pipe";
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "../../services/input.service";
|
|
13
|
-
import * as i2 from "../../services/parse-date.service";
|
|
14
|
-
import * as i3 from "@angular/material/datepicker";
|
|
15
|
-
import * as i4 from "@ngx-translate/core";
|
|
16
|
-
import * as i5 from "@angular/forms";
|
|
17
|
-
export class DateTimePickerComponent {
|
|
18
|
-
set disabled(disabled) {
|
|
19
|
-
this._disabled = disabled;
|
|
20
|
-
if (disabled) {
|
|
21
|
-
this.form.get('time')?.disable();
|
|
22
|
-
this.form.get('date')?.disable();
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
this.form.get('time')?.enable();
|
|
26
|
-
this.form.get('date')?.enable();
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
;
|
|
30
|
-
get disabled() {
|
|
31
|
-
return this._disabled;
|
|
32
|
-
}
|
|
33
|
-
constructor(inputService, parseDateService) {
|
|
34
|
-
this.inputService = inputService;
|
|
35
|
-
this.parseDateService = parseDateService;
|
|
36
|
-
this.dateChangeEvent = new EventEmitter();
|
|
37
|
-
this.submit = false;
|
|
38
|
-
this.required = false;
|
|
39
|
-
this._disabled = false;
|
|
40
|
-
this.isFocused = false;
|
|
41
|
-
this.form = new UntypedFormGroup({
|
|
42
|
-
time: new UntypedFormControl(),
|
|
43
|
-
date: new UntypedFormControl(),
|
|
44
|
-
});
|
|
45
|
-
// Track datepicker state
|
|
46
|
-
this.focusTimeoutId = null;
|
|
47
|
-
this.datePickerJustClosed = false;
|
|
48
|
-
this.ngControl = this.inputService.injectNgControl();
|
|
49
|
-
}
|
|
50
|
-
ngAfterViewInit() {
|
|
51
|
-
this.setValue();
|
|
52
|
-
this.ngControl.control.valueChanges.subscribe(() => {
|
|
53
|
-
this.setValue();
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
ngOnDestroy() {
|
|
57
|
-
if (this.focusTimeoutId) {
|
|
58
|
-
clearTimeout(this.focusTimeoutId);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
setValue() {
|
|
62
|
-
if (!this.ngControl?.control) {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
const dateTime = this.ngControl.control.value;
|
|
66
|
-
if (!dateTime) {
|
|
67
|
-
this.form.patchValue({
|
|
68
|
-
date: null,
|
|
69
|
-
time: null
|
|
70
|
-
}, { emitEvent: false });
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
this.form.patchValue({
|
|
74
|
-
date: new Date(this.parseDateService.changeFormat(dateTime, 'YYYY-MM-DD') + 'T' + '00:00:00'),
|
|
75
|
-
time: this.parseDateService.changeFormat(dateTime, 'HH:mm')
|
|
76
|
-
}, { emitEvent: false });
|
|
77
|
-
}
|
|
78
|
-
onDatePickerClosed() {
|
|
79
|
-
// Update form value first
|
|
80
|
-
this.setDateTimeValue();
|
|
81
|
-
// Mark that the datepicker just closed
|
|
82
|
-
this.datePickerJustClosed = true;
|
|
83
|
-
// Clear any existing timeout
|
|
84
|
-
if (this.focusTimeoutId) {
|
|
85
|
-
clearTimeout(this.focusTimeoutId);
|
|
86
|
-
}
|
|
87
|
-
// Use a callback that runs outside Angular's change detection
|
|
88
|
-
this.focusTimeoutId = setTimeout(() => {
|
|
89
|
-
// Focus time input
|
|
90
|
-
if (this.timeInput?.nativeElement) {
|
|
91
|
-
this.timeInput.nativeElement.focus();
|
|
92
|
-
}
|
|
93
|
-
// Reset flag after enough time
|
|
94
|
-
setTimeout(() => {
|
|
95
|
-
this.datePickerJustClosed = false;
|
|
96
|
-
}, 200);
|
|
97
|
-
}, 100); // Longer delay to let Angular Material finish its work
|
|
98
|
-
}
|
|
99
|
-
setDateTimeValue() {
|
|
100
|
-
if (this.form.value.date && this.form.value.time) {
|
|
101
|
-
const date = this.parseDateService.changeFormat(this.form.value.date, 'YYYY-MM-DD');
|
|
102
|
-
const time = this.form.value.time;
|
|
103
|
-
this.ngControl.control.patchValue(date + 'T' + time, { emitEvent: false });
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
this.ngControl.control.patchValue(null, { emitEvent: false });
|
|
107
|
-
}
|
|
108
|
-
this.dateChangeEvent.emit();
|
|
109
|
-
}
|
|
110
|
-
onFocus(event) {
|
|
111
|
-
// If datepicker just closed and focus is going to date input, move it to time input
|
|
112
|
-
if (this.datePickerJustClosed) {
|
|
113
|
-
const target = event.target;
|
|
114
|
-
const dateInput = document.querySelector('input[formControlName="date"]');
|
|
115
|
-
if (target === dateInput) {
|
|
116
|
-
// Cancel any existing focus timeout
|
|
117
|
-
if (this.focusTimeoutId) {
|
|
118
|
-
clearTimeout(this.focusTimeoutId);
|
|
119
|
-
}
|
|
120
|
-
// Set new timeout to focus time input
|
|
121
|
-
this.focusTimeoutId = setTimeout(() => {
|
|
122
|
-
if (this.timeInput?.nativeElement) {
|
|
123
|
-
this.timeInput.nativeElement.focus();
|
|
124
|
-
}
|
|
125
|
-
}, 10);
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
this.isFocused = true;
|
|
130
|
-
}
|
|
131
|
-
onBlur(event) {
|
|
132
|
-
// Don't handle blur during datepicker transitions
|
|
133
|
-
if (this.datePickerJustClosed) {
|
|
134
|
-
this.isFocused = false;
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
// Check if focus is moving to another element within our component
|
|
138
|
-
setTimeout(() => {
|
|
139
|
-
const dateInput = document.querySelector('input[formControlName="date"]');
|
|
140
|
-
const timeInput = this.timeInput?.nativeElement;
|
|
141
|
-
const activeElement = document.activeElement;
|
|
142
|
-
if (activeElement !== dateInput && activeElement !== timeInput) {
|
|
143
|
-
this.isFocused = false;
|
|
144
|
-
}
|
|
145
|
-
}, 50);
|
|
146
|
-
}
|
|
147
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateTimePickerComponent, deps: [{ token: i1.InputService }, { token: i2.ParseDateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
148
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DateTimePickerComponent, isStandalone: true, selector: "i-tech-date-time-picker", inputs: { label: "label", submit: "submit", required: "required", disabled: "disabled" }, outputs: { dateChangeEvent: "dateChangeEvent" }, providers: [ParseDateService], viewQueries: [{ propertyName: "timeInput", first: true, predicate: ["dateElement"], descendants: true }], ngImport: i0, template: "<div class=\"date_time_picker_container\"\n *ngIf=\"ngControl?.control\"\n [class.readonly_field]=\"disabled\"\n>\n <mat-label [ngClass]=\"{'readonly-color': disabled}\">{{label | translate}}</mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color': disabled}\"> *</span>\n\n <div class=\"date_time_picker\"\n [formGroup]=\"form\"\n [ngClass]=\"{'focused': isFocused, 'disabled': disabled}\"\n >\n <input type=\"text\" dateMask class=\"date\"\n placeholder=\"mm/dd/yy\"\n formControlName=\"date\"\n [matDatepicker]=\"DatePicker\"\n [disabled]=\"disabled\"\n (click)=\"!disabled && DatePicker.open()\"\n (focus)=\"onFocus($event)\"\n (focusout)=\"onBlur($event)\"\n >\n <mat-datepicker #DatePicker\n (closed)=\"onDatePickerClosed()\">\n </mat-datepicker>\n <input type=\"time\"\n #dateElement\n class=\"time\"\n formControlName=\"time\"\n [disabled]=\"disabled\"\n (focus)=\"onFocus($event)\"\n (focusout)=\"onBlur($event)\"\n (change)=\"setDateTimeValue()\"\n />\n </div>\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ngControl.control | generateErrorMessages : (label || '')}}\n </mat-error>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "directive", type: DateMaskDirective, selector: "[dateMask]", inputs: ["maskType", "matDatepicker", "rangeFormControl"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "pipe", type: GenerateErrorMessagesPipe, name: "generateErrorMessages" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }] }); }
|
|
149
|
-
}
|
|
150
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateTimePickerComponent, decorators: [{
|
|
151
|
-
type: Component,
|
|
152
|
-
args: [{ selector: 'i-tech-date-time-picker', imports: [MatDatepickerModule, NgxMaskDirective, DateMaskDirective, TranslateModule,
|
|
153
|
-
FormsModule, NgClass, ReactiveFormsModule, MatLabel, GenerateErrorMessagesPipe, NgIf, MatError
|
|
154
|
-
], standalone: true, providers: [ParseDateService], template: "<div class=\"date_time_picker_container\"\n *ngIf=\"ngControl?.control\"\n [class.readonly_field]=\"disabled\"\n>\n <mat-label [ngClass]=\"{'readonly-color': disabled}\">{{label | translate}}</mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color': disabled}\"> *</span>\n\n <div class=\"date_time_picker\"\n [formGroup]=\"form\"\n [ngClass]=\"{'focused': isFocused, 'disabled': disabled}\"\n >\n <input type=\"text\" dateMask class=\"date\"\n placeholder=\"mm/dd/yy\"\n formControlName=\"date\"\n [matDatepicker]=\"DatePicker\"\n [disabled]=\"disabled\"\n (click)=\"!disabled && DatePicker.open()\"\n (focus)=\"onFocus($event)\"\n (focusout)=\"onBlur($event)\"\n >\n <mat-datepicker #DatePicker\n (closed)=\"onDatePickerClosed()\">\n </mat-datepicker>\n <input type=\"time\"\n #dateElement\n class=\"time\"\n formControlName=\"time\"\n [disabled]=\"disabled\"\n (focus)=\"onFocus($event)\"\n (focusout)=\"onBlur($event)\"\n (change)=\"setDateTimeValue()\"\n />\n </div>\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ngControl.control | generateErrorMessages : (label || '')}}\n </mat-error>\n</div>\n" }]
|
|
155
|
-
}], ctorParameters: () => [{ type: i1.InputService }, { type: i2.ParseDateService }], propDecorators: { dateChangeEvent: [{
|
|
156
|
-
type: Output
|
|
157
|
-
}], label: [{
|
|
158
|
-
type: Input
|
|
159
|
-
}], submit: [{
|
|
160
|
-
type: Input
|
|
161
|
-
}], required: [{
|
|
162
|
-
type: Input
|
|
163
|
-
}], disabled: [{
|
|
164
|
-
type: Input
|
|
165
|
-
}], timeInput: [{
|
|
166
|
-
type: ViewChild,
|
|
167
|
-
args: ['dateElement']
|
|
168
|
-
}] } });
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci9kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXRpbWUtcGlja2VyL2RhdGUtdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUF5QixNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDNUMsT0FBTyxFQUVMLFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNqQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFckUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7QUFZckYsTUFBTSxPQUFPLHVCQUF1QjtJQUts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QyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXJcIjtcbmltcG9ydCB7IE5neE1hc2tEaXJlY3RpdmUgfSBmcm9tIFwibmd4LW1hc2tcIjtcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sTmFtZSxcbiAgRm9ybXNNb2R1bGUsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcbiAgVW50eXBlZEZvcm1Hcm91cFxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE5nQ2xhc3MsIE5nSWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBNYXRFcnJvciwgTWF0TGFiZWwgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IERhdGVNYXNrRGlyZWN0aXZlIH0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvZGF0ZS1tYXNrLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgUGFyc2VEYXRlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9wYXJzZS1kYXRlLnNlcnZpY2VcIjtcbmltcG9ydCB7IElucHV0U2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9pbnB1dC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBHZW5lcmF0ZUVycm9yTWVzc2FnZXNQaXBlIH0gZnJvbSBcIi4uLy4uL3BpcGVzL2dlbmVyYXRlLWVycm9yLW1lc3NhZ2VzLnBpcGVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaS10ZWNoLWRhdGUtdGltZS1waWNrZXInLFxuICBpbXBvcnRzOiBbTWF0RGF0ZXBpY2tlck1vZHVsZSwgTmd4TWFza0RpcmVjdGl2ZSwgRGF0ZU1hc2tEaXJlY3RpdmUsIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSwgTmdDbGFzcywgUmVhY3RpdmVGb3Jtc01vZHVsZSwgTWF0TGFiZWwsIEdlbmVyYXRlRXJyb3JNZXNzYWdlc1BpcGUsIE5nSWYsIE1hdEVycm9yXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHByb3ZpZGVyczogW1BhcnNlRGF0ZVNlcnZpY2VdLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBEYXRlVGltZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBPdXRwdXQoKSBkYXRlQ2hhbmdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBJbnB1dCgpIGxhYmVsITogc3RyaW5nO1xuICBASW5wdXQoKSBzdWJtaXQgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ3RpbWUnKT8uZGlzYWJsZSgpO1xuICAgICAgdGhpcy5mb3JtLmdldCgnZGF0ZScpPy5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ3RpbWUnKT8uZW5hYmxlKCk7XG4gICAgICB0aGlzLmZvcm0uZ2V0KCdkYXRlJyk/LmVuYWJsZSgpO1xuICAgIH1cbiAgfTtcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ2RhdGVFbGVtZW50JykgdGltZUlucHV0ITogRWxlbWVudFJlZjtcblxuICBpc0ZvY3VzZWQgPSBmYWxzZTtcbiAgZm9ybSA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHtcbiAgICB0aW1lOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCksXG4gICAgZGF0ZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpLFxuICB9KVxuICBuZ0NvbnRyb2w6IEZvcm1Db250cm9sTmFtZTtcblxuICAvLyBUcmFjayBkYXRlcGlja2VyIHN0YXRlXG4gIHByaXZhdGUgZm9jdXNUaW1lb3V0SWQ6IGFueSA9IG51bGw7XG4gIHByaXZhdGUgZGF0ZVBpY2tlckp1c3RDbG9zZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgaW5wdXRTZXJ2aWNlOiBJbnB1dFNlcnZpY2UsXG4gICAgICBwcml2YXRlIHBhcnNlRGF0ZVNlcnZpY2U6IFBhcnNlRGF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5uZ0NvbnRyb2wgPSB0aGlzLmlucHV0U2VydmljZS5pbmplY3ROZ0NvbnRyb2woKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFZhbHVlKCk7XG4gICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuc2V0VmFsdWUoKVxuICAgIH0pXG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb2N1c1RpbWVvdXRJZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZm9jdXNUaW1lb3V0SWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFsdWUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm5nQ29udHJvbD8uY29udHJvbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBkYXRlVGltZSA9IHRoaXMubmdDb250cm9sLmNvbnRyb2wudmFsdWU7XG4gICAgaWYgKCFkYXRlVGltZSkge1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBkYXRlOiBudWxsLFxuICAgICAgICB0aW1lOiBudWxsXG4gICAgICB9LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgZGF0ZTogbmV3IERhdGUodGhpcy5wYXJzZURhdGVTZXJ2aWNlLmNoYW5nZUZvcm1hdChkYXRlVGltZSwgJ1lZWVktTU0tREQnKSArICdUJyArICcwMDowMDowMCcpLFxuICAgICAgdGltZTogdGhpcy5wYXJzZURhdGVTZXJ2aWNlLmNoYW5nZUZvcm1hdChkYXRlVGltZSwgJ0hIOm1tJylcbiAgICB9LCB7IGVtaXRFdmVudDogZmFsc2UgfSlcbiAgfVxuXG4gIHB1YmxpYyBvbkRhdGVQaWNrZXJDbG9zZWQoKTogdm9pZCB7XG4gICAgLy8gVXBkYXRlIGZvcm0gdmFsdWUgZmlyc3RcbiAgICB0aGlzLnNldERhdGVUaW1lVmFsdWUoKTtcblxuICAgIC8vIE1hcmsgdGhhdCB0aGUgZGF0ZXBpY2tlciBqdXN0IGNsb3NlZFxuICAgIHRoaXMuZGF0ZVBpY2tlckp1c3RDbG9zZWQgPSB0cnVlO1xuXG4gICAgLy8gQ2xlYXIgYW55IGV4aXN0aW5nIHRpbWVvdXRcbiAgICBpZiAodGhpcy5mb2N1c1RpbWVvdXRJZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZm9jdXNUaW1lb3V0SWQpO1xuICAgIH1cblxuICAgIC8vIFVzZSBhIGNhbGxiYWNrIHRoYXQgcnVucyBvdXRzaWRlIEFuZ3VsYXIncyBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgdGhpcy5mb2N1c1RpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gRm9jdXMgdGltZSBpbnB1dFxuICAgICAgaWYgKHRoaXMudGltZUlucHV0Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIHRoaXMudGltZUlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cblxuICAgICAgLy8gUmVzZXQgZmxhZyBhZnRlciBlbm91Z2ggdGltZVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlckp1c3RDbG9zZWQgPSBmYWxzZTtcbiAgICAgIH0sIDIwMCk7XG4gICAgfSwgMTAwKTsgLy8gTG9uZ2VyIGRlbGF5IHRvIGxldCBBbmd1bGFyIE1hdGVyaWFsIGZpbmlzaCBpdHMgd29ya1xuICB9XG5cbiAgcHVibGljIHNldERhdGVUaW1lVmFsdWUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybS52YWx1ZS5kYXRlICYmIHRoaXMuZm9ybS52YWx1ZS50aW1lKSB7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5wYXJzZURhdGVTZXJ2aWNlLmNoYW5nZUZvcm1hdCh0aGlzLmZvcm0udmFsdWUuZGF0ZSwgJ1lZWVktTU0tREQnKTtcbiAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLmZvcm0udmFsdWUudGltZTtcbiAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wucGF0Y2hWYWx1ZShkYXRlICsgJ1QnICsgdGltZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sLnBhdGNoVmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgICB0aGlzLmRhdGVDaGFuZ2VFdmVudC5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgb25Gb2N1cyhldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgIC8vIElmIGRhdGVwaWNrZXIganVzdCBjbG9zZWQgYW5kIGZvY3VzIGlzIGdvaW5nIHRvIGRhdGUgaW5wdXQsIG1vdmUgaXQgdG8gdGltZSBpbnB1dFxuICAgIGlmICh0aGlzLmRhdGVQaWNrZXJKdXN0Q2xvc2VkKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBjb25zdCBkYXRlSW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dFtmb3JtQ29udHJvbE5hbWU9XCJkYXRlXCJdJyk7XG5cbiAgICAgIGlmICh0YXJnZXQgPT09IGRhdGVJbnB1dCkge1xuICAgICAgICAvLyBDYW5jZWwgYW55IGV4aXN0aW5nIGZvY3VzIHRpbWVvdXRcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNUaW1lb3V0SWQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5mb2N1c1RpbWVvdXRJZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgbmV3IHRpbWVvdXQgdG8gZm9jdXMgdGltZSBpbnB1dFxuICAgICAgICB0aGlzLmZvY3VzVGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMudGltZUlucHV0Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnRpbWVJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAxMCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBvbkJsdXIoZXZlbnQ/OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgLy8gRG9uJ3QgaGFuZGxlIGJsdXIgZHVyaW5nIGRhdGVwaWNrZXIgdHJhbnNpdGlvbnNcbiAgICBpZiAodGhpcy5kYXRlUGlja2VySnVzdENsb3NlZCkge1xuICAgICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBmb2N1cyBpcyBtb3ZpbmcgdG8gYW5vdGhlciBlbGVtZW50IHdpdGhpbiBvdXIgY29tcG9uZW50XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBkYXRlSW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dFtmb3JtQ29udHJvbE5hbWU9XCJkYXRlXCJdJyk7XG4gICAgICBjb25zdCB0aW1lSW5wdXQgPSB0aGlzLnRpbWVJbnB1dD8ubmF0aXZlRWxlbWVudDtcbiAgICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuXG4gICAgICBpZiAoYWN0aXZlRWxlbWVudCAhPT0gZGF0ZUlucHV0ICYmIGFjdGl2ZUVsZW1lbnQgIT09IHRpbWVJbnB1dCkge1xuICAgICAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0sIDUwKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRhdGVfdGltZV9waWNrZXJfY29udGFpbmVyXCJcbiAgICAgKm5nSWY9XCJuZ0NvbnRyb2w/LmNvbnRyb2xcIlxuICAgICBbY2xhc3MucmVhZG9ubHlfZmllbGRdPVwiZGlzYWJsZWRcIlxuPlxuICAgIDxtYXQtbGFiZWwgW25nQ2xhc3NdPVwieydyZWFkb25seS1jb2xvcic6IGRpc2FibGVkfVwiPnt7bGFiZWwgfCB0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxuICAgIDxzcGFuICpuZ0lmPVwicmVxdWlyZWRcIiBjbGFzcz1cInJlcXVpcmVkLWlucHV0XCIgW25nQ2xhc3NdPVwieydyZWFkb25seS1jb2xvcic6IGRpc2FibGVkfVwiPiAqPC9zcGFuPlxuXG4gICAgPGRpdiBjbGFzcz1cImRhdGVfdGltZV9waWNrZXJcIlxuICAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAgICAgIFtuZ0NsYXNzXT1cInsnZm9jdXNlZCc6IGlzRm9jdXNlZCwgJ2Rpc2FibGVkJzogZGlzYWJsZWR9XCJcbiAgICA+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGRhdGVNYXNrIGNsYXNzPVwiZGF0ZVwiXG4gICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIm1tL2RkL3l5XCJcbiAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRhdGVcIlxuICAgICAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiRGF0ZVBpY2tlclwiXG4gICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgKGNsaWNrKT1cIiFkaXNhYmxlZCAmJiBEYXRlUGlja2VyLm9wZW4oKVwiXG4gICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPG1hdC1kYXRlcGlja2VyICNEYXRlUGlja2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VkKT1cIm9uRGF0ZVBpY2tlckNsb3NlZCgpXCI+XG4gICAgICAgIDwvbWF0LWRhdGVwaWNrZXI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGltZVwiXG4gICAgICAgICAgICAgICAjZGF0ZUVsZW1lbnRcbiAgICAgICAgICAgICAgIGNsYXNzPVwidGltZVwiXG4gICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0aW1lXCJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldERhdGVUaW1lVmFsdWUoKVwiXG4gICAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBFcnJvciBNZXNzYWdlcyAtLT5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiISEobmdDb250cm9sLmNvbnRyb2wuZXJyb3JzICYmIHN1Ym1pdClcIj5cbiAgICAgICAge3tuZ0NvbnRyb2wuY29udHJvbCB8IGdlbmVyYXRlRXJyb3JNZXNzYWdlcyA6IChsYWJlbCB8fCAnJyl9fVxuICAgIDwvbWF0LWVycm9yPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { MatFabButton, MatIconButton } from "@angular/material/button";
|
|
3
|
-
import { NgClass, NgIf } from "@angular/common";
|
|
4
|
-
import { MatTooltip } from "@angular/material/tooltip";
|
|
5
|
-
import { TranslateModule } from "@ngx-translate/core";
|
|
6
|
-
import { MatIcon } from "@angular/material/icon";
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@ngx-translate/core";
|
|
9
|
-
export class IconButtonComponent {
|
|
10
|
-
constructor() {
|
|
11
|
-
this.size = 'medium';
|
|
12
|
-
this.type = 'tonal';
|
|
13
|
-
this.buttonClick = new EventEmitter();
|
|
14
|
-
}
|
|
15
|
-
onClick(event) {
|
|
16
|
-
if (!this.disabled) {
|
|
17
|
-
this.buttonClick.emit();
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IconButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: IconButtonComponent, isStandalone: true, selector: "i-tech-icon-button", inputs: { size: "size", type: "type", iconSvg: "iconSvg", iconName: "iconName", tooltip: "tooltip", disabled: "disabled" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<button\n *ngIf=\"['tonal','standard'].includes(type)\"\n mat-icon-button\n [ngClass]=\"{small: size === 'small', tonal: type === 'tonal', standard: type === 'standard'}\"\n [matTooltip]=\"tooltip | translate\"\n [matTooltipDisabled]=\"!tooltip\"\n [disabled]=\"disabled || false\"\n (click)=\"onClick($event)\"\n>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg\"></mat-icon>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n</button>\n\n<button\n *ngIf=\"type === 'filled'\"\n mat-fab\n class=\"filled\"\n [ngClass]=\"{small: size === 'small'}\"\n [matTooltip]=\"tooltip | translate\"\n [matTooltipDisabled]=\"!tooltip\"\n [color]=\"'primary'\"\n [disabled]=\"disabled || false\"\n (click)=\"onClick($event)\"\n>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg\"></mat-icon>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { 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"] }, { kind: "component", type: MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
22
|
-
}
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IconButtonComponent, decorators: [{
|
|
24
|
-
type: Component,
|
|
25
|
-
args: [{ selector: 'i-tech-icon-button', imports: [
|
|
26
|
-
MatIconButton,
|
|
27
|
-
NgClass,
|
|
28
|
-
MatTooltip,
|
|
29
|
-
TranslateModule,
|
|
30
|
-
MatIcon,
|
|
31
|
-
MatFabButton,
|
|
32
|
-
NgIf
|
|
33
|
-
], standalone: true, template: "<button\n *ngIf=\"['tonal','standard'].includes(type)\"\n mat-icon-button\n [ngClass]=\"{small: size === 'small', tonal: type === 'tonal', standard: type === 'standard'}\"\n [matTooltip]=\"tooltip | translate\"\n [matTooltipDisabled]=\"!tooltip\"\n [disabled]=\"disabled || false\"\n (click)=\"onClick($event)\"\n>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg\"></mat-icon>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n</button>\n\n<button\n *ngIf=\"type === 'filled'\"\n mat-fab\n class=\"filled\"\n [ngClass]=\"{small: size === 'small'}\"\n [matTooltip]=\"tooltip | translate\"\n [matTooltipDisabled]=\"!tooltip\"\n [color]=\"'primary'\"\n [disabled]=\"disabled || false\"\n (click)=\"onClick($event)\"\n>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg\"></mat-icon>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n</button>\n" }]
|
|
34
|
-
}], propDecorators: { size: [{
|
|
35
|
-
type: Input
|
|
36
|
-
}], type: [{
|
|
37
|
-
type: Input
|
|
38
|
-
}], iconSvg: [{
|
|
39
|
-
type: Input
|
|
40
|
-
}], iconName: [{
|
|
41
|
-
type: Input
|
|
42
|
-
}], tooltip: [{
|
|
43
|
-
type: Input
|
|
44
|
-
}], disabled: [{
|
|
45
|
-
type: Input
|
|
46
|
-
}], buttonClick: [{
|
|
47
|
-
type: Output
|
|
48
|
-
}] } });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ljb24tYnV0dG9uL2ljb24tYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9pY29uLWJ1dHRvbi9pY29uLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBaUJqRCxNQUFNLE9BQU8sbUJBQW1CO0lBZmhDO1FBZ0JXLFNBQUksR0FBdUIsUUFBUSxDQUFDO1FBQ3BDLFNBQUksR0FBb0MsT0FBTyxDQUFDO1FBSy9DLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQU9sRDtJQUxDLE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7K0dBYlUsbUJBQW1CO21HQUFuQixtQkFBbUIsbVBDdEJoQyxxOUJBMkJBLDBERGZJLGFBQWEsNkZBQ2IsT0FBTyxvRkFDUCxVQUFVLGdSQUNWLGVBQWUsNEZBQ2YsT0FBTywySUFDUCxZQUFZLDJHQUNaLElBQUk7OzRGQUlLLG1CQUFtQjtrQkFmL0IsU0FBUzsrQkFDRSxvQkFBb0IsV0FHckI7d0JBQ1AsYUFBYTt3QkFDYixPQUFPO3dCQUNQLFVBQVU7d0JBQ1YsZUFBZTt3QkFDZixPQUFPO3dCQUNQLFlBQVk7d0JBQ1osSUFBSTtxQkFDTCxjQUNXLElBQUk7OEJBR1AsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEZhYkJ1dHRvbiwgTWF0SWNvbkJ1dHRvbiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcbmltcG9ydCB7IE5nQ2xhc3MsIE5nSWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBNYXRUb29sdGlwIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaS10ZWNoLWljb24tYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ljb24tYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2ljb24tYnV0dG9uLmNvbXBvbmVudC5zY3NzJyxcbiAgaW1wb3J0czogW1xuICAgIE1hdEljb25CdXR0b24sXG4gICAgTmdDbGFzcyxcbiAgICBNYXRUb29sdGlwLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBNYXRJY29uLFxuICAgIE1hdEZhYkJ1dHRvbixcbiAgICBOZ0lmXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWNvbkJ1dHRvbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHNpemU6ICdtZWRpdW0nIHwgJ3NtYWxsJyA9ICdtZWRpdW0nO1xuICBASW5wdXQoKSB0eXBlOiAnc3RhbmRhcmQnIHwgJ2ZpbGxlZCcgfCAndG9uYWwnID0gJ3RvbmFsJztcbiAgQElucHV0KCkgaWNvblN2ZyE6IHN0cmluZztcbiAgQElucHV0KCkgaWNvbk5hbWUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRvb2x0aXAhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRpc2FibGVkITogYm9vbGVhbjtcbiAgQE91dHB1dCgpIGJ1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuYnV0dG9uQ2xpY2suZW1pdCgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGJ1dHRvblxuICAgICAgICAqbmdJZj1cIlsndG9uYWwnLCdzdGFuZGFyZCddLmluY2x1ZGVzKHR5cGUpXCJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgIFtuZ0NsYXNzXT1cIntzbWFsbDogc2l6ZSA9PT0gJ3NtYWxsJywgdG9uYWw6IHR5cGUgPT09ICd0b25hbCcsIHN0YW5kYXJkOiB0eXBlID09PSAnc3RhbmRhcmQnfVwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cInRvb2x0aXAgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cIiF0b29sdGlwXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGZhbHNlXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiXG4+XG4gICAgPG1hdC1pY29uICpuZ0lmPVwiaWNvblN2Z1wiIFtzdmdJY29uXT1cImljb25TdmdcIj48L21hdC1pY29uPlxuICAgIDxtYXQtaWNvbiAqbmdJZj1cImljb25OYW1lXCI+e3tpY29uTmFtZX19PC9tYXQtaWNvbj5cbjwvYnV0dG9uPlxuXG48YnV0dG9uXG4gICAgICAgICpuZ0lmPVwidHlwZSA9PT0gJ2ZpbGxlZCdcIlxuICAgICAgICBtYXQtZmFiXG4gICAgICAgIGNsYXNzPVwiZmlsbGVkXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie3NtYWxsOiBzaXplID09PSAnc21hbGwnfVwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cInRvb2x0aXAgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cIiF0b29sdGlwXCJcbiAgICAgICAgW2NvbG9yXT1cIidwcmltYXJ5J1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBmYWxzZVwiXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuPlxuICAgIDxtYXQtaWNvbiAqbmdJZj1cImljb25TdmdcIiBbc3ZnSWNvbl09XCJpY29uU3ZnXCI+PC9tYXQtaWNvbj5cbiAgICA8bWF0LWljb24gKm5nSWY9XCJpY29uTmFtZVwiPnt7aWNvbk5hbWV9fTwvbWF0LWljb24+XG48L2J1dHRvbj5cbiJdfQ==
|
|
@@ -1,56 +0,0 @@
|
|
|
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, NgIf } 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.iconSvg = '';
|
|
16
|
-
this.disableRipple = false;
|
|
17
|
-
this.matChipAction = false;
|
|
18
|
-
this.forTable = false;
|
|
19
|
-
}
|
|
20
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
-
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", forTable: "forTable" }, ngImport: i0, template: "<div [class]=\"{table_row_item: forTable,'trailing-icon' : iconName || iconSvg}\">\n <mat-chip\n [class]=\"'label_' + color\"\n [ngClass]=\"{bordered: bordered, small: size === 'small', matChipAction: 'pointer'}\"\n [matTooltip]=\"(tooltip || '') | translate\"\n [disableRipple]=\"disableRipple\"\n >\n <div class=\"flex_align_center flex_gap\" [ngClass]=\"matChipAction ? 'pointer' : ''\">\n <span *ngIf=\"!innerHtml\">{{text | translate}}</span>\n <span *ngIf=\"innerHtml\" [innerHtml]=\"innerHtml | translate\"></span>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg!\"></mat-icon>\n </div>\n </mat-chip>\n</div>\n", 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"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
22
|
-
}
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LabelComponent, decorators: [{
|
|
24
|
-
type: Component,
|
|
25
|
-
args: [{ selector: 'i-tech-label', imports: [
|
|
26
|
-
MatChip,
|
|
27
|
-
MatTooltip,
|
|
28
|
-
NgClass,
|
|
29
|
-
TranslateModule,
|
|
30
|
-
MatIcon,
|
|
31
|
-
NgIf
|
|
32
|
-
], standalone: true, template: "<div [class]=\"{table_row_item: forTable,'trailing-icon' : iconName || iconSvg}\">\n <mat-chip\n [class]=\"'label_' + color\"\n [ngClass]=\"{bordered: bordered, small: size === 'small', matChipAction: 'pointer'}\"\n [matTooltip]=\"(tooltip || '') | translate\"\n [disableRipple]=\"disableRipple\"\n >\n <div class=\"flex_align_center flex_gap\" [ngClass]=\"matChipAction ? 'pointer' : ''\">\n <span *ngIf=\"!innerHtml\">{{text | translate}}</span>\n <span *ngIf=\"innerHtml\" [innerHtml]=\"innerHtml | translate\"></span>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg!\"></mat-icon>\n </div>\n </mat-chip>\n</div>\n" }]
|
|
33
|
-
}], propDecorators: { color: [{
|
|
34
|
-
type: Input
|
|
35
|
-
}], text: [{
|
|
36
|
-
type: Input
|
|
37
|
-
}], innerHtml: [{
|
|
38
|
-
type: Input
|
|
39
|
-
}], bordered: [{
|
|
40
|
-
type: Input
|
|
41
|
-
}], tooltip: [{
|
|
42
|
-
type: Input
|
|
43
|
-
}], size: [{
|
|
44
|
-
type: Input
|
|
45
|
-
}], iconName: [{
|
|
46
|
-
type: Input
|
|
47
|
-
}], iconSvg: [{
|
|
48
|
-
type: Input
|
|
49
|
-
}], disableRipple: [{
|
|
50
|
-
type: Input
|
|
51
|
-
}], matChipAction: [{
|
|
52
|
-
type: Input
|
|
53
|
-
}], forTable: [{
|
|
54
|
-
type: Input
|
|
55
|
-
}] } });
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2xhYmVsL2xhYmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9sYWJlbC9sYWJlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQWdCakQsTUFBTSxPQUFPLGNBQWM7SUFkM0I7UUFlVyxVQUFLLEdBQWtCLGFBQWEsQ0FBQyxPQUFPLENBQUM7UUFHN0MsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixTQUFJLEdBQXlCLFVBQVUsQ0FBQztRQUV4QyxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2Isa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsYUFBUSxHQUFHLEtBQUssQ0FBQztLQUMzQjsrR0FaWSxjQUFjO21HQUFkLGNBQWMsa1VDdEIzQixteEJBZUEsNENERkksT0FBTyxrU0FDUCxVQUFVLGlSQUNWLE9BQU8sbUZBQ1AsZUFBZSw0RkFDZixPQUFPLDJJQUNQLElBQUk7OzRGQUlLLGNBQWM7a0JBZDFCLFNBQVM7K0JBQ0UsY0FBYyxXQUdmO3dCQUNQLE9BQU87d0JBQ1AsVUFBVTt3QkFDVixPQUFPO3dCQUNQLGVBQWU7d0JBQ2YsT0FBTzt3QkFDUCxJQUFJO3FCQUNMLGNBQ1csSUFBSTs4QkFHUCxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGFiZWxUeXBlRW51bSB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL2xhYmVsLXR5cGUuZW51bVwiO1xuaW1wb3J0IHsgTWF0Q2hpcCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGlwc1wiO1xuaW1wb3J0IHsgTWF0VG9vbHRpcCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwXCI7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0lmIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpLXRlY2gtbGFiZWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGFiZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0Q2hpcCxcbiAgICBNYXRUb29sdGlwLFxuICAgIE5nQ2xhc3MsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIE1hdEljb24sXG4gICAgTmdJZlxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIExhYmVsQ29tcG9uZW50IHtcbiAgQElucHV0KCkgY29sb3I6IExhYmVsVHlwZUVudW0gPSBMYWJlbFR5cGVFbnVtLnByaW1hcnk7XG4gIEBJbnB1dCgpIHRleHQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlubmVySHRtbCE6IHN0cmluZztcbiAgQElucHV0KCkgYm9yZGVyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgdG9vbHRpcD86IHN0cmluZztcbiAgQElucHV0KCkgc2l6ZTogJ3NtYWxsJyB8ICdzdGFuZGFyZCcgPSAnc3RhbmRhcmQnO1xuICBASW5wdXQoKSBpY29uTmFtZT86IHN0cmluZztcbiAgQElucHV0KCkgaWNvblN2ZyA9ICcnO1xuICBASW5wdXQoKSBkaXNhYmxlUmlwcGxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1hdENoaXBBY3Rpb24gPSBmYWxzZTtcbiAgQElucHV0KCkgZm9yVGFibGUgPSBmYWxzZTtcbn1cbiIsIjxkaXYgW2NsYXNzXT1cInt0YWJsZV9yb3dfaXRlbTogZm9yVGFibGUsJ3RyYWlsaW5nLWljb24nIDogaWNvbk5hbWUgfHwgaWNvblN2Z31cIj5cbiAgICA8bWF0LWNoaXBcbiAgICAgICAgICAgIFtjbGFzc109XCInbGFiZWxfJyArIGNvbG9yXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntib3JkZXJlZDogYm9yZGVyZWQsIHNtYWxsOiBzaXplID09PSAnc21hbGwnLCBtYXRDaGlwQWN0aW9uOiAncG9pbnRlcid9XCJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIih0b29sdGlwIHx8ICcnKSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZVJpcHBsZV09XCJkaXNhYmxlUmlwcGxlXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4X2FsaWduX2NlbnRlciBmbGV4X2dhcFwiIFtuZ0NsYXNzXT1cIm1hdENoaXBBY3Rpb24gPyAncG9pbnRlcicgOiAnJ1wiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaW5uZXJIdG1sXCI+e3t0ZXh0IHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlubmVySHRtbFwiIFtpbm5lckh0bWxdPVwiaW5uZXJIdG1sIHwgdHJhbnNsYXRlXCI+PC9zcGFuPlxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaWNvbk5hbWVcIj57e2ljb25OYW1lfX08L21hdC1pY29uPlxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaWNvblN2Z1wiIFtzdmdJY29uXT1cImljb25TdmchXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9tYXQtY2hpcD5cbjwvZGl2PlxuIl19
|
|
@@ -1,56 +0,0 @@
|
|
|
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.loading = false;
|
|
18
|
-
this.ButtonType = ButtonType;
|
|
19
|
-
this.DropdownItemIcon = DropdownItemIcon;
|
|
20
|
-
this.matMenuState = false;
|
|
21
|
-
}
|
|
22
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23
|
-
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", icon: "icon", positionX: "positionX", menuOptions: "menuOptions", loading: "loading" }, outputs: { emitEvent: "emitEvent" }, ngImport: i0, template: "<div class=\"custom_dropdown_container\"\n [attr.data-name]=\"dataName\"\n [ngClass]=\"containerClass\"\n>\n <ng-container *ngIf=\"!loading\">\n <i-tech-button\n [matMenuTriggerFor]=\"beforeMenu\"\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"icon || 'keyboard_arrow_down'\"\n [text]=\"(text || '') \"\n (menuOpened)=\"matMenuState = true\"\n (menuClosed)=\"matMenuState = false\"\n [activated]=\"matMenuState\"\n ></i-tech-button>\n </ng-container>\n\n <ng-container *ngIf=\"loading\">\n <i-tech-button\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"icon || 'keyboard_arrow_down'\"\n [text]=\"(text || '') \"\n [submit]=\"true\"\n [disabled]=\"true\"\n [activated]=\"false\"\n ></i-tech-button>\n </ng-container>\n\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}.custom_dropdown_container .loader-container{display:flex;justify-content:center;align-items:center}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" }] }); }
|
|
24
|
-
}
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MenuComponent, decorators: [{
|
|
26
|
-
type: Component,
|
|
27
|
-
args: [{ selector: "i-tech-menu", standalone: true, imports: [
|
|
28
|
-
MatMenuTrigger,
|
|
29
|
-
MatMenu,
|
|
30
|
-
MatIcon,
|
|
31
|
-
NgIf,
|
|
32
|
-
NgForOf,
|
|
33
|
-
MatMenuItem,
|
|
34
|
-
TranslateModule,
|
|
35
|
-
NgClass,
|
|
36
|
-
ButtonComponent,
|
|
37
|
-
MatLabel
|
|
38
|
-
], template: "<div class=\"custom_dropdown_container\"\n [attr.data-name]=\"dataName\"\n [ngClass]=\"containerClass\"\n>\n <ng-container *ngIf=\"!loading\">\n <i-tech-button\n [matMenuTriggerFor]=\"beforeMenu\"\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"icon || 'keyboard_arrow_down'\"\n [text]=\"(text || '') \"\n (menuOpened)=\"matMenuState = true\"\n (menuClosed)=\"matMenuState = false\"\n [activated]=\"matMenuState\"\n ></i-tech-button>\n </ng-container>\n\n <ng-container *ngIf=\"loading\">\n <i-tech-button\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"icon || 'keyboard_arrow_down'\"\n [text]=\"(text || '') \"\n [submit]=\"true\"\n [disabled]=\"true\"\n [activated]=\"false\"\n ></i-tech-button>\n </ng-container>\n\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}.custom_dropdown_container .loader-container{display:flex;justify-content:center;align-items:center}mat-menu{height:max-content}\n"] }]
|
|
39
|
-
}], propDecorators: { text: [{
|
|
40
|
-
type: Input
|
|
41
|
-
}], dataName: [{
|
|
42
|
-
type: Input
|
|
43
|
-
}], containerClass: [{
|
|
44
|
-
type: Input
|
|
45
|
-
}], icon: [{
|
|
46
|
-
type: Input
|
|
47
|
-
}], positionX: [{
|
|
48
|
-
type: Input
|
|
49
|
-
}], menuOptions: [{
|
|
50
|
-
type: Input
|
|
51
|
-
}], emitEvent: [{
|
|
52
|
-
type: Output
|
|
53
|
-
}], loading: [{
|
|
54
|
-
type: Input
|
|
55
|
-
}] } });
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbWVudS9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9tZW51L21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUF5QixNQUFNLCtDQUErQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBaUIsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQW9CeEQsTUFBTSxPQUFPLGFBQWE7SUFsQjFCO1FBdUJXLGNBQVMsR0FBa0IsUUFBUSxDQUFDO1FBQ3BDLGdCQUFXLEdBTWYsRUFBRSxDQUFDO1FBQ0UsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDckMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNOLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFDeEIscUJBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDdkQsaUJBQVksR0FBRyxLQUFLLENBQUM7S0FDdEI7K0dBbEJZLGFBQWE7bUdBQWIsYUFBYSxvUkM1QjFCLHUyQ0FrQ0EsMFBEcEJJLGNBQWMscVNBQ2QsT0FBTywyUUFDUCxPQUFPLDJJQUNQLElBQUksNkZBQ0osT0FBTyxtSEFDUCxXQUFXLHFJQUNYLGVBQWUsNEZBQ2YsT0FBTyxvRkFDUCxlQUFlLDJNQUNmLFFBQVE7OzRGQUtDLGFBQWE7a0JBbEJ6QixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1A7d0JBQ1AsY0FBYzt3QkFDZCxPQUFPO3dCQUNQLE9BQU87d0JBQ1AsSUFBSTt3QkFDSixPQUFPO3dCQUNQLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixPQUFPO3dCQUNQLGVBQWU7d0JBQ2YsUUFBUTtxQkFDVDs4QkFLUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBT0ksU0FBUztzQkFBbEIsTUFBTTtnQkFDRSxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBCdXR0b25UeXBlIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvYnV0dG9uLXR5cGVzLmVudW1cIjtcbmltcG9ydCB7IERyb3Bkb3duSXRlbUljb24sIERyb3Bkb3duU2VsZWN0aW9uVHlwZSB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL2Ryb3Bkb3duLXNlbGVjdGlvbi5jb25zdGFudHNcIjtcbmltcG9ydCB7IE1hdE1lbnUsIE1hdE1lbnVJdGVtLCBNYXRNZW51VHJpZ2dlciwgTWVudVBvc2l0aW9uWCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7IE5nQ2xhc3MsIE5nRm9yT2YsIE5nSWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSBcIi4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBNYXRMYWJlbCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJpLXRlY2gtbWVudVwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0TWVudVRyaWdnZXIsXG4gICAgTWF0TWVudSxcbiAgICBNYXRJY29uLFxuICAgIE5nSWYsXG4gICAgTmdGb3JPZixcbiAgICBNYXRNZW51SXRlbSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTmdDbGFzcyxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgTWF0TGFiZWxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6IFwiLi9tZW51LmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9tZW51LmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVDb21wb25lbnQge1xuICBASW5wdXQoKSB0ZXh0ITogc3RyaW5nO1xuICBASW5wdXQoKSBkYXRhTmFtZSE6IHN0cmluZztcbiAgQElucHV0KCkgY29udGFpbmVyQ2xhc3MhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGljb24hOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBvc2l0aW9uWDogTWVudVBvc2l0aW9uWCA9ICdiZWZvcmUnO1xuICBASW5wdXQoKSBtZW51T3B0aW9uczogQXJyYXk8e1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgdGV4dDogc3RyaW5nO1xuICAgIHNyYz86IHN0cmluZztcbiAgICBjbGFzcz86IHN0cmluZztcbiAgICB0eXBlPzogRHJvcGRvd25TZWxlY3Rpb25UeXBlO1xuICB9PiA9IFtdO1xuICBAT3V0cHV0KCkgZW1pdEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEJ1dHRvblR5cGUgPSBCdXR0b25UeXBlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgRHJvcGRvd25JdGVtSWNvbiA9IERyb3Bkb3duSXRlbUljb247XG4gIG1hdE1lbnVTdGF0ZSA9IGZhbHNlO1xufVxuIiwiPGRpdiBjbGFzcz1cImN1c3RvbV9kcm9wZG93bl9jb250YWluZXJcIlxuICAgICBbYXR0ci5kYXRhLW5hbWVdPVwiZGF0YU5hbWVcIlxuICAgICBbbmdDbGFzc109XCJjb250YWluZXJDbGFzc1wiXG4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkaW5nXCI+XG4gICAgICAgIDxpLXRlY2gtYnV0dG9uXG4gICAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImJlZm9yZU1lbnVcIlxuICAgICAgICAgICAgICAgIFt0eXBlXT1cIkJ1dHRvblR5cGUuT1VUTElORVwiXG4gICAgICAgICAgICAgICAgW2ZvbnRJY29uXT1cImljb24gfHwgJ2tleWJvYXJkX2Fycm93X2Rvd24nXCJcbiAgICAgICAgICAgICAgICBbdGV4dF09XCIodGV4dCB8fCAnJykgXCJcbiAgICAgICAgICAgICAgICAobWVudU9wZW5lZCk9XCJtYXRNZW51U3RhdGUgID0gdHJ1ZVwiXG4gICAgICAgICAgICAgICAgKG1lbnVDbG9zZWQpPVwibWF0TWVudVN0YXRlICA9IGZhbHNlXCJcbiAgICAgICAgICAgICAgICBbYWN0aXZhdGVkXT1cIm1hdE1lbnVTdGF0ZVwiXG4gICAgICAgID48L2ktdGVjaC1idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ1wiPlxuICAgICAgICA8aS10ZWNoLWJ1dHRvblxuICAgICAgICAgICAgICAgIFt0eXBlXT1cIkJ1dHRvblR5cGUuT1VUTElORVwiXG4gICAgICAgICAgICAgICAgW2ZvbnRJY29uXT1cImljb24gfHwgJ2tleWJvYXJkX2Fycm93X2Rvd24nXCJcbiAgICAgICAgICAgICAgICBbdGV4dF09XCIodGV4dCB8fCAnJykgXCJcbiAgICAgICAgICAgICAgICBbc3VibWl0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbYWN0aXZhdGVkXT1cImZhbHNlXCJcbiAgICAgICAgPjwvaS10ZWNoLWJ1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxtYXQtbWVudSAjYmVmb3JlTWVudT1cIm1hdE1lbnVcIiBbeFBvc2l0aW9uXT1cInBvc2l0aW9uWFwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBtZW51T3B0aW9uc1wiIChjbGljayk9XCJlbWl0RXZlbnQuZW1pdChvcHRpb24udmFsdWUpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJvcHRpb24udHlwZVwiIFtzdmdJY29uXT1cIkRyb3Bkb3duSXRlbUljb25bb3B0aW9uLnR5cGVdXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJtZXVfaXRlbV9sYWJlbFwiPnt7KG9wdGlvbi50ZXh0IHx8ICcnKSB8IHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LW1lbnU+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { CompaniesEnum } from "../../../interfaces/auth.interface";
|
|
3
|
-
import { NgIf, SlicePipe, UpperCasePipe } from "@angular/common";
|
|
4
|
-
import { MatTooltipModule } from "@angular/material/tooltip";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/material/tooltip";
|
|
7
|
-
export class CompanyImageComponent {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.CompaniesEnum = CompaniesEnum;
|
|
10
|
-
}
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CompanyImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CompanyImageComponent, isStandalone: true, selector: "i-tech-company-image", inputs: { collapsed: "collapsed", userData: "userData", currentCompany: "currentCompany", platform: "platform" }, ngImport: i0, template: "<div class=\"information pointer\" *ngIf=\"userData\">\n <div class=\"information_main\">\n <div class=\"images\">\n <img alt=\"\" class=\"company_img\" *ngIf=\"currentCompany?.image; else noImageComponent\"\n [src]=\"currentCompany.image\"\n [matTooltipDisabled]=\"!collapsed\"\n matTooltipClass=\"multiline_tooltip_for_profile\"\n [matTooltip]=\"(currentCompany?.name || '') + '\\n\\r' + (userData.firstName + ' ' + userData.lastName + '\\n') + (userData.email)\"\n >\n <ng-template #noImageComponent>\n <div class=\"company_img no_image\"\n [matTooltipDisabled]=\"!collapsed\"\n matTooltipClass=\"multiline_tooltip_for_profile\"\n [matTooltip]=\"(currentCompany?.name || '') + '\\n\\r' + (userData.firstName + ' ' + userData.lastName + '\\n') + (userData.email)\"\n >\n {{(currentCompany?.name || '') | slice: 0 : 1 | uppercase}}\n </div>\n </ng-template>\n\n <div class=\"user_img\">\n {{userData.firstName | slice: 0 : 1 | uppercase}}\n </div>\n </div>\n\n <div class=\"names\">\n <div class=\"company_name\">{{currentCompany?.name || ''}}</div>\n <div class=\"user_name\">{{userData.firstName}} {{userData.lastName}}</div>\n </div>\n\n </div>\n <div class=\"time_zone\" *ngIf=\"platform === CompaniesEnum.T3\">\n {{userData.timeZone?.enumType || ''}}\n </div>\n</div>\n", styles: [".information .information_main{display:flex;align-items:center}.information .information_main:hover{background-color:#effaf1;outline:4.5px solid #EFFAF1;border-radius:5px}.information .information_main .images{width:max-content;position:relative}.information .information_main .images .company_img{width:40px;height:40px;border-radius:50%;object-fit:cover}.information .information_main .images .company_img:hover{outline:2px solid rgba(0,172,72,.16)}.information .information_main .images .user_img{position:absolute;bottom:0;right:0;border-radius:50%;width:16px;height:16px;border:1px solid #EFFAF1;background-color:#006b1e;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:11px;line-height:16px}.information .information_main .images .no_image{display:flex;align-items:center;justify-content:center;background-color:#c0e5c7;color:#006b1e;font-weight:700;font-size:18px;line-height:24px}.information .information_main .names{margin-left:8px;width:110px}.information .information_main .names .company_name{color:#424954;font-weight:700;font-size:16px;line-height:24px;letter-spacing:.1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.information .information_main .names .user_name{color:#424954;font-weight:500;font-size:11px;line-height:16px;letter-spacing:.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.information .time_zone{margin-top:10px;display:flex;justify-content:center;color:#424954;font-weight:700;font-size:12px;line-height:16px;letter-spacing:.1px}::ng-deep .multiline_tooltip_for_profile{white-space:pre-line}::ng-deep .multiline_tooltip_for_profile .mat-mdc-tooltip-surface{text-align:left!important}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: SlicePipe, name: "slice" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
|
|
13
|
-
}
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CompanyImageComponent, decorators: [{
|
|
15
|
-
type: Component,
|
|
16
|
-
args: [{ selector: 'i-tech-company-image', imports: [NgIf, UpperCasePipe, SlicePipe, MatTooltipModule], standalone: true, template: "<div class=\"information pointer\" *ngIf=\"userData\">\n <div class=\"information_main\">\n <div class=\"images\">\n <img alt=\"\" class=\"company_img\" *ngIf=\"currentCompany?.image; else noImageComponent\"\n [src]=\"currentCompany.image\"\n [matTooltipDisabled]=\"!collapsed\"\n matTooltipClass=\"multiline_tooltip_for_profile\"\n [matTooltip]=\"(currentCompany?.name || '') + '\\n\\r' + (userData.firstName + ' ' + userData.lastName + '\\n') + (userData.email)\"\n >\n <ng-template #noImageComponent>\n <div class=\"company_img no_image\"\n [matTooltipDisabled]=\"!collapsed\"\n matTooltipClass=\"multiline_tooltip_for_profile\"\n [matTooltip]=\"(currentCompany?.name || '') + '\\n\\r' + (userData.firstName + ' ' + userData.lastName + '\\n') + (userData.email)\"\n >\n {{(currentCompany?.name || '') | slice: 0 : 1 | uppercase}}\n </div>\n </ng-template>\n\n <div class=\"user_img\">\n {{userData.firstName | slice: 0 : 1 | uppercase}}\n </div>\n </div>\n\n <div class=\"names\">\n <div class=\"company_name\">{{currentCompany?.name || ''}}</div>\n <div class=\"user_name\">{{userData.firstName}} {{userData.lastName}}</div>\n </div>\n\n </div>\n <div class=\"time_zone\" *ngIf=\"platform === CompaniesEnum.T3\">\n {{userData.timeZone?.enumType || ''}}\n </div>\n</div>\n", styles: [".information .information_main{display:flex;align-items:center}.information .information_main:hover{background-color:#effaf1;outline:4.5px solid #EFFAF1;border-radius:5px}.information .information_main .images{width:max-content;position:relative}.information .information_main .images .company_img{width:40px;height:40px;border-radius:50%;object-fit:cover}.information .information_main .images .company_img:hover{outline:2px solid rgba(0,172,72,.16)}.information .information_main .images .user_img{position:absolute;bottom:0;right:0;border-radius:50%;width:16px;height:16px;border:1px solid #EFFAF1;background-color:#006b1e;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:11px;line-height:16px}.information .information_main .images .no_image{display:flex;align-items:center;justify-content:center;background-color:#c0e5c7;color:#006b1e;font-weight:700;font-size:18px;line-height:24px}.information .information_main .names{margin-left:8px;width:110px}.information .information_main .names .company_name{color:#424954;font-weight:700;font-size:16px;line-height:24px;letter-spacing:.1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.information .information_main .names .user_name{color:#424954;font-weight:500;font-size:11px;line-height:16px;letter-spacing:.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.information .time_zone{margin-top:10px;display:flex;justify-content:center;color:#424954;font-weight:700;font-size:12px;line-height:16px;letter-spacing:.1px}::ng-deep .multiline_tooltip_for_profile{white-space:pre-line}::ng-deep .multiline_tooltip_for_profile .mat-mdc-tooltip-surface{text-align:left!important}\n"] }]
|
|
17
|
-
}], propDecorators: { collapsed: [{
|
|
18
|
-
type: Input
|
|
19
|
-
}], userData: [{
|
|
20
|
-
type: Input
|
|
21
|
-
}], currentCompany: [{
|
|
22
|
-
type: Input
|
|
23
|
-
}], platform: [{
|
|
24
|
-
type: Input
|
|
25
|
-
}] } });
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFueS1pbWFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbmV3LXNpZGViYXIvY29tcGFueS1pbWFnZS9jb21wYW55LWltYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9uZXctc2lkZWJhci9jb21wYW55LWltYWdlL2NvbXBhbnktaW1hZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFpQixhQUFhLEVBQXlCLE1BQU0sb0NBQW9DLENBQUM7QUFDekcsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQVM3RCxNQUFNLE9BQU8scUJBQXFCO0lBUGxDO1FBWUUsa0JBQWEsR0FBRyxhQUFhLENBQUM7S0FDL0I7K0dBTlkscUJBQXFCO21HQUFyQixxQkFBcUIsa01DWmxDLCtrREFrQ0Esc3RERDNCWSxJQUFJLHdGQUFFLGFBQWEsNkNBQUUsU0FBUyw2Q0FBRSxnQkFBZ0I7OzRGQUsvQyxxQkFBcUI7a0JBUGpDLFNBQVM7K0JBQ0Usc0JBQXNCLFdBQ3ZCLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsY0FDL0MsSUFBSTs4QkFLUCxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aEludGVyZmFjZSwgQ29tcGFuaWVzRW51bSwgT3JnYW5pemF0aW9uSW50ZXJmYWNlIH0gZnJvbSBcIi4uLy4uLy4uL2ludGVyZmFjZXMvYXV0aC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IE5nSWYsIFNsaWNlUGlwZSwgVXBwZXJDYXNlUGlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpLXRlY2gtY29tcGFueS1pbWFnZScsXG4gIGltcG9ydHM6IFtOZ0lmLCBVcHBlckNhc2VQaXBlLCBTbGljZVBpcGUsIE1hdFRvb2x0aXBNb2R1bGVdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tcGFueS1pbWFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9jb21wYW55LWltYWdlLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBDb21wYW55SW1hZ2VDb21wb25lbnQge1xuICBASW5wdXQoKSBjb2xsYXBzZWQhOiBib29sZWFuO1xuICBASW5wdXQoKSB1c2VyRGF0YSE6IEF1dGhJbnRlcmZhY2U7XG4gIEBJbnB1dCgpIGN1cnJlbnRDb21wYW55ITogT3JnYW5pemF0aW9uSW50ZXJmYWNlO1xuICBASW5wdXQoKSBwbGF0Zm9ybSE6IENvbXBhbmllc0VudW07XG4gIENvbXBhbmllc0VudW0gPSBDb21wYW5pZXNFbnVtO1xufVxuIiwiPGRpdiBjbGFzcz1cImluZm9ybWF0aW9uIHBvaW50ZXJcIiAqbmdJZj1cInVzZXJEYXRhXCI+XG4gICAgPGRpdiBjbGFzcz1cImluZm9ybWF0aW9uX21haW5cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlc1wiPlxuICAgICAgICAgICAgPGltZyBhbHQ9XCJcIiBjbGFzcz1cImNvbXBhbnlfaW1nXCIgKm5nSWY9XCJjdXJyZW50Q29tcGFueT8uaW1hZ2U7IGVsc2Ugbm9JbWFnZUNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgIFtzcmNdPVwiY3VycmVudENvbXBhbnkuaW1hZ2VcIlxuICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cIiFjb2xsYXBzZWRcIlxuICAgICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJtdWx0aWxpbmVfdG9vbHRpcF9mb3JfcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIihjdXJyZW50Q29tcGFueT8ubmFtZSB8fCAnJykgKyAnXFxuXFxyJyArICh1c2VyRGF0YS5maXJzdE5hbWUgKyAnICcgKyB1c2VyRGF0YS5sYXN0TmFtZSArICdcXG4nKSArICh1c2VyRGF0YS5lbWFpbClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0ltYWdlQ29tcG9uZW50PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wYW55X2ltZyBub19pbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cIiFjb2xsYXBzZWRcIlxuICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwibXVsdGlsaW5lX3Rvb2x0aXBfZm9yX3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKGN1cnJlbnRDb21wYW55Py5uYW1lIHx8ICcnKSArICdcXG5cXHInICsgKHVzZXJEYXRhLmZpcnN0TmFtZSArICcgJyArIHVzZXJEYXRhLmxhc3ROYW1lICsgJ1xcbicpICsgKHVzZXJEYXRhLmVtYWlsKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyhjdXJyZW50Q29tcGFueT8ubmFtZSB8fCAnJykgfCBzbGljZTogMCA6IDEgfCB1cHBlcmNhc2V9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXJfaW1nXCI+XG4gICAgICAgICAgICAgICAge3t1c2VyRGF0YS5maXJzdE5hbWUgfCBzbGljZTogMCA6IDEgfCB1cHBlcmNhc2V9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBhbnlfbmFtZVwiPnt7Y3VycmVudENvbXBhbnk/Lm5hbWUgfHwgJyd9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXJfbmFtZVwiPnt7dXNlckRhdGEuZmlyc3ROYW1lfX0ge3t1c2VyRGF0YS5sYXN0TmFtZX19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRpbWVfem9uZVwiICpuZ0lmPVwicGxhdGZvcm0gPT09IENvbXBhbmllc0VudW0uVDNcIj5cbiAgICAgICAge3t1c2VyRGF0YS50aW1lWm9uZT8uZW51bVR5cGUgfHwgJyd9fVxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|