ngx-eiffage-material 0.1.8 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/ngx-eiffage-material.mjs +950 -576
- package/fesm2022/ngx-eiffage-material.mjs.map +1 -1
- package/index.d.ts +483 -224
- package/package.json +6 -6
package/index.d.ts
CHANGED
|
@@ -1,83 +1,21 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
2
|
+
import { WritableSignal, Type, TemplateRef, PipeTransform, InjectionToken, Signal, EnvironmentProviders, OnInit, ElementRef, OnDestroy } from '@angular/core';
|
|
3
|
+
import * as ngx_eiffage_material from 'ngx-eiffage-material';
|
|
4
|
+
import { FormBuilder, FormGroup, FormArray, AbstractControl, ControlValueAccessor, FormControl } from '@angular/forms';
|
|
4
5
|
import { ErrorStateMatcher } from '@angular/material/core';
|
|
5
6
|
import { SubscriptSizing } from '@angular/material/form-field';
|
|
6
7
|
import { MatSelect, MatSelectChange } from '@angular/material/select';
|
|
7
|
-
import { Observable, Subject } from 'rxjs';
|
|
8
|
-
import * as ngx_eiffage_material from 'ngx-eiffage-material';
|
|
9
8
|
import { MatDialogRef, MatDialogConfig } from '@angular/material/dialog';
|
|
10
9
|
import { DateRange } from '@angular/material/datepicker';
|
|
11
10
|
import { MatMenuTrigger } from '@angular/material/menu';
|
|
12
11
|
import { PageEvent, MatPaginator } from '@angular/material/paginator';
|
|
13
12
|
import { SortDirection, Sort } from '@angular/material/sort';
|
|
13
|
+
import { Observable, Subject } from 'rxjs';
|
|
14
14
|
import jsPDF from 'jspdf';
|
|
15
15
|
import moment from 'moment';
|
|
16
16
|
import { MatTableDataSource } from '@angular/material/table';
|
|
17
17
|
import { MatChipEvent } from '@angular/material/chips';
|
|
18
18
|
|
|
19
|
-
declare class NgxLoadingButton {
|
|
20
|
-
isLoading: _angular_core.InputSignal<boolean>;
|
|
21
|
-
label: _angular_core.InputSignal<string>;
|
|
22
|
-
matButton: _angular_core.InputSignal<"text" | "filled" | "elevated" | "outlined" | "tonal">;
|
|
23
|
-
type: _angular_core.InputSignal<"button" | "submit" | "reset">;
|
|
24
|
-
disabled: _angular_core.InputSignal<boolean>;
|
|
25
|
-
spinnerDiameter: _angular_core.InputSignal<number>;
|
|
26
|
-
spinnerStrokeWidth: _angular_core.InputSignal<number>;
|
|
27
|
-
color: _angular_core.InputSignal<"secondary" | "tertiary" | undefined>;
|
|
28
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxLoadingButton, never>;
|
|
29
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxLoadingButton, "ngx-loading-button", never, { "isLoading": { "alias": "isLoading"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "matButton": { "alias": "matButton"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "spinnerDiameter": { "alias": "spinnerDiameter"; "required": false; "isSignal": true; }; "spinnerStrokeWidth": { "alias": "spinnerStrokeWidth"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
declare class NgxInputFile implements ControlValueAccessor, OnInit {
|
|
33
|
-
private _cdr;
|
|
34
|
-
value: _angular_core.WritableSignal<File[]>;
|
|
35
|
-
onChangeCb?: (files: File[]) => void;
|
|
36
|
-
onTouchCb?: () => void;
|
|
37
|
-
label: _angular_core.InputSignal<string>;
|
|
38
|
-
/**
|
|
39
|
-
* FormControl externo. Es opcional: si el componente se usa con
|
|
40
|
-
* `formControlName` / `[formControl]`, el enlace se hace por
|
|
41
|
-
* ControlValueAccessor y no hace falta pasarlo.
|
|
42
|
-
*/
|
|
43
|
-
control: _angular_core.InputSignal<FormControl<File[]> | undefined>;
|
|
44
|
-
disabled: _angular_core.InputSignal<boolean>;
|
|
45
|
-
placeholder: _angular_core.InputSignal<string>;
|
|
46
|
-
class: _angular_core.InputSignal<string>;
|
|
47
|
-
accept: _angular_core.InputSignal<string[]>;
|
|
48
|
-
multiple: _angular_core.InputSignal<boolean>;
|
|
49
|
-
hint: _angular_core.InputSignal<string>;
|
|
50
|
-
error: _angular_core.InputSignal<string>;
|
|
51
|
-
isDropping: _angular_core.WritableSignal<boolean>;
|
|
52
|
-
inputFileRef: _angular_core.Signal<ElementRef<any> | undefined>;
|
|
53
|
-
internalControl: FormControl<string[] | null>;
|
|
54
|
-
/** Estado deshabilitado que llega desde setDisabledState() (reactive forms). */
|
|
55
|
-
private readonly _cvaDisabled;
|
|
56
|
-
/** Estado deshabilitado efectivo: input `disabled` o el del FormControl padre. */
|
|
57
|
-
readonly isDisabled: _angular_core.Signal<boolean>;
|
|
58
|
-
constructor();
|
|
59
|
-
private checkErrors;
|
|
60
|
-
controlEffect: _angular_core.EffectRef;
|
|
61
|
-
ngOnInit(): void;
|
|
62
|
-
onContainerClick(): void;
|
|
63
|
-
onInputchange(event: any): void;
|
|
64
|
-
onDragOver(event: DragEvent): void;
|
|
65
|
-
onDragLeave(event: DragEvent): void;
|
|
66
|
-
onDrop(event: DragEvent): void;
|
|
67
|
-
attachFiles(files: FileList | null | undefined): void;
|
|
68
|
-
writeValue(files: File[] | undefined | null): void;
|
|
69
|
-
registerOnChange(fn: any): void;
|
|
70
|
-
registerOnTouched(fn: any): void;
|
|
71
|
-
setDisabledState(isDisabled: boolean): void;
|
|
72
|
-
onDeleteFileClick(file: File): void;
|
|
73
|
-
getAccept(): string;
|
|
74
|
-
bytesToMegaBytes(bytes: number): string;
|
|
75
|
-
private markAsTouched;
|
|
76
|
-
private markAsDirty;
|
|
77
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxInputFile, never>;
|
|
78
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxInputFile, "ngx-input-file", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
19
|
interface BasicSelectConfig<T> {
|
|
82
20
|
valueKey: keyof T;
|
|
83
21
|
displayedLabel: (item: T) => string;
|
|
@@ -263,6 +201,12 @@ interface DynamicFilter<T> {
|
|
|
263
201
|
grupo: string;
|
|
264
202
|
}
|
|
265
203
|
|
|
204
|
+
/**
|
|
205
|
+
* @deprecated Usa `provideNgxEiffageTexts()`: solo hay que indicar los textos que cambian, se agrupan
|
|
206
|
+
* por componente y se actualizan solos al cambiar de idioma (signals). Mientras tanto, una subclase de
|
|
207
|
+
* NgxTablesIntl provista en la app se sigue respetando. Esta clase no recibirá textos nuevos y se
|
|
208
|
+
* eliminará en una versión mayor.
|
|
209
|
+
*/
|
|
266
210
|
declare class NgxTablesIntl {
|
|
267
211
|
/**
|
|
268
212
|
* Stream que emite cuando las etiquetas cambian.
|
|
@@ -500,6 +444,192 @@ declare class NgxTablesIntl {
|
|
|
500
444
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<NgxTablesIntl>;
|
|
501
445
|
}
|
|
502
446
|
|
|
447
|
+
/**
|
|
448
|
+
* Todos los textos de la librería, agrupados por componente.
|
|
449
|
+
* Los que dependen de un dato (nombre, número…) son funciones.
|
|
450
|
+
*/
|
|
451
|
+
interface NgxEiffageTexts {
|
|
452
|
+
/** Textos compartidos por varios componentes. */
|
|
453
|
+
common: {
|
|
454
|
+
search: string;
|
|
455
|
+
clearSearch: string;
|
|
456
|
+
noData: string;
|
|
457
|
+
loading: string;
|
|
458
|
+
cancel: string;
|
|
459
|
+
confirm: string;
|
|
460
|
+
close: string;
|
|
461
|
+
save: string;
|
|
462
|
+
saveAndApply: string;
|
|
463
|
+
};
|
|
464
|
+
/** ngx-basic-table y ngx-paginated-table. */
|
|
465
|
+
table: {
|
|
466
|
+
create: string;
|
|
467
|
+
edit: string;
|
|
468
|
+
delete: string;
|
|
469
|
+
confirmDelete: string;
|
|
470
|
+
deleteConfirmTitle: string;
|
|
471
|
+
deleteConfirmBody: string;
|
|
472
|
+
editColumns: string;
|
|
473
|
+
deselectAll: string;
|
|
474
|
+
selectionActions: string;
|
|
475
|
+
export: string;
|
|
476
|
+
exportExcel: string;
|
|
477
|
+
exportPdf: string;
|
|
478
|
+
enterFullscreen: string;
|
|
479
|
+
exitFullscreen: string;
|
|
480
|
+
actions: string;
|
|
481
|
+
dateRangeStart: string;
|
|
482
|
+
dateRangeEnd: string;
|
|
483
|
+
totalPerPage: string;
|
|
484
|
+
totalGeneral: string;
|
|
485
|
+
};
|
|
486
|
+
/** Diálogo de ordenar y mostrar columnas de las tablas. */
|
|
487
|
+
columnsDialog: {
|
|
488
|
+
title: string;
|
|
489
|
+
pin: string;
|
|
490
|
+
unpin: string;
|
|
491
|
+
moveUp: string;
|
|
492
|
+
moveDown: string;
|
|
493
|
+
hasFiltersApplied: string;
|
|
494
|
+
hideColumnWithFiltersNote: string;
|
|
495
|
+
note: string;
|
|
496
|
+
reset: string;
|
|
497
|
+
};
|
|
498
|
+
/** Filtros avanzados de ngx-paginated-table. */
|
|
499
|
+
advancedFilters: {
|
|
500
|
+
label: string;
|
|
501
|
+
new: string;
|
|
502
|
+
remove: string;
|
|
503
|
+
editTooltip: (filterName: string) => string;
|
|
504
|
+
deleteTooltip: (filterName: string) => string;
|
|
505
|
+
deleteTitle: string;
|
|
506
|
+
deleteMessage: (filterName: string) => string;
|
|
507
|
+
dialogTitle: string;
|
|
508
|
+
templateName: string;
|
|
509
|
+
templateNameRequired: string;
|
|
510
|
+
helpTitle: string;
|
|
511
|
+
groupHelp: string;
|
|
512
|
+
ruleHelp: string;
|
|
513
|
+
group: string;
|
|
514
|
+
filter: string;
|
|
515
|
+
addFilter: string;
|
|
516
|
+
addGroup: string;
|
|
517
|
+
deleteGroup: string;
|
|
518
|
+
deleteFilter: string;
|
|
519
|
+
field: string;
|
|
520
|
+
condition: string;
|
|
521
|
+
value: string;
|
|
522
|
+
selectOption: string;
|
|
523
|
+
required: string;
|
|
524
|
+
and: string;
|
|
525
|
+
or: string;
|
|
526
|
+
operators: {
|
|
527
|
+
equals: string;
|
|
528
|
+
notEquals: string;
|
|
529
|
+
greaterThan: string;
|
|
530
|
+
greaterOrEquals: string;
|
|
531
|
+
lessThan: string;
|
|
532
|
+
lessOrEquals: string;
|
|
533
|
+
like: string;
|
|
534
|
+
};
|
|
535
|
+
};
|
|
536
|
+
/** ngx-basic-select, ngx-searchable-select y ngx-paginated-searchable-select. */
|
|
537
|
+
select: {
|
|
538
|
+
noResults: string;
|
|
539
|
+
showMore: string;
|
|
540
|
+
removeOption: (optionName: string) => string;
|
|
541
|
+
resultsCount: (count: number) => string;
|
|
542
|
+
};
|
|
543
|
+
/** ngx-paginated-select. */
|
|
544
|
+
paginatedSelect: {
|
|
545
|
+
confirm: string;
|
|
546
|
+
reset: string;
|
|
547
|
+
selectAll: string;
|
|
548
|
+
loadingMore: string;
|
|
549
|
+
endOfList: string;
|
|
550
|
+
noResultsHint: string;
|
|
551
|
+
clearSearch: string;
|
|
552
|
+
errorTitle: string;
|
|
553
|
+
errorHint: string;
|
|
554
|
+
retry: string;
|
|
555
|
+
selectedCount: (selected: number, total: number) => string;
|
|
556
|
+
resultsCount: (total: number) => string;
|
|
557
|
+
};
|
|
558
|
+
/** NgxDialogService y ngx-dialog (botones por defecto). */
|
|
559
|
+
dialog: {
|
|
560
|
+
cancel: string;
|
|
561
|
+
/** Botón de confirmar de NgxDialogService.confirm(). */
|
|
562
|
+
confirm: string;
|
|
563
|
+
/** Botón de aceptar de NgxDialogService.info() y de ngx-dialog. */
|
|
564
|
+
accept: string;
|
|
565
|
+
/** Etiqueta accesible y tooltip del botón X de cerrar. */
|
|
566
|
+
close: string;
|
|
567
|
+
};
|
|
568
|
+
/** ngx-file-input. */
|
|
569
|
+
fileInput: {
|
|
570
|
+
dropLabel: string;
|
|
571
|
+
browse: string;
|
|
572
|
+
remove: (fileName: string) => string;
|
|
573
|
+
removed: (fileName: string) => string;
|
|
574
|
+
added: (count: number) => string;
|
|
575
|
+
maxFiles: (max: number) => string;
|
|
576
|
+
typeNotAllowed: (type: string) => string;
|
|
577
|
+
tooLarge: (maxSize: string) => string;
|
|
578
|
+
};
|
|
579
|
+
/** ngx-input-file. */
|
|
580
|
+
inputFile: {
|
|
581
|
+
label: string;
|
|
582
|
+
dropping: string;
|
|
583
|
+
remove: (fileName: string) => string;
|
|
584
|
+
};
|
|
585
|
+
skeleton: {
|
|
586
|
+
loading: string;
|
|
587
|
+
};
|
|
588
|
+
alert: {
|
|
589
|
+
dismiss: string;
|
|
590
|
+
};
|
|
591
|
+
loadingButton: {
|
|
592
|
+
busy: string;
|
|
593
|
+
};
|
|
594
|
+
}
|
|
595
|
+
/** Igual que T pero con todo opcional, a cualquier profundidad (las funciones se quedan como están). */
|
|
596
|
+
type DeepPartial<T> = {
|
|
597
|
+
[K in keyof T]?: T[K] extends (...args: never[]) => unknown ? T[K] : T[K] extends object ? DeepPartial<T[K]> : T[K];
|
|
598
|
+
};
|
|
599
|
+
/** Textos que la app quiere cambiar: solo los que difieren de los valores por defecto. */
|
|
600
|
+
type NgxEiffageTextsOverrides = DeepPartial<NgxEiffageTexts>;
|
|
601
|
+
/** Valores por defecto (castellano). */
|
|
602
|
+
declare const NGX_EIFFAGE_DEFAULT_TEXTS: NgxEiffageTexts;
|
|
603
|
+
/** Lo que acepta provideNgxEiffageTexts: un objeto fijo o un signal (para cambiar de idioma en caliente). */
|
|
604
|
+
type NgxEiffageTextsSource = NgxEiffageTextsOverrides | Signal<NgxEiffageTextsOverrides>;
|
|
605
|
+
/** Textos que la app consumidora sustituye. Se provee con provideNgxEiffageTexts(). */
|
|
606
|
+
declare const NGX_EIFFAGE_TEXTS: InjectionToken<Signal<DeepPartial<NgxEiffageTexts>>>;
|
|
607
|
+
/**
|
|
608
|
+
* Cambia los textos de la librería. Solo hay que indicar los que difieren de los valores por defecto.
|
|
609
|
+
*
|
|
610
|
+
* ```ts
|
|
611
|
+
* // Textos fijos
|
|
612
|
+
* provideNgxEiffageTexts({ alert: { dismiss: 'Dismiss' } })
|
|
613
|
+
*
|
|
614
|
+
* // Según el idioma de la app: una función (se ejecuta en contexto de inyección) que devuelve un signal
|
|
615
|
+
* provideNgxEiffageTexts(() => {
|
|
616
|
+
* const language = inject(LanguageService);
|
|
617
|
+
* return computed(() => language.current() === 'en' ? EN_TEXTS : {});
|
|
618
|
+
* })
|
|
619
|
+
* ```
|
|
620
|
+
*/
|
|
621
|
+
declare function provideNgxEiffageTexts(texts: NgxEiffageTextsSource | (() => NgxEiffageTextsSource)): EnvironmentProviders;
|
|
622
|
+
/** Textos efectivos de la librería: valores por defecto + NgxTablesIntl (obsoleto) + provideNgxEiffageTexts. */
|
|
623
|
+
declare class NgxTexts {
|
|
624
|
+
private readonly _overrides;
|
|
625
|
+
private readonly _legacyIntl;
|
|
626
|
+
private readonly _legacyChanges;
|
|
627
|
+
/** Todos los textos ya combinados. En plantilla: `texts().alert.dismiss`. */
|
|
628
|
+
readonly texts: Signal<NgxEiffageTexts>;
|
|
629
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxTexts, never>;
|
|
630
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<NgxTexts>;
|
|
631
|
+
}
|
|
632
|
+
|
|
503
633
|
declare class AdvancedFilterUtils {
|
|
504
634
|
static createAdvancedFilter: <T>(fb: FormBuilder, advancedFilter: AdvancedFilter<T>) => FormGroup;
|
|
505
635
|
static createFilterGroup: <T>(fb: FormBuilder, group: FilterGroup<T>) => FormGroup;
|
|
@@ -519,7 +649,7 @@ declare class AdvancedFilterUtils {
|
|
|
519
649
|
private static isNonEmptyFilter;
|
|
520
650
|
private static isNonEmptyGroup;
|
|
521
651
|
private static isNonEmptyRule;
|
|
522
|
-
static groupsToReadableHtml<T>(groups: FilterGroup<T>[], columns: PaginatedTableColumn<T>[],
|
|
652
|
+
static groupsToReadableHtml<T>(groups: FilterGroup<T>[], columns: PaginatedTableColumn<T>[], texts: NgxEiffageTexts): string;
|
|
523
653
|
private static groupToHtml;
|
|
524
654
|
private static ruleToHtml;
|
|
525
655
|
private static getOperatorLabel;
|
|
@@ -612,6 +742,13 @@ interface BasicTableColumn<T> {
|
|
|
612
742
|
type SortType = 'string' | 'number' | 'date';
|
|
613
743
|
|
|
614
744
|
type AlertType = 'info' | 'warning' | 'error' | 'success';
|
|
745
|
+
/** standard: fondo tintado + borde izquierdo; soft: solo fondo tintado; outlined: solo borde. */
|
|
746
|
+
type AlertAppearance = 'standard' | 'soft' | 'outlined';
|
|
747
|
+
|
|
748
|
+
/** Apariencia de Material del botón (el valor del atributo matButton). */
|
|
749
|
+
type LoadingButtonAppearance = 'text' | 'filled' | 'elevated' | 'outlined' | 'tonal';
|
|
750
|
+
/** Color del botón. Sin valor, el primary del tema. */
|
|
751
|
+
type LoadingButtonColor = 'secondary' | 'tertiary' | 'error';
|
|
615
752
|
|
|
616
753
|
type SkeletonVariant = 'text' | 'circle' | 'rect' | 'rounded';
|
|
617
754
|
type SkeletonAnimation = 'shimmer' | 'pulse' | 'none';
|
|
@@ -670,6 +807,31 @@ interface DialogConfig<T = any> {
|
|
|
670
807
|
showConfirm?: boolean;
|
|
671
808
|
cancelText?: string;
|
|
672
809
|
confirmText?: string;
|
|
810
|
+
/** El botón de confirmar se pinta en el color de error (eliminar, descartar…). */
|
|
811
|
+
destructive?: boolean;
|
|
812
|
+
/** Muestra la X de cerrar en el encabezado (cierra devolviendo undefined). Por defecto true, salvo con disableClose. */
|
|
813
|
+
showClose?: boolean;
|
|
814
|
+
}
|
|
815
|
+
/**
|
|
816
|
+
* Lo que un componente o plantilla dentro de un diálogo de NgxDialogService puede controlar.
|
|
817
|
+
*
|
|
818
|
+
* - En un componente: `inject(NgxDialogContext)`.
|
|
819
|
+
* - En una plantilla: viene en el contexto como `dialog` (`let-dialog="dialog"`).
|
|
820
|
+
*/
|
|
821
|
+
declare abstract class NgxDialogContext<R = unknown> {
|
|
822
|
+
/** Resultado que se devuelve al pulsar confirmar. Si se queda sin valor, se devuelve `true`. */
|
|
823
|
+
abstract readonly result: WritableSignal<R | undefined>;
|
|
824
|
+
/** Deshabilita el botón de confirmar (p. ej. mientras un formulario no es válido). */
|
|
825
|
+
abstract readonly confirmDisabled: WritableSignal<boolean>;
|
|
826
|
+
/** Cierra el diálogo devolviendo `result` (o `false`/`undefined` para cancelar). */
|
|
827
|
+
abstract close(result?: R | boolean): void;
|
|
828
|
+
}
|
|
829
|
+
/** Contexto que recibe una plantilla usada como cuerpo de un diálogo. */
|
|
830
|
+
interface NgxDialogTemplateContext<T = any, R = unknown> {
|
|
831
|
+
/** Los datos que se pasaron en `templateData`. */
|
|
832
|
+
$implicit: T;
|
|
833
|
+
/** Para cerrar el diálogo, fijar el resultado o deshabilitar el botón de confirmar. */
|
|
834
|
+
dialog: NgxDialogContext<R>;
|
|
673
835
|
}
|
|
674
836
|
|
|
675
837
|
interface ConfigureTableColumnData<T> {
|
|
@@ -695,6 +857,105 @@ interface Pantalla {
|
|
|
695
857
|
|
|
696
858
|
type SendType = 'save' | 'save_and_apply';
|
|
697
859
|
|
|
860
|
+
/**
|
|
861
|
+
* Botón de Material que muestra un spinner mientras dura una acción y no deja volver a pulsarlo.
|
|
862
|
+
*
|
|
863
|
+
* El clic se escucha en el propio selector: `<ngx-loading-button (click)="save()" />`.
|
|
864
|
+
* Mientras `isLoading` es true el clic no llega (ni el submit del formulario, ni con Enter).
|
|
865
|
+
*/
|
|
866
|
+
declare class NgxLoadingButton {
|
|
867
|
+
private readonly _texts;
|
|
868
|
+
/** Muestra el spinner y bloquea el botón. */
|
|
869
|
+
readonly isLoading: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
870
|
+
/** Texto del botón. Para iconos o contenido con formato, proyéctalo en su lugar. */
|
|
871
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
872
|
+
/**
|
|
873
|
+
* Texto que sustituye al contenido mientras carga, con un spinner pequeño delante
|
|
874
|
+
* (p. ej. «Guardando…»). Sin él, el spinner se superpone y el botón mantiene su ancho.
|
|
875
|
+
*/
|
|
876
|
+
readonly loadingText: _angular_core.InputSignal<string | undefined>;
|
|
877
|
+
/** Apariencia de Material: text, filled, elevated, outlined o tonal. */
|
|
878
|
+
readonly matButton: _angular_core.InputSignal<LoadingButtonAppearance>;
|
|
879
|
+
/** Tipo nativo del botón. */
|
|
880
|
+
readonly type: _angular_core.InputSignal<"reset" | "submit" | "button">;
|
|
881
|
+
/** Deshabilita el botón (independiente de isLoading). */
|
|
882
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
883
|
+
/** Color. Sin valor, el primary del tema. */
|
|
884
|
+
readonly color: _angular_core.InputSignal<LoadingButtonColor | undefined>;
|
|
885
|
+
/** Diámetro en px del spinner superpuesto. */
|
|
886
|
+
readonly spinnerDiameter: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
887
|
+
/** Grosor en px del trazo del spinner. */
|
|
888
|
+
readonly spinnerStrokeWidth: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
889
|
+
/** Lo que anuncia el lector de pantalla mientras carga. Por defecto, el texto `loadingButton.busy` de la librería. */
|
|
890
|
+
readonly busyLabel: _angular_core.InputSignal<string | undefined>;
|
|
891
|
+
/** El spinner va encima del contenido (que se oculta sin cambiar el ancho). */
|
|
892
|
+
protected readonly overlaySpinner: _angular_core.Signal<boolean>;
|
|
893
|
+
/** El spinner va en línea, delante de loadingText. */
|
|
894
|
+
protected readonly inlineSpinner: _angular_core.Signal<boolean>;
|
|
895
|
+
protected readonly resolvedBusyLabel: _angular_core.Signal<string>;
|
|
896
|
+
/**
|
|
897
|
+
* Mientras carga, anula el clic en el propio botón: preventDefault evita el submit del formulario
|
|
898
|
+
* (también el implícito al pulsar Enter en un campo) y stopImmediatePropagation evita que llegue
|
|
899
|
+
* al (click) que el consumidor escucha en <ngx-loading-button>.
|
|
900
|
+
*/
|
|
901
|
+
protected blockWhileLoading(event: Event): void;
|
|
902
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxLoadingButton, never>;
|
|
903
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxLoadingButton, "ngx-loading-button", never, { "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "loadingText": { "alias": "loadingText"; "required": false; "isSignal": true; }; "matButton": { "alias": "matButton"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "spinnerDiameter": { "alias": "spinnerDiameter"; "required": false; "isSignal": true; }; "spinnerStrokeWidth": { "alias": "spinnerStrokeWidth"; "required": false; "isSignal": true; }; "busyLabel": { "alias": "busyLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
declare class NgxInputFile implements ControlValueAccessor, OnInit {
|
|
907
|
+
private _cdr;
|
|
908
|
+
value: _angular_core.WritableSignal<File[]>;
|
|
909
|
+
onChangeCb?: (files: File[]) => void;
|
|
910
|
+
onTouchCb?: () => void;
|
|
911
|
+
/** Etiqueta del campo. Por defecto, el texto `inputFile.label` de la librería. */
|
|
912
|
+
label: _angular_core.InputSignal<string | undefined>;
|
|
913
|
+
/**
|
|
914
|
+
* FormControl externo. Es opcional: si el componente se usa con
|
|
915
|
+
* `formControlName` / `[formControl]`, el enlace se hace por
|
|
916
|
+
* ControlValueAccessor y no hace falta pasarlo.
|
|
917
|
+
*/
|
|
918
|
+
control: _angular_core.InputSignal<FormControl<File[]> | undefined>;
|
|
919
|
+
disabled: _angular_core.InputSignal<boolean>;
|
|
920
|
+
/** Sin uso: la plantilla nunca lo ha pintado (pendiente de revisar en ngx-input-file). */
|
|
921
|
+
placeholder: _angular_core.InputSignal<string | undefined>;
|
|
922
|
+
protected readonly texts: _angular_core.Signal<ngx_eiffage_material.NgxEiffageTexts>;
|
|
923
|
+
protected readonly resolvedLabel: _angular_core.Signal<string>;
|
|
924
|
+
class: _angular_core.InputSignal<string>;
|
|
925
|
+
accept: _angular_core.InputSignal<string[]>;
|
|
926
|
+
multiple: _angular_core.InputSignal<boolean>;
|
|
927
|
+
hint: _angular_core.InputSignal<string>;
|
|
928
|
+
error: _angular_core.InputSignal<string>;
|
|
929
|
+
isDropping: _angular_core.WritableSignal<boolean>;
|
|
930
|
+
inputFileRef: _angular_core.Signal<ElementRef<any> | undefined>;
|
|
931
|
+
internalControl: FormControl<string[] | null>;
|
|
932
|
+
/** Estado deshabilitado que llega desde setDisabledState() (reactive forms). */
|
|
933
|
+
private readonly _cvaDisabled;
|
|
934
|
+
/** Estado deshabilitado efectivo: input `disabled` o el del FormControl padre. */
|
|
935
|
+
readonly isDisabled: _angular_core.Signal<boolean>;
|
|
936
|
+
constructor();
|
|
937
|
+
private checkErrors;
|
|
938
|
+
controlEffect: _angular_core.EffectRef;
|
|
939
|
+
ngOnInit(): void;
|
|
940
|
+
onContainerClick(): void;
|
|
941
|
+
onInputchange(event: any): void;
|
|
942
|
+
onDragOver(event: DragEvent): void;
|
|
943
|
+
onDragLeave(event: DragEvent): void;
|
|
944
|
+
onDrop(event: DragEvent): void;
|
|
945
|
+
attachFiles(files: FileList | null | undefined): void;
|
|
946
|
+
writeValue(files: File[] | undefined | null): void;
|
|
947
|
+
registerOnChange(fn: any): void;
|
|
948
|
+
registerOnTouched(fn: any): void;
|
|
949
|
+
setDisabledState(isDisabled: boolean): void;
|
|
950
|
+
onDeleteFileClick(file: File): void;
|
|
951
|
+
getAccept(): string;
|
|
952
|
+
bytesToMegaBytes(bytes: number): string;
|
|
953
|
+
private markAsTouched;
|
|
954
|
+
private markAsDirty;
|
|
955
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxInputFile, never>;
|
|
956
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxInputFile, "ngx-input-file", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
957
|
+
}
|
|
958
|
+
|
|
698
959
|
/** Opción ya resuelta (valor, etiqueta, disabled y visibilidad según el buscador). */
|
|
699
960
|
interface ResolvedOption<T> {
|
|
700
961
|
value: T[keyof T];
|
|
@@ -703,7 +964,7 @@ interface ResolvedOption<T> {
|
|
|
703
964
|
visible: boolean;
|
|
704
965
|
}
|
|
705
966
|
declare class NgxBasicSelect<T> implements ControlValueAccessor {
|
|
706
|
-
readonly
|
|
967
|
+
readonly texts: _angular_core.Signal<ngx_eiffage_material.NgxEiffageTexts>;
|
|
707
968
|
/**
|
|
708
969
|
* Se auto-registra como ControlValueAccessor del control del formulario.
|
|
709
970
|
* Se usa `self`/`optional` para poder leer el estado de validación (invalid/touched)
|
|
@@ -798,9 +1059,14 @@ declare class NgxBasicSelect<T> implements ControlValueAccessor {
|
|
|
798
1059
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxBasicSelect<any>, "ngx-basic-select", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "basicSelectConfig": { "alias": "basicSelectConfig"; "required": true; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, never, never, true, never>;
|
|
799
1060
|
}
|
|
800
1061
|
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
1062
|
+
/**
|
|
1063
|
+
* Diálogo genérico que abre NgxDialogService. El contenido (texto, HTML, componente o plantilla)
|
|
1064
|
+
* puede usar NgxDialogContext para devolver un resultado o deshabilitar el botón de confirmar.
|
|
1065
|
+
*/
|
|
1066
|
+
declare class NgxDialog<T = any, R = unknown> implements NgxDialogContext<R> {
|
|
1067
|
+
private readonly _dialogRef;
|
|
1068
|
+
private readonly _data;
|
|
1069
|
+
private readonly _texts;
|
|
804
1070
|
readonly title: string;
|
|
805
1071
|
readonly icon: string | undefined;
|
|
806
1072
|
readonly iconColor: string | undefined;
|
|
@@ -808,31 +1074,37 @@ declare class NgxDialog<T = any> {
|
|
|
808
1074
|
readonly body: ngx_eiffage_material.DialogBodyConfig<T>;
|
|
809
1075
|
readonly showCancel: boolean;
|
|
810
1076
|
readonly showConfirm: boolean;
|
|
1077
|
+
readonly destructive: boolean;
|
|
1078
|
+
/** La X no tiene sentido en un diálogo con disableClose (está pensado para no poder cerrarse sin decidir). */
|
|
1079
|
+
readonly showClose: boolean;
|
|
1080
|
+
readonly closeLabel: string;
|
|
811
1081
|
readonly cancelText: string;
|
|
812
1082
|
readonly confirmText: string;
|
|
813
|
-
|
|
1083
|
+
readonly result: _angular_core.WritableSignal<R | undefined>;
|
|
1084
|
+
readonly confirmDisabled: _angular_core.WritableSignal<boolean>;
|
|
1085
|
+
close(result?: R | boolean): void;
|
|
1086
|
+
protected readonly DialogBodyType: typeof DialogBodyType;
|
|
1087
|
+
protected readonly templateContext: NgxDialogTemplateContext<T, R>;
|
|
814
1088
|
onCancelClick(): void;
|
|
815
1089
|
onConfirmClick(): void;
|
|
816
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxDialog<any>, never>;
|
|
817
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxDialog<any>, "ngx-dialog", never, {}, {}, never, never, true, never>;
|
|
1090
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxDialog<any, any>, never>;
|
|
1091
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxDialog<any, any>, "ngx-dialog", never, {}, {}, never, never, true, never>;
|
|
818
1092
|
}
|
|
819
1093
|
|
|
820
1094
|
declare class NgxConfirmDialogComponent {
|
|
821
1095
|
dialogRef: MatDialogRef<any, any>;
|
|
822
1096
|
data: ConfirmDialogData<any>;
|
|
823
|
-
|
|
1097
|
+
readonly texts: _angular_core.Signal<ngx_eiffage_material.NgxEiffageTexts>;
|
|
824
1098
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxConfirmDialogComponent, never>;
|
|
825
1099
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxConfirmDialogComponent, "ngx-confirm-dialog", never, {}, {}, never, never, true, never>;
|
|
826
1100
|
}
|
|
827
1101
|
|
|
828
|
-
declare class NgxPaginatedTable<T, U extends PaginatedFilter<T>> implements
|
|
1102
|
+
declare class NgxPaginatedTable<T, U extends PaginatedFilter<T>> implements OnDestroy {
|
|
829
1103
|
private readonly columnConfigService;
|
|
830
1104
|
private readonly advancedFilterService;
|
|
831
1105
|
private readonly dialog;
|
|
832
1106
|
private readonly datosPantallaService;
|
|
833
|
-
|
|
834
|
-
readonly intl: NgxTablesIntl;
|
|
835
|
-
private readonly _destroy$;
|
|
1107
|
+
readonly texts: Signal<ngx_eiffage_material.NgxEiffageTexts>;
|
|
836
1108
|
protected isDesktop: Signal<boolean>;
|
|
837
1109
|
endpoint: _angular_core.InputSignal<(filters: U) => Observable<PaginatedItems<T>>>;
|
|
838
1110
|
filters: _angular_core.InputSignal<WritableSignal<U>>;
|
|
@@ -874,7 +1146,6 @@ declare class NgxPaginatedTable<T, U extends PaginatedFilter<T>> implements OnIn
|
|
|
874
1146
|
private overlayRef?;
|
|
875
1147
|
private portal?;
|
|
876
1148
|
protected defaultFiltersForPaginatedFilterOptions: WritableSignal<PaginatedFilter<FilterOption>>;
|
|
877
|
-
ngOnInit(): void;
|
|
878
1149
|
onEscape(): void;
|
|
879
1150
|
ngOnDestroy(): void;
|
|
880
1151
|
private includeInColumnConfig;
|
|
@@ -936,7 +1207,7 @@ declare class NgxBasicTable<T, U extends BasicFilter<T>> {
|
|
|
936
1207
|
private readonly columnConfigService;
|
|
937
1208
|
private readonly dialog;
|
|
938
1209
|
private readonly datosPantallaService;
|
|
939
|
-
readonly
|
|
1210
|
+
readonly texts: _angular_core.Signal<ngx_eiffage_material.NgxEiffageTexts>;
|
|
940
1211
|
protected isDesktop: _angular_core.Signal<boolean>;
|
|
941
1212
|
filters: _angular_core.InputSignal<WritableSignal<U>>;
|
|
942
1213
|
config: _angular_core.InputSignal<WritableSignal<BasicTableConfig<T>>>;
|
|
@@ -1032,7 +1303,7 @@ declare class NgxBasicTable<T, U extends BasicFilter<T>> {
|
|
|
1032
1303
|
}
|
|
1033
1304
|
|
|
1034
1305
|
declare class SearchableSelectComponent<T> {
|
|
1035
|
-
readonly
|
|
1306
|
+
readonly texts: _angular_core.Signal<ngx_eiffage_material.NgxEiffageTexts>;
|
|
1036
1307
|
control: _angular_core.InputSignal<FormControl<any> | undefined>;
|
|
1037
1308
|
options: _angular_core.InputSignal<T[]>;
|
|
1038
1309
|
optionLabel: _angular_core.InputSignal<(option: T) => string>;
|
|
@@ -1062,7 +1333,7 @@ declare class SearchableSelectComponent<T> {
|
|
|
1062
1333
|
}
|
|
1063
1334
|
|
|
1064
1335
|
declare class PaginatedSearchableSelectComponent<T, U extends PaginatedFilter<T>> implements OnDestroy {
|
|
1065
|
-
readonly
|
|
1336
|
+
readonly texts: _angular_core.Signal<ngx_eiffage_material.NgxEiffageTexts>;
|
|
1066
1337
|
control: _angular_core.InputSignal<FormControl<any> | undefined>;
|
|
1067
1338
|
endpoint: _angular_core.InputSignal<(filters: U) => Observable<PaginatedItems<T>>>;
|
|
1068
1339
|
filters: _angular_core.InputSignal<WritableSignal<U>>;
|
|
@@ -1101,12 +1372,38 @@ declare class PaginatedSearchableSelectComponent<T, U extends PaginatedFilter<T>
|
|
|
1101
1372
|
}
|
|
1102
1373
|
|
|
1103
1374
|
declare class NgxAlert {
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1375
|
+
private readonly _texts;
|
|
1376
|
+
/** Gravedad del mensaje: define color, icono por defecto y cómo se anuncia. */
|
|
1377
|
+
readonly type: _angular_core.InputSignal<AlertType>;
|
|
1378
|
+
/** Título en negrita sobre el mensaje. */
|
|
1379
|
+
readonly title: _angular_core.InputSignal<string | undefined>;
|
|
1380
|
+
/** Mensaje en texto plano. Para contenido con formato o enlaces, proyéctalo como contenido. */
|
|
1381
|
+
readonly message: _angular_core.InputSignal<string | undefined>;
|
|
1382
|
+
/** Estilo visual: standard (fondo + franja lateral), soft (solo fondo) u outlined (solo borde). */
|
|
1383
|
+
readonly appearance: _angular_core.InputSignal<AlertAppearance>;
|
|
1384
|
+
/** Icono de Material Symbols. Por defecto, el del tipo (info, check_circle, warning, error). */
|
|
1385
|
+
readonly icon: _angular_core.InputSignal<string | undefined>;
|
|
1386
|
+
/** Oculta el icono. */
|
|
1387
|
+
readonly hideIcon: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1388
|
+
/** Muestra un botón para cerrar el aviso. Al pulsarlo se oculta y emite `dismissed`. */
|
|
1389
|
+
readonly dismissible: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1390
|
+
/** Etiqueta accesible del botón de cerrar. Por defecto, el texto `alert.dismiss` de la librería. */
|
|
1391
|
+
readonly dismissLabel: _angular_core.InputSignal<string | undefined>;
|
|
1392
|
+
/**
|
|
1393
|
+
* Cómo lo anuncia el lector de pantalla. assertive interrumpe (role="alert"), polite espera
|
|
1394
|
+
* a que termine (role="status") y off no lo anuncia. Por defecto: assertive para error y
|
|
1395
|
+
* warning, polite para info y success.
|
|
1396
|
+
*/
|
|
1397
|
+
readonly politeness: _angular_core.InputSignal<"assertive" | "polite" | "off" | undefined>;
|
|
1398
|
+
/** Se emite cuando el usuario cierra el aviso con el botón de cerrar. */
|
|
1399
|
+
readonly dismissed: _angular_core.OutputEmitterRef<void>;
|
|
1400
|
+
protected readonly isDismissed: _angular_core.WritableSignal<boolean>;
|
|
1401
|
+
protected readonly resolvedIcon: _angular_core.Signal<string>;
|
|
1402
|
+
protected readonly resolvedDismissLabel: _angular_core.Signal<string>;
|
|
1403
|
+
protected readonly resolvedRole: _angular_core.Signal<"alert" | "status" | null>;
|
|
1404
|
+
protected dismiss(): void;
|
|
1108
1405
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxAlert, never>;
|
|
1109
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxAlert, "ngx-alert", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
1406
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxAlert, "ngx-alert", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "hideIcon": { "alias": "hideIcon"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "dismissLabel": { "alias": "dismissLabel"; "required": false; "isSignal": true; }; "politeness": { "alias": "politeness"; "required": false; "isSignal": true; }; }, { "dismissed": "dismissed"; }, never, ["*", "[alertActions]"], true, never>;
|
|
1110
1407
|
}
|
|
1111
1408
|
|
|
1112
1409
|
declare class NgxPaginatedSelect<T, U extends PaginatedFilter<T>> implements ControlValueAccessor {
|
|
@@ -1117,7 +1414,7 @@ declare class NgxPaginatedSelect<T, U extends PaginatedFilter<T>> implements Con
|
|
|
1117
1414
|
private readonly _parentFormGroup;
|
|
1118
1415
|
private readonly _parentForm;
|
|
1119
1416
|
private readonly _changeDetectorRef;
|
|
1120
|
-
readonly
|
|
1417
|
+
readonly texts: _angular_core.Signal<ngx_eiffage_material.NgxEiffageTexts>;
|
|
1121
1418
|
/** Label that floats on the form field */
|
|
1122
1419
|
readonly label: _angular_core.InputSignal<string>;
|
|
1123
1420
|
/** Title shown in the bottom sheet header */
|
|
@@ -1144,9 +1441,9 @@ declare class NgxPaginatedSelect<T, U extends PaginatedFilter<T>> implements Con
|
|
|
1144
1441
|
readonly displayMode: _angular_core.InputSignal<"text" | "chips">;
|
|
1145
1442
|
/** Whether to show the search input inside the bottom sheet */
|
|
1146
1443
|
readonly showSearch: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1147
|
-
/** Placeholder for the search input inside the bottom sheet (defaults to
|
|
1444
|
+
/** Placeholder for the search input inside the bottom sheet (defaults to the library texts) */
|
|
1148
1445
|
readonly searchPlaceholder: _angular_core.InputSignal<string | undefined>;
|
|
1149
|
-
/** Message when no results are found (defaults to
|
|
1446
|
+
/** Message when no results are found (defaults to the library texts) */
|
|
1150
1447
|
readonly noResultsMessage: _angular_core.InputSignal<string | undefined>;
|
|
1151
1448
|
/** Label for the confirm button (multiple mode, defaults to intl) */
|
|
1152
1449
|
readonly confirmLabel: _angular_core.InputSignal<string | undefined>;
|
|
@@ -1173,7 +1470,7 @@ declare class NgxPaginatedSelect<T, U extends PaginatedFilter<T>> implements Con
|
|
|
1173
1470
|
readonly chipsDirection: _angular_core.InputSignal<"row" | "column">;
|
|
1174
1471
|
/** Whether to show a "Select all" toggle in the bottom sheet (multiple mode) */
|
|
1175
1472
|
readonly showSelectAll: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1176
|
-
/** Label for the select all toggle (defaults to
|
|
1473
|
+
/** Label for the select all toggle (defaults to the library texts) */
|
|
1177
1474
|
readonly selectAllLabel: _angular_core.InputSignal<string | undefined>;
|
|
1178
1475
|
/** Emits the full T object (single) or T[] (multiple) when selection changes */
|
|
1179
1476
|
readonly valueChange: _angular_core.OutputEmitterRef<Partial<T> | Partial<T>[] | undefined>;
|
|
@@ -1264,7 +1561,7 @@ declare class NgxPaginatedSelectBottomSheetComponent<T, U extends PaginatedFilte
|
|
|
1264
1561
|
private readonly _ref;
|
|
1265
1562
|
private readonly _destroy;
|
|
1266
1563
|
readonly data: NgxPaginatedSelectBottomSheetData<T, U>;
|
|
1267
|
-
readonly
|
|
1564
|
+
readonly texts: _angular_core.Signal<ngx_eiffage_material.NgxEiffageTexts>;
|
|
1268
1565
|
/** Raw input value — updates on every keystroke, does NOT trigger the resource */
|
|
1269
1566
|
readonly query: WritableSignal<string | undefined>;
|
|
1270
1567
|
/** Holds Partial<T> initially; items get upgraded to full T when toggled from the list */
|
|
@@ -1355,36 +1652,46 @@ declare class NgxPaginatedSelectBottomSheetComponent<T, U extends PaginatedFilte
|
|
|
1355
1652
|
}
|
|
1356
1653
|
|
|
1357
1654
|
declare class NgxSkeleton {
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
/**
|
|
1379
|
-
|
|
1380
|
-
/**
|
|
1381
|
-
|
|
1382
|
-
/**
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1655
|
+
private readonly _texts;
|
|
1656
|
+
/** Forma: text (barras de texto), circle, rect o rounded (rectángulo redondeado). */
|
|
1657
|
+
readonly variant: _angular_core.InputSignal<SkeletonVariant>;
|
|
1658
|
+
/** Ancho. Cualquier valor CSS; un número se interpreta como px. Se ignora en `circle`. */
|
|
1659
|
+
readonly width: _angular_core.InputSignalWithTransform<string, string | number>;
|
|
1660
|
+
/** Alto. Cualquier valor CSS; un número se interpreta como px. En `circle` también es el diámetro. */
|
|
1661
|
+
readonly height: _angular_core.InputSignalWithTransform<string, string | number>;
|
|
1662
|
+
/** Número de líneas. Solo aplica con `variant="text"`. */
|
|
1663
|
+
readonly lines: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
1664
|
+
/** Separación vertical entre líneas de texto. */
|
|
1665
|
+
readonly lineSpacing: _angular_core.InputSignalWithTransform<string, string | number>;
|
|
1666
|
+
/** Ancho de la última línea, para que el párrafo parezca real. Solo con varias líneas. */
|
|
1667
|
+
readonly lastLineWidth: _angular_core.InputSignalWithTransform<string, string | number>;
|
|
1668
|
+
/** Animación: shimmer (brillo que se desliza), pulse (opacidad) o none. */
|
|
1669
|
+
readonly animation: _angular_core.InputSignal<SkeletonAnimation>;
|
|
1670
|
+
/**
|
|
1671
|
+
* Duración de un ciclo de animación (cualquier tiempo CSS). Por defecto 1.5s, o el valor
|
|
1672
|
+
* de la variable CSS `--ngx-skeleton-duration` si el consumidor la define.
|
|
1673
|
+
*/
|
|
1674
|
+
readonly animationDuration: _angular_core.InputSignal<string | undefined>;
|
|
1675
|
+
/** Sustituye el border-radius que corresponde a la variante. */
|
|
1676
|
+
readonly borderRadius: _angular_core.InputSignalWithTransform<string | null, string | number | null | undefined>;
|
|
1677
|
+
/** Etiqueta accesible. Por defecto, el texto `skeleton.loading` de la librería. */
|
|
1678
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
1679
|
+
/**
|
|
1680
|
+
* Oculta el skeleton a lectores de pantalla (sin role ni etiqueta). Úsalo cuando varios
|
|
1681
|
+
* skeletons forman una misma pieza: márcalos todos como decorativos y anuncia la carga
|
|
1682
|
+
* una sola vez en el contenedor (p. ej. con `aria-busy` o un skeleton sin `decorative`).
|
|
1683
|
+
*/
|
|
1684
|
+
readonly decorative: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1685
|
+
protected readonly resolvedAriaLabel: _angular_core.Signal<string>;
|
|
1686
|
+
/** Una entrada por línea a pintar (siempre al menos una). */
|
|
1687
|
+
protected readonly lineIndices: _angular_core.Signal<number[]>;
|
|
1688
|
+
protected readonly isMultiLine: _angular_core.Signal<boolean>;
|
|
1689
|
+
/** border-radius de la variante, salvo que se indique `borderRadius`. */
|
|
1690
|
+
protected readonly computedBorderRadius: _angular_core.Signal<string>;
|
|
1691
|
+
/** En `circle` el ancho es el alto, para que sea un círculo perfecto. */
|
|
1692
|
+
protected readonly computedWidth: _angular_core.Signal<string>;
|
|
1386
1693
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxSkeleton, never>;
|
|
1387
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxSkeleton, "ngx-skeleton", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "lines": { "alias": "lines"; "required": false; "isSignal": true; }; "lineSpacing": { "alias": "lineSpacing"; "required": false; "isSignal": true; }; "lastLineWidth": { "alias": "lastLineWidth"; "required": false; "isSignal": true; }; "animation": { "alias": "animation"; "required": false; "isSignal": true; }; "animationDuration": { "alias": "animationDuration"; "required": false; "isSignal": true; }; "borderRadius": { "alias": "borderRadius"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1694
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxSkeleton, "ngx-skeleton", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "lines": { "alias": "lines"; "required": false; "isSignal": true; }; "lineSpacing": { "alias": "lineSpacing"; "required": false; "isSignal": true; }; "lastLineWidth": { "alias": "lastLineWidth"; "required": false; "isSignal": true; }; "animation": { "alias": "animation"; "required": false; "isSignal": true; }; "animationDuration": { "alias": "animationDuration"; "required": false; "isSignal": true; }; "borderRadius": { "alias": "borderRadius"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "decorative": { "alias": "decorative"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1388
1695
|
}
|
|
1389
1696
|
|
|
1390
1697
|
declare class NgxFileInput implements ControlValueAccessor {
|
|
@@ -1401,8 +1708,10 @@ declare class NgxFileInput implements ControlValueAccessor {
|
|
|
1401
1708
|
readonly maxFiles: _angular_core.InputSignal<number | null>;
|
|
1402
1709
|
/** Disables the component. */
|
|
1403
1710
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1404
|
-
/** Label text shown inside the drop zone. */
|
|
1405
|
-
readonly label: _angular_core.InputSignal<string>;
|
|
1711
|
+
/** Label text shown inside the drop zone. Por defecto, el texto `fileInput.dropLabel` de la librería. */
|
|
1712
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
1713
|
+
protected readonly texts: _angular_core.Signal<ngx_eiffage_material.NgxEiffageTexts>;
|
|
1714
|
+
protected readonly resolvedLabel: _angular_core.Signal<string>;
|
|
1406
1715
|
/** Secondary hint text (formats, sizes…). */
|
|
1407
1716
|
readonly hint: _angular_core.InputSignal<string | null>;
|
|
1408
1717
|
/** Show the file preview list below the drop zone. */
|
|
@@ -1464,123 +1773,73 @@ declare class NgxFileInput implements ControlValueAccessor {
|
|
|
1464
1773
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxFileInput, "ngx-file-input", never, { "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "maxSize": { "alias": "maxSize"; "required": false; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "showPreview": { "alias": "showPreview"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, { "filesSelected": "filesSelected"; "fileRemoved": "fileRemoved"; "validationError": "validationError"; }, never, never, true, never>;
|
|
1465
1774
|
}
|
|
1466
1775
|
|
|
1467
|
-
|
|
1468
|
-
|
|
1776
|
+
/** Opciones comunes a todos los diálogos. */
|
|
1777
|
+
interface DialogHeaderOptions {
|
|
1778
|
+
title: string;
|
|
1779
|
+
subtitle?: string;
|
|
1780
|
+
icon?: string;
|
|
1781
|
+
iconColor?: string;
|
|
1782
|
+
cancelText?: string;
|
|
1783
|
+
confirmText?: string;
|
|
1784
|
+
showCancel?: boolean;
|
|
1785
|
+
showConfirm?: boolean;
|
|
1786
|
+
/** El botón de confirmar se pinta en el color de error (eliminar, descartar…). */
|
|
1787
|
+
destructive?: boolean;
|
|
1469
1788
|
/**
|
|
1470
|
-
*
|
|
1471
|
-
*
|
|
1472
|
-
* @param dialogConfig
|
|
1473
|
-
* @returns Observable<DialogResult>
|
|
1474
|
-
*
|
|
1475
|
-
* Opens a text dialog with the provided configuration.
|
|
1789
|
+
* Muestra la X de cerrar en el encabezado; cerrar con ella devuelve undefined, igual que Esc.
|
|
1790
|
+
* Por defecto true, salvo si dialogConfig.disableClose es true.
|
|
1476
1791
|
*/
|
|
1477
|
-
|
|
1478
|
-
|
|
1792
|
+
showClose?: boolean;
|
|
1793
|
+
}
|
|
1794
|
+
/**
|
|
1795
|
+
* Abre diálogos de Material con una estructura común: título con icono opcional, subtítulo,
|
|
1796
|
+
* cuerpo (texto, HTML, componente o plantilla) y botones de cancelar/confirmar.
|
|
1797
|
+
*
|
|
1798
|
+
* Todos devuelven un Observable que emite al cerrarse y completa:
|
|
1799
|
+
* - `true` (o el resultado fijado por el contenido) si se confirma,
|
|
1800
|
+
* - `false` si se cancela,
|
|
1801
|
+
* - `undefined` si se cierra sin pulsar ningún botón (Esc o clic fuera).
|
|
1802
|
+
*/
|
|
1803
|
+
declare class NgxDialogService {
|
|
1804
|
+
private readonly _dialog;
|
|
1805
|
+
private readonly _texts;
|
|
1806
|
+
/** Diálogo con un texto. Base de `confirm()` e `info()`. */
|
|
1807
|
+
openText(config: DialogHeaderOptions & {
|
|
1479
1808
|
content: string;
|
|
1480
|
-
subtitle?: string;
|
|
1481
|
-
cancelText?: string;
|
|
1482
|
-
confirmText?: string;
|
|
1483
|
-
icon?: string;
|
|
1484
|
-
iconColor?: string;
|
|
1485
|
-
showCancel?: boolean;
|
|
1486
|
-
showConfirm?: boolean;
|
|
1487
1809
|
}, dialogConfig?: MatDialogConfig): Observable<boolean | undefined>;
|
|
1488
|
-
/**
|
|
1489
|
-
|
|
1490
|
-
* @param title
|
|
1491
|
-
* @param message
|
|
1492
|
-
* @param cancelText
|
|
1493
|
-
* @param confirmText
|
|
1494
|
-
* @param dialogConfig
|
|
1495
|
-
* @returns Observable<DialogResult>
|
|
1496
|
-
*
|
|
1497
|
-
* Opens a confirmation dialog with cancel and confirm buttons.
|
|
1498
|
-
*/
|
|
1499
|
-
confirm(config: {
|
|
1500
|
-
title: string;
|
|
1810
|
+
/** Pregunta de confirmación con botones de cancelar y confirmar. */
|
|
1811
|
+
confirm(config: Omit<DialogHeaderOptions, 'showCancel' | 'showConfirm'> & {
|
|
1501
1812
|
message: string;
|
|
1502
|
-
subtitle?: string;
|
|
1503
|
-
icon?: string;
|
|
1504
|
-
iconColor?: string;
|
|
1505
|
-
cancelText?: string;
|
|
1506
|
-
confirmText?: string;
|
|
1507
1813
|
}, dialogConfig?: MatDialogConfig): Observable<boolean | undefined>;
|
|
1508
|
-
/**
|
|
1509
|
-
|
|
1510
|
-
* @param title
|
|
1511
|
-
* @param message
|
|
1512
|
-
* @param confirmText
|
|
1513
|
-
* @param dialogConfig
|
|
1514
|
-
* @returns Observable<DialogResult>
|
|
1515
|
-
*
|
|
1516
|
-
* Opens an informational dialog with a single confirm button.
|
|
1517
|
-
*/
|
|
1518
|
-
info(config: {
|
|
1519
|
-
title: string;
|
|
1814
|
+
/** Aviso informativo con un único botón. */
|
|
1815
|
+
info(config: Omit<DialogHeaderOptions, 'showCancel' | 'showConfirm' | 'cancelText'> & {
|
|
1520
1816
|
message: string;
|
|
1521
|
-
subtitle?: string;
|
|
1522
|
-
icon?: string;
|
|
1523
|
-
iconColor?: string;
|
|
1524
|
-
confirmText?: string;
|
|
1525
1817
|
}, dialogConfig?: MatDialogConfig): Observable<boolean | undefined>;
|
|
1526
1818
|
/**
|
|
1527
|
-
*
|
|
1528
|
-
*
|
|
1529
|
-
* @param dialogConfig
|
|
1530
|
-
* @returns Observable<DialogResult>
|
|
1531
|
-
*
|
|
1532
|
-
* Opens an HTML dialog with the provided configuration.
|
|
1819
|
+
* Diálogo con HTML. Angular sanea el HTML: se quitan scripts, estilos en línea y atributos
|
|
1820
|
+
* peligrosos. Para contenido con interacción, usa `component()` o `template()`.
|
|
1533
1821
|
*/
|
|
1534
|
-
html(config: {
|
|
1535
|
-
title: string;
|
|
1536
|
-
subtitle?: string;
|
|
1537
|
-
icon?: string;
|
|
1538
|
-
iconColor?: string;
|
|
1822
|
+
html(config: DialogHeaderOptions & {
|
|
1539
1823
|
html: string;
|
|
1540
|
-
cancelText?: string;
|
|
1541
|
-
confirmText?: string;
|
|
1542
|
-
showCancel?: boolean;
|
|
1543
|
-
showConfirm?: boolean;
|
|
1544
1824
|
}, dialogConfig?: MatDialogConfig): Observable<boolean | undefined>;
|
|
1545
1825
|
/**
|
|
1546
|
-
*
|
|
1547
|
-
*
|
|
1548
|
-
*
|
|
1549
|
-
*
|
|
1550
|
-
* Opens a component dialog with the provided configuration.
|
|
1826
|
+
* Diálogo con un componente propio. El componente recibe `componentData` por su input `data`
|
|
1827
|
+
* y puede inyectar `NgxDialogContext<R>` para devolver un resultado (`result`), cerrar
|
|
1828
|
+
* (`close()`) o deshabilitar el botón de confirmar (`confirmDisabled`).
|
|
1551
1829
|
*/
|
|
1552
|
-
component<T = any>(config: {
|
|
1553
|
-
title: string;
|
|
1554
|
-
subtitle?: string;
|
|
1555
|
-
icon?: string;
|
|
1556
|
-
iconColor?: string;
|
|
1830
|
+
component<T = any, R = boolean>(config: DialogHeaderOptions & {
|
|
1557
1831
|
component: Type<any>;
|
|
1558
1832
|
componentData?: T;
|
|
1559
|
-
|
|
1560
|
-
confirmText?: string;
|
|
1561
|
-
showCancel?: boolean;
|
|
1562
|
-
showConfirm?: boolean;
|
|
1563
|
-
}, dialogConfig?: MatDialogConfig): Observable<boolean | undefined>;
|
|
1833
|
+
}, dialogConfig?: MatDialogConfig): Observable<R | boolean | undefined>;
|
|
1564
1834
|
/**
|
|
1565
|
-
*
|
|
1566
|
-
*
|
|
1567
|
-
* @param dialogConfig
|
|
1568
|
-
* @returns Observable<DialogResult>
|
|
1569
|
-
*
|
|
1570
|
-
* Opens a template dialog with the provided configuration.
|
|
1835
|
+
* Diálogo con una plantilla. La plantilla recibe `templateData` como `$implicit` y el contexto
|
|
1836
|
+
* del diálogo como `dialog` (`let-data let-dialog="dialog"`).
|
|
1571
1837
|
*/
|
|
1572
|
-
template<T = any>(config: {
|
|
1573
|
-
|
|
1574
|
-
subtitle?: string;
|
|
1575
|
-
icon?: string;
|
|
1576
|
-
iconColor?: string;
|
|
1577
|
-
template: TemplateRef<T>;
|
|
1838
|
+
template<T = any, R = boolean>(config: DialogHeaderOptions & {
|
|
1839
|
+
template: TemplateRef<NgxDialogTemplateContext<T, R>> | TemplateRef<T>;
|
|
1578
1840
|
templateData?: T;
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
showCancel?: boolean;
|
|
1582
|
-
showConfirm?: boolean;
|
|
1583
|
-
}, dialogConfig?: MatDialogConfig): Observable<boolean | undefined>;
|
|
1841
|
+
}, dialogConfig?: MatDialogConfig): Observable<R | boolean | undefined>;
|
|
1842
|
+
private _open;
|
|
1584
1843
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxDialogService, never>;
|
|
1585
1844
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<NgxDialogService>;
|
|
1586
1845
|
}
|
|
@@ -1636,5 +1895,5 @@ declare class DynamicHostDirective<T> {
|
|
|
1636
1895
|
declare const includeNoSensible: (cadena: string, query: string) => boolean;
|
|
1637
1896
|
declare const base64ToUtf8: (str: string) => string;
|
|
1638
1897
|
|
|
1639
|
-
export { AdvancedFilterService, AdvancedFilterUtils, ColumnConfigService, DatosPantallaService, DialogBodyType, DynamicHostDirective, NgxAlert, NgxBasicSelect, NgxBasicTable, NgxConfirmDialogComponent, NgxDialog, NgxDialogService, NgxFileInput, NgxInputFile, NgxLoadingButton, NgxPaginatedSelect, NgxPaginatedSelectBottomSheetComponent, NgxPaginatedTable, NgxSkeleton, NgxTablesIntl, OPERATOR_BY_FILTER_TYPE, PaginatedSearchableSelectComponent, SearchableSelectComponent, USER_ID_FACTORY, base64ToUtf8, includeNoSensible, isFilterOption };
|
|
1640
|
-
export type { AdvancedFilter, AlertType, BasicFilter, BasicSelectConfig, BasicTableColumn, BasicTableConfig, ColumnConfig, ColumnPipe, ColumnValue, ConfigureTableColumnData, ConfirmDialogData, DeleteConfirm, DialogBodyConfig, DialogConfig, DynamicFilter, FilterConnector, FilterGroup, FilterOperator, FilterOption, FilterRule, FilterType, NgxFileError, NgxFileErrorCode, NgxFileInputVariant, NgxFileItem, NgxPaginatedSelectBottomSheetData, PaginatedFilter, PaginatedItems, PaginatedSelectConfig, PaginatedTableColumn, PaginatedTableConfig, Pantalla, RowActionClickEvent, RowActionIconColor, RowSelectionAction, SelectionActionEvent, SendType, SkeletonAnimation, SkeletonVariant, SortBy, SortType, TableBasicAction, TableRowAction, TipoPantalla };
|
|
1898
|
+
export { AdvancedFilterService, AdvancedFilterUtils, ColumnConfigService, DatosPantallaService, DialogBodyType, DynamicHostDirective, NGX_EIFFAGE_DEFAULT_TEXTS, NGX_EIFFAGE_TEXTS, NgxAlert, NgxBasicSelect, NgxBasicTable, NgxConfirmDialogComponent, NgxDialog, NgxDialogContext, NgxDialogService, NgxFileInput, NgxInputFile, NgxLoadingButton, NgxPaginatedSelect, NgxPaginatedSelectBottomSheetComponent, NgxPaginatedTable, NgxSkeleton, NgxTablesIntl, NgxTexts, OPERATOR_BY_FILTER_TYPE, PaginatedSearchableSelectComponent, SearchableSelectComponent, USER_ID_FACTORY, base64ToUtf8, includeNoSensible, isFilterOption, provideNgxEiffageTexts };
|
|
1899
|
+
export type { AdvancedFilter, AlertAppearance, AlertType, BasicFilter, BasicSelectConfig, BasicTableColumn, BasicTableConfig, ColumnConfig, ColumnPipe, ColumnValue, ConfigureTableColumnData, ConfirmDialogData, DeleteConfirm, DialogBodyConfig, DialogConfig, DynamicFilter, FilterConnector, FilterGroup, FilterOperator, FilterOption, FilterRule, FilterType, LoadingButtonAppearance, LoadingButtonColor, NgxDialogTemplateContext, NgxEiffageTexts, NgxEiffageTextsOverrides, NgxEiffageTextsSource, NgxFileError, NgxFileErrorCode, NgxFileInputVariant, NgxFileItem, NgxPaginatedSelectBottomSheetData, PaginatedFilter, PaginatedItems, PaginatedSelectConfig, PaginatedTableColumn, PaginatedTableConfig, Pantalla, RowActionClickEvent, RowActionIconColor, RowSelectionAction, SelectionActionEvent, SendType, SkeletonAnimation, SkeletonVariant, SortBy, SortType, TableBasicAction, TableRowAction, TipoPantalla };
|