angular-matecu 4.1.1 → 4.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Input, HostBinding, Component, NgModule, EventEmitter, ViewChild, Output, Inject, signal, computed, effect, forwardRef } from '@angular/core';
2
+ import { Injectable, Input, HostBinding, Component, NgModule, EventEmitter, ViewChild, Output, Inject, signal, computed, effect, forwardRef, ChangeDetectionStrategy } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import { BehaviorSubject, Subject, fromEvent, startWith, combineLatest, map as map$1, tap as tap$1, debounceTime as debounceTime$1 } from 'rxjs';
@@ -10,7 +10,7 @@ import * as i3 from '@angular/material/icon';
10
10
  import { MatIconModule } from '@angular/material/icon';
11
11
  import { MatToolbarModule } from '@angular/material/toolbar';
12
12
  import * as i2 from '@angular/forms';
13
- import { FormControl, FormsModule, ReactiveFormsModule, NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';
13
+ import { FormControl, FormsModule, ReactiveFormsModule, NgControl, NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
14
14
  import * as i1$1 from '@angular/material/dialog';
15
15
  import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
16
16
  import * as i1$2 from '@angular/material/snack-bar';
@@ -21,16 +21,24 @@ import * as i3$1 from '@angular/material/divider';
21
21
  import { MatDividerModule } from '@angular/material/divider';
22
22
  import * as i5 from '@angular/material/progress-spinner';
23
23
  import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
24
- import { MatFormFieldControl } from '@angular/material/form-field';
24
+ import * as i1$4 from '@angular/material/form-field';
25
+ import { MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';
25
26
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
26
27
  import * as i1$3 from '@angular/cdk/a11y';
27
28
  import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
28
- import * as i2$3 from '@angular/material/chips';
29
- import { MatChipsModule } from '@angular/material/chips';
30
29
  import { ScrollingModule } from '@angular/cdk/scrolling';
31
30
  import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
31
+ import * as i2$3 from '@angular/material/chips';
32
+ import { MatChipsModule } from '@angular/material/chips';
32
33
  import * as i7 from '@angular/material/tooltip';
33
34
  import { MatTooltipModule } from '@angular/material/tooltip';
35
+ import { provideNativeDateAdapter } from '@angular/material/core';
36
+ import * as i4 from '@angular/material/datepicker';
37
+ import { MatDatepickerModule } from '@angular/material/datepicker';
38
+ import * as i2$4 from '@angular/material/input';
39
+ import { MatInputModule } from '@angular/material/input';
40
+ import * as i3$2 from '@angular/material/timepicker';
41
+ import { MatTimepickerModule } from '@angular/material/timepicker';
34
42
 
35
43
  class MatecuSpinnerService {
36
44
  active$ = new BehaviorSubject(false);
@@ -1045,6 +1053,7 @@ class MatecuAutocompleteMultiple {
1045
1053
  }
1046
1054
  // ================= OUTPUT =================
1047
1055
  searchChange = new EventEmitter();
1056
+ valueChange = new EventEmitter();
1048
1057
  // ================= INTERNAL CONTROL =================
1049
1058
  control = new FormControl([], { nonNullable: true });
1050
1059
  controlValue$ = toSignal(this.control.valueChanges);
@@ -1093,6 +1102,7 @@ class MatecuAutocompleteMultiple {
1093
1102
  });
1094
1103
  this.control.valueChanges.pipe(takeUntilDestroyed()).subscribe((value) => {
1095
1104
  this.onChange(value);
1105
+ this.valueChange.emit(value);
1096
1106
  this.stateChanges.next();
1097
1107
  });
1098
1108
  effect(() => {
@@ -1216,7 +1226,7 @@ class MatecuAutocompleteMultiple {
1216
1226
  };
1217
1227
  }
1218
1228
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: MatecuAutocompleteMultiple, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
1219
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: MatecuAutocompleteMultiple, isStandalone: true, selector: "matecu-autocomplete-multiple", inputs: { placeholder: "placeholder", loading: "loading", searchChangeDebounceTime: "searchChangeDebounceTime", enableSelectAll: "enableSelectAll", readonly: "readonly", selectAllLabel: "selectAllLabel", clearAllLabel: "clearAllLabel", showTooltip: "showTooltip", filterFn: "filterFn", options: "options" }, outputs: { searchChange: "searchChange" }, providers: [
1229
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: MatecuAutocompleteMultiple, isStandalone: true, selector: "matecu-autocomplete-multiple", inputs: { placeholder: "placeholder", loading: "loading", searchChangeDebounceTime: "searchChangeDebounceTime", enableSelectAll: "enableSelectAll", readonly: "readonly", selectAllLabel: "selectAllLabel", clearAllLabel: "clearAllLabel", showTooltip: "showTooltip", filterFn: "filterFn", options: "options" }, outputs: { searchChange: "searchChange", valueChange: "valueChange" }, providers: [
1220
1230
  {
1221
1231
  provide: NG_VALUE_ACCESSOR,
1222
1232
  useExisting: forwardRef(() => MatecuAutocompleteMultiple),
@@ -1274,6 +1284,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
1274
1284
  args: [{ required: true }]
1275
1285
  }], searchChange: [{
1276
1286
  type: Output
1287
+ }], valueChange: [{
1288
+ type: Output
1277
1289
  }], autocompleteTrigger: [{
1278
1290
  type: ViewChild,
1279
1291
  args: [MatAutocompleteTrigger]
@@ -1721,6 +1733,204 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
1721
1733
  type: Output
1722
1734
  }] } });
1723
1735
 
1736
+ class MatecuDatetimePicker {
1737
+ value = null;
1738
+ disabled = false;
1739
+ dateLabel = 'Select date';
1740
+ timeLabel = 'Select time';
1741
+ apparance = 'fill';
1742
+ matTimepickerMin = null;
1743
+ matTimepickerMax = null;
1744
+ minDate = null;
1745
+ maxDate = null;
1746
+ timeInterval = null;
1747
+ timeOptions = null;
1748
+ matDatepickerFilter = null;
1749
+ valueChange = new EventEmitter();
1750
+ onChange = () => { };
1751
+ onTouched = () => { };
1752
+ writeValue(value) {
1753
+ this.value = value;
1754
+ }
1755
+ registerOnChange(fn) {
1756
+ this.onChange = fn;
1757
+ }
1758
+ registerOnTouched(fn) {
1759
+ this.onTouched = fn;
1760
+ }
1761
+ setDisabledState(isDisabled) {
1762
+ this.disabled = isDisabled;
1763
+ }
1764
+ onValueChange(value) {
1765
+ this.value = value;
1766
+ this.onChange(value);
1767
+ this.valueChange.emit(value);
1768
+ }
1769
+ onBlur() {
1770
+ this.onTouched();
1771
+ }
1772
+ validate(control) {
1773
+ if (!control.value) {
1774
+ return null;
1775
+ }
1776
+ if (!this.validateDateObject(control.value)) {
1777
+ return { invalidDate: true };
1778
+ }
1779
+ const dateValue = control.value;
1780
+ if (this.minDate && dateValue < this.minDate) {
1781
+ return { minDate: { min: this.minDate, actual: dateValue } };
1782
+ }
1783
+ if (this.maxDate && dateValue > this.maxDate) {
1784
+ return { maxDate: { max: this.maxDate, actual: dateValue } };
1785
+ }
1786
+ // Validar tiempo mínimo
1787
+ if (this.matTimepickerMin) {
1788
+ const minTimeError = this.validateMinTime(dateValue, this.matTimepickerMin);
1789
+ if (minTimeError) {
1790
+ return minTimeError;
1791
+ }
1792
+ }
1793
+ // Validar tiempo máximo
1794
+ if (this.matTimepickerMax) {
1795
+ const maxTimeError = this.validateMaxTime(dateValue, this.matTimepickerMax);
1796
+ if (maxTimeError) {
1797
+ return maxTimeError;
1798
+ }
1799
+ }
1800
+ // Validar contra timeOptions si están disponibles
1801
+ if (this.timeOptions && this.timeOptions.length > 0) {
1802
+ const timeOptionsError = this.validateTimeOptions(dateValue, this.timeOptions);
1803
+ if (timeOptionsError) {
1804
+ return timeOptionsError;
1805
+ }
1806
+ }
1807
+ return null;
1808
+ }
1809
+ validateMinTime(date, minTimeStr) {
1810
+ const { hours: minHours, minutes: minMinutes } = this.parseTimeString(minTimeStr);
1811
+ const dateHours = date.getHours();
1812
+ const dateMinutes = date.getMinutes();
1813
+ const minTotalMinutes = minHours * 60 + minMinutes;
1814
+ const dateTotalMinutes = dateHours * 60 + dateMinutes;
1815
+ if (dateTotalMinutes < minTotalMinutes) {
1816
+ return { minTime: { min: minTimeStr, actual: this.formatTime(dateHours, dateMinutes) } };
1817
+ }
1818
+ return null;
1819
+ }
1820
+ validateMaxTime(date, maxTimeStr) {
1821
+ const { hours: maxHours, minutes: maxMinutes } = this.parseTimeString(maxTimeStr);
1822
+ const dateHours = date.getHours();
1823
+ const dateMinutes = date.getMinutes();
1824
+ const maxTotalMinutes = maxHours * 60 + maxMinutes;
1825
+ const dateTotalMinutes = dateHours * 60 + dateMinutes;
1826
+ if (dateTotalMinutes > maxTotalMinutes) {
1827
+ return { maxTime: { max: maxTimeStr, actual: this.formatTime(dateHours, dateMinutes) } };
1828
+ }
1829
+ return null;
1830
+ }
1831
+ validateTimeOptions(date, timeOptions) {
1832
+ const dateHours = date.getHours();
1833
+ const dateMinutes = date.getMinutes();
1834
+ const dateTotalMinutes = dateHours * 60 + dateMinutes;
1835
+ const isValidOption = timeOptions.some((option) => {
1836
+ if (!option.value || !(option.value instanceof Date)) {
1837
+ return false;
1838
+ }
1839
+ const optionHours = option.value.getHours();
1840
+ const optionMinutes = option.value.getMinutes();
1841
+ const optionTotalMinutes = optionHours * 60 + optionMinutes;
1842
+ return dateTotalMinutes === optionTotalMinutes;
1843
+ });
1844
+ if (!isValidOption) {
1845
+ return {
1846
+ invalidTimeOption: {
1847
+ available: timeOptions.map((o) => this.formatTime(o.value?.getHours() || 0, o.value?.getMinutes() || 0)),
1848
+ },
1849
+ };
1850
+ }
1851
+ return null;
1852
+ }
1853
+ parseTimeString(timeStr) {
1854
+ const [hoursStr, minutesStr] = timeStr.split(':');
1855
+ return {
1856
+ hours: parseInt(hoursStr, 10) || 0,
1857
+ minutes: parseInt(minutesStr, 10) || 0,
1858
+ };
1859
+ }
1860
+ formatTime(hours, minutes) {
1861
+ return `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}`;
1862
+ }
1863
+ onDateChange(value) {
1864
+ if (this.validateDateObject(value) && this.validateDateObject(this.value)) {
1865
+ value.setHours(this.value.getHours());
1866
+ value.setMinutes(this.value.getMinutes());
1867
+ value.setSeconds(this.value.getSeconds());
1868
+ }
1869
+ this.onValueChange(value);
1870
+ }
1871
+ validateDateObject(date) {
1872
+ return date instanceof Date && !isNaN(date.getTime());
1873
+ }
1874
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: MatecuDatetimePicker, deps: [], target: i0.ɵɵFactoryTarget.Component });
1875
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: MatecuDatetimePicker, isStandalone: true, selector: "matecu-datetime-picker", inputs: { dateLabel: "dateLabel", timeLabel: "timeLabel", apparance: "apparance", matTimepickerMin: "matTimepickerMin", matTimepickerMax: "matTimepickerMax", minDate: "minDate", maxDate: "maxDate", timeInterval: "timeInterval", timeOptions: "timeOptions", matDatepickerFilter: "matDatepickerFilter" }, outputs: { valueChange: "valueChange" }, providers: [
1876
+ provideNativeDateAdapter(),
1877
+ {
1878
+ provide: NG_VALUE_ACCESSOR,
1879
+ useExisting: MatecuDatetimePicker,
1880
+ multi: true,
1881
+ },
1882
+ {
1883
+ provide: NG_VALIDATORS,
1884
+ useExisting: MatecuDatetimePicker,
1885
+ multi: true,
1886
+ },
1887
+ ], ngImport: i0, template: "<mat-form-field [appearance]=\"apparance\">\n <mat-label>{{ dateLabel }}</mat-label>\n <input\n matInput\n [matDatepicker]=\"datepicker\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onDateChange($event)\"\n [disabled]=\"disabled\"\n [min]=\"minDate\"\n [max]=\"maxDate\"\n [matDatepickerFilter]=\"matDatepickerFilter\"\n (blur)=\"onBlur()\"\n />\n <mat-datepicker #datepicker />\n <mat-datepicker-toggle [for]=\"datepicker\" matSuffix />\n\n <mat-hint> <ng-content select=\"[mat-hint-date]\"></ng-content> </mat-hint>\n <mat-error> <ng-content select=\"[mat-error-date]\"></ng-content> </mat-error>\n</mat-form-field>\n\n<mat-form-field [appearance]=\"apparance\">\n <mat-label>{{ timeLabel }}</mat-label>\n <input\n matInput\n [matTimepicker]=\"timepicker\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [ngModelOptions]=\"{ updateOn: 'blur' }\"\n [disabled]=\"disabled\"\n [matTimepickerMin]=\"matTimepickerMin\"\n [matTimepickerMax]=\"matTimepickerMax\"\n (blur)=\"onBlur()\"\n />\n <mat-timepicker #timepicker [options]=\"timeOptions\" [interval]=\"timeInterval\" />\n <mat-timepicker-toggle [for]=\"timepicker\" matSuffix />\n\n <mat-hint> <ng-content select=\"[mat-hint-time]\"></ng-content> </mat-hint>\n <mat-error> <ng-content select=\"[mat-error-time]\"></ng-content> </mat-error>\n</mat-form-field>\n", styles: [":host{display:flex}:host>mat-form-field:last-of-type{max-width:140px}:host{gap:8px;--matecu-datetime-picker-mobile-bg: #f1f5f9}@media screen and (max-width:400px){:host{flex-direction:column;background-color:var(--matecu-datetime-picker-mobile-bg);gap:25px;padding:10px 10px 15px}}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1$4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i1$4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i1$4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatTimepickerModule }, { kind: "component", type: i3$2.MatTimepicker, selector: "mat-timepicker", inputs: ["interval", "options", "disableRipple", "aria-label", "aria-labelledby", "panelClass"], outputs: ["selected", "opened", "closed"], exportAs: ["matTimepicker"] }, { kind: "directive", type: i3$2.MatTimepickerInput, selector: "input[matTimepicker]", inputs: ["value", "matTimepicker", "matTimepickerMin", "matTimepickerMax", "matTimepickerOpenOnClick", "disabled"], outputs: ["valueChange"], exportAs: ["matTimepickerInput"] }, { kind: "component", type: i3$2.MatTimepickerToggle, selector: "mat-timepicker-toggle", inputs: ["for", "aria-label", "aria-labelledby", "disabled", "tabIndex", "disableRipple"], exportAs: ["matTimepickerToggle"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i4.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i4.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1888
+ }
1889
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: MatecuDatetimePicker, decorators: [{
1890
+ type: Component,
1891
+ args: [{ selector: 'matecu-datetime-picker', imports: [
1892
+ MatFormFieldModule,
1893
+ MatInputModule,
1894
+ MatTimepickerModule,
1895
+ MatDatepickerModule,
1896
+ FormsModule,
1897
+ ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
1898
+ provideNativeDateAdapter(),
1899
+ {
1900
+ provide: NG_VALUE_ACCESSOR,
1901
+ useExisting: MatecuDatetimePicker,
1902
+ multi: true,
1903
+ },
1904
+ {
1905
+ provide: NG_VALIDATORS,
1906
+ useExisting: MatecuDatetimePicker,
1907
+ multi: true,
1908
+ },
1909
+ ], template: "<mat-form-field [appearance]=\"apparance\">\n <mat-label>{{ dateLabel }}</mat-label>\n <input\n matInput\n [matDatepicker]=\"datepicker\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onDateChange($event)\"\n [disabled]=\"disabled\"\n [min]=\"minDate\"\n [max]=\"maxDate\"\n [matDatepickerFilter]=\"matDatepickerFilter\"\n (blur)=\"onBlur()\"\n />\n <mat-datepicker #datepicker />\n <mat-datepicker-toggle [for]=\"datepicker\" matSuffix />\n\n <mat-hint> <ng-content select=\"[mat-hint-date]\"></ng-content> </mat-hint>\n <mat-error> <ng-content select=\"[mat-error-date]\"></ng-content> </mat-error>\n</mat-form-field>\n\n<mat-form-field [appearance]=\"apparance\">\n <mat-label>{{ timeLabel }}</mat-label>\n <input\n matInput\n [matTimepicker]=\"timepicker\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [ngModelOptions]=\"{ updateOn: 'blur' }\"\n [disabled]=\"disabled\"\n [matTimepickerMin]=\"matTimepickerMin\"\n [matTimepickerMax]=\"matTimepickerMax\"\n (blur)=\"onBlur()\"\n />\n <mat-timepicker #timepicker [options]=\"timeOptions\" [interval]=\"timeInterval\" />\n <mat-timepicker-toggle [for]=\"timepicker\" matSuffix />\n\n <mat-hint> <ng-content select=\"[mat-hint-time]\"></ng-content> </mat-hint>\n <mat-error> <ng-content select=\"[mat-error-time]\"></ng-content> </mat-error>\n</mat-form-field>\n", styles: [":host{display:flex}:host>mat-form-field:last-of-type{max-width:140px}:host{gap:8px;--matecu-datetime-picker-mobile-bg: #f1f5f9}@media screen and (max-width:400px){:host{flex-direction:column;background-color:var(--matecu-datetime-picker-mobile-bg);gap:25px;padding:10px 10px 15px}}\n"] }]
1910
+ }], propDecorators: { dateLabel: [{
1911
+ type: Input
1912
+ }], timeLabel: [{
1913
+ type: Input
1914
+ }], apparance: [{
1915
+ type: Input
1916
+ }], matTimepickerMin: [{
1917
+ type: Input
1918
+ }], matTimepickerMax: [{
1919
+ type: Input
1920
+ }], minDate: [{
1921
+ type: Input
1922
+ }], maxDate: [{
1923
+ type: Input
1924
+ }], timeInterval: [{
1925
+ type: Input
1926
+ }], timeOptions: [{
1927
+ type: Input
1928
+ }], matDatepickerFilter: [{
1929
+ type: Input
1930
+ }], valueChange: [{
1931
+ type: Output
1932
+ }] } });
1933
+
1724
1934
  /*
1725
1935
  * Public API Surface of angular-matecu
1726
1936
  */
@@ -1732,5 +1942,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
1732
1942
  * Generated bundle index. Do not edit.
1733
1943
  */
1734
1944
 
1735
- export { FileInputState, MatecuAlertBoxComponent, MatecuAlertBoxModule, MatecuAlertBoxType, MatecuAlertDialogComponent, MatecuAlertSnackBarComponent, MatecuAutocomplete, MatecuAutocompleteMultiple, MatecuFileInput, MatecuSnackBarService, MatecuSpinnerComponent, MatecuSpinnerModule, MatecuSpinnerService, MatecuTopbarActionComponent, MatecuTopbarBodyComponent, MatecuTopbarFabComponent, MatecuTopbarHeaderColumnComponent, MatecuTopbarHeaderRowComponent, MatecuTopbarLayoutComponent, MatecuTopbarLayoutModule, MatecuTopbarSearchComponent, MatecuTopbarTitleComponent };
1945
+ export { FileInputState, MatecuAlertBoxComponent, MatecuAlertBoxModule, MatecuAlertBoxType, MatecuAlertDialogComponent, MatecuAlertSnackBarComponent, MatecuAutocomplete, MatecuAutocompleteMultiple, MatecuDatetimePicker, MatecuFileInput, MatecuSnackBarService, MatecuSpinnerComponent, MatecuSpinnerModule, MatecuSpinnerService, MatecuTopbarActionComponent, MatecuTopbarBodyComponent, MatecuTopbarFabComponent, MatecuTopbarHeaderColumnComponent, MatecuTopbarHeaderRowComponent, MatecuTopbarLayoutComponent, MatecuTopbarLayoutModule, MatecuTopbarSearchComponent, MatecuTopbarTitleComponent };
1736
1946
  //# sourceMappingURL=angular-matecu.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"angular-matecu.mjs","sources":["../../../projects/angular-matecu/src/lib/services/matecu-spinner.service.ts","../../../projects/angular-matecu/src/lib/components/matecu-spinner/matecu-spinner.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-spinner/matecu-spinner.component.html","../../../projects/angular-matecu/src/lib/modules/matecu-spinner/matecu-spinner.module.ts","../../../projects/angular-matecu/src/lib/components/matecu-topbar-layout/matecu-topbar-layout.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-topbar-layout/matecu-topbar-layout.component.html","../../../projects/angular-matecu/src/lib/components/matecu-topbar-title/matecu-topbar-title.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-topbar-title/matecu-topbar-title.component.html","../../../projects/angular-matecu/src/lib/components/matecu-topbar-body/matecu-topbar-body.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-topbar-body/matecu-topbar-body.component.html","../../../projects/angular-matecu/src/lib/components/matecu-topbar-fab/matecu-topbar-fab.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-topbar-fab/matecu-topbar-fab.component.html","../../../projects/angular-matecu/src/lib/components/matecu-topbar-search/matecu-topbar-search.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-topbar-search/matecu-topbar-search.component.html","../../../projects/angular-matecu/src/lib/components/matecu-topbar-action/matecu-topbar-action.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-topbar-action/matecu-topbar-action.component.html","../../../projects/angular-matecu/src/lib/components/matecu-topbar-header-row/matecu-topbar-header-row.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-topbar-header-row/matecu-topbar-header-row.component.html","../../../projects/angular-matecu/src/lib/components/matecu-topbar-header-column/matecu-topbar-header-column.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-topbar-header-column/matecu-topbar-header-column.component.html","../../../projects/angular-matecu/src/lib/modules/matecu-topbar-layout/matecu-topbar-layout.module.ts","../../../projects/angular-matecu/src/lib/types/matecu-altert-box-type.ts","../../../projects/angular-matecu/src/lib/components/matecu-alert-box/matecu-alert-box.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-alert-box/matecu-alert-box.component.html","../../../projects/angular-matecu/src/lib/components/matecu-alert-dialog/matecu-alert-dialog.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-alert-dialog/matecu-alert-dialog.component.html","../../../projects/angular-matecu/src/lib/components/matecu-alert-snack-bar/matecu-alert-snack-bar.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-alert-snack-bar/matecu-alert-snack-bar.component.html","../../../projects/angular-matecu/src/lib/modules/matecu-alert-box/matecu-alert-box.module.ts","../../../projects/angular-matecu/src/lib/services/matecu-snack-bar.service.ts","../../../projects/angular-matecu/src/lib/components/matecu-autocomplete/matecu-autocomplete.ts","../../../projects/angular-matecu/src/lib/components/matecu-autocomplete/matecu-autocomplete.html","../../../projects/angular-matecu/src/lib/components/matecu-autocomplete-multiple/matecu-autocomplete-multiple.ts","../../../projects/angular-matecu/src/lib/components/matecu-autocomplete-multiple/matecu-autocomplete-multiple.html","../../../projects/angular-matecu/src/lib/components/matecu-file-input/matecu-file-input.ts","../../../projects/angular-matecu/src/lib/components/matecu-file-input/matecu-file-input.html","../../../projects/angular-matecu/src/public-api.ts","../../../projects/angular-matecu/src/angular-matecu.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MatecuSpinnerService {\n private active$ = new BehaviorSubject<boolean>(false);\n private requestsKeys: string[] = [];\n constructor() {}\n\n watch(): Observable<boolean> {\n return this.active$.pipe();\n }\n add(customKey?: string): string {\n const key =\n typeof customKey === 'string' && customKey.length > 0 ? customKey : this.createKey();\n this.requestsKeys.push(key);\n this.updateStatus();\n return key;\n }\n remove(key: string): void {\n this.requestsKeys = this.requestsKeys.filter((requestKey) => requestKey !== key);\n this.updateStatus();\n }\n clear(): void {\n this.requestsKeys = [];\n this.updateStatus();\n }\n private updateStatus(): void {\n const active = this.requestsKeys.length > 0;\n this.active$.next(active);\n }\n private createKey(): string {\n const time = new Date().getTime();\n const complement = Math.random();\n return `${time}__${complement}`;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectorRef, Component, HostBinding, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil, tap } from 'rxjs/operators';\nimport { MatecuSpinnerService } from '../../services/matecu-spinner.service';\n@Component({\n selector: 'matecu-spinner',\n templateUrl: './matecu-spinner.component.html',\n styleUrls: ['./matecu-spinner.component.css'],\n standalone: true,\n imports: [CommonModule],\n})\nexport class MatecuSpinnerComponent implements OnInit, OnDestroy {\n private destroy$ = new Subject<void>();\n private hiddenClass = 'matecu-spinner--hidden';\n private activeCache = false;\n @HostBinding('class') className = 'matecu-spinner';\n @Input() color = '#2196F3';\n @Input() global = false;\n get active(): boolean {\n return this.activeCache;\n }\n @Input() set active(value: boolean) {\n if (this.global) {\n return;\n }\n this.activeCache = value;\n this.className = value\n ? this.className.replace(` ${this.hiddenClass}`, '')\n : (this.className += ` ${this.hiddenClass}`);\n }\n @Input() size = '70px';\n\n constructor(\n private spinnerService: MatecuSpinnerService,\n private cdr: ChangeDetectorRef,\n ) {}\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n ngOnInit(): void {\n if (this.global) {\n this.spinnerService\n .watch()\n .pipe(\n tap((value) => (this.activeCache = value)),\n tap(() => this.cdr.detectChanges()),\n takeUntil(this.destroy$),\n )\n .subscribe();\n }\n }\n}\n","@if(active){\n\n<svg xmlns:svg=\"http://www.w3.org/2000/svg\" [attr.width]=\"size\" [attr.height]=\"size\" xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.0\" viewBox=\"0 0 128 128\" xml:space=\"preserve\">\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"transparent\" />\n <g>\n <path class=\"matecu-spinner__100\" d=\"M122.5 69.25H96.47a33.1 33.1 0 0 0 0-10.5h26.05a5.25 5.25 0 0 1 0 10.5z\"\n [attr.fill]=\"color\" fill-opacity=\"1\" />\n <path class=\"matecu-spinner__30\"\n d=\"M112.04 97.83L89.47 84.8a33.1 33.1 0 0 0 5.25-9.1l22.57 13.03a5.25 5.25 0 0 1-5.28 9.1z\"\n [attr.fill]=\"color\" fill-opacity=\"0.3\" />\n <path class=\"matecu-spinner__30\"\n d=\"M88.68 117.35L75.65 94.78a33.1 33.1 0 0 0 9.1-5.25l13.02 22.57a5.25 5.25 0 1 1-9.1 5.25z\"\n [attr.fill]=\"color\" fill-opacity=\"0.3\" />\n <path class=\"matecu-spinner__30\" d=\"M58.7 122.57V96.5a33.1 33.1 0 0 0 10.5 0v26.07a5.25 5.25 0 0 1-10.5 0z\"\n [attr.fill]=\"color\" fill-opacity=\"0.3\" />\n <path class=\"matecu-spinner__30\"\n d=\"M30.1 112.1l13.04-22.57a33.1 33.1 0 0 0 9.1 5.25L39.2 117.35a5.25 5.25 0 1 1-9.1-5.25z\"\n [attr.fill]=\"color\" fill-opacity=\"0.3\" />\n <path class=\"matecu-spinner__30\"\n d=\"M10.6 88.74L33.16 75.7a33.1 33.1 0 0 0 5.25 9.1L15.88 97.83a5.25 5.25 0 1 1-5.25-9.1z\"\n [attr.fill]=\"color\" fill-opacity=\"0.3\" />\n <path class=\"matecu-spinner__40\" d=\"M5.37 58.75h26.06a33.1 33.1 0 0 0 0 10.5H5.37a5.25 5.25 0 0 1 0-10.5z\"\n [attr.fill]=\"color\" fill-opacity=\"0.4\" />\n <path class=\"matecu-spinner__50\"\n d=\"M15.85 30.17L38.4 43.2a33.1 33.1 0 0 0-5.24 9.1L10.6 39.25a5.25 5.25 0 1 1 5.25-9.1z\" [attr.fill]=\"color\"\n fill-opacity=\"0.5\" />\n <path class=\"matecu-spinner__60\"\n d=\"M39.2 10.65l13.03 22.57a33.1 33.1 0 0 0-9.1 5.25l-13-22.57a5.25 5.25 0 1 1 9.1-5.25z\" [attr.fill]=\"color\"\n fill-opacity=\"0.6\" />\n <path class=\"matecu-spinner__70\" d=\"M69.2 5.43V31.5a33.1 33.1 0 0 0-10.5 0V5.42a5.25 5.25 0 1 1 10.5 0z\"\n [attr.fill]=\"color\" fill-opacity=\"0.7\" />\n <path class=\"matecu-spinner__80\"\n d=\"M97.77 15.9L84.75 38.47a33.1 33.1 0 0 0-9.1-5.25l13.03-22.57a5.25 5.25 0 1 1 9.1 5.25z\"\n [attr.fill]=\"color\" fill-opacity=\"0.8\" />\n <path class=\"matecu-spinner__90\"\n d=\"M117.3 39.26L94.7 52.3a33.1 33.1 0 0 0-5.25-9.1l22.57-13.03a5.25 5.25 0 0 1 5.25 9.1z\"\n [attr.fill]=\"color\" fill-opacity=\"0.9\" />\n <animateTransform attributeName=\"transform\" type=\"rotate\"\n values=\"0 64 64;30 64 64;60 64 64;90 64 64;120 64 64;150 64 64;180 64 64;210 64 64;240 64 64;270 64 64;300 64 64;330 64 64\"\n calcMode=\"discrete\" dur=\"600ms\" repeatCount=\"indefinite\"></animateTransform>\n </g>\n</svg>\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatecuSpinnerComponent } from '../../components/matecu-spinner/matecu-spinner.component';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule, MatecuSpinnerComponent\n ],\n exports: [\n MatecuSpinnerComponent\n ]\n})\nexport class MatecuSpinnerModule { }\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n NgZone,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil, tap } from 'rxjs/operators';\n@Component({\n selector: 'matecu-topbar-layout',\n templateUrl: './matecu-topbar-layout.component.html',\n styleUrls: ['./matecu-topbar-layout.component.scss'],\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatIconModule, MatToolbarModule],\n})\nexport class MatecuTopbarLayoutComponent implements AfterViewInit, OnDestroy {\n private _scrolled = false;\n private _prominent = false;\n get scrolled() {\n return this._scrolled;\n }\n set scrolled(value: boolean) {\n this._scrolled = value;\n this.className = this.className.replace(/scrolled/g, '').trim();\n if (this.scrolled) {\n this.className = `${this.className} scrolled`;\n }\n }\n private destroy$ = new Subject<void>();\n @Input() mobileStyle = false;\n @Output() mobileStyleChange = new EventEmitter<boolean>();\n @Input() mobileWidth = 768;\n @Output() whenResize = new EventEmitter<number>();\n @Input() get prominent() {\n return this._prominent;\n }\n set prominent(value: boolean) {\n this._prominent = value;\n this.className = this.className.replace(/prominent/g, '').trim();\n if (this.prominent) {\n this.className = `${this.className} prominent`;\n }\n }\n @HostBinding('class') className = 'matecu-topbar-layout';\n @ViewChild('mtbBody') bodyElement?: ElementRef;\n\n constructor(\n private elementRef: ElementRef,\n private changeDetector: ChangeDetectorRef,\n private zone: NgZone\n ) {}\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n private spyScroll(scrollabe: HTMLElement) {\n if (!scrollabe) {\n return;\n }\n const maxScrollHeight = scrollabe.scrollHeight;\n const scrollableHeight = scrollabe.clientHeight;\n if (scrollableHeight > maxScrollHeight) {\n return;\n }\n const scrollPosition = scrollabe.scrollTop;\n this.scrolled = scrollPosition > 20;\n }\n ngAfterViewInit(): void {\n const layoutElement = this.elementRef.nativeElement;\n const resizeObserver = new ResizeObserver(() => {\n const width = layoutElement?.clientWidth;\n if (!width) {\n return;\n }\n this.mobileStyle = width <= this.mobileWidth;\n this.zone.run(() => {\n this.mobileStyleChange.emit(this.mobileStyle);\n this.whenResize.emit(width);\n });\n });\n resizeObserver.observe(layoutElement!);\n this.destroy$.pipe(tap(() => resizeObserver.disconnect())).subscribe();\n if (this.bodyElement) {\n fromEvent(this.bodyElement.nativeElement, 'scroll')\n .pipe(\n tap(() => this.spyScroll(this.bodyElement?.nativeElement!)),\n takeUntil(this.destroy$)\n )\n .subscribe();\n }\n }\n scrollTop() {\n if (!this.bodyElement) {\n return;\n }\n this.bodyElement.nativeElement.scroll({\n top: 0,\n behavior: 'smooth',\n });\n }\n}\n","<div class=\"matecu-topbar-layout__bar\">\n <ng-content select=\"matecu-topbar-header-row[first-row]\"></ng-content>\n <ng-content select=\"matecu-topbar-header-row[second-row]\"></ng-content>\n</div>\n<div class=\"matecu-topbar-layout__body\" #mtbBody>\n <ng-content select=\"matecu-topbar-body\"></ng-content>\n</div>\n","import { Component, HostBinding, OnInit } from '@angular/core';\n\n@Component({\n selector: 'matecu-topbar-title',\n templateUrl: './matecu-topbar-title.component.html',\n styleUrls: ['./matecu-topbar-title.component.scss'],\n standalone: true,\n})\nexport class MatecuTopbarTitleComponent implements OnInit {\n @HostBinding('class') className = 'matecu-topbar-title';\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<ng-content></ng-content>","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'matecu-topbar-body',\n templateUrl: './matecu-topbar-body.component.html',\n styleUrls: ['./matecu-topbar-body.component.scss'],\n standalone: true,\n})\nexport class MatecuTopbarBodyComponent {\n @HostBinding('class') className = 'matecu-topbar-body';\n}\n","<ng-content></ng-content>","import { CommonModule } from '@angular/common';\nimport { Component, HostBinding, Input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'matecu-topbar-fab',\n templateUrl: './matecu-topbar-fab.component.html',\n styleUrls: ['./matecu-topbar-fab.component.scss'],\n standalone: true,\n imports: [CommonModule, MatButtonModule],\n})\nexport class MatecuTopbarFabComponent {\n private _mobileStyle = false;\n private mainClassName = 'matecu-topbar-fab';\n @Input() display = true;\n @Input() get mobileStyle() {\n return this._mobileStyle;\n }\n set mobileStyle(value: boolean) {\n this._mobileStyle = value;\n this.className = this.className.replace(/mobile-style/g, '').trim();\n if (this._mobileStyle) {\n this.className = `${this.className} mobile-style`;\n }\n }\n\n @HostBinding('class') className = this.mainClassName;\n @HostBinding('style.display') get color() {\n return this.display ? 'flex' : 'none';\n }\n}\n","@if(display){\n<ng-content></ng-content>\n}","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Subject } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n map,\n takeUntil,\n tap,\n} from 'rxjs/operators';\n\n@Component({\n selector: 'matecu-topbar-search',\n templateUrl: './matecu-topbar-search.component.html',\n styleUrls: ['./matecu-topbar-search.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatIconModule,\n MatButtonModule,\n ],\n})\nexport class MatecuTopbarSearchComponent implements OnInit {\n hasValue = false;\n activeMobileSearch = false;\n inputCtrl = new FormControl('');\n private _value = '';\n private _mobileStyle = false;\n\n private destroy$ = new Subject<void>();\n @Input() display = true;\n @Input() placeholder = '';\n @Input() delyValueChanges = 300; // valor en milisegundos\n @Input() get value() {\n return this._value;\n }\n set value(v: string) {\n this._value = v;\n this.inputCtrl.setValue(v);\n }\n @Input() get mobileStyle() {\n return this._mobileStyle;\n }\n set mobileStyle(value: boolean) {\n this._mobileStyle = value;\n this.className = this.className.replace(/mobile-style/g, '').trim();\n if (this._mobileStyle) {\n this.className = `${this.className} mobile-style`;\n }\n }\n @Output() valueChange = new EventEmitter<string>();\n @HostBinding() className = 'matecu-topbar-search';\n @HostBinding('style.display') get color() {\n return this.display ? 'flex' : 'none';\n }\n ngOnInit(): void {\n this.inputCtrl.valueChanges\n .pipe(\n map((value) => value ?? ''),\n tap(this.updateHasValueFn()),\n debounceTime(this.delyValueChanges),\n distinctUntilChanged(),\n tap((value) => this.valueChange.emit(value!)),\n takeUntil(this.destroy$)\n )\n .subscribe();\n }\n toggleActiveMobildeSearch() {\n this.activeMobileSearch = !this.activeMobileSearch;\n }\n clearSearch() {\n this.inputCtrl.setValue('');\n this.activeMobileSearch = false;\n }\n updateHasValueFn() {\n return (value: string): void => {\n this.hasValue = value.length > 0;\n };\n }\n}\n","@if(display){\n<button class=\"matecu-topbar-search-mobile-only\" [ngClass]=\"{ 'mobile-style': mobileStyle }\"\n (click)=\"toggleActiveMobildeSearch()\">\n <mat-icon>search</mat-icon>\n</button>\n<div class=\"matecu-topbar-search\" [ngClass]=\"{\n 'mobile-style': mobileStyle,\n 'active-mobile': activeMobileSearch\n }\">\n <span class=\"matecu-topbar-search__icon matecu-topbar-search__icon--search\">\n <mat-icon>search</mat-icon>\n </span>\n @if(hasValue || mobileStyle){\n <button class=\"matecu-topbar-search__icon matecu-topbar-search__icon--clear\" (click)=\"clearSearch()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n <input type=\"text\" [placeholder]=\"placeholder\" [formControl]=\"inputCtrl\" />\n</div>\n}","import { Component, HostBinding, OnInit } from '@angular/core';\n\n@Component({\n selector: 'matecu-topbar-action',\n templateUrl: './matecu-topbar-action.component.html',\n styleUrls: ['./matecu-topbar-action.component.scss'],\n standalone: true,\n})\nexport class MatecuTopbarActionComponent implements OnInit {\n @HostBinding('class') className = 'matecu-topbar-action';\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import { Component, HostBinding, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatToolbarModule } from '@angular/material/toolbar';\n\n@Component({\n selector: 'matecu-topbar-header-row',\n standalone: true,\n imports: [CommonModule, MatToolbarModule],\n templateUrl: './matecu-topbar-header-row.component.html',\n styleUrls: ['./matecu-topbar-header-row.component.scss'],\n})\nexport class MatecuTopbarHeaderRowComponent {\n @Input() display = true;\n @HostBinding('class') className = 'matecu-topbar-header-row';\n @HostBinding('style.display') get color() {\n return this.display ? 'flex' : 'none';\n }\n}\n","@if(display){\n<div class=\"matecu-topbar-header-row__column matecu-topbar-header-row__column--left\">\n <ng-content select=\"matecu-topbar-header-column[left-column]\"></ng-content>\n</div>\n\n<div class=\"matecu-topbar-header-row__column matecu-topbar-header-row__column--right\">\n <ng-content select=\"matecu-topbar-header-column[right-column]\"></ng-content>\n</div>\n}","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'matecu-topbar-header-column',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './matecu-topbar-header-column.component.html',\n styleUrls: ['./matecu-topbar-header-column.component.scss'],\n})\nexport class MatecuTopbarHeaderColumnComponent {}\n","<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatecuTopbarLayoutComponent } from '../../components/matecu-topbar-layout/matecu-topbar-layout.component';\nimport { MatecuTopbarTitleComponent } from '../../components/matecu-topbar-title/matecu-topbar-title.component';\nimport { MatecuTopbarBodyComponent } from '../../components/matecu-topbar-body/matecu-topbar-body.component';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatecuTopbarFabComponent } from '../../components/matecu-topbar-fab/matecu-topbar-fab.component';\nimport { MatecuTopbarSearchComponent } from '../../components/matecu-topbar-search/matecu-topbar-search.component';\nimport { MatecuTopbarActionComponent } from '../../components/matecu-topbar-action/matecu-topbar-action.component';\nimport { MatecuTopbarHeaderRowComponent } from '../../components/matecu-topbar-header-row/matecu-topbar-header-row.component';\nimport { MatecuTopbarHeaderColumnComponent } from '../../components/matecu-topbar-header-column/matecu-topbar-header-column.component';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n MatToolbarModule,\n MatIconModule,\n FormsModule,\n ReactiveFormsModule,\n MatButtonModule,\n MatecuTopbarLayoutComponent,\n MatecuTopbarTitleComponent,\n MatecuTopbarBodyComponent,\n MatecuTopbarFabComponent,\n MatecuTopbarSearchComponent,\n MatecuTopbarActionComponent,\n MatecuTopbarHeaderRowComponent,\n MatecuTopbarHeaderColumnComponent,\n ],\n exports: [\n MatecuTopbarLayoutComponent,\n MatecuTopbarTitleComponent,\n MatecuTopbarBodyComponent,\n MatecuTopbarFabComponent,\n MatecuTopbarSearchComponent,\n MatecuTopbarActionComponent,\n MatecuTopbarHeaderRowComponent,\n MatecuTopbarHeaderColumnComponent,\n ],\n})\nexport class MatecuTopbarLayoutModule {}\n","export enum MatecuAlertBoxType {\n warning = 'warning',\n success = 'success',\n danger = 'danger',\n info = 'info',\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatecuAlertBoxType } from '../../types/matecu-altert-box-type';\n\n@Component({\n selector: 'matecu-alert-box',\n templateUrl: './matecu-alert-box.component.html',\n styleUrls: ['./matecu-alert-box.component.scss'],\n standalone: true,\n imports: [CommonModule, MatIconModule]\n})\nexport class MatecuAlertBoxComponent implements OnInit {\n classNameBase = 'matecu-alert-box';\n alertColor?: MatecuAlertBoxType | undefined | string | null;\n iconValue?: string | null | undefined;\n private alertIcon = false;\n get color(): MatecuAlertBoxType | undefined | string | null {\n return this.alertColor;\n }\n @Input() set color(value: MatecuAlertBoxType | undefined | string | null) {\n this.alertColor = value;\n if (!!value) {\n this.className = `${this.classNameBase} ${this.classNameBase}--${value}`;\n } else {\n this.className = this.classNameBase;\n }\n this.updateIcon();\n }\n get icon(): boolean {\n return this.alertIcon;\n }\n @Input() set icon(value: boolean) {\n this.alertIcon = value;\n }\n @HostBinding('class') className = this.classNameBase;\n constructor() { }\n\n ngOnInit(): void { }\n\n private updateIcon(): void {\n switch (this.color) {\n case MatecuAlertBoxType.danger:\n this.iconValue = 'dangerous';\n break;\n case MatecuAlertBoxType.warning:\n this.iconValue = 'warning';\n break;\n case MatecuAlertBoxType.success:\n this.iconValue = 'check_circle';\n break;\n case MatecuAlertBoxType.info:\n this.iconValue = 'info';\n break;\n default:\n this.iconValue = null;\n break;\n }\n }\n}\n","@if (icon && iconValue) {\n<div class=\"matecu-alert-box__icon\">\n <mat-icon>{{iconValue}}</mat-icon>\n</div>\n}\n<div class=\"matecu-alert-box__content\">\n <ng-content>\n\n\n </ng-content>\n</div>","import { CommonModule } from '@angular/common';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogRef, MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatecuAlertDialogData } from '../../types/matecu-alert-dialog';\nimport { MatecuAlertBoxComponent } from '../matecu-alert-box/matecu-alert-box.component';\n@Component({\n selector: 'matecu-alert-dialog',\n templateUrl: './matecu-alert-dialog.component.html',\n styleUrls: ['./matecu-alert-dialog.component.scss'],\n standalone: true,\n imports: [CommonModule, MatDialogModule, MatIconModule, MatecuAlertBoxComponent, MatButtonModule]\n})\nexport class MatecuAlertDialogComponent implements OnInit {\n hasTitle = false;\n hasDismissBtn = false;\n hasActionBtn = false;\n showActions = false;\n constructor(\n @Inject(MAT_DIALOG_DATA) public dialogData: MatecuAlertDialogData,\n public dialogRef: MatDialogRef<MatecuAlertDialogComponent>\n ) {\n this.setHasTitle();\n this.setHasDismissBtn();\n this.setHasActionBtn();\n this.setShowActions();\n }\n\n ngOnInit(): void { }\n\n activateAction(): void {\n this.dialogRef.close(true);\n }\n\n private setHasTitle(): void {\n this.hasTitle = this.isValidString(this.dialogData.title);\n }\n private setHasDismissBtn(): void {\n this.hasDismissBtn = this.isValidString(this.dialogData.dismissText);\n }\n\n private setHasActionBtn(): void {\n this.hasActionBtn = this.isValidString(this.dialogData.action);\n }\n private setShowActions(): void {\n this.showActions = this.hasActionBtn || this.hasDismissBtn;\n }\n private isValidString(str: string | null | undefined): boolean {\n const isValid = typeof str === 'string' && str.trim().length > 0;\n return isValid;\n }\n}\n","@if (hasTitle) {\n\n<h2 mat-dialog-title>{{dialogData.title}}</h2>\n}\n<mat-dialog-content>\n\n <matecu-alert-box [color]=\"dialogData.type\" [icon]=\"!!dialogData.icon\">\n {{dialogData.message}}\n </matecu-alert-box>\n\n</mat-dialog-content>\n@if (showActions) {\n\n<mat-dialog-actions align=\"end\">\n @if (hasDismissBtn) {\n <button mat-button color=\"primary\" tabindex=\"-1\" mat-dialog-close>{{dialogData.dismissText}}\n </button>\n }\n @if(hasActionBtn) {\n <button mat-button color=\"primary\" tabindex=\"-2\" (click)=\"activateAction()\">{{dialogData.action}}\n </button>\n }\n</mat-dialog-actions>\n}","import { CommonModule } from '@angular/common';\nimport { Component, HostBinding, Inject, OnInit } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSnackBarModule, MatSnackBarRef, MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\nimport { MatecuAlertSnackBarData } from '../../types/matecu-alert-snackbar';\nimport { MatecuAlertBoxType } from '../../types/matecu-altert-box-type';\n\n@Component({\n selector: 'matecu-alert-snack-bar',\n templateUrl: './matecu-alert-snack-bar.component.html',\n styleUrls: ['./matecu-alert-snack-bar.component.scss'],\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatSnackBarModule]\n})\nexport class MatecuAlertSnackBarComponent {\n\n title: string;\n message: string;\n action?: string;\n classNameBase = 'matecu-alert-snackbar';\n alertColor!: MatecuAlertBoxType;\n get color(): MatecuAlertBoxType {\n return this.alertColor;\n }\n set color(value: MatecuAlertBoxType) {\n this.alertColor = value;\n this.className = `${this.classNameBase} ${this.classNameBase}--${value}`;\n }\n @HostBinding('class') className = this.classNameBase;\n constructor(\n @Inject(MAT_SNACK_BAR_DATA) public data: MatecuAlertSnackBarData,\n private snackBarRef: MatSnackBarRef<MatecuAlertSnackBarComponent>) {\n this.title = data.title;\n this.message = data.message;\n this.action = data.action;\n this.color = data.type;\n\n }\n\n dismiss(): void {\n this.snackBarRef.dismissWithAction();\n }\n\n\n}\n","<div>\n <strong>{{title}}</strong> &nbsp;\n <span>{{message}}</span>\n</div>\n@if(action?.length){\n\n<div>\n <button mat-button color=\"accent\" (click)=\"dismiss()\">{{action}}</button>\n</div>\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatecuAlertBoxComponent } from '../../components/matecu-alert-box/matecu-alert-box.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatecuAlertDialogComponent } from '../../components/matecu-alert-dialog/matecu-alert-dialog.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatecuAlertSnackBarComponent } from '../../components/matecu-alert-snack-bar/matecu-alert-snack-bar.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, MatIconModule, MatDialogModule, MatButtonModule, MatSnackBarModule, MatecuAlertBoxComponent, MatecuAlertDialogComponent, MatecuAlertSnackBarComponent],\n exports: [MatecuAlertBoxComponent]\n})\nexport class MatecuAlertBoxModule { }\n","import { Injectable } from '@angular/core';\nimport { MatSnackBar, MatSnackBarConfig, MatSnackBarRef, TextOnlySnackBar } from '@angular/material/snack-bar';\nimport { MatecuAlertSnackBarComponent } from '../components/matecu-alert-snack-bar/matecu-alert-snack-bar.component';\nimport { MatecuAlertSnackBarData } from '../types/matecu-alert-snackbar';\nimport { MatecuAlertBoxType } from '../types/matecu-altert-box-type';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MatecuSnackBarService {\n\n constructor(private snackBar: MatSnackBar) { }\n\n\n\n openError(error: string | Error, title?: string | null, action?: string, config?: MatSnackBarConfig<any>): MatSnackBarRef<MatecuAlertSnackBarComponent> {\n const message = this.getErrorMessage(error);\n const titleStr = title || 'ERROR';\n const type = MatecuAlertBoxType.danger;\n return this.openAlert(message, titleStr, type, action, config);\n }\n openSuccess(message: string, title?: string | null, action?: string, config?: MatSnackBarConfig<any>): MatSnackBarRef<MatecuAlertSnackBarComponent> {\n const titleStr = title || 'OK';\n const type = MatecuAlertBoxType.success;\n return this.openAlert(message, titleStr, type, action, config);\n }\n openWarning(message: string, title?: string | null, action?: string, config?: MatSnackBarConfig<any>): MatSnackBarRef<MatecuAlertSnackBarComponent> {\n const titleStr = title || 'WARNING';\n const type = MatecuAlertBoxType.warning;\n return this.openAlert(message, titleStr, type, action, config);\n }\n openInfo(message: string, title?: string | null, action?: string, config?: MatSnackBarConfig<any>): MatSnackBarRef<MatecuAlertSnackBarComponent> {\n const titleStr = title || 'INFO';\n const type = MatecuAlertBoxType.info;\n return this.openAlert(message, titleStr, type, action, config);\n }\n open(message: string, action?: string, config?: MatSnackBarConfig<any>): MatSnackBarRef<TextOnlySnackBar> {\n return this.snackBar.open(message, action, config);\n }\n dismiss(): void {\n this.snackBar.dismiss()\n }\n private openAlert(message: string, title: string, type: MatecuAlertBoxType, action?: string, config?: MatSnackBarConfig<any>) {\n\n const data: MatecuAlertSnackBarData = {\n message,\n title,\n action,\n type\n }\n const dialogConfig = { ...config, data }\n\n return this.snackBar.openFromComponent(MatecuAlertSnackBarComponent, dialogConfig);\n }\n\n private getErrorMessage(err: string | Error): string {\n const error = new Error()\n if (typeof err === 'string') {\n return err;\n }\n if (err instanceof Error) {\n return err.message;\n }\n return '';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n OnInit,\n OnDestroy,\n ElementRef,\n DoCheck,\n Injector,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n NgControl,\n} from '@angular/forms';\nimport { FormControl } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { Observable, startWith, map, Subject, tap, combineLatest, debounceTime } from 'rxjs';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n MatecuAutocompleteFilterFn,\n MatecuAutocompleteOption,\n} from '../../types/matecu-autocomplete';\n\n@Component({\n selector: 'matecu-autocomplete',\n standalone: true,\n imports: [\n CommonModule,\n MatAutocompleteModule,\n MatDividerModule,\n FormsModule,\n ReactiveFormsModule,\n MatProgressSpinnerModule,\n ],\n templateUrl: './matecu-autocomplete.html',\n styleUrls: ['./matecu-autocomplete.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: MatecuAutocomplete,\n multi: true,\n },\n {\n provide: MatFormFieldControl,\n useExisting: MatecuAutocomplete,\n },\n ],\n})\nexport class MatecuAutocomplete\n implements\n ControlValueAccessor,\n MatFormFieldControl<string>,\n OnChanges,\n OnInit,\n OnDestroy,\n DoCheck\n{\n @Input() options: MatecuAutocompleteOption[] = [];\n @Input() allowCreate = false;\n @Input() loading = false;\n @Input() readonly = false;\n @Input() filterFn: MatecuAutocompleteFilterFn = this.createFilterFn();\n @Input() searchChangeDebounceTime = 300;\n // MatFormFieldControl inputs\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n private _placeholder = '';\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _required = false;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this.setDisabledState(this._disabled);\n this.stateChanges.next();\n }\n private _disabled = false;\n\n @Input()\n get value(): string | null {\n return this.internalValue;\n }\n set value(value: string | null) {\n this.writeValue(value);\n this.stateChanges.next();\n }\n\n @Output() searchChange = new EventEmitter<string>();\n @Output() create = new EventEmitter<string>();\n @Output() valueChange = new EventEmitter<string | null>();\n\n // MatFormFieldControl properties\n static nextId = 0;\n readonly stateChanges = new Subject<void>();\n readonly id = `matecu-autocomplete-${MatecuAutocomplete.nextId++}`;\n ngControl: NgControl | null = null;\n focused = false;\n lastSearchText: string | null = null;\n readonly controlType = 'matecu-autocomplete';\n readonly autofilled = false;\n\n inputControl = new FormControl<string | null>(null);\n filteredOptions$!: Observable<MatecuAutocompleteOption[]>;\n\n private internalValue: string | null = null;\n private focusMonitor: FocusMonitor;\n private elementRef: ElementRef<HTMLElement>;\n private injector: Injector;\n private optionMap = new Map<string, string>();\n\n private onChange: any = () => {};\n private onTouched: any = () => {};\n get empty(): boolean {\n const isEmpty = this.inputControl.value === '' || !this.inputControl.value;\n return isEmpty;\n }\n\n get shouldLabelFloat(): boolean {\n const shouldFloat = this.focused || !this.empty;\n return shouldFloat;\n }\n\n get errorState(): boolean {\n return !!(this.ngControl && this.ngControl.invalid && this.ngControl.touched);\n }\n get showCreateOption(): boolean {\n const value = this.inputControl.value;\n\n return (\n this.allowCreate &&\n typeof value === 'string' &&\n this.internalValue !== value &&\n this.options.some((option) => option[1].toLowerCase() === value.toLowerCase()) === false\n );\n }\n\n constructor(focusMonitor: FocusMonitor, elementRef: ElementRef<HTMLElement>, injector: Injector) {\n this.focusMonitor = focusMonitor;\n this.elementRef = elementRef;\n this.injector = injector;\n }\n\n ngOnInit() {\n // Intentar obtener NgControl de forma segura\n try {\n this.ngControl = this.injector.get(NgControl, null);\n } catch (error) {\n // Ignorar si no se puede obtener NgControl\n this.ngControl = null;\n }\n\n const value$ = this.inputControl.valueChanges.pipe(startWith(this.inputControl.value ?? ''));\n\n this.filteredOptions$ = combineLatest([value$]).pipe(\n map(([value]) => this.filter(value ?? '')),\n );\n\n this.inputControl.valueChanges\n .pipe(\n // Almacena el último valor valido para la búsqueda esto se utiliza para enviar una emición para crear un elemento\n tap((value) => (this.lastSearchText = value ?? this.lastSearchText)),\n // CUando se escribe algo se limpian los valores seleccionados para que el usuario pueda seleccionar una opción o crear una nueva\n tap(() => this.clearValue()),\n debounceTime(this.searchChangeDebounceTime),\n )\n .subscribe((value) => {\n queueMicrotask(() => {\n this.searchChange.emit(value ?? '');\n });\n });\n\n this.focusMonitor.monitor(this.elementRef, true).subscribe((focused) => {\n if (!!focused !== this.focused) {\n this.focused = !!focused;\n this.stateChanges.next();\n }\n });\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n const newErrorState = !!(this.ngControl.invalid && this.ngControl.touched);\n if (newErrorState !== this.errorState) {\n this.stateChanges.next();\n }\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['options']) {\n this.rebuildOptionMap();\n this.updateInputLabelFromValue();\n this.stateChanges.next();\n }\n\n if (changes['placeholder'] || changes['required'] || changes['disabled']) {\n this.stateChanges.next();\n }\n }\n\n private filter(search: string): MatecuAutocompleteOption[] {\n return this.options.filter((option) => this.filterFn(option[1], search));\n }\n\n private createFilterFn(): (v1: string, v2: string) => boolean {\n return (v1: string, v2: string): boolean => {\n return v1.toLowerCase().includes(v2.toLowerCase());\n };\n }\n\n displayLabel = (value: string | null): string => {\n if (value === null || value === undefined) return '';\n\n if (!Array.isArray(this.options)) {\n return '';\n }\n return this.optionMap.get(value) ?? '';\n };\n\n onOptionSelected(value: string) {\n if (!value || this.readonly || this.disabled) {\n return;\n }\n this.internalValue = value;\n this.inputControl.setValue(value, { emitEvent: false });\n this.onChange(value);\n this.onTouched();\n this.valueChange.emit(value);\n }\n\n onCreateClick() {\n if (\n !this.lastSearchText ||\n this.lastSearchText.trim() === '' ||\n this.options.some(\n (option) => option[1].toLowerCase() === this.lastSearchText!.toLowerCase(),\n ) ||\n this.options.some((option) => option[1].toLowerCase() === this.lastSearchText!.toLowerCase())\n ) {\n return;\n }\n this.create.emit(this.lastSearchText);\n }\n\n private updateInputLabelFromValue() {\n if (this.internalValue !== null) {\n const label = this.displayLabel(this.internalValue);\n this.inputControl.setValue(label, { emitEvent: false });\n }\n }\n\n // ControlValueAccessor\n\n writeValue(value: string | null): void {\n this.internalValue = value;\n this.updateInputLabelFromValue();\n this.stateChanges.next();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._disabled = isDisabled;\n isDisabled ? this.inputControl.disable() : this.inputControl.enable();\n this.stateChanges.next();\n }\n\n // MatFormFieldControl methods\n focus(options?: FocusOptions): void {\n this.elementRef.nativeElement.querySelector('input')?.focus(options);\n }\n\n onContainerClick(): void {\n this.focus();\n }\n\n setDescribedByIds(ids: string[]): void {\n const input = this.elementRef.nativeElement.querySelector('input');\n if (input) {\n input.setAttribute('aria-describedby', ids.join(' '));\n }\n }\n private rebuildOptionMap() {\n this.optionMap.clear();\n\n for (const [value, label] of this.options ?? []) {\n this.optionMap.set(value, label);\n }\n }\n\n private clearValue() {\n this.internalValue = null;\n this.onChange(null);\n this.onTouched();\n this.valueChange.emit(null);\n }\n}\n","<input matInput type=\"text\" matInput [formControl]=\"inputControl\" [matAutocomplete]=\"auto\" [class.loading]=\"loading\"\n [disabled]=\"disabled\" [readonly]=\"readonly\" />\n\n\n<mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onOptionSelected($event.option.value)\"\n [displayWith]=\"displayLabel\">\n\n @for (option of filteredOptions$ | async; track $index) {\n\n <mat-option [value]=\"option[0]\">\n {{ option[1] }}\n </mat-option>\n\n }\n\n <!-- Crear nuevo -->\n @if(allowCreate){\n\n <mat-divider></mat-divider>\n\n @if(showCreateOption ){\n <mat-option (click)=\"onCreateClick()\" class=\"create-option\">\n <span>➕</span><span>\" {{ inputControl.value }}\"</span>\n\n </mat-option>\n }\n }\n\n</mat-autocomplete>\n\n<!-- Spinner -->\n@if(loading){\n<mat-progress-spinner class=\"loading-spinner\" diameter=\"20\" mode=\"indeterminate\"\n style=\"position:absolute; right:10px; top:50%; transform:translateY(-50%);\">\n</mat-progress-spinner>\n}","import {\n Component,\n Input,\n Output,\n EventEmitter,\n forwardRef,\n OnDestroy,\n signal,\n computed,\n effect,\n inject,\n OnInit,\n Injector,\n} from '@angular/core';\n\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n FormControl,\n ReactiveFormsModule,\n} from '@angular/forms';\n\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { NgControl } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { CdkDragDrop, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { CdkFixedSizeVirtualScroll, ScrollingModule } from '@angular/cdk/scrolling';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\n\nimport { ViewChild } from '@angular/core';\nimport { MatAutocompleteTrigger } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport {\n MatecuAutocompleteFilterFn,\n MatecuAutocompleteOption,\n} from '../../types/matecu-autocomplete';\n\n@Component({\n selector: 'matecu-autocomplete-multiple',\n standalone: true,\n imports: [\n ReactiveFormsModule,\n MatChipsModule,\n DragDropModule,\n MatIconModule,\n MatProgressSpinnerModule,\n MatAutocompleteModule,\n ScrollingModule,\n MatButtonModule,\n MatTooltipModule,\n ],\n templateUrl: './matecu-autocomplete-multiple.html',\n styleUrls: ['./matecu-autocomplete-multiple.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatecuAutocompleteMultiple),\n multi: true,\n },\n {\n provide: MatFormFieldControl,\n useExisting: MatecuAutocompleteMultiple,\n },\n ],\n})\nexport class MatecuAutocompleteMultiple\n implements ControlValueAccessor, MatFormFieldControl<string[]>, OnDestroy, OnInit\n{\n static nextId = 0;\n\n // ================= INPUTS =================\n\n @Input() placeholder = '';\n @Input() loading = false;\n @Input() searchChangeDebounceTime = 300;\n @Input() enableSelectAll = true;\n @Input() readonly = false;\n @Input() selectAllLabel = 'Select All';\n @Input() clearAllLabel = 'Clear All';\n @Input() showTooltip = true;\n @Input() filterFn: MatecuAutocompleteFilterFn = this.createFilterFn();\n private _options = signal<MatecuAutocompleteOption[]>([]);\n\n @Input({ required: true })\n set options(value: MatecuAutocompleteOption[]) {\n this._options.set(value ?? []);\n }\n\n get options() {\n return this._options();\n }\n\n // ================= OUTPUT =================\n\n @Output() searchChange = new EventEmitter<string>();\n\n // ================= INTERNAL CONTROL =================\n\n control = new FormControl<string[]>([], { nonNullable: true });\n controlValue$ = toSignal(this.control.valueChanges);\n searchControl = new FormControl<string>('', { nonNullable: true });\n @ViewChild(MatAutocompleteTrigger)\n autocompleteTrigger!: MatAutocompleteTrigger;\n\n // ================= SIGNALS =================\n\n readonly searchText = signal<string>(''); // 🔥 AHORA SÍ existe correctamente\n\n readonly filteredOptions = computed(() => {\n const filter = this.searchText();\n\n return this._options().filter(\n (o) => this.filterFn(o[1], filter) && !this.control.value.includes(o[0]),\n );\n });\n\n readonly selectedItems = computed(() => {\n const values = this.controlValue$() ?? [];\n return values.map((v) => {\n const found = this._options().find((o) => o[0] === v);\n return {\n value: v,\n label: found ? found[1] : v,\n };\n });\n });\n\n // ================= FORM FIELD CONTROL =================\n\n stateChanges = new Subject<void>();\n focused = false;\n controlType = 'autocomplete-multiple';\n id = `autocomplete-multiple-${MatecuAutocompleteMultiple.nextId++}`;\n describedBy = '';\n disabled = false;\n required = false;\n errorState = false;\n private injector: Injector;\n ngControl: NgControl | null = null;\n\n get empty() {\n return this.control.value.length === 0;\n }\n\n get shouldLabelFloat() {\n return true;\n }\n\n // ================= CONSTRUCTOR =================\n\n constructor(injector: Injector) {\n this.injector = injector;\n // Debounce search\n let timeout: any;\n\n this.searchControl.valueChanges.pipe(takeUntilDestroyed()).subscribe((value) => {\n this.searchText.set(value ?? '');\n });\n this.control.valueChanges.pipe(takeUntilDestroyed()).subscribe((value) => {\n this.onChange(value);\n this.stateChanges.next();\n });\n effect(() => {\n const value = this.searchText();\n\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n this.searchChange.emit(value);\n }, this.searchChangeDebounceTime);\n });\n }\n value: string[] | null = null;\n autofilled?: boolean | undefined;\n userAriaDescribedBy?: string | undefined;\n disableAutomaticLabeling?: boolean | undefined;\n describedByIds?: string[] | undefined;\n\n ngOnInit(): void {\n try {\n this.ngControl = this.injector.get(NgControl, null);\n } catch (error) {\n // Ignorar si no se puede obtener NgControl\n this.ngControl = null;\n }\n // Propagar cambios del FormControl interno\n }\n // ================= AUTOCOMPLETE =================\n\n selectOption(option: [string, string]) {\n if (this.readonly || this.disabled) return;\n if (!Array.isArray(option)) return;\n if (!this.control.value.includes(option[0])) {\n this.control.setValue([...this.control.value, option[0]]);\n }\n\n // limpiar input correctamente\n this.searchControl.setValue('');\n this.searchText.set('');\n\n // cerrar panel\n this.autocompleteTrigger.closePanel();\n }\n displayLabel(option: [string, string]): string {\n return Array.isArray(option) ? option[1] : '';\n }\n\n // ================= CHIP ACTIONS =================\n\n remove(value: string) {\n if (this.readonly || this.disabled) return;\n\n this.control.setValue(this.control.value.filter((v) => v !== value));\n }\n\n selectAll() {\n if (this.readonly || this.disabled) return;\n\n const allValues = this._options().map((o) => o[0]);\n\n this.control.setValue([...new Set([...this.control.value, ...allValues])]);\n\n this.searchControl.setValue('');\n this.searchText.set('');\n\n this.autocompleteTrigger.closePanel();\n }\n\n clearAll(): void {\n if (this.disabled || this.readonly) return;\n\n if (this.control.value.length === 0) return;\n\n this.control.setValue([]);\n this.searchControl.setValue('');\n this.searchText.set('');\n\n this.autocompleteTrigger?.closePanel();\n }\n\n // ================= DRAG & DROP =================\n\n drop(event: CdkDragDrop<any>) {\n if (this.disabled || this.readonly) return;\n\n const current = [...this.control.value];\n moveItemInArray(current, event.previousIndex, event.currentIndex);\n this.control.setValue(current);\n }\n\n // ================= KEYBOARD =================\n\n onKeyDown(event: KeyboardEvent) {\n if (this.readonly || this.disabled) return;\n\n if (event.key === 'Backspace' && !this.searchText() && this.control.value.length > 0) {\n const updated = [...this.control.value];\n updated.pop();\n this.control.setValue(updated);\n }\n }\n\n // ================= CVA =================\n\n onChange: (value: string[]) => void = () => {};\n onTouched: () => void = () => {};\n\n writeValue(value: string[] | null): void {\n this.control.setValue(value ?? [], { emitEvent: false });\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n\n isDisabled\n ? this.control.disable({ emitEvent: false })\n : this.control.enable({ emitEvent: false });\n\n this.stateChanges.next();\n }\n\n setDescribedByIds(ids: string[]): void {\n this.describedBy = ids.join(' ');\n }\n\n onContainerClick() {}\n\n ngOnDestroy() {\n this.stateChanges.complete();\n }\n trackByValue = (_: number, item: [string, string]) => item[0];\n openPanel() {\n this.autocompleteTrigger.openPanel();\n setTimeout(() => this.autocompleteTrigger.updatePosition());\n }\n private createFilterFn(): (v1: string, v2: string) => boolean {\n return (v1: string, v2: string): boolean => {\n return v1.toLowerCase().includes(v2.toLowerCase());\n };\n }\n}\n","@if (loading) {\n\n<mat-progress-spinner matSuffix diameter=\"20\" mode=\"indeterminate\">\n</mat-progress-spinner>\n}\n<mat-chip-grid #chipGrid class=\"chip-list\">\n\n @for (item of selectedItems(); track item.value) {\n\n <mat-chip-row [removable]=\"!disabled && !readonly\" (removed)=\"remove(item.value)\"\n [matTooltip]=\"showTooltip ? item.label : ''\" matTooltipPosition=\"above\">\n\n\n\n {{ item.label }}\n @if (!disabled && !readonly) {\n\n <button matChipRemove aria-label=\"Remove {{item.label}}\">\n <mat-icon>cancel</mat-icon>\n </button>\n }\n\n </mat-chip-row>\n }\n\n <input type=\"text\" matInput [formControl]=\"searchControl\" [matAutocomplete]=\"auto\" (keydown)=\"onKeyDown($event)\"\n [placeholder]=\"placeholder\" />\n\n</mat-chip-grid>\n\n\n<mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selectOption($event.option.value)\"\n class=\"autocomplete-large-panel\" [displayWith]=\"displayLabel\">\n\n @if (!readonly && !disabled && (enableSelectAll || control.value.length > 0)) {\n <mat-option>\n <div style=\"display: flex; gap: 10px; align-items: center; justify-content: center; \">\n\n @if (enableSelectAll) {\n <div>\n <button mat-icon-button (click)=\"selectAll()\" [matTooltip]=\"selectAllLabel\">\n <mat-icon>select_all</mat-icon>\n </button>\n </div>\n\n }\n @if (control.value.length > 0) {\n <div>\n\n <button mat-icon-button (click)=\"clearAll()\" [matTooltip]=\"clearAllLabel\">\n <mat-icon>clear_all</mat-icon>\n </button>\n </div>\n }\n </div>\n </mat-option>\n }\n\n @for (option of filteredOptions(); track $index) {\n <mat-option [value]=\"option\">\n {{ option[1] }}\n </mat-option>\n }\n</mat-autocomplete>","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n OnDestroy,\n ElementRef,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\ninterface FileValidationResult {\n isValid: boolean;\n errors: string[];\n}\n\ninterface ErrorMessages {\n invalidSize: string;\n invalidType: string;\n tooManyFiles: string;\n uploadError: string;\n}\n\ntype FileSizeUnit = 'AUTO' | 'bytes' | 'KB' | 'MB' | 'GB' | 'TB';\n\nexport type { FileSizeUnit };\n\nexport enum FileInputState {\n IDLE = 'idle',\n LOADING = 'loading',\n SUCCESS = 'success',\n ERROR = 'error',\n}\n\n@Component({\n selector: 'matecu-file-input',\n imports: [CommonModule],\n templateUrl: './matecu-file-input.html',\n styleUrls: ['./matecu-file-input.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: MatecuFileInput,\n },\n ],\n})\nexport class MatecuFileInput implements ControlValueAccessor, OnDestroy {\n @ViewChild('fileInput') fileInput!: ElementRef<HTMLInputElement>;\n\n // State\n files: File[] = [];\n file?: File;\n isDisabled = false;\n fileName?: string;\n selectedFileSize?: number;\n hasInvalidSize = false;\n hasInvalidType = false;\n previewUrl?: string;\n previewUrls = new Map<string, string>(); // Para múltiples archivos\n currentState: FileInputState = FileInputState.IDLE;\n validationErrors: string[] = [];\n isDragOver = false;\n\n private onChange: ((value: any) => void) | undefined;\n private onTouched: (() => void) | undefined;\n // Inputs - Funcionalidad básica\n @Input() optimizeImage?: (img: File) => Promise<File>;\n @Input() optimizeImageToSize?: number;\n @Input() maxFileSize?: number; // tamaño máximo en bytes\n @Input() maxFiles = 1;\n @Input() multiple = false;\n @Input() showFileSize = false;\n @Input() fileSizeUnit: FileSizeUnit = 'AUTO';\n @Input() displayName?: string;\n @Input() placeholder = 'Select a file or drag here';\n @Input() buttonText = 'Select file';\n @Input() changeSelectedFileText = 'Change selected file(s)';\n @Input() loadingText = 'Processing...';\n @Input() ariaLabel?: string;\n\n // Inputs - Validación\n @Input() acceptedMimeTypes: string[] = [];\n @Input() acceptedExtensions: string[] = [];\n @Input() errorMessages: ErrorMessages = {\n invalidSize: 'File exceeds maximum allowed size',\n invalidType: 'File type not allowed',\n tooManyFiles: 'Maximum number of files exceeded',\n uploadError: 'Error processing file',\n };\n\n // Inputs - UI/UX\n @Input() enableDragDrop = true;\n @Input() showPreview = false;\n @Input() previewMaxWidth = 200;\n @Input() previewMaxHeight = 200;\n @Input() showProgress = false;\n\n // Outputs\n @Output() fileSelected = new EventEmitter<File>();\n @Output() filesSelected = new EventEmitter<File[]>();\n @Output() fileRemoved = new EventEmitter<File>();\n @Output() validationError = new EventEmitter<string[]>();\n @Output() dragEnter = new EventEmitter<DragEvent>();\n @Output() dragLeave = new EventEmitter<DragEvent>();\n @Output() stateChange = new EventEmitter<FileInputState>();\n // ControlValueAccessor Methods\n writeValue(value: any): void {\n if (value instanceof File) {\n this.handleSingleFile(value);\n } else if (Array.isArray(value)) {\n this.handleMultipleFiles(value);\n } else if (typeof value === 'string') {\n this.fileName = value;\n } else {\n this.resetComponent();\n }\n }\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n this.changeState(this.isDisabled ? FileInputState.IDLE : this.currentState);\n }\n\n ngOnDestroy(): void {\n this.cleanupPreview();\n }\n\n // Event Handlers\n onFileChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const selectedFiles = Array.from(input.files || []);\n this.handleFileSelection(selectedFiles);\n }\n\n onDragOver(event: DragEvent): void {\n if (!this.enableDragDrop || this.isDisabled) return;\n event.preventDefault();\n event.stopPropagation();\n if (!this.isDragOver) {\n this.isDragOver = true;\n this.dragEnter.emit(event);\n }\n }\n\n onDragLeave(event: DragEvent): void {\n if (!this.enableDragDrop || this.isDisabled) return;\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver = false;\n this.dragLeave.emit(event);\n }\n\n onDrop(event: DragEvent): void {\n if (!this.enableDragDrop || this.isDisabled) return;\n event.preventDefault();\n event.stopPropagation();\n\n this.isDragOver = false;\n const files = Array.from(event.dataTransfer?.files || []);\n this.handleFileSelection(files);\n }\n\n openFileDialog(): void {\n if (this.isDisabled) return;\n this.fileInput?.nativeElement.click();\n }\n\n removeFile(fileToRemove: File): void {\n // Limpiar preview del archivo eliminado\n const fileKey = `${fileToRemove.name}-${fileToRemove.size}-${fileToRemove.lastModified}`;\n const previewUrl = this.previewUrls.get(fileKey);\n if (previewUrl && previewUrl.startsWith('blob:')) {\n URL.revokeObjectURL(previewUrl);\n this.previewUrls.delete(fileKey);\n }\n if (this.multiple) {\n this.files = this.files.filter((file) => file !== fileToRemove);\n this.notifyChange(this.files.length > 0 ? this.files : null);\n this.filesSelected.emit([...this.files]);\n } else {\n this.resetComponent();\n this.notifyChange(null);\n }\n this.fileRemoved.emit(fileToRemove);\n }\n // Private Methods\n private async handleFileSelection(selectedFiles: File[]): Promise<void> {\n if (selectedFiles.length === 0) return;\n\n this.changeState(FileInputState.LOADING);\n this.validationErrors = [];\n\n try {\n // Validar número máximo de archivos\n if (selectedFiles.length > this.maxFiles) {\n this.validationErrors.push(this.errorMessages.tooManyFiles);\n this.changeState(FileInputState.ERROR);\n return;\n }\n\n const processedFiles: File[] = [];\n\n for (const file of selectedFiles) {\n const validation = this.validateFile(file);\n if (!validation.isValid) {\n this.validationErrors.push(...validation.errors);\n continue;\n }\n\n try {\n const processedFile = await this.processFile(file);\n if (processedFile) {\n processedFiles.push(processedFile);\n }\n } catch (error) {\n this.validationErrors.push(this.errorMessages.uploadError);\n }\n }\n\n if (this.validationErrors.length > 0) {\n this.validationError.emit([...this.validationErrors]);\n this.changeState(FileInputState.ERROR);\n return;\n }\n\n if (processedFiles.length > 0) {\n if (this.multiple) {\n this.files = processedFiles;\n this.filesSelected.emit([...this.files]);\n this.notifyChange(this.files);\n } else {\n this.file = processedFiles[0];\n this.handleSingleFile(this.file);\n this.fileSelected.emit(this.file);\n this.notifyChange(this.file);\n }\n\n this.changeState(FileInputState.SUCCESS);\n }\n } catch (error) {\n this.validationErrors.push(this.errorMessages.uploadError);\n this.validationError.emit([...this.validationErrors]);\n this.changeState(FileInputState.ERROR);\n }\n }\n\n private handleSingleFile(file: File): void {\n this.file = file;\n this.fileName = this.displayName || file.name;\n this.selectedFileSize = this.calculateFileSizeInMB(file);\n this.generatePreview(file);\n }\n\n private handleMultipleFiles(files: File[]): void {\n this.files = files;\n this.file = files[0] || undefined;\n this.fileName = files.length > 0 ? `${files.length} file(s) selected` : undefined;\n }\n\n private async processFile(file: File): Promise<File | undefined> {\n if (this.optimizeImage && file.type.includes('image') && this.optimizeImageToSize) {\n try {\n return await this.optimizeImage(file);\n } catch (error) {\n console.warn('Error optimizing image:', error);\n return file; // Return original if optimization fails\n }\n }\n return file;\n }\n\n private validateFile(file: File): FileValidationResult {\n const errors: string[] = [];\n\n // Validar tamaño\n if (this.maxFileSize && file.size > this.maxFileSize) {\n errors.push(this.errorMessages.invalidSize);\n }\n\n // Validar tipo MIME\n if (this.acceptedMimeTypes.length > 0) {\n if (!this.acceptedMimeTypes.some((type) => file.type.includes(type))) {\n errors.push(this.errorMessages.invalidType);\n }\n }\n\n // Validar extensión\n if (this.acceptedExtensions.length > 0) {\n const fileExtension = '.' + file.name.split('.').pop()?.toLowerCase();\n if (!this.acceptedExtensions.some((ext) => ext.toLowerCase() === fileExtension)) {\n errors.push(this.errorMessages.invalidType);\n }\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n };\n }\n\n private generatePreview(file: File): void {\n this.cleanupPreview();\n\n if (this.showPreview && file.type.startsWith('image/')) {\n const reader = new FileReader();\n reader.onload = (e) => {\n this.previewUrl = e.target?.result as string;\n };\n reader.readAsDataURL(file);\n }\n }\n\n private cleanupPreview(): void {\n // Limpiar preview simple\n if (this.previewUrl && this.previewUrl.startsWith('blob:')) {\n URL.revokeObjectURL(this.previewUrl);\n }\n this.previewUrl = undefined;\n\n // Limpiar previews múltiples\n this.previewUrls.forEach((url) => {\n if (url.startsWith('blob:')) {\n URL.revokeObjectURL(url);\n }\n });\n this.previewUrls.clear();\n }\n\n private resetComponent(): void {\n this.files = [];\n this.file = undefined;\n this.fileName = undefined;\n this.selectedFileSize = undefined;\n this.validationErrors = [];\n this.hasInvalidSize = false;\n this.hasInvalidType = false;\n this.cleanupPreview();\n this.changeState(FileInputState.IDLE);\n }\n\n private notifyChange(value: any): void {\n if (this.onChange) {\n this.onChange(value);\n }\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n private changeState(newState: FileInputState): void {\n if (this.currentState !== newState) {\n this.currentState = newState;\n this.stateChange.emit(newState);\n }\n }\n\n calculateFileSizeInMB(file: File): number {\n const sizeInMB = file.size / 1024 / 1024;\n return sizeInMB > 0.01 ? sizeInMB : 0.01;\n }\n\n formatFileSize(file: File): string {\n const bytes = file.size;\n\n if (bytes === 0) return '0 bytes';\n\n const k = 1024;\n const sizes = ['bytes', 'KB', 'MB', 'GB', 'TB'];\n\n // Si se especifica una unidad específica, usarla\n if (this.fileSizeUnit !== 'AUTO') {\n const targetUnitIndex = sizes.indexOf(this.fileSizeUnit);\n if (targetUnitIndex !== -1) {\n const size = bytes / Math.pow(k, targetUnitIndex);\n const formattedSize = targetUnitIndex === 0 ? size.toString() : size.toFixed(2);\n return `${formattedSize} ${this.fileSizeUnit}`;\n }\n }\n\n // Comportamiento AUTO (original)\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n const size = bytes / Math.pow(k, i);\n const formattedSize = i === 0 ? size.toString() : size.toFixed(2);\n\n return `${formattedSize} ${sizes[i]}`;\n }\n\n // Public Utility Methods\n getFileIcon(file?: File): string {\n if (!file) return 'insert_drive_file';\n\n if (file.type.startsWith('image/')) return '🖼️';\n if (file.type.includes('pdf')) return '📄';\n if (file.type.startsWith('video/')) return '🎥';\n if (file.type.startsWith('audio/')) return '🎵';\n if (file.type.includes('zip') || file.type.includes('rar')) return '🗜️';\n if (file.type.includes('word')) return '📝';\n if (file.type.includes('excel') || file.type.includes('sheet')) return '📊';\n\n return '📄';\n }\n\n getPreviewUrl(file: File): string {\n if (!file.type.startsWith('image/')) return '';\n\n const fileKey = `${file.name}-${file.size}-${file.lastModified}`;\n\n if (!this.previewUrls.has(fileKey)) {\n const url = URL.createObjectURL(file);\n this.previewUrls.set(fileKey, url);\n }\n\n return this.previewUrls.get(fileKey) || '';\n }\n\n get hasErrors(): boolean {\n return this.validationErrors.length > 0 || this.currentState === FileInputState.ERROR;\n }\n\n get isLoading(): boolean {\n return this.currentState === FileInputState.LOADING;\n }\n\n get hasFiles(): boolean {\n return this.multiple ? this.files.length > 0 : !!this.file;\n }\n}\n","<!-- Hidden file input -->\n<input type=\"file\" #fileInput (change)=\"onFileChange($event)\" [multiple]=\"multiple\" [disabled]=\"isDisabled\"\n [attr.aria-label]=\"ariaLabel || 'Select file'\" [attr.aria-describedby]=\"hasErrors ? 'file-input-errors' : null\"\n [accept]=\"acceptedMimeTypes.join(',')\" />\n\n<!-- Main drop zone and file display -->\n<div class=\"file-input-container\" [class.drag-over]=\"isDragOver\" [class.disabled]=\"isDisabled\"\n [class.has-files]=\"hasFiles\" [class.has-errors]=\"hasErrors\" [class.loading]=\"isLoading\"\n (dragover)=\"onDragOver($event)\" (dragleave)=\"onDragLeave($event)\" (drop)=\"onDrop($event)\"\n (click)=\"openFileDialog()\">\n <!-- Loading state -->\n @if (isLoading) {\n <div class=\"loading-container\">\n <div class=\"spinner\"></div>\n <span class=\"loading-text\">{{ loadingText }}</span>\n </div>\n }\n\n <!-- Empty state / Drop zone -->\n @if (!hasFiles && !isLoading) {\n <div class=\"drop-zone\">\n <div class=\"drop-zone-icon\">\n 📁\n </div>\n <div class=\"drop-zone-content\">\n <p class=\"drop-zone-title\">{{ placeholder }}</p>\n <button type=\"button\" class=\"select-button\" [disabled]=\"isDisabled\"\n (click)=\"openFileDialog(); $event.stopPropagation()\">\n {{ buttonText }}\n </button>\n @if (enableDragDrop && !isDisabled) {\n }\n </div>\n </div>\n }\n\n <!-- Single file display -->\n @if (!multiple && file && !isLoading) {\n <div class=\"single-file-display\">\n <div class=\"file-info\">\n <!-- File preview -->\n @if (showPreview && file.type.startsWith('image/')) {\n <div class=\"file-preview\">\n <img [src]=\"getPreviewUrl(file)\" [alt]=\"file.name\" [style.max-width.px]=\"previewMaxWidth\"\n [style.max-height.px]=\"previewMaxHeight\" />\n </div>\n } @else {\n <div class=\"file-icon\">\n {{ getFileIcon(file) }}\n </div>\n }\n\n <div class=\"file-details\">\n <h3 class=\"file-name\">{{ displayName || file.name }}</h3>\n @if (showFileSize && selectedFileSize) {\n <p class=\"file-size\">\n {{ formatFileSize(file) }}\n </p>\n }\n <p class=\"file-type\">{{ file.type || 'Unknown type' }}</p>\n </div>\n </div>\n\n <button type=\"button\" class=\"remove-file-button\" (click)=\"removeFile(file); $event.stopPropagation()\"\n [attr.aria-label]=\"'Remove ' + file.name\">\n ✕\n </button>\n </div>\n }\n\n <!-- Multiple files display -->\n @if (multiple && files.length > 0 && !isLoading) {\n <div class=\"multiple-files-display\">\n <div class=\"files-header\">\n @if (maxFiles > 1) {\n <span class=\"files-counter\">{{ files.length }} / {{ maxFiles }}</span>\n }\n </div>\n\n <div class=\"files-list\">\n @for (file of files; track file.name + file.size; let i = $index) {\n <div class=\"file-item\">\n <!-- File preview -->\n @if (showPreview && file.type.startsWith('image/')) {\n <div class=\"file-preview-small\">\n <img [src]=\"getPreviewUrl(file)\" [alt]=\"file.name\" />\n </div>\n } @else {\n <div class=\"file-icon-small\">\n {{ getFileIcon(file) }}\n </div>\n }\n\n <div class=\"file-item-details\">\n <div class=\"file-item-name\">{{ file.name }}</div>\n @if (showFileSize) {\n <div class=\"file-item-size\">\n {{ formatFileSize(file) }}\n </div>\n }\n </div>\n\n <button type=\"button\" class=\"remove-file-button-small\"\n (click)=\"removeFile(file); $event.stopPropagation()\" [attr.aria-label]=\"'Remove ' + file.name\">\n ✕\n </button>\n </div>\n }\n </div>\n\n <!-- Add more files button -->\n @if (files.length < maxFiles) { <button type=\"button\" class=\"add-more-button\"\n (click)=\"openFileDialog(); $event.stopPropagation()\">\n {{ changeSelectedFileText }}\n </button>\n }\n </div>\n }\n</div>\n\n<!-- Error messages -->\n@if (hasErrors) {\n<div id=\"file-input-errors\" class=\"error-messages\" role=\"alert\">\n @for (error of validationErrors; track error) {\n <div class=\"error-message\">{{ error }}</div>\n }\n</div>\n}","/*\n * Public API Surface of angular-matecu\n */\n\n/**\n * spinner\n */\nexport * from './lib/modules/matecu-spinner/matecu-spinner.module';\nexport * from './lib/components/matecu-spinner/matecu-spinner.component';\nexport * from './lib/services/matecu-spinner.service';\n\n/**\n * topbar-layout\n */\nexport * from './lib/modules/matecu-topbar-layout/matecu-topbar-layout.module';\nexport * from './lib/components/matecu-topbar-body/matecu-topbar-body.component';\nexport * from './lib/components/matecu-topbar-fab/matecu-topbar-fab.component';\nexport * from './lib/components/matecu-topbar-layout/matecu-topbar-layout.component';\nexport * from './lib/components/matecu-topbar-title/matecu-topbar-title.component';\nexport * from './lib/components/matecu-topbar-search/matecu-topbar-search.component';\nexport * from './lib/components/matecu-topbar-action/matecu-topbar-action.component';\nexport * from './lib/components/matecu-topbar-header-row/matecu-topbar-header-row.component';\nexport * from './lib/components/matecu-topbar-header-column/matecu-topbar-header-column.component';\n\n/**\n * alert-box\n */\n\nexport * from './lib/modules/matecu-alert-box/matecu-alert-box.module';\nexport * from './lib/components/matecu-alert-box/matecu-alert-box.component';\nexport * from './lib/components/matecu-alert-dialog/matecu-alert-dialog.component';\nexport * from './lib/components/matecu-alert-snack-bar/matecu-alert-snack-bar.component';\nexport * from './lib/types/matecu-altert-box-type';\nexport * from './lib/types/matecu-alert-dialog';\nexport * from './lib/services/matecu-snack-bar.service';\n\n/**\n * inputs\n */\nexport * from './lib/components/matecu-autocomplete/matecu-autocomplete';\nexport * from './lib/components/matecu-autocomplete-multiple/matecu-autocomplete-multiple';\nexport * from './lib/components/matecu-file-input/matecu-file-input';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MatecuSpinnerService","i1","i2","map","tap","debounceTime","i3","i4","i6","i5"],"mappings":"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"}
1
+ {"version":3,"file":"angular-matecu.mjs","sources":["../../../projects/angular-matecu/src/lib/services/matecu-spinner.service.ts","../../../projects/angular-matecu/src/lib/components/matecu-spinner/matecu-spinner.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-spinner/matecu-spinner.component.html","../../../projects/angular-matecu/src/lib/modules/matecu-spinner/matecu-spinner.module.ts","../../../projects/angular-matecu/src/lib/components/matecu-topbar-layout/matecu-topbar-layout.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-topbar-layout/matecu-topbar-layout.component.html","../../../projects/angular-matecu/src/lib/components/matecu-topbar-title/matecu-topbar-title.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-topbar-title/matecu-topbar-title.component.html","../../../projects/angular-matecu/src/lib/components/matecu-topbar-body/matecu-topbar-body.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-topbar-body/matecu-topbar-body.component.html","../../../projects/angular-matecu/src/lib/components/matecu-topbar-fab/matecu-topbar-fab.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-topbar-fab/matecu-topbar-fab.component.html","../../../projects/angular-matecu/src/lib/components/matecu-topbar-search/matecu-topbar-search.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-topbar-search/matecu-topbar-search.component.html","../../../projects/angular-matecu/src/lib/components/matecu-topbar-action/matecu-topbar-action.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-topbar-action/matecu-topbar-action.component.html","../../../projects/angular-matecu/src/lib/components/matecu-topbar-header-row/matecu-topbar-header-row.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-topbar-header-row/matecu-topbar-header-row.component.html","../../../projects/angular-matecu/src/lib/components/matecu-topbar-header-column/matecu-topbar-header-column.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-topbar-header-column/matecu-topbar-header-column.component.html","../../../projects/angular-matecu/src/lib/modules/matecu-topbar-layout/matecu-topbar-layout.module.ts","../../../projects/angular-matecu/src/lib/types/matecu-altert-box-type.ts","../../../projects/angular-matecu/src/lib/components/matecu-alert-box/matecu-alert-box.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-alert-box/matecu-alert-box.component.html","../../../projects/angular-matecu/src/lib/components/matecu-alert-dialog/matecu-alert-dialog.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-alert-dialog/matecu-alert-dialog.component.html","../../../projects/angular-matecu/src/lib/components/matecu-alert-snack-bar/matecu-alert-snack-bar.component.ts","../../../projects/angular-matecu/src/lib/components/matecu-alert-snack-bar/matecu-alert-snack-bar.component.html","../../../projects/angular-matecu/src/lib/modules/matecu-alert-box/matecu-alert-box.module.ts","../../../projects/angular-matecu/src/lib/services/matecu-snack-bar.service.ts","../../../projects/angular-matecu/src/lib/components/matecu-autocomplete/matecu-autocomplete.ts","../../../projects/angular-matecu/src/lib/components/matecu-autocomplete/matecu-autocomplete.html","../../../projects/angular-matecu/src/lib/components/matecu-autocomplete-multiple/matecu-autocomplete-multiple.ts","../../../projects/angular-matecu/src/lib/components/matecu-autocomplete-multiple/matecu-autocomplete-multiple.html","../../../projects/angular-matecu/src/lib/components/matecu-file-input/matecu-file-input.ts","../../../projects/angular-matecu/src/lib/components/matecu-file-input/matecu-file-input.html","../../../projects/angular-matecu/src/lib/components/matecu-datetime-picker/matecu-datetime-picker.ts","../../../projects/angular-matecu/src/lib/components/matecu-datetime-picker/matecu-datetime-picker.html","../../../projects/angular-matecu/src/public-api.ts","../../../projects/angular-matecu/src/angular-matecu.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MatecuSpinnerService {\n private active$ = new BehaviorSubject<boolean>(false);\n private requestsKeys: string[] = [];\n constructor() {}\n\n watch(): Observable<boolean> {\n return this.active$.pipe();\n }\n add(customKey?: string): string {\n const key =\n typeof customKey === 'string' && customKey.length > 0 ? customKey : this.createKey();\n this.requestsKeys.push(key);\n this.updateStatus();\n return key;\n }\n remove(key: string): void {\n this.requestsKeys = this.requestsKeys.filter((requestKey) => requestKey !== key);\n this.updateStatus();\n }\n clear(): void {\n this.requestsKeys = [];\n this.updateStatus();\n }\n private updateStatus(): void {\n const active = this.requestsKeys.length > 0;\n this.active$.next(active);\n }\n private createKey(): string {\n const time = new Date().getTime();\n const complement = Math.random();\n return `${time}__${complement}`;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectorRef, Component, HostBinding, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil, tap } from 'rxjs/operators';\nimport { MatecuSpinnerService } from '../../services/matecu-spinner.service';\n@Component({\n selector: 'matecu-spinner',\n templateUrl: './matecu-spinner.component.html',\n styleUrls: ['./matecu-spinner.component.css'],\n standalone: true,\n imports: [CommonModule],\n})\nexport class MatecuSpinnerComponent implements OnInit, OnDestroy {\n private destroy$ = new Subject<void>();\n private hiddenClass = 'matecu-spinner--hidden';\n private activeCache = false;\n @HostBinding('class') className = 'matecu-spinner';\n @Input() color = '#2196F3';\n @Input() global = false;\n get active(): boolean {\n return this.activeCache;\n }\n @Input() set active(value: boolean) {\n if (this.global) {\n return;\n }\n this.activeCache = value;\n this.className = value\n ? this.className.replace(` ${this.hiddenClass}`, '')\n : (this.className += ` ${this.hiddenClass}`);\n }\n @Input() size = '70px';\n\n constructor(\n private spinnerService: MatecuSpinnerService,\n private cdr: ChangeDetectorRef,\n ) {}\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n ngOnInit(): void {\n if (this.global) {\n this.spinnerService\n .watch()\n .pipe(\n tap((value) => (this.activeCache = value)),\n tap(() => this.cdr.detectChanges()),\n takeUntil(this.destroy$),\n )\n .subscribe();\n }\n }\n}\n","@if(active){\n\n<svg xmlns:svg=\"http://www.w3.org/2000/svg\" [attr.width]=\"size\" [attr.height]=\"size\" xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.0\" viewBox=\"0 0 128 128\" xml:space=\"preserve\">\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"transparent\" />\n <g>\n <path class=\"matecu-spinner__100\" d=\"M122.5 69.25H96.47a33.1 33.1 0 0 0 0-10.5h26.05a5.25 5.25 0 0 1 0 10.5z\"\n [attr.fill]=\"color\" fill-opacity=\"1\" />\n <path class=\"matecu-spinner__30\"\n d=\"M112.04 97.83L89.47 84.8a33.1 33.1 0 0 0 5.25-9.1l22.57 13.03a5.25 5.25 0 0 1-5.28 9.1z\"\n [attr.fill]=\"color\" fill-opacity=\"0.3\" />\n <path class=\"matecu-spinner__30\"\n d=\"M88.68 117.35L75.65 94.78a33.1 33.1 0 0 0 9.1-5.25l13.02 22.57a5.25 5.25 0 1 1-9.1 5.25z\"\n [attr.fill]=\"color\" fill-opacity=\"0.3\" />\n <path class=\"matecu-spinner__30\" d=\"M58.7 122.57V96.5a33.1 33.1 0 0 0 10.5 0v26.07a5.25 5.25 0 0 1-10.5 0z\"\n [attr.fill]=\"color\" fill-opacity=\"0.3\" />\n <path class=\"matecu-spinner__30\"\n d=\"M30.1 112.1l13.04-22.57a33.1 33.1 0 0 0 9.1 5.25L39.2 117.35a5.25 5.25 0 1 1-9.1-5.25z\"\n [attr.fill]=\"color\" fill-opacity=\"0.3\" />\n <path class=\"matecu-spinner__30\"\n d=\"M10.6 88.74L33.16 75.7a33.1 33.1 0 0 0 5.25 9.1L15.88 97.83a5.25 5.25 0 1 1-5.25-9.1z\"\n [attr.fill]=\"color\" fill-opacity=\"0.3\" />\n <path class=\"matecu-spinner__40\" d=\"M5.37 58.75h26.06a33.1 33.1 0 0 0 0 10.5H5.37a5.25 5.25 0 0 1 0-10.5z\"\n [attr.fill]=\"color\" fill-opacity=\"0.4\" />\n <path class=\"matecu-spinner__50\"\n d=\"M15.85 30.17L38.4 43.2a33.1 33.1 0 0 0-5.24 9.1L10.6 39.25a5.25 5.25 0 1 1 5.25-9.1z\" [attr.fill]=\"color\"\n fill-opacity=\"0.5\" />\n <path class=\"matecu-spinner__60\"\n d=\"M39.2 10.65l13.03 22.57a33.1 33.1 0 0 0-9.1 5.25l-13-22.57a5.25 5.25 0 1 1 9.1-5.25z\" [attr.fill]=\"color\"\n fill-opacity=\"0.6\" />\n <path class=\"matecu-spinner__70\" d=\"M69.2 5.43V31.5a33.1 33.1 0 0 0-10.5 0V5.42a5.25 5.25 0 1 1 10.5 0z\"\n [attr.fill]=\"color\" fill-opacity=\"0.7\" />\n <path class=\"matecu-spinner__80\"\n d=\"M97.77 15.9L84.75 38.47a33.1 33.1 0 0 0-9.1-5.25l13.03-22.57a5.25 5.25 0 1 1 9.1 5.25z\"\n [attr.fill]=\"color\" fill-opacity=\"0.8\" />\n <path class=\"matecu-spinner__90\"\n d=\"M117.3 39.26L94.7 52.3a33.1 33.1 0 0 0-5.25-9.1l22.57-13.03a5.25 5.25 0 0 1 5.25 9.1z\"\n [attr.fill]=\"color\" fill-opacity=\"0.9\" />\n <animateTransform attributeName=\"transform\" type=\"rotate\"\n values=\"0 64 64;30 64 64;60 64 64;90 64 64;120 64 64;150 64 64;180 64 64;210 64 64;240 64 64;270 64 64;300 64 64;330 64 64\"\n calcMode=\"discrete\" dur=\"600ms\" repeatCount=\"indefinite\"></animateTransform>\n </g>\n</svg>\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatecuSpinnerComponent } from '../../components/matecu-spinner/matecu-spinner.component';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule, MatecuSpinnerComponent\n ],\n exports: [\n MatecuSpinnerComponent\n ]\n})\nexport class MatecuSpinnerModule { }\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n NgZone,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil, tap } from 'rxjs/operators';\n@Component({\n selector: 'matecu-topbar-layout',\n templateUrl: './matecu-topbar-layout.component.html',\n styleUrls: ['./matecu-topbar-layout.component.scss'],\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatIconModule, MatToolbarModule],\n})\nexport class MatecuTopbarLayoutComponent implements AfterViewInit, OnDestroy {\n private _scrolled = false;\n private _prominent = false;\n get scrolled() {\n return this._scrolled;\n }\n set scrolled(value: boolean) {\n this._scrolled = value;\n this.className = this.className.replace(/scrolled/g, '').trim();\n if (this.scrolled) {\n this.className = `${this.className} scrolled`;\n }\n }\n private destroy$ = new Subject<void>();\n @Input() mobileStyle = false;\n @Output() mobileStyleChange = new EventEmitter<boolean>();\n @Input() mobileWidth = 768;\n @Output() whenResize = new EventEmitter<number>();\n @Input() get prominent() {\n return this._prominent;\n }\n set prominent(value: boolean) {\n this._prominent = value;\n this.className = this.className.replace(/prominent/g, '').trim();\n if (this.prominent) {\n this.className = `${this.className} prominent`;\n }\n }\n @HostBinding('class') className = 'matecu-topbar-layout';\n @ViewChild('mtbBody') bodyElement?: ElementRef;\n\n constructor(\n private elementRef: ElementRef,\n private changeDetector: ChangeDetectorRef,\n private zone: NgZone\n ) {}\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n private spyScroll(scrollabe: HTMLElement) {\n if (!scrollabe) {\n return;\n }\n const maxScrollHeight = scrollabe.scrollHeight;\n const scrollableHeight = scrollabe.clientHeight;\n if (scrollableHeight > maxScrollHeight) {\n return;\n }\n const scrollPosition = scrollabe.scrollTop;\n this.scrolled = scrollPosition > 20;\n }\n ngAfterViewInit(): void {\n const layoutElement = this.elementRef.nativeElement;\n const resizeObserver = new ResizeObserver(() => {\n const width = layoutElement?.clientWidth;\n if (!width) {\n return;\n }\n this.mobileStyle = width <= this.mobileWidth;\n this.zone.run(() => {\n this.mobileStyleChange.emit(this.mobileStyle);\n this.whenResize.emit(width);\n });\n });\n resizeObserver.observe(layoutElement!);\n this.destroy$.pipe(tap(() => resizeObserver.disconnect())).subscribe();\n if (this.bodyElement) {\n fromEvent(this.bodyElement.nativeElement, 'scroll')\n .pipe(\n tap(() => this.spyScroll(this.bodyElement?.nativeElement!)),\n takeUntil(this.destroy$)\n )\n .subscribe();\n }\n }\n scrollTop() {\n if (!this.bodyElement) {\n return;\n }\n this.bodyElement.nativeElement.scroll({\n top: 0,\n behavior: 'smooth',\n });\n }\n}\n","<div class=\"matecu-topbar-layout__bar\">\n <ng-content select=\"matecu-topbar-header-row[first-row]\"></ng-content>\n <ng-content select=\"matecu-topbar-header-row[second-row]\"></ng-content>\n</div>\n<div class=\"matecu-topbar-layout__body\" #mtbBody>\n <ng-content select=\"matecu-topbar-body\"></ng-content>\n</div>\n","import { Component, HostBinding, OnInit } from '@angular/core';\n\n@Component({\n selector: 'matecu-topbar-title',\n templateUrl: './matecu-topbar-title.component.html',\n styleUrls: ['./matecu-topbar-title.component.scss'],\n standalone: true,\n})\nexport class MatecuTopbarTitleComponent implements OnInit {\n @HostBinding('class') className = 'matecu-topbar-title';\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<ng-content></ng-content>","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'matecu-topbar-body',\n templateUrl: './matecu-topbar-body.component.html',\n styleUrls: ['./matecu-topbar-body.component.scss'],\n standalone: true,\n})\nexport class MatecuTopbarBodyComponent {\n @HostBinding('class') className = 'matecu-topbar-body';\n}\n","<ng-content></ng-content>","import { CommonModule } from '@angular/common';\nimport { Component, HostBinding, Input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'matecu-topbar-fab',\n templateUrl: './matecu-topbar-fab.component.html',\n styleUrls: ['./matecu-topbar-fab.component.scss'],\n standalone: true,\n imports: [CommonModule, MatButtonModule],\n})\nexport class MatecuTopbarFabComponent {\n private _mobileStyle = false;\n private mainClassName = 'matecu-topbar-fab';\n @Input() display = true;\n @Input() get mobileStyle() {\n return this._mobileStyle;\n }\n set mobileStyle(value: boolean) {\n this._mobileStyle = value;\n this.className = this.className.replace(/mobile-style/g, '').trim();\n if (this._mobileStyle) {\n this.className = `${this.className} mobile-style`;\n }\n }\n\n @HostBinding('class') className = this.mainClassName;\n @HostBinding('style.display') get color() {\n return this.display ? 'flex' : 'none';\n }\n}\n","@if(display){\n<ng-content></ng-content>\n}","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Subject } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n map,\n takeUntil,\n tap,\n} from 'rxjs/operators';\n\n@Component({\n selector: 'matecu-topbar-search',\n templateUrl: './matecu-topbar-search.component.html',\n styleUrls: ['./matecu-topbar-search.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatIconModule,\n MatButtonModule,\n ],\n})\nexport class MatecuTopbarSearchComponent implements OnInit {\n hasValue = false;\n activeMobileSearch = false;\n inputCtrl = new FormControl('');\n private _value = '';\n private _mobileStyle = false;\n\n private destroy$ = new Subject<void>();\n @Input() display = true;\n @Input() placeholder = '';\n @Input() delyValueChanges = 300; // valor en milisegundos\n @Input() get value() {\n return this._value;\n }\n set value(v: string) {\n this._value = v;\n this.inputCtrl.setValue(v);\n }\n @Input() get mobileStyle() {\n return this._mobileStyle;\n }\n set mobileStyle(value: boolean) {\n this._mobileStyle = value;\n this.className = this.className.replace(/mobile-style/g, '').trim();\n if (this._mobileStyle) {\n this.className = `${this.className} mobile-style`;\n }\n }\n @Output() valueChange = new EventEmitter<string>();\n @HostBinding() className = 'matecu-topbar-search';\n @HostBinding('style.display') get color() {\n return this.display ? 'flex' : 'none';\n }\n ngOnInit(): void {\n this.inputCtrl.valueChanges\n .pipe(\n map((value) => value ?? ''),\n tap(this.updateHasValueFn()),\n debounceTime(this.delyValueChanges),\n distinctUntilChanged(),\n tap((value) => this.valueChange.emit(value!)),\n takeUntil(this.destroy$)\n )\n .subscribe();\n }\n toggleActiveMobildeSearch() {\n this.activeMobileSearch = !this.activeMobileSearch;\n }\n clearSearch() {\n this.inputCtrl.setValue('');\n this.activeMobileSearch = false;\n }\n updateHasValueFn() {\n return (value: string): void => {\n this.hasValue = value.length > 0;\n };\n }\n}\n","@if(display){\n<button class=\"matecu-topbar-search-mobile-only\" [ngClass]=\"{ 'mobile-style': mobileStyle }\"\n (click)=\"toggleActiveMobildeSearch()\">\n <mat-icon>search</mat-icon>\n</button>\n<div class=\"matecu-topbar-search\" [ngClass]=\"{\n 'mobile-style': mobileStyle,\n 'active-mobile': activeMobileSearch\n }\">\n <span class=\"matecu-topbar-search__icon matecu-topbar-search__icon--search\">\n <mat-icon>search</mat-icon>\n </span>\n @if(hasValue || mobileStyle){\n <button class=\"matecu-topbar-search__icon matecu-topbar-search__icon--clear\" (click)=\"clearSearch()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n <input type=\"text\" [placeholder]=\"placeholder\" [formControl]=\"inputCtrl\" />\n</div>\n}","import { Component, HostBinding, OnInit } from '@angular/core';\n\n@Component({\n selector: 'matecu-topbar-action',\n templateUrl: './matecu-topbar-action.component.html',\n styleUrls: ['./matecu-topbar-action.component.scss'],\n standalone: true,\n})\nexport class MatecuTopbarActionComponent implements OnInit {\n @HostBinding('class') className = 'matecu-topbar-action';\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import { Component, HostBinding, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatToolbarModule } from '@angular/material/toolbar';\n\n@Component({\n selector: 'matecu-topbar-header-row',\n standalone: true,\n imports: [CommonModule, MatToolbarModule],\n templateUrl: './matecu-topbar-header-row.component.html',\n styleUrls: ['./matecu-topbar-header-row.component.scss'],\n})\nexport class MatecuTopbarHeaderRowComponent {\n @Input() display = true;\n @HostBinding('class') className = 'matecu-topbar-header-row';\n @HostBinding('style.display') get color() {\n return this.display ? 'flex' : 'none';\n }\n}\n","@if(display){\n<div class=\"matecu-topbar-header-row__column matecu-topbar-header-row__column--left\">\n <ng-content select=\"matecu-topbar-header-column[left-column]\"></ng-content>\n</div>\n\n<div class=\"matecu-topbar-header-row__column matecu-topbar-header-row__column--right\">\n <ng-content select=\"matecu-topbar-header-column[right-column]\"></ng-content>\n</div>\n}","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'matecu-topbar-header-column',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './matecu-topbar-header-column.component.html',\n styleUrls: ['./matecu-topbar-header-column.component.scss'],\n})\nexport class MatecuTopbarHeaderColumnComponent {}\n","<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatecuTopbarLayoutComponent } from '../../components/matecu-topbar-layout/matecu-topbar-layout.component';\nimport { MatecuTopbarTitleComponent } from '../../components/matecu-topbar-title/matecu-topbar-title.component';\nimport { MatecuTopbarBodyComponent } from '../../components/matecu-topbar-body/matecu-topbar-body.component';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatecuTopbarFabComponent } from '../../components/matecu-topbar-fab/matecu-topbar-fab.component';\nimport { MatecuTopbarSearchComponent } from '../../components/matecu-topbar-search/matecu-topbar-search.component';\nimport { MatecuTopbarActionComponent } from '../../components/matecu-topbar-action/matecu-topbar-action.component';\nimport { MatecuTopbarHeaderRowComponent } from '../../components/matecu-topbar-header-row/matecu-topbar-header-row.component';\nimport { MatecuTopbarHeaderColumnComponent } from '../../components/matecu-topbar-header-column/matecu-topbar-header-column.component';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n MatToolbarModule,\n MatIconModule,\n FormsModule,\n ReactiveFormsModule,\n MatButtonModule,\n MatecuTopbarLayoutComponent,\n MatecuTopbarTitleComponent,\n MatecuTopbarBodyComponent,\n MatecuTopbarFabComponent,\n MatecuTopbarSearchComponent,\n MatecuTopbarActionComponent,\n MatecuTopbarHeaderRowComponent,\n MatecuTopbarHeaderColumnComponent,\n ],\n exports: [\n MatecuTopbarLayoutComponent,\n MatecuTopbarTitleComponent,\n MatecuTopbarBodyComponent,\n MatecuTopbarFabComponent,\n MatecuTopbarSearchComponent,\n MatecuTopbarActionComponent,\n MatecuTopbarHeaderRowComponent,\n MatecuTopbarHeaderColumnComponent,\n ],\n})\nexport class MatecuTopbarLayoutModule {}\n","export enum MatecuAlertBoxType {\n warning = 'warning',\n success = 'success',\n danger = 'danger',\n info = 'info',\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatecuAlertBoxType } from '../../types/matecu-altert-box-type';\n\n@Component({\n selector: 'matecu-alert-box',\n templateUrl: './matecu-alert-box.component.html',\n styleUrls: ['./matecu-alert-box.component.scss'],\n standalone: true,\n imports: [CommonModule, MatIconModule]\n})\nexport class MatecuAlertBoxComponent implements OnInit {\n classNameBase = 'matecu-alert-box';\n alertColor?: MatecuAlertBoxType | undefined | string | null;\n iconValue?: string | null | undefined;\n private alertIcon = false;\n get color(): MatecuAlertBoxType | undefined | string | null {\n return this.alertColor;\n }\n @Input() set color(value: MatecuAlertBoxType | undefined | string | null) {\n this.alertColor = value;\n if (!!value) {\n this.className = `${this.classNameBase} ${this.classNameBase}--${value}`;\n } else {\n this.className = this.classNameBase;\n }\n this.updateIcon();\n }\n get icon(): boolean {\n return this.alertIcon;\n }\n @Input() set icon(value: boolean) {\n this.alertIcon = value;\n }\n @HostBinding('class') className = this.classNameBase;\n constructor() { }\n\n ngOnInit(): void { }\n\n private updateIcon(): void {\n switch (this.color) {\n case MatecuAlertBoxType.danger:\n this.iconValue = 'dangerous';\n break;\n case MatecuAlertBoxType.warning:\n this.iconValue = 'warning';\n break;\n case MatecuAlertBoxType.success:\n this.iconValue = 'check_circle';\n break;\n case MatecuAlertBoxType.info:\n this.iconValue = 'info';\n break;\n default:\n this.iconValue = null;\n break;\n }\n }\n}\n","@if (icon && iconValue) {\n<div class=\"matecu-alert-box__icon\">\n <mat-icon>{{iconValue}}</mat-icon>\n</div>\n}\n<div class=\"matecu-alert-box__content\">\n <ng-content>\n\n\n </ng-content>\n</div>","import { CommonModule } from '@angular/common';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogRef, MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatecuAlertDialogData } from '../../types/matecu-alert-dialog';\nimport { MatecuAlertBoxComponent } from '../matecu-alert-box/matecu-alert-box.component';\n@Component({\n selector: 'matecu-alert-dialog',\n templateUrl: './matecu-alert-dialog.component.html',\n styleUrls: ['./matecu-alert-dialog.component.scss'],\n standalone: true,\n imports: [CommonModule, MatDialogModule, MatIconModule, MatecuAlertBoxComponent, MatButtonModule]\n})\nexport class MatecuAlertDialogComponent implements OnInit {\n hasTitle = false;\n hasDismissBtn = false;\n hasActionBtn = false;\n showActions = false;\n constructor(\n @Inject(MAT_DIALOG_DATA) public dialogData: MatecuAlertDialogData,\n public dialogRef: MatDialogRef<MatecuAlertDialogComponent>\n ) {\n this.setHasTitle();\n this.setHasDismissBtn();\n this.setHasActionBtn();\n this.setShowActions();\n }\n\n ngOnInit(): void { }\n\n activateAction(): void {\n this.dialogRef.close(true);\n }\n\n private setHasTitle(): void {\n this.hasTitle = this.isValidString(this.dialogData.title);\n }\n private setHasDismissBtn(): void {\n this.hasDismissBtn = this.isValidString(this.dialogData.dismissText);\n }\n\n private setHasActionBtn(): void {\n this.hasActionBtn = this.isValidString(this.dialogData.action);\n }\n private setShowActions(): void {\n this.showActions = this.hasActionBtn || this.hasDismissBtn;\n }\n private isValidString(str: string | null | undefined): boolean {\n const isValid = typeof str === 'string' && str.trim().length > 0;\n return isValid;\n }\n}\n","@if (hasTitle) {\n\n<h2 mat-dialog-title>{{dialogData.title}}</h2>\n}\n<mat-dialog-content>\n\n <matecu-alert-box [color]=\"dialogData.type\" [icon]=\"!!dialogData.icon\">\n {{dialogData.message}}\n </matecu-alert-box>\n\n</mat-dialog-content>\n@if (showActions) {\n\n<mat-dialog-actions align=\"end\">\n @if (hasDismissBtn) {\n <button mat-button color=\"primary\" tabindex=\"-1\" mat-dialog-close>{{dialogData.dismissText}}\n </button>\n }\n @if(hasActionBtn) {\n <button mat-button color=\"primary\" tabindex=\"-2\" (click)=\"activateAction()\">{{dialogData.action}}\n </button>\n }\n</mat-dialog-actions>\n}","import { CommonModule } from '@angular/common';\nimport { Component, HostBinding, Inject, OnInit } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSnackBarModule, MatSnackBarRef, MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\nimport { MatecuAlertSnackBarData } from '../../types/matecu-alert-snackbar';\nimport { MatecuAlertBoxType } from '../../types/matecu-altert-box-type';\n\n@Component({\n selector: 'matecu-alert-snack-bar',\n templateUrl: './matecu-alert-snack-bar.component.html',\n styleUrls: ['./matecu-alert-snack-bar.component.scss'],\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatSnackBarModule]\n})\nexport class MatecuAlertSnackBarComponent {\n\n title: string;\n message: string;\n action?: string;\n classNameBase = 'matecu-alert-snackbar';\n alertColor!: MatecuAlertBoxType;\n get color(): MatecuAlertBoxType {\n return this.alertColor;\n }\n set color(value: MatecuAlertBoxType) {\n this.alertColor = value;\n this.className = `${this.classNameBase} ${this.classNameBase}--${value}`;\n }\n @HostBinding('class') className = this.classNameBase;\n constructor(\n @Inject(MAT_SNACK_BAR_DATA) public data: MatecuAlertSnackBarData,\n private snackBarRef: MatSnackBarRef<MatecuAlertSnackBarComponent>) {\n this.title = data.title;\n this.message = data.message;\n this.action = data.action;\n this.color = data.type;\n\n }\n\n dismiss(): void {\n this.snackBarRef.dismissWithAction();\n }\n\n\n}\n","<div>\n <strong>{{title}}</strong> &nbsp;\n <span>{{message}}</span>\n</div>\n@if(action?.length){\n\n<div>\n <button mat-button color=\"accent\" (click)=\"dismiss()\">{{action}}</button>\n</div>\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatecuAlertBoxComponent } from '../../components/matecu-alert-box/matecu-alert-box.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatecuAlertDialogComponent } from '../../components/matecu-alert-dialog/matecu-alert-dialog.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatecuAlertSnackBarComponent } from '../../components/matecu-alert-snack-bar/matecu-alert-snack-bar.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, MatIconModule, MatDialogModule, MatButtonModule, MatSnackBarModule, MatecuAlertBoxComponent, MatecuAlertDialogComponent, MatecuAlertSnackBarComponent],\n exports: [MatecuAlertBoxComponent]\n})\nexport class MatecuAlertBoxModule { }\n","import { Injectable } from '@angular/core';\nimport { MatSnackBar, MatSnackBarConfig, MatSnackBarRef, TextOnlySnackBar } from '@angular/material/snack-bar';\nimport { MatecuAlertSnackBarComponent } from '../components/matecu-alert-snack-bar/matecu-alert-snack-bar.component';\nimport { MatecuAlertSnackBarData } from '../types/matecu-alert-snackbar';\nimport { MatecuAlertBoxType } from '../types/matecu-altert-box-type';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MatecuSnackBarService {\n\n constructor(private snackBar: MatSnackBar) { }\n\n\n\n openError(error: string | Error, title?: string | null, action?: string, config?: MatSnackBarConfig<any>): MatSnackBarRef<MatecuAlertSnackBarComponent> {\n const message = this.getErrorMessage(error);\n const titleStr = title || 'ERROR';\n const type = MatecuAlertBoxType.danger;\n return this.openAlert(message, titleStr, type, action, config);\n }\n openSuccess(message: string, title?: string | null, action?: string, config?: MatSnackBarConfig<any>): MatSnackBarRef<MatecuAlertSnackBarComponent> {\n const titleStr = title || 'OK';\n const type = MatecuAlertBoxType.success;\n return this.openAlert(message, titleStr, type, action, config);\n }\n openWarning(message: string, title?: string | null, action?: string, config?: MatSnackBarConfig<any>): MatSnackBarRef<MatecuAlertSnackBarComponent> {\n const titleStr = title || 'WARNING';\n const type = MatecuAlertBoxType.warning;\n return this.openAlert(message, titleStr, type, action, config);\n }\n openInfo(message: string, title?: string | null, action?: string, config?: MatSnackBarConfig<any>): MatSnackBarRef<MatecuAlertSnackBarComponent> {\n const titleStr = title || 'INFO';\n const type = MatecuAlertBoxType.info;\n return this.openAlert(message, titleStr, type, action, config);\n }\n open(message: string, action?: string, config?: MatSnackBarConfig<any>): MatSnackBarRef<TextOnlySnackBar> {\n return this.snackBar.open(message, action, config);\n }\n dismiss(): void {\n this.snackBar.dismiss()\n }\n private openAlert(message: string, title: string, type: MatecuAlertBoxType, action?: string, config?: MatSnackBarConfig<any>) {\n\n const data: MatecuAlertSnackBarData = {\n message,\n title,\n action,\n type\n }\n const dialogConfig = { ...config, data }\n\n return this.snackBar.openFromComponent(MatecuAlertSnackBarComponent, dialogConfig);\n }\n\n private getErrorMessage(err: string | Error): string {\n const error = new Error()\n if (typeof err === 'string') {\n return err;\n }\n if (err instanceof Error) {\n return err.message;\n }\n return '';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n OnInit,\n OnDestroy,\n ElementRef,\n DoCheck,\n Injector,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n NgControl,\n} from '@angular/forms';\nimport { FormControl } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { Observable, startWith, map, Subject, tap, combineLatest, debounceTime } from 'rxjs';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n MatecuAutocompleteFilterFn,\n MatecuAutocompleteOption,\n} from '../../types/matecu-autocomplete';\n\n@Component({\n selector: 'matecu-autocomplete',\n standalone: true,\n imports: [\n CommonModule,\n MatAutocompleteModule,\n MatDividerModule,\n FormsModule,\n ReactiveFormsModule,\n MatProgressSpinnerModule,\n ],\n templateUrl: './matecu-autocomplete.html',\n styleUrls: ['./matecu-autocomplete.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: MatecuAutocomplete,\n multi: true,\n },\n {\n provide: MatFormFieldControl,\n useExisting: MatecuAutocomplete,\n },\n ],\n})\nexport class MatecuAutocomplete\n implements\n ControlValueAccessor,\n MatFormFieldControl<string>,\n OnChanges,\n OnInit,\n OnDestroy,\n DoCheck\n{\n @Input() options: MatecuAutocompleteOption[] = [];\n @Input() allowCreate = false;\n @Input() loading = false;\n @Input() readonly = false;\n @Input() filterFn: MatecuAutocompleteFilterFn = this.createFilterFn();\n @Input() searchChangeDebounceTime = 300;\n // MatFormFieldControl inputs\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n private _placeholder = '';\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _required = false;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this.setDisabledState(this._disabled);\n this.stateChanges.next();\n }\n private _disabled = false;\n\n @Input()\n get value(): string | null {\n return this.internalValue;\n }\n set value(value: string | null) {\n this.writeValue(value);\n this.stateChanges.next();\n }\n\n @Output() searchChange = new EventEmitter<string>();\n @Output() create = new EventEmitter<string>();\n @Output() valueChange = new EventEmitter<string | null>();\n\n // MatFormFieldControl properties\n static nextId = 0;\n readonly stateChanges = new Subject<void>();\n readonly id = `matecu-autocomplete-${MatecuAutocomplete.nextId++}`;\n ngControl: NgControl | null = null;\n focused = false;\n lastSearchText: string | null = null;\n readonly controlType = 'matecu-autocomplete';\n readonly autofilled = false;\n\n inputControl = new FormControl<string | null>(null);\n filteredOptions$!: Observable<MatecuAutocompleteOption[]>;\n\n private internalValue: string | null = null;\n private focusMonitor: FocusMonitor;\n private elementRef: ElementRef<HTMLElement>;\n private injector: Injector;\n private optionMap = new Map<string, string>();\n\n private onChange: any = () => {};\n private onTouched: any = () => {};\n get empty(): boolean {\n const isEmpty = this.inputControl.value === '' || !this.inputControl.value;\n return isEmpty;\n }\n\n get shouldLabelFloat(): boolean {\n const shouldFloat = this.focused || !this.empty;\n return shouldFloat;\n }\n\n get errorState(): boolean {\n return !!(this.ngControl && this.ngControl.invalid && this.ngControl.touched);\n }\n get showCreateOption(): boolean {\n const value = this.inputControl.value;\n\n return (\n this.allowCreate &&\n typeof value === 'string' &&\n this.internalValue !== value &&\n this.options.some((option) => option[1].toLowerCase() === value.toLowerCase()) === false\n );\n }\n\n constructor(focusMonitor: FocusMonitor, elementRef: ElementRef<HTMLElement>, injector: Injector) {\n this.focusMonitor = focusMonitor;\n this.elementRef = elementRef;\n this.injector = injector;\n }\n\n ngOnInit() {\n // Intentar obtener NgControl de forma segura\n try {\n this.ngControl = this.injector.get(NgControl, null);\n } catch (error) {\n // Ignorar si no se puede obtener NgControl\n this.ngControl = null;\n }\n\n const value$ = this.inputControl.valueChanges.pipe(startWith(this.inputControl.value ?? ''));\n\n this.filteredOptions$ = combineLatest([value$]).pipe(\n map(([value]) => this.filter(value ?? '')),\n );\n\n this.inputControl.valueChanges\n .pipe(\n // Almacena el último valor valido para la búsqueda esto se utiliza para enviar una emición para crear un elemento\n tap((value) => (this.lastSearchText = value ?? this.lastSearchText)),\n // CUando se escribe algo se limpian los valores seleccionados para que el usuario pueda seleccionar una opción o crear una nueva\n tap(() => this.clearValue()),\n debounceTime(this.searchChangeDebounceTime),\n )\n .subscribe((value) => {\n queueMicrotask(() => {\n this.searchChange.emit(value ?? '');\n });\n });\n\n this.focusMonitor.monitor(this.elementRef, true).subscribe((focused) => {\n if (!!focused !== this.focused) {\n this.focused = !!focused;\n this.stateChanges.next();\n }\n });\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n const newErrorState = !!(this.ngControl.invalid && this.ngControl.touched);\n if (newErrorState !== this.errorState) {\n this.stateChanges.next();\n }\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['options']) {\n this.rebuildOptionMap();\n this.updateInputLabelFromValue();\n this.stateChanges.next();\n }\n\n if (changes['placeholder'] || changes['required'] || changes['disabled']) {\n this.stateChanges.next();\n }\n }\n\n private filter(search: string): MatecuAutocompleteOption[] {\n return this.options.filter((option) => this.filterFn(option[1], search));\n }\n\n private createFilterFn(): (v1: string, v2: string) => boolean {\n return (v1: string, v2: string): boolean => {\n return v1.toLowerCase().includes(v2.toLowerCase());\n };\n }\n\n displayLabel = (value: string | null): string => {\n if (value === null || value === undefined) return '';\n\n if (!Array.isArray(this.options)) {\n return '';\n }\n return this.optionMap.get(value) ?? '';\n };\n\n onOptionSelected(value: string) {\n if (!value || this.readonly || this.disabled) {\n return;\n }\n this.internalValue = value;\n this.inputControl.setValue(value, { emitEvent: false });\n this.onChange(value);\n this.onTouched();\n this.valueChange.emit(value);\n }\n\n onCreateClick() {\n if (\n !this.lastSearchText ||\n this.lastSearchText.trim() === '' ||\n this.options.some(\n (option) => option[1].toLowerCase() === this.lastSearchText!.toLowerCase(),\n ) ||\n this.options.some((option) => option[1].toLowerCase() === this.lastSearchText!.toLowerCase())\n ) {\n return;\n }\n this.create.emit(this.lastSearchText);\n }\n\n private updateInputLabelFromValue() {\n if (this.internalValue !== null) {\n const label = this.displayLabel(this.internalValue);\n this.inputControl.setValue(label, { emitEvent: false });\n }\n }\n\n // ControlValueAccessor\n\n writeValue(value: string | null): void {\n this.internalValue = value;\n this.updateInputLabelFromValue();\n this.stateChanges.next();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._disabled = isDisabled;\n isDisabled ? this.inputControl.disable() : this.inputControl.enable();\n this.stateChanges.next();\n }\n\n // MatFormFieldControl methods\n focus(options?: FocusOptions): void {\n this.elementRef.nativeElement.querySelector('input')?.focus(options);\n }\n\n onContainerClick(): void {\n this.focus();\n }\n\n setDescribedByIds(ids: string[]): void {\n const input = this.elementRef.nativeElement.querySelector('input');\n if (input) {\n input.setAttribute('aria-describedby', ids.join(' '));\n }\n }\n private rebuildOptionMap() {\n this.optionMap.clear();\n\n for (const [value, label] of this.options ?? []) {\n this.optionMap.set(value, label);\n }\n }\n\n private clearValue() {\n this.internalValue = null;\n this.onChange(null);\n this.onTouched();\n this.valueChange.emit(null);\n }\n}\n","<input matInput type=\"text\" matInput [formControl]=\"inputControl\" [matAutocomplete]=\"auto\" [class.loading]=\"loading\"\n [disabled]=\"disabled\" [readonly]=\"readonly\" />\n\n\n<mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onOptionSelected($event.option.value)\"\n [displayWith]=\"displayLabel\">\n\n @for (option of filteredOptions$ | async; track $index) {\n\n <mat-option [value]=\"option[0]\">\n {{ option[1] }}\n </mat-option>\n\n }\n\n <!-- Crear nuevo -->\n @if(allowCreate){\n\n <mat-divider></mat-divider>\n\n @if(showCreateOption ){\n <mat-option (click)=\"onCreateClick()\" class=\"create-option\">\n <span>➕</span><span>\" {{ inputControl.value }}\"</span>\n\n </mat-option>\n }\n }\n\n</mat-autocomplete>\n\n<!-- Spinner -->\n@if(loading){\n<mat-progress-spinner class=\"loading-spinner\" diameter=\"20\" mode=\"indeterminate\"\n style=\"position:absolute; right:10px; top:50%; transform:translateY(-50%);\">\n</mat-progress-spinner>\n}","import {\n Component,\n computed,\n effect,\n EventEmitter,\n forwardRef,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n signal,\n} from '@angular/core';\n\nimport {\n ControlValueAccessor,\n FormControl,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\n\nimport { CdkDragDrop, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { NgControl } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { Subject } from 'rxjs';\n\nimport { ViewChild } from '@angular/core';\nimport { MatAutocompleteTrigger } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport {\n MatecuAutocompleteFilterFn,\n MatecuAutocompleteOption,\n} from '../../types/matecu-autocomplete';\n\n@Component({\n selector: 'matecu-autocomplete-multiple',\n standalone: true,\n imports: [\n ReactiveFormsModule,\n MatChipsModule,\n DragDropModule,\n MatIconModule,\n MatProgressSpinnerModule,\n MatAutocompleteModule,\n ScrollingModule,\n MatButtonModule,\n MatTooltipModule,\n ],\n templateUrl: './matecu-autocomplete-multiple.html',\n styleUrls: ['./matecu-autocomplete-multiple.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatecuAutocompleteMultiple),\n multi: true,\n },\n {\n provide: MatFormFieldControl,\n useExisting: MatecuAutocompleteMultiple,\n },\n ],\n})\nexport class MatecuAutocompleteMultiple\n implements ControlValueAccessor, MatFormFieldControl<string[]>, OnDestroy, OnInit\n{\n static nextId = 0;\n\n // ================= INPUTS =================\n\n @Input() placeholder = '';\n @Input() loading = false;\n @Input() searchChangeDebounceTime = 300;\n @Input() enableSelectAll = true;\n @Input() readonly = false;\n @Input() selectAllLabel = 'Select All';\n @Input() clearAllLabel = 'Clear All';\n @Input() showTooltip = true;\n @Input() filterFn: MatecuAutocompleteFilterFn = this.createFilterFn();\n private _options = signal<MatecuAutocompleteOption[]>([]);\n\n @Input({ required: true })\n set options(value: MatecuAutocompleteOption[]) {\n this._options.set(value ?? []);\n }\n\n get options() {\n return this._options();\n }\n\n // ================= OUTPUT =================\n\n @Output() searchChange = new EventEmitter<string>();\n @Output() valueChange = new EventEmitter<string[] | null>();\n\n // ================= INTERNAL CONTROL =================\n\n control = new FormControl<string[]>([], { nonNullable: true });\n controlValue$ = toSignal(this.control.valueChanges);\n searchControl = new FormControl<string>('', { nonNullable: true });\n @ViewChild(MatAutocompleteTrigger)\n autocompleteTrigger!: MatAutocompleteTrigger;\n\n // ================= SIGNALS =================\n\n readonly searchText = signal<string>(''); // 🔥 AHORA SÍ existe correctamente\n\n readonly filteredOptions = computed(() => {\n const filter = this.searchText();\n\n return this._options().filter(\n (o) => this.filterFn(o[1], filter) && !this.control.value.includes(o[0]),\n );\n });\n\n readonly selectedItems = computed(() => {\n const values = this.controlValue$() ?? [];\n return values.map((v) => {\n const found = this._options().find((o) => o[0] === v);\n return {\n value: v,\n label: found ? found[1] : v,\n };\n });\n });\n\n // ================= FORM FIELD CONTROL =================\n\n stateChanges = new Subject<void>();\n focused = false;\n controlType = 'autocomplete-multiple';\n id = `autocomplete-multiple-${MatecuAutocompleteMultiple.nextId++}`;\n describedBy = '';\n disabled = false;\n required = false;\n errorState = false;\n private injector: Injector;\n ngControl: NgControl | null = null;\n\n get empty() {\n return this.control.value.length === 0;\n }\n\n get shouldLabelFloat() {\n return true;\n }\n\n // ================= CONSTRUCTOR =================\n\n constructor(injector: Injector) {\n this.injector = injector;\n // Debounce search\n let timeout: any;\n\n this.searchControl.valueChanges.pipe(takeUntilDestroyed()).subscribe((value) => {\n this.searchText.set(value ?? '');\n });\n this.control.valueChanges.pipe(takeUntilDestroyed()).subscribe((value) => {\n this.onChange(value);\n this.valueChange.emit(value);\n this.stateChanges.next();\n });\n effect(() => {\n const value = this.searchText();\n\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n this.searchChange.emit(value);\n }, this.searchChangeDebounceTime);\n });\n }\n value: string[] | null = null;\n autofilled?: boolean | undefined;\n userAriaDescribedBy?: string | undefined;\n disableAutomaticLabeling?: boolean | undefined;\n describedByIds?: string[] | undefined;\n\n ngOnInit(): void {\n try {\n this.ngControl = this.injector.get(NgControl, null);\n } catch (error) {\n // Ignorar si no se puede obtener NgControl\n this.ngControl = null;\n }\n // Propagar cambios del FormControl interno\n }\n // ================= AUTOCOMPLETE =================\n\n selectOption(option: [string, string]) {\n if (this.readonly || this.disabled) return;\n if (!Array.isArray(option)) return;\n if (!this.control.value.includes(option[0])) {\n this.control.setValue([...this.control.value, option[0]]);\n }\n\n // limpiar input correctamente\n this.searchControl.setValue('');\n this.searchText.set('');\n\n // cerrar panel\n this.autocompleteTrigger.closePanel();\n }\n displayLabel(option: [string, string]): string {\n return Array.isArray(option) ? option[1] : '';\n }\n\n // ================= CHIP ACTIONS =================\n\n remove(value: string) {\n if (this.readonly || this.disabled) return;\n\n this.control.setValue(this.control.value.filter((v) => v !== value));\n }\n\n selectAll() {\n if (this.readonly || this.disabled) return;\n\n const allValues = this._options().map((o) => o[0]);\n\n this.control.setValue([...new Set([...this.control.value, ...allValues])]);\n\n this.searchControl.setValue('');\n this.searchText.set('');\n\n this.autocompleteTrigger.closePanel();\n }\n\n clearAll(): void {\n if (this.disabled || this.readonly) return;\n\n if (this.control.value.length === 0) return;\n\n this.control.setValue([]);\n this.searchControl.setValue('');\n this.searchText.set('');\n\n this.autocompleteTrigger?.closePanel();\n }\n\n // ================= DRAG & DROP =================\n\n drop(event: CdkDragDrop<any>) {\n if (this.disabled || this.readonly) return;\n\n const current = [...this.control.value];\n moveItemInArray(current, event.previousIndex, event.currentIndex);\n this.control.setValue(current);\n }\n\n // ================= KEYBOARD =================\n\n onKeyDown(event: KeyboardEvent) {\n if (this.readonly || this.disabled) return;\n\n if (event.key === 'Backspace' && !this.searchText() && this.control.value.length > 0) {\n const updated = [...this.control.value];\n updated.pop();\n this.control.setValue(updated);\n }\n }\n\n // ================= CVA =================\n\n onChange: (value: string[]) => void = () => {};\n onTouched: () => void = () => {};\n\n writeValue(value: string[] | null): void {\n this.control.setValue(value ?? [], { emitEvent: false });\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n\n isDisabled\n ? this.control.disable({ emitEvent: false })\n : this.control.enable({ emitEvent: false });\n\n this.stateChanges.next();\n }\n\n setDescribedByIds(ids: string[]): void {\n this.describedBy = ids.join(' ');\n }\n\n onContainerClick() {}\n\n ngOnDestroy() {\n this.stateChanges.complete();\n }\n trackByValue = (_: number, item: [string, string]) => item[0];\n openPanel() {\n this.autocompleteTrigger.openPanel();\n setTimeout(() => this.autocompleteTrigger.updatePosition());\n }\n private createFilterFn(): (v1: string, v2: string) => boolean {\n return (v1: string, v2: string): boolean => {\n return v1.toLowerCase().includes(v2.toLowerCase());\n };\n }\n}\n","@if (loading) {\n\n<mat-progress-spinner matSuffix diameter=\"20\" mode=\"indeterminate\">\n</mat-progress-spinner>\n}\n<mat-chip-grid #chipGrid class=\"chip-list\">\n\n @for (item of selectedItems(); track item.value) {\n\n <mat-chip-row [removable]=\"!disabled && !readonly\" (removed)=\"remove(item.value)\"\n [matTooltip]=\"showTooltip ? item.label : ''\" matTooltipPosition=\"above\">\n\n\n\n {{ item.label }}\n @if (!disabled && !readonly) {\n\n <button matChipRemove aria-label=\"Remove {{item.label}}\">\n <mat-icon>cancel</mat-icon>\n </button>\n }\n\n </mat-chip-row>\n }\n\n <input type=\"text\" matInput [formControl]=\"searchControl\" [matAutocomplete]=\"auto\" (keydown)=\"onKeyDown($event)\"\n [placeholder]=\"placeholder\" />\n\n</mat-chip-grid>\n\n\n<mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selectOption($event.option.value)\"\n class=\"autocomplete-large-panel\" [displayWith]=\"displayLabel\">\n\n @if (!readonly && !disabled && (enableSelectAll || control.value.length > 0)) {\n <mat-option>\n <div style=\"display: flex; gap: 10px; align-items: center; justify-content: center; \">\n\n @if (enableSelectAll) {\n <div>\n <button mat-icon-button (click)=\"selectAll()\" [matTooltip]=\"selectAllLabel\">\n <mat-icon>select_all</mat-icon>\n </button>\n </div>\n\n }\n @if (control.value.length > 0) {\n <div>\n\n <button mat-icon-button (click)=\"clearAll()\" [matTooltip]=\"clearAllLabel\">\n <mat-icon>clear_all</mat-icon>\n </button>\n </div>\n }\n </div>\n </mat-option>\n }\n\n @for (option of filteredOptions(); track $index) {\n <mat-option [value]=\"option\">\n {{ option[1] }}\n </mat-option>\n }\n</mat-autocomplete>","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n OnDestroy,\n ElementRef,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\ninterface FileValidationResult {\n isValid: boolean;\n errors: string[];\n}\n\ninterface ErrorMessages {\n invalidSize: string;\n invalidType: string;\n tooManyFiles: string;\n uploadError: string;\n}\n\ntype FileSizeUnit = 'AUTO' | 'bytes' | 'KB' | 'MB' | 'GB' | 'TB';\n\nexport type { FileSizeUnit };\n\nexport enum FileInputState {\n IDLE = 'idle',\n LOADING = 'loading',\n SUCCESS = 'success',\n ERROR = 'error',\n}\n\n@Component({\n selector: 'matecu-file-input',\n imports: [CommonModule],\n templateUrl: './matecu-file-input.html',\n styleUrls: ['./matecu-file-input.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: MatecuFileInput,\n },\n ],\n})\nexport class MatecuFileInput implements ControlValueAccessor, OnDestroy {\n @ViewChild('fileInput') fileInput!: ElementRef<HTMLInputElement>;\n\n // State\n files: File[] = [];\n file?: File;\n isDisabled = false;\n fileName?: string;\n selectedFileSize?: number;\n hasInvalidSize = false;\n hasInvalidType = false;\n previewUrl?: string;\n previewUrls = new Map<string, string>(); // Para múltiples archivos\n currentState: FileInputState = FileInputState.IDLE;\n validationErrors: string[] = [];\n isDragOver = false;\n\n private onChange: ((value: any) => void) | undefined;\n private onTouched: (() => void) | undefined;\n // Inputs - Funcionalidad básica\n @Input() optimizeImage?: (img: File) => Promise<File>;\n @Input() optimizeImageToSize?: number;\n @Input() maxFileSize?: number; // tamaño máximo en bytes\n @Input() maxFiles = 1;\n @Input() multiple = false;\n @Input() showFileSize = false;\n @Input() fileSizeUnit: FileSizeUnit = 'AUTO';\n @Input() displayName?: string;\n @Input() placeholder = 'Select a file or drag here';\n @Input() buttonText = 'Select file';\n @Input() changeSelectedFileText = 'Change selected file(s)';\n @Input() loadingText = 'Processing...';\n @Input() ariaLabel?: string;\n\n // Inputs - Validación\n @Input() acceptedMimeTypes: string[] = [];\n @Input() acceptedExtensions: string[] = [];\n @Input() errorMessages: ErrorMessages = {\n invalidSize: 'File exceeds maximum allowed size',\n invalidType: 'File type not allowed',\n tooManyFiles: 'Maximum number of files exceeded',\n uploadError: 'Error processing file',\n };\n\n // Inputs - UI/UX\n @Input() enableDragDrop = true;\n @Input() showPreview = false;\n @Input() previewMaxWidth = 200;\n @Input() previewMaxHeight = 200;\n @Input() showProgress = false;\n\n // Outputs\n @Output() fileSelected = new EventEmitter<File>();\n @Output() filesSelected = new EventEmitter<File[]>();\n @Output() fileRemoved = new EventEmitter<File>();\n @Output() validationError = new EventEmitter<string[]>();\n @Output() dragEnter = new EventEmitter<DragEvent>();\n @Output() dragLeave = new EventEmitter<DragEvent>();\n @Output() stateChange = new EventEmitter<FileInputState>();\n // ControlValueAccessor Methods\n writeValue(value: any): void {\n if (value instanceof File) {\n this.handleSingleFile(value);\n } else if (Array.isArray(value)) {\n this.handleMultipleFiles(value);\n } else if (typeof value === 'string') {\n this.fileName = value;\n } else {\n this.resetComponent();\n }\n }\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n this.changeState(this.isDisabled ? FileInputState.IDLE : this.currentState);\n }\n\n ngOnDestroy(): void {\n this.cleanupPreview();\n }\n\n // Event Handlers\n onFileChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const selectedFiles = Array.from(input.files || []);\n this.handleFileSelection(selectedFiles);\n }\n\n onDragOver(event: DragEvent): void {\n if (!this.enableDragDrop || this.isDisabled) return;\n event.preventDefault();\n event.stopPropagation();\n if (!this.isDragOver) {\n this.isDragOver = true;\n this.dragEnter.emit(event);\n }\n }\n\n onDragLeave(event: DragEvent): void {\n if (!this.enableDragDrop || this.isDisabled) return;\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver = false;\n this.dragLeave.emit(event);\n }\n\n onDrop(event: DragEvent): void {\n if (!this.enableDragDrop || this.isDisabled) return;\n event.preventDefault();\n event.stopPropagation();\n\n this.isDragOver = false;\n const files = Array.from(event.dataTransfer?.files || []);\n this.handleFileSelection(files);\n }\n\n openFileDialog(): void {\n if (this.isDisabled) return;\n this.fileInput?.nativeElement.click();\n }\n\n removeFile(fileToRemove: File): void {\n // Limpiar preview del archivo eliminado\n const fileKey = `${fileToRemove.name}-${fileToRemove.size}-${fileToRemove.lastModified}`;\n const previewUrl = this.previewUrls.get(fileKey);\n if (previewUrl && previewUrl.startsWith('blob:')) {\n URL.revokeObjectURL(previewUrl);\n this.previewUrls.delete(fileKey);\n }\n if (this.multiple) {\n this.files = this.files.filter((file) => file !== fileToRemove);\n this.notifyChange(this.files.length > 0 ? this.files : null);\n this.filesSelected.emit([...this.files]);\n } else {\n this.resetComponent();\n this.notifyChange(null);\n }\n this.fileRemoved.emit(fileToRemove);\n }\n // Private Methods\n private async handleFileSelection(selectedFiles: File[]): Promise<void> {\n if (selectedFiles.length === 0) return;\n\n this.changeState(FileInputState.LOADING);\n this.validationErrors = [];\n\n try {\n // Validar número máximo de archivos\n if (selectedFiles.length > this.maxFiles) {\n this.validationErrors.push(this.errorMessages.tooManyFiles);\n this.changeState(FileInputState.ERROR);\n return;\n }\n\n const processedFiles: File[] = [];\n\n for (const file of selectedFiles) {\n const validation = this.validateFile(file);\n if (!validation.isValid) {\n this.validationErrors.push(...validation.errors);\n continue;\n }\n\n try {\n const processedFile = await this.processFile(file);\n if (processedFile) {\n processedFiles.push(processedFile);\n }\n } catch (error) {\n this.validationErrors.push(this.errorMessages.uploadError);\n }\n }\n\n if (this.validationErrors.length > 0) {\n this.validationError.emit([...this.validationErrors]);\n this.changeState(FileInputState.ERROR);\n return;\n }\n\n if (processedFiles.length > 0) {\n if (this.multiple) {\n this.files = processedFiles;\n this.filesSelected.emit([...this.files]);\n this.notifyChange(this.files);\n } else {\n this.file = processedFiles[0];\n this.handleSingleFile(this.file);\n this.fileSelected.emit(this.file);\n this.notifyChange(this.file);\n }\n\n this.changeState(FileInputState.SUCCESS);\n }\n } catch (error) {\n this.validationErrors.push(this.errorMessages.uploadError);\n this.validationError.emit([...this.validationErrors]);\n this.changeState(FileInputState.ERROR);\n }\n }\n\n private handleSingleFile(file: File): void {\n this.file = file;\n this.fileName = this.displayName || file.name;\n this.selectedFileSize = this.calculateFileSizeInMB(file);\n this.generatePreview(file);\n }\n\n private handleMultipleFiles(files: File[]): void {\n this.files = files;\n this.file = files[0] || undefined;\n this.fileName = files.length > 0 ? `${files.length} file(s) selected` : undefined;\n }\n\n private async processFile(file: File): Promise<File | undefined> {\n if (this.optimizeImage && file.type.includes('image') && this.optimizeImageToSize) {\n try {\n return await this.optimizeImage(file);\n } catch (error) {\n console.warn('Error optimizing image:', error);\n return file; // Return original if optimization fails\n }\n }\n return file;\n }\n\n private validateFile(file: File): FileValidationResult {\n const errors: string[] = [];\n\n // Validar tamaño\n if (this.maxFileSize && file.size > this.maxFileSize) {\n errors.push(this.errorMessages.invalidSize);\n }\n\n // Validar tipo MIME\n if (this.acceptedMimeTypes.length > 0) {\n if (!this.acceptedMimeTypes.some((type) => file.type.includes(type))) {\n errors.push(this.errorMessages.invalidType);\n }\n }\n\n // Validar extensión\n if (this.acceptedExtensions.length > 0) {\n const fileExtension = '.' + file.name.split('.').pop()?.toLowerCase();\n if (!this.acceptedExtensions.some((ext) => ext.toLowerCase() === fileExtension)) {\n errors.push(this.errorMessages.invalidType);\n }\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n };\n }\n\n private generatePreview(file: File): void {\n this.cleanupPreview();\n\n if (this.showPreview && file.type.startsWith('image/')) {\n const reader = new FileReader();\n reader.onload = (e) => {\n this.previewUrl = e.target?.result as string;\n };\n reader.readAsDataURL(file);\n }\n }\n\n private cleanupPreview(): void {\n // Limpiar preview simple\n if (this.previewUrl && this.previewUrl.startsWith('blob:')) {\n URL.revokeObjectURL(this.previewUrl);\n }\n this.previewUrl = undefined;\n\n // Limpiar previews múltiples\n this.previewUrls.forEach((url) => {\n if (url.startsWith('blob:')) {\n URL.revokeObjectURL(url);\n }\n });\n this.previewUrls.clear();\n }\n\n private resetComponent(): void {\n this.files = [];\n this.file = undefined;\n this.fileName = undefined;\n this.selectedFileSize = undefined;\n this.validationErrors = [];\n this.hasInvalidSize = false;\n this.hasInvalidType = false;\n this.cleanupPreview();\n this.changeState(FileInputState.IDLE);\n }\n\n private notifyChange(value: any): void {\n if (this.onChange) {\n this.onChange(value);\n }\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n private changeState(newState: FileInputState): void {\n if (this.currentState !== newState) {\n this.currentState = newState;\n this.stateChange.emit(newState);\n }\n }\n\n calculateFileSizeInMB(file: File): number {\n const sizeInMB = file.size / 1024 / 1024;\n return sizeInMB > 0.01 ? sizeInMB : 0.01;\n }\n\n formatFileSize(file: File): string {\n const bytes = file.size;\n\n if (bytes === 0) return '0 bytes';\n\n const k = 1024;\n const sizes = ['bytes', 'KB', 'MB', 'GB', 'TB'];\n\n // Si se especifica una unidad específica, usarla\n if (this.fileSizeUnit !== 'AUTO') {\n const targetUnitIndex = sizes.indexOf(this.fileSizeUnit);\n if (targetUnitIndex !== -1) {\n const size = bytes / Math.pow(k, targetUnitIndex);\n const formattedSize = targetUnitIndex === 0 ? size.toString() : size.toFixed(2);\n return `${formattedSize} ${this.fileSizeUnit}`;\n }\n }\n\n // Comportamiento AUTO (original)\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n const size = bytes / Math.pow(k, i);\n const formattedSize = i === 0 ? size.toString() : size.toFixed(2);\n\n return `${formattedSize} ${sizes[i]}`;\n }\n\n // Public Utility Methods\n getFileIcon(file?: File): string {\n if (!file) return 'insert_drive_file';\n\n if (file.type.startsWith('image/')) return '🖼️';\n if (file.type.includes('pdf')) return '📄';\n if (file.type.startsWith('video/')) return '🎥';\n if (file.type.startsWith('audio/')) return '🎵';\n if (file.type.includes('zip') || file.type.includes('rar')) return '🗜️';\n if (file.type.includes('word')) return '📝';\n if (file.type.includes('excel') || file.type.includes('sheet')) return '📊';\n\n return '📄';\n }\n\n getPreviewUrl(file: File): string {\n if (!file.type.startsWith('image/')) return '';\n\n const fileKey = `${file.name}-${file.size}-${file.lastModified}`;\n\n if (!this.previewUrls.has(fileKey)) {\n const url = URL.createObjectURL(file);\n this.previewUrls.set(fileKey, url);\n }\n\n return this.previewUrls.get(fileKey) || '';\n }\n\n get hasErrors(): boolean {\n return this.validationErrors.length > 0 || this.currentState === FileInputState.ERROR;\n }\n\n get isLoading(): boolean {\n return this.currentState === FileInputState.LOADING;\n }\n\n get hasFiles(): boolean {\n return this.multiple ? this.files.length > 0 : !!this.file;\n }\n}\n","<!-- Hidden file input -->\n<input type=\"file\" #fileInput (change)=\"onFileChange($event)\" [multiple]=\"multiple\" [disabled]=\"isDisabled\"\n [attr.aria-label]=\"ariaLabel || 'Select file'\" [attr.aria-describedby]=\"hasErrors ? 'file-input-errors' : null\"\n [accept]=\"acceptedMimeTypes.join(',')\" />\n\n<!-- Main drop zone and file display -->\n<div class=\"file-input-container\" [class.drag-over]=\"isDragOver\" [class.disabled]=\"isDisabled\"\n [class.has-files]=\"hasFiles\" [class.has-errors]=\"hasErrors\" [class.loading]=\"isLoading\"\n (dragover)=\"onDragOver($event)\" (dragleave)=\"onDragLeave($event)\" (drop)=\"onDrop($event)\"\n (click)=\"openFileDialog()\">\n <!-- Loading state -->\n @if (isLoading) {\n <div class=\"loading-container\">\n <div class=\"spinner\"></div>\n <span class=\"loading-text\">{{ loadingText }}</span>\n </div>\n }\n\n <!-- Empty state / Drop zone -->\n @if (!hasFiles && !isLoading) {\n <div class=\"drop-zone\">\n <div class=\"drop-zone-icon\">\n 📁\n </div>\n <div class=\"drop-zone-content\">\n <p class=\"drop-zone-title\">{{ placeholder }}</p>\n <button type=\"button\" class=\"select-button\" [disabled]=\"isDisabled\"\n (click)=\"openFileDialog(); $event.stopPropagation()\">\n {{ buttonText }}\n </button>\n @if (enableDragDrop && !isDisabled) {\n }\n </div>\n </div>\n }\n\n <!-- Single file display -->\n @if (!multiple && file && !isLoading) {\n <div class=\"single-file-display\">\n <div class=\"file-info\">\n <!-- File preview -->\n @if (showPreview && file.type.startsWith('image/')) {\n <div class=\"file-preview\">\n <img [src]=\"getPreviewUrl(file)\" [alt]=\"file.name\" [style.max-width.px]=\"previewMaxWidth\"\n [style.max-height.px]=\"previewMaxHeight\" />\n </div>\n } @else {\n <div class=\"file-icon\">\n {{ getFileIcon(file) }}\n </div>\n }\n\n <div class=\"file-details\">\n <h3 class=\"file-name\">{{ displayName || file.name }}</h3>\n @if (showFileSize && selectedFileSize) {\n <p class=\"file-size\">\n {{ formatFileSize(file) }}\n </p>\n }\n <p class=\"file-type\">{{ file.type || 'Unknown type' }}</p>\n </div>\n </div>\n\n <button type=\"button\" class=\"remove-file-button\" (click)=\"removeFile(file); $event.stopPropagation()\"\n [attr.aria-label]=\"'Remove ' + file.name\">\n ✕\n </button>\n </div>\n }\n\n <!-- Multiple files display -->\n @if (multiple && files.length > 0 && !isLoading) {\n <div class=\"multiple-files-display\">\n <div class=\"files-header\">\n @if (maxFiles > 1) {\n <span class=\"files-counter\">{{ files.length }} / {{ maxFiles }}</span>\n }\n </div>\n\n <div class=\"files-list\">\n @for (file of files; track file.name + file.size; let i = $index) {\n <div class=\"file-item\">\n <!-- File preview -->\n @if (showPreview && file.type.startsWith('image/')) {\n <div class=\"file-preview-small\">\n <img [src]=\"getPreviewUrl(file)\" [alt]=\"file.name\" />\n </div>\n } @else {\n <div class=\"file-icon-small\">\n {{ getFileIcon(file) }}\n </div>\n }\n\n <div class=\"file-item-details\">\n <div class=\"file-item-name\">{{ file.name }}</div>\n @if (showFileSize) {\n <div class=\"file-item-size\">\n {{ formatFileSize(file) }}\n </div>\n }\n </div>\n\n <button type=\"button\" class=\"remove-file-button-small\"\n (click)=\"removeFile(file); $event.stopPropagation()\" [attr.aria-label]=\"'Remove ' + file.name\">\n ✕\n </button>\n </div>\n }\n </div>\n\n <!-- Add more files button -->\n @if (files.length < maxFiles) { <button type=\"button\" class=\"add-more-button\"\n (click)=\"openFileDialog(); $event.stopPropagation()\">\n {{ changeSelectedFileText }}\n </button>\n }\n </div>\n }\n</div>\n\n<!-- Error messages -->\n@if (hasErrors) {\n<div id=\"file-input-errors\" class=\"error-messages\" role=\"alert\">\n @for (error of validationErrors; track error) {\n <div class=\"error-message\">{{ error }}</div>\n }\n</div>\n}","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { provideNativeDateAdapter } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTimepickerModule, MatTimepickerOption } from '@angular/material/timepicker';\n\n@Component({\n selector: 'matecu-datetime-picker',\n imports: [\n MatFormFieldModule,\n MatInputModule,\n MatTimepickerModule,\n MatDatepickerModule,\n FormsModule,\n ],\n templateUrl: './matecu-datetime-picker.html',\n styleUrls: ['./matecu-datetime-picker.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n provideNativeDateAdapter(),\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: MatecuDatetimePicker,\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: MatecuDatetimePicker,\n multi: true,\n },\n ],\n})\nexport class MatecuDatetimePicker implements ControlValueAccessor, Validator {\n value: Date | null = null;\n disabled = false;\n\n @Input() dateLabel = 'Select date';\n @Input() timeLabel = 'Select time';\n @Input() apparance: MatFormFieldAppearance = 'fill';\n @Input() matTimepickerMin: string | null = null;\n @Input() matTimepickerMax: string | null = null;\n @Input() minDate: Date | null = null;\n @Input() maxDate: Date | null = null;\n @Input() timeInterval: string | null = null;\n @Input() timeOptions: MatTimepickerOption<Date>[] | null = null;\n @Input() matDatepickerFilter: ((d: Date | null) => boolean) | null = null;\n\n @Output() valueChange = new EventEmitter<Date | null>();\n\n private onChange: (value: Date | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: Date | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: (value: Date | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onValueChange(value: Date | null): void {\n this.value = value;\n this.onChange(value);\n this.valueChange.emit(value);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n if (!control.value) {\n return null;\n }\n\n if (!this.validateDateObject(control.value)) {\n return { invalidDate: true };\n }\n\n const dateValue = control.value as Date;\n\n if (this.minDate && dateValue < this.minDate) {\n return { minDate: { min: this.minDate, actual: dateValue } };\n }\n\n if (this.maxDate && dateValue > this.maxDate) {\n return { maxDate: { max: this.maxDate, actual: dateValue } };\n }\n\n // Validar tiempo mínimo\n if (this.matTimepickerMin) {\n const minTimeError = this.validateMinTime(dateValue, this.matTimepickerMin);\n if (minTimeError) {\n return minTimeError;\n }\n }\n\n // Validar tiempo máximo\n if (this.matTimepickerMax) {\n const maxTimeError = this.validateMaxTime(dateValue, this.matTimepickerMax);\n if (maxTimeError) {\n return maxTimeError;\n }\n }\n\n // Validar contra timeOptions si están disponibles\n if (this.timeOptions && this.timeOptions.length > 0) {\n const timeOptionsError = this.validateTimeOptions(dateValue, this.timeOptions);\n if (timeOptionsError) {\n return timeOptionsError;\n }\n }\n\n return null;\n }\n\n private validateMinTime(date: Date, minTimeStr: string): ValidationErrors | null {\n const { hours: minHours, minutes: minMinutes } = this.parseTimeString(minTimeStr);\n const dateHours = date.getHours();\n const dateMinutes = date.getMinutes();\n\n const minTotalMinutes = minHours * 60 + minMinutes;\n const dateTotalMinutes = dateHours * 60 + dateMinutes;\n\n if (dateTotalMinutes < minTotalMinutes) {\n return { minTime: { min: minTimeStr, actual: this.formatTime(dateHours, dateMinutes) } };\n }\n\n return null;\n }\n\n private validateMaxTime(date: Date, maxTimeStr: string): ValidationErrors | null {\n const { hours: maxHours, minutes: maxMinutes } = this.parseTimeString(maxTimeStr);\n const dateHours = date.getHours();\n const dateMinutes = date.getMinutes();\n\n const maxTotalMinutes = maxHours * 60 + maxMinutes;\n const dateTotalMinutes = dateHours * 60 + dateMinutes;\n\n if (dateTotalMinutes > maxTotalMinutes) {\n return { maxTime: { max: maxTimeStr, actual: this.formatTime(dateHours, dateMinutes) } };\n }\n\n return null;\n }\n\n private validateTimeOptions(\n date: Date,\n timeOptions: MatTimepickerOption<Date>[],\n ): ValidationErrors | null {\n const dateHours = date.getHours();\n const dateMinutes = date.getMinutes();\n const dateTotalMinutes = dateHours * 60 + dateMinutes;\n\n const isValidOption = timeOptions.some((option) => {\n if (!option.value || !(option.value instanceof Date)) {\n return false;\n }\n const optionHours = option.value.getHours();\n const optionMinutes = option.value.getMinutes();\n const optionTotalMinutes = optionHours * 60 + optionMinutes;\n\n return dateTotalMinutes === optionTotalMinutes;\n });\n\n if (!isValidOption) {\n return {\n invalidTimeOption: {\n available: timeOptions.map((o) =>\n this.formatTime(o.value?.getHours() || 0, o.value?.getMinutes() || 0),\n ),\n },\n };\n }\n\n return null;\n }\n\n private parseTimeString(timeStr: string): { hours: number; minutes: number } {\n const [hoursStr, minutesStr] = timeStr.split(':');\n return {\n hours: parseInt(hoursStr, 10) || 0,\n minutes: parseInt(minutesStr, 10) || 0,\n };\n }\n\n private formatTime(hours: number, minutes: number): string {\n return `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}`;\n }\n\n onDateChange(value: Date | null) {\n if (this.validateDateObject(value) && this.validateDateObject(this.value)) {\n value!.setHours(this.value!.getHours());\n value!.setMinutes(this.value!.getMinutes());\n value!.setSeconds(this.value!.getSeconds());\n }\n this.onValueChange(value);\n }\n\n private validateDateObject(date: unknown): boolean {\n return date instanceof Date && !isNaN(date.getTime());\n }\n}\n","<mat-form-field [appearance]=\"apparance\">\n <mat-label>{{ dateLabel }}</mat-label>\n <input\n matInput\n [matDatepicker]=\"datepicker\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onDateChange($event)\"\n [disabled]=\"disabled\"\n [min]=\"minDate\"\n [max]=\"maxDate\"\n [matDatepickerFilter]=\"matDatepickerFilter\"\n (blur)=\"onBlur()\"\n />\n <mat-datepicker #datepicker />\n <mat-datepicker-toggle [for]=\"datepicker\" matSuffix />\n\n <mat-hint> <ng-content select=\"[mat-hint-date]\"></ng-content> </mat-hint>\n <mat-error> <ng-content select=\"[mat-error-date]\"></ng-content> </mat-error>\n</mat-form-field>\n\n<mat-form-field [appearance]=\"apparance\">\n <mat-label>{{ timeLabel }}</mat-label>\n <input\n matInput\n [matTimepicker]=\"timepicker\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [ngModelOptions]=\"{ updateOn: 'blur' }\"\n [disabled]=\"disabled\"\n [matTimepickerMin]=\"matTimepickerMin\"\n [matTimepickerMax]=\"matTimepickerMax\"\n (blur)=\"onBlur()\"\n />\n <mat-timepicker #timepicker [options]=\"timeOptions\" [interval]=\"timeInterval\" />\n <mat-timepicker-toggle [for]=\"timepicker\" matSuffix />\n\n <mat-hint> <ng-content select=\"[mat-hint-time]\"></ng-content> </mat-hint>\n <mat-error> <ng-content select=\"[mat-error-time]\"></ng-content> </mat-error>\n</mat-form-field>\n","/*\n * Public API Surface of angular-matecu\n */\n\n/**\n * spinner\n */\nexport * from './lib/modules/matecu-spinner/matecu-spinner.module';\nexport * from './lib/components/matecu-spinner/matecu-spinner.component';\nexport * from './lib/services/matecu-spinner.service';\n\n/**\n * topbar-layout\n */\nexport * from './lib/modules/matecu-topbar-layout/matecu-topbar-layout.module';\nexport * from './lib/components/matecu-topbar-body/matecu-topbar-body.component';\nexport * from './lib/components/matecu-topbar-fab/matecu-topbar-fab.component';\nexport * from './lib/components/matecu-topbar-layout/matecu-topbar-layout.component';\nexport * from './lib/components/matecu-topbar-title/matecu-topbar-title.component';\nexport * from './lib/components/matecu-topbar-search/matecu-topbar-search.component';\nexport * from './lib/components/matecu-topbar-action/matecu-topbar-action.component';\nexport * from './lib/components/matecu-topbar-header-row/matecu-topbar-header-row.component';\nexport * from './lib/components/matecu-topbar-header-column/matecu-topbar-header-column.component';\n\n/**\n * alert-box\n */\n\nexport * from './lib/modules/matecu-alert-box/matecu-alert-box.module';\nexport * from './lib/components/matecu-alert-box/matecu-alert-box.component';\nexport * from './lib/components/matecu-alert-dialog/matecu-alert-dialog.component';\nexport * from './lib/components/matecu-alert-snack-bar/matecu-alert-snack-bar.component';\nexport * from './lib/types/matecu-altert-box-type';\nexport * from './lib/types/matecu-alert-dialog';\nexport * from './lib/services/matecu-snack-bar.service';\n\n/**\n * inputs\n */\nexport * from './lib/components/matecu-autocomplete/matecu-autocomplete';\nexport * from './lib/components/matecu-autocomplete-multiple/matecu-autocomplete-multiple';\nexport * from './lib/components/matecu-file-input/matecu-file-input';\nexport * from './lib/components/matecu-datetime-picker/matecu-datetime-picker';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MatecuSpinnerService","i1","i2","map","tap","debounceTime","i3","i4","i6","i5"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "angular-matecu",
3
- "version": "4.1.1",
3
+ "version": "4.2.1",
4
4
  "license": "MIT",
5
5
  "peerDependencies": {
6
6
  "@angular/common": ">=17.0.0",
@@ -5,16 +5,17 @@ import { Observable, Subject } from 'rxjs';
5
5
  import * as i2 from '@angular/material/toolbar';
6
6
  import * as i3 from '@angular/material/icon';
7
7
  import * as i4 from '@angular/forms';
8
- import { FormControl, ControlValueAccessor, NgControl } from '@angular/forms';
8
+ import { FormControl, ControlValueAccessor, NgControl, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
9
9
  import * as i5 from '@angular/material/button';
10
10
  import * as i3$1 from '@angular/material/dialog';
11
11
  import { MatDialogRef } from '@angular/material/dialog';
12
12
  import * as i5$1 from '@angular/material/snack-bar';
13
13
  import { MatSnackBarRef, MatSnackBar, MatSnackBarConfig, TextOnlySnackBar } from '@angular/material/snack-bar';
14
- import { MatFormFieldControl } from '@angular/material/form-field';
14
+ import { MatFormFieldControl, MatFormFieldAppearance } from '@angular/material/form-field';
15
15
  import { FocusMonitor } from '@angular/cdk/a11y';
16
16
  import { CdkDragDrop } from '@angular/cdk/drag-drop';
17
17
  import { MatAutocompleteTrigger } from '@angular/material/autocomplete';
18
+ import { MatTimepickerOption } from '@angular/material/timepicker';
18
19
 
19
20
  declare class MatecuSpinnerService {
20
21
  private active$;
@@ -343,6 +344,7 @@ declare class MatecuAutocompleteMultiple implements ControlValueAccessor, MatFor
343
344
  set options(value: MatecuAutocompleteOption[]);
344
345
  get options(): MatecuAutocompleteOption[];
345
346
  searchChange: EventEmitter<string>;
347
+ valueChange: EventEmitter<string[] | null>;
346
348
  control: FormControl<string[]>;
347
349
  controlValue$: i0.Signal<string[] | undefined>;
348
350
  searchControl: FormControl<string>;
@@ -392,7 +394,7 @@ declare class MatecuAutocompleteMultiple implements ControlValueAccessor, MatFor
392
394
  openPanel(): void;
393
395
  private createFilterFn;
394
396
  static ɵfac: i0.ɵɵFactoryDeclaration<MatecuAutocompleteMultiple, never>;
395
- static ɵcmp: i0.ɵɵComponentDeclaration<MatecuAutocompleteMultiple, "matecu-autocomplete-multiple", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "searchChangeDebounceTime": { "alias": "searchChangeDebounceTime"; "required": false; }; "enableSelectAll": { "alias": "enableSelectAll"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "selectAllLabel": { "alias": "selectAllLabel"; "required": false; }; "clearAllLabel": { "alias": "clearAllLabel"; "required": false; }; "showTooltip": { "alias": "showTooltip"; "required": false; }; "filterFn": { "alias": "filterFn"; "required": false; }; "options": { "alias": "options"; "required": true; }; }, { "searchChange": "searchChange"; }, never, never, true, never>;
397
+ static ɵcmp: i0.ɵɵComponentDeclaration<MatecuAutocompleteMultiple, "matecu-autocomplete-multiple", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "searchChangeDebounceTime": { "alias": "searchChangeDebounceTime"; "required": false; }; "enableSelectAll": { "alias": "enableSelectAll"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "selectAllLabel": { "alias": "selectAllLabel"; "required": false; }; "clearAllLabel": { "alias": "clearAllLabel"; "required": false; }; "showTooltip": { "alias": "showTooltip"; "required": false; }; "filterFn": { "alias": "filterFn"; "required": false; }; "options": { "alias": "options"; "required": true; }; }, { "searchChange": "searchChange"; "valueChange": "valueChange"; }, never, never, true, never>;
396
398
  }
397
399
 
398
400
  interface ErrorMessages {
@@ -485,5 +487,39 @@ declare class MatecuFileInput implements ControlValueAccessor, OnDestroy {
485
487
  static ɵcmp: i0.ɵɵComponentDeclaration<MatecuFileInput, "matecu-file-input", never, { "optimizeImage": { "alias": "optimizeImage"; "required": false; }; "optimizeImageToSize": { "alias": "optimizeImageToSize"; "required": false; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; }; "maxFiles": { "alias": "maxFiles"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "showFileSize": { "alias": "showFileSize"; "required": false; }; "fileSizeUnit": { "alias": "fileSizeUnit"; "required": false; }; "displayName": { "alias": "displayName"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "buttonText": { "alias": "buttonText"; "required": false; }; "changeSelectedFileText": { "alias": "changeSelectedFileText"; "required": false; }; "loadingText": { "alias": "loadingText"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "acceptedMimeTypes": { "alias": "acceptedMimeTypes"; "required": false; }; "acceptedExtensions": { "alias": "acceptedExtensions"; "required": false; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "enableDragDrop": { "alias": "enableDragDrop"; "required": false; }; "showPreview": { "alias": "showPreview"; "required": false; }; "previewMaxWidth": { "alias": "previewMaxWidth"; "required": false; }; "previewMaxHeight": { "alias": "previewMaxHeight"; "required": false; }; "showProgress": { "alias": "showProgress"; "required": false; }; }, { "fileSelected": "fileSelected"; "filesSelected": "filesSelected"; "fileRemoved": "fileRemoved"; "validationError": "validationError"; "dragEnter": "dragEnter"; "dragLeave": "dragLeave"; "stateChange": "stateChange"; }, never, never, true, never>;
486
488
  }
487
489
 
488
- export { FileInputState, MatecuAlertBoxComponent, MatecuAlertBoxModule, MatecuAlertBoxType, MatecuAlertDialogComponent, MatecuAlertSnackBarComponent, MatecuAutocomplete, MatecuAutocompleteMultiple, MatecuFileInput, MatecuSnackBarService, MatecuSpinnerComponent, MatecuSpinnerModule, MatecuSpinnerService, MatecuTopbarActionComponent, MatecuTopbarBodyComponent, MatecuTopbarFabComponent, MatecuTopbarHeaderColumnComponent, MatecuTopbarHeaderRowComponent, MatecuTopbarLayoutComponent, MatecuTopbarLayoutModule, MatecuTopbarSearchComponent, MatecuTopbarTitleComponent };
490
+ declare class MatecuDatetimePicker implements ControlValueAccessor, Validator {
491
+ value: Date | null;
492
+ disabled: boolean;
493
+ dateLabel: string;
494
+ timeLabel: string;
495
+ apparance: MatFormFieldAppearance;
496
+ matTimepickerMin: string | null;
497
+ matTimepickerMax: string | null;
498
+ minDate: Date | null;
499
+ maxDate: Date | null;
500
+ timeInterval: string | null;
501
+ timeOptions: MatTimepickerOption<Date>[] | null;
502
+ matDatepickerFilter: ((d: Date | null) => boolean) | null;
503
+ valueChange: EventEmitter<Date | null>;
504
+ private onChange;
505
+ private onTouched;
506
+ writeValue(value: Date | null): void;
507
+ registerOnChange(fn: (value: Date | null) => void): void;
508
+ registerOnTouched(fn: () => void): void;
509
+ setDisabledState(isDisabled: boolean): void;
510
+ onValueChange(value: Date | null): void;
511
+ onBlur(): void;
512
+ validate(control: AbstractControl): ValidationErrors | null;
513
+ private validateMinTime;
514
+ private validateMaxTime;
515
+ private validateTimeOptions;
516
+ private parseTimeString;
517
+ private formatTime;
518
+ onDateChange(value: Date | null): void;
519
+ private validateDateObject;
520
+ static ɵfac: i0.ɵɵFactoryDeclaration<MatecuDatetimePicker, never>;
521
+ static ɵcmp: i0.ɵɵComponentDeclaration<MatecuDatetimePicker, "matecu-datetime-picker", never, { "dateLabel": { "alias": "dateLabel"; "required": false; }; "timeLabel": { "alias": "timeLabel"; "required": false; }; "apparance": { "alias": "apparance"; "required": false; }; "matTimepickerMin": { "alias": "matTimepickerMin"; "required": false; }; "matTimepickerMax": { "alias": "matTimepickerMax"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "timeInterval": { "alias": "timeInterval"; "required": false; }; "timeOptions": { "alias": "timeOptions"; "required": false; }; "matDatepickerFilter": { "alias": "matDatepickerFilter"; "required": false; }; }, { "valueChange": "valueChange"; }, never, ["[mat-hint-date]", "[mat-error-date]", "[mat-hint-time]", "[mat-error-time]"], true, never>;
522
+ }
523
+
524
+ export { FileInputState, MatecuAlertBoxComponent, MatecuAlertBoxModule, MatecuAlertBoxType, MatecuAlertDialogComponent, MatecuAlertSnackBarComponent, MatecuAutocomplete, MatecuAutocompleteMultiple, MatecuDatetimePicker, MatecuFileInput, MatecuSnackBarService, MatecuSpinnerComponent, MatecuSpinnerModule, MatecuSpinnerService, MatecuTopbarActionComponent, MatecuTopbarBodyComponent, MatecuTopbarFabComponent, MatecuTopbarHeaderColumnComponent, MatecuTopbarHeaderRowComponent, MatecuTopbarLayoutComponent, MatecuTopbarLayoutModule, MatecuTopbarSearchComponent, MatecuTopbarTitleComponent };
489
525
  export type { FileSizeUnit, MatecuAlertDialogData };