tecnualng 21.0.11 → 21.0.16

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,6 +1,6 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { ElementRef, TemplateRef, OnDestroy, ApplicationRef, EnvironmentInjector, AfterContentInit, QueryList } from '@angular/core';
3
- import { ControlValueAccessor } from '@angular/forms';
2
+ import { ElementRef, TemplateRef, AfterViewInit, OnDestroy, NgZone, ApplicationRef, EnvironmentInjector, AfterContentInit, QueryList } from '@angular/core';
3
+ import { ControlValueAccessor, NgControl } from '@angular/forms';
4
4
 
5
5
  type TngButtonAppearance = 'text' | 'filled' | 'elevated' | 'outlined' | 'tonal';
6
6
  declare class TngButton {
@@ -51,6 +51,43 @@ declare class TecnualInputComponent implements ControlValueAccessor {
51
51
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TecnualInputComponent, "tng-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; }, never, never, true, never>;
52
52
  }
53
53
 
54
+ declare class TngInputDirective {
55
+ private el;
56
+ private renderer;
57
+ ngControl: NgControl | null;
58
+ disabled: _angular_core.InputSignal<boolean>;
59
+ placeholder: _angular_core.InputSignal<string>;
60
+ focused: _angular_core.WritableSignal<boolean>;
61
+ checked: _angular_core.WritableSignal<boolean>;
62
+ private _value;
63
+ private _inputType;
64
+ hasValue: _angular_core.Signal<boolean>;
65
+ computedPlaceholder: _angular_core.Signal<string>;
66
+ isCheckbox: _angular_core.Signal<boolean>;
67
+ isRadio: _angular_core.Signal<boolean>;
68
+ isTextField: _angular_core.Signal<boolean>;
69
+ constructor();
70
+ onFocus(): void;
71
+ onBlur(): void;
72
+ onInput(): void;
73
+ onChange(): void;
74
+ ngAfterViewInit(): void;
75
+ private detectInputType;
76
+ private updateValue;
77
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TngInputDirective, never>;
78
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TngInputDirective, "input[tngInput], textarea[tngInput]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
79
+ }
80
+
81
+ declare class TngFormFieldComponent {
82
+ label: _angular_core.InputSignal<string>;
83
+ inputDirective: _angular_core.Signal<TngInputDirective | undefined>;
84
+ isFocused: _angular_core.Signal<boolean>;
85
+ hasValue: _angular_core.Signal<boolean>;
86
+ isDisabled: _angular_core.Signal<boolean>;
87
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TngFormFieldComponent, never>;
88
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TngFormFieldComponent, "tng-form-field", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, ["inputDirective"], ["*"], true, never>;
89
+ }
90
+
54
91
  interface DateRange {
55
92
  start: Date | null;
56
93
  end: Date | null;
@@ -124,8 +161,8 @@ declare class TecnualTableComponent {
124
161
  }
125
162
 
126
163
  type TngToolbarPosition = 'top' | 'bottom' | 'static';
127
- type TngToolbarPositionType = 'static' | 'relative' | 'absolute' | 'fixed';
128
- type TngToolbarColor = 'default' | 'primary' | 'secondary';
164
+ type TngToolbarPositionType = 'static' | 'relative' | 'absolute' | 'fixed' | 'sticky';
165
+ type TngToolbarColor = 'default' | 'primary' | 'secondary' | 'transparent';
129
166
  declare class TngToolbarComponent {
130
167
  position: _angular_core.InputSignal<TngToolbarPosition>;
131
168
  positionType: _angular_core.InputSignal<TngToolbarPositionType>;
@@ -135,7 +172,41 @@ declare class TngToolbarComponent {
135
172
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TngToolbarComponent, "tng-toolbar", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "positionType": { "alias": "positionType"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "elevation": { "alias": "elevation"; "required": false; "isSignal": true; }; }, {}, never, ["[toolbar-left]", "[toolbar-center]", "*", "[toolbar-right]"], true, never>;
136
173
  }
137
174
 
138
- type ThemeName = 'light' | 'dark' | 'ocean' | 'forest' | 'sunset' | 'royal' | 'monochrome' | 'aurora' | 'aurora-dark';
175
+ declare class TngTabComponent {
176
+ label: _angular_core.InputSignal<string>;
177
+ content: _angular_core.Signal<TemplateRef<any>>;
178
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TngTabComponent, never>;
179
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TngTabComponent, "tng-tab", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
180
+ }
181
+
182
+ declare class TngTabsComponent implements AfterViewInit, OnDestroy {
183
+ private ngZone;
184
+ tabs: _angular_core.Signal<readonly TngTabComponent[]>;
185
+ activeIndex: _angular_core.WritableSignal<number>;
186
+ inkBarLeft: _angular_core.WritableSignal<number>;
187
+ inkBarWidth: _angular_core.WritableSignal<number>;
188
+ scrollLeft: _angular_core.WritableSignal<number>;
189
+ showPagination: _angular_core.WritableSignal<boolean>;
190
+ isScrolledToEnd: _angular_core.WritableSignal<boolean>;
191
+ listContainer: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
192
+ tabList: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
193
+ tabLabels: _angular_core.Signal<ElementRef<HTMLElement>[]>;
194
+ private resizeObserver;
195
+ constructor(ngZone: NgZone);
196
+ ngAfterViewInit(): void;
197
+ ngOnDestroy(): void;
198
+ selectTab(index: number): void;
199
+ updateInkBar(): void;
200
+ checkPagination(): void;
201
+ scrollHeader(direction: number): void;
202
+ private getMaxScroll;
203
+ private updateScrollState;
204
+ private scrollToTab;
205
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TngTabsComponent, never>;
206
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TngTabsComponent, "tng-tabs", never, {}, {}, ["tabs"], never, true, never>;
207
+ }
208
+
209
+ type ThemeName = 'light' | 'dark' | 'ocean' | 'forest' | 'sunset' | 'royal' | 'monochrome' | 'aurora' | 'aurora-dark' | 'futuristic';
139
210
  interface Theme {
140
211
  name: ThemeName;
141
212
  displayName: string;
@@ -229,5 +300,149 @@ declare class TngMenuGroupComponent {
229
300
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TngMenuGroupComponent, "tng-menu-group", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
230
301
  }
231
302
 
232
- export { TecnualDatepickerComponent, TecnualInputComponent, TecnualTableComponent, ThemeService, TngButton, TngCardComponent, TngExpansionPanelComponent, TngMenuComponent, TngMenuGroupComponent, TngMenuItemComponent, TngToolbarComponent, TngTooltipComponent, TngTooltipDirective };
233
- export type { DateRange, TableColumn, Theme, ThemeName, TngButtonAppearance, TngCardVariant, TngToolbarColor, TngToolbarPosition, TngToolbarPositionType };
303
+ /**
304
+ * TngSidebar - Componente moderno de barra lateral
305
+ *
306
+ * Características:
307
+ * - Totalmente basado en Signals
308
+ * - Animaciones CSS puras
309
+ * - Posicionamiento configurable (izquierda/derecha)
310
+ * - Proyección de contenido
311
+ * - Responsive y accesible
312
+ */
313
+ declare class TngSidebarComponent {
314
+ /**
315
+ * Controla si el sidebar está abierto o cerrado
316
+ */
317
+ isOpen: _angular_core.WritableSignal<boolean>;
318
+ /**
319
+ * Posición del sidebar: 'left' o 'right'
320
+ */
321
+ position: _angular_core.InputSignal<"left" | "right">;
322
+ /**
323
+ * Ancho del sidebar en píxeles
324
+ */
325
+ width: _angular_core.InputSignal<number>;
326
+ /**
327
+ * Muestra un overlay de fondo cuando está abierto
328
+ */
329
+ showOverlay: _angular_core.InputSignal<boolean>;
330
+ /**
331
+ * Evento emitido cuando el sidebar se cierra
332
+ */
333
+ closed: _angular_core.OutputEmitterRef<void>;
334
+ /**
335
+ * Evento emitido cuando el sidebar se abre
336
+ */
337
+ opened: _angular_core.OutputEmitterRef<void>;
338
+ /**
339
+ * Alterna el estado del sidebar
340
+ */
341
+ toggle(): void;
342
+ /**
343
+ * Abre el sidebar
344
+ */
345
+ open(): void;
346
+ /**
347
+ * Cierra el sidebar
348
+ */
349
+ close(): void;
350
+ /**
351
+ * Maneja el clic en el overlay para cerrar el sidebar
352
+ */
353
+ handleOverlayClick(): void;
354
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TngSidebarComponent, never>;
355
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TngSidebarComponent, "tng-sidebar", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "showOverlay": { "alias": "showOverlay"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "opened": "opened"; }, never, ["*"], true, never>;
356
+ }
357
+
358
+ interface SelectOption {
359
+ value: any;
360
+ label: string;
361
+ disabled?: boolean;
362
+ }
363
+ declare class TngSelectDirective implements AfterViewInit, OnDestroy {
364
+ private el;
365
+ private viewContainerRef;
366
+ ngControl: NgControl | null;
367
+ enableMulti: _angular_core.InputSignal<boolean>;
368
+ multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
369
+ enableSearch: _angular_core.InputSignal<boolean>;
370
+ placeholder: _angular_core.InputSignal<string>;
371
+ customTrigger: _angular_core.InputSignal<boolean>;
372
+ triggerRef: _angular_core.InputSignal<HTMLElement | undefined>;
373
+ selectedValues: _angular_core.ModelSignal<any[]>;
374
+ isOpen: _angular_core.WritableSignal<boolean>;
375
+ searchQuery: _angular_core.WritableSignal<string>;
376
+ private _options;
377
+ private _selectedIndices;
378
+ private panelRef;
379
+ private triggerEl;
380
+ isMulti: _angular_core.Signal<boolean>;
381
+ options: _angular_core.Signal<SelectOption[]>;
382
+ filteredOptions: _angular_core.Signal<SelectOption[]>;
383
+ selectedOptions: _angular_core.Signal<SelectOption[]>;
384
+ displayText: _angular_core.Signal<string>;
385
+ constructor();
386
+ ngAfterViewInit(): void;
387
+ ngOnDestroy(): void;
388
+ onClick(event: Event): void;
389
+ onKeyDown(event: KeyboardEvent): void;
390
+ private createTrigger;
391
+ private loadOptionsFromSelect;
392
+ private loadInitialSelection;
393
+ togglePanel(): void;
394
+ private openPanel;
395
+ private closePanel;
396
+ private positionPanel;
397
+ private onOptionSelected;
398
+ private updateNativeSelect;
399
+ private onDocumentClick;
400
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TngSelectDirective, never>;
401
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TngSelectDirective, "select[tngSelect]", never, { "enableMulti": { "alias": "enableMulti"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "enableSearch": { "alias": "enableSearch"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "customTrigger": { "alias": "customTrigger"; "required": false; "isSignal": true; }; "triggerRef": { "alias": "triggerRef"; "required": false; "isSignal": true; }; "selectedValues": { "alias": "selectedValues"; "required": false; "isSignal": true; }; }, { "selectedValues": "selectedValuesChange"; }, never, never, true, never>;
402
+ }
403
+
404
+ declare class TngSelectPanelComponent {
405
+ options: _angular_core.WritableSignal<SelectOption[]>;
406
+ selectedIndices: _angular_core.WritableSignal<number[]>;
407
+ enableMulti: _angular_core.WritableSignal<boolean>;
408
+ enableSearch: _angular_core.WritableSignal<boolean>;
409
+ searchQuery: _angular_core.WritableSignal<string>;
410
+ optionSelected: _angular_core.OutputEmitterRef<number>;
411
+ searchQueryChanged: _angular_core.OutputEmitterRef<string>;
412
+ closeRequested: _angular_core.OutputEmitterRef<void>;
413
+ onSearchInput(event: Event): void;
414
+ isSelected(index: number): boolean;
415
+ onOptionClick(index: number, option: SelectOption): void;
416
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TngSelectPanelComponent, never>;
417
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TngSelectPanelComponent, "tng-select-panel", never, {}, { "optionSelected": "optionSelected"; "searchQueryChanged": "searchQueryChanged"; "closeRequested": "closeRequested"; }, never, never, true, never>;
418
+ }
419
+
420
+ declare class TngSelectComponent implements ControlValueAccessor {
421
+ label: _angular_core.InputSignal<string>;
422
+ options: _angular_core.InputSignal<SelectOption[]>;
423
+ enableMulti: _angular_core.InputSignal<boolean>;
424
+ enableSearch: _angular_core.InputSignal<boolean>;
425
+ placeholder: _angular_core.InputSignal<string>;
426
+ disabled: _angular_core.InputSignal<boolean>;
427
+ hint: _angular_core.InputSignal<string>;
428
+ ariaLabel: _angular_core.InputSignal<string>;
429
+ value: _angular_core.ModelSignal<any[]>;
430
+ private cvaDisabled;
431
+ selectDirective: _angular_core.Signal<TngSelectDirective | undefined>;
432
+ selectId: _angular_core.Signal<string>;
433
+ effectiveDisabled: _angular_core.Signal<boolean>;
434
+ displayText: _angular_core.Signal<string>;
435
+ private onChange;
436
+ private onTouched;
437
+ constructor();
438
+ onDisplayClick(event: Event): void;
439
+ writeValue(obj: any): void;
440
+ registerOnChange(fn: any): void;
441
+ registerOnTouched(fn: any): void;
442
+ setDisabledState(isDisabled: boolean): void;
443
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TngSelectComponent, never>;
444
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TngSelectComponent, "tng-select", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "enableMulti": { "alias": "enableMulti"; "required": false; "isSignal": true; }; "enableSearch": { "alias": "enableSearch"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
445
+ }
446
+
447
+ export { TecnualDatepickerComponent, TecnualInputComponent, TecnualTableComponent, ThemeService, TngButton, TngCardComponent, TngExpansionPanelComponent, TngFormFieldComponent, TngInputDirective, TngMenuComponent, TngMenuGroupComponent, TngMenuItemComponent, TngSelectComponent, TngSelectDirective, TngSelectPanelComponent, TngSidebarComponent, TngTabComponent, TngTabsComponent, TngToolbarComponent, TngTooltipComponent, TngTooltipDirective };
448
+ export type { DateRange, SelectOption, TableColumn, Theme, ThemeName, TngButtonAppearance, TngCardVariant, TngToolbarColor, TngToolbarPosition, TngToolbarPositionType };