@litigiovirtual/ius-design-components 2.0.5 → 2.1.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.
|
@@ -849,7 +849,7 @@ declare class AlertComponent {
|
|
|
849
849
|
/** Tamaño. */
|
|
850
850
|
readonly size: _angular_core.InputSignal<AlertSize>;
|
|
851
851
|
/** Estilo del borde. */
|
|
852
|
-
readonly border: _angular_core.InputSignal<"
|
|
852
|
+
readonly border: _angular_core.InputSignal<"solid" | "none" | "dashed">;
|
|
853
853
|
/** Título tonal en negrita. */
|
|
854
854
|
readonly title: _angular_core.InputSignal<string | undefined>;
|
|
855
855
|
/** Línea superior breve (uppercase). */
|
|
@@ -869,7 +869,7 @@ declare class AlertComponent {
|
|
|
869
869
|
/** Alineación (auto: `center` si hay `trailing` sin `actions`). */
|
|
870
870
|
readonly align: _angular_core.InputSignal<"start" | "center" | undefined>;
|
|
871
871
|
/** `status` (default, no interrumpe) o `alert` (asertivo). */
|
|
872
|
-
readonly role: _angular_core.InputSignal<"
|
|
872
|
+
readonly role: _angular_core.InputSignal<"status" | "alert">;
|
|
873
873
|
/** Al pulsar × (original: `onClose`). */
|
|
874
874
|
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
875
875
|
private readonly actionsRef;
|
|
@@ -1900,446 +1900,553 @@ declare class TagComponent {
|
|
|
1900
1900
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagComponent, "ius-tag", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "dot": { "alias": "dot"; "required": false; "isSignal": true; }; "count": { "alias": "count"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; "closed": "closed"; }, ["prefixRef", "suffixRef"], ["[iusTagPrefix]", "*", "[iusTagSuffix]"], true, never>;
|
|
1901
1901
|
}
|
|
1902
1902
|
|
|
1903
|
-
/**
|
|
1904
|
-
type
|
|
1905
|
-
/**
|
|
1906
|
-
|
|
1907
|
-
/** Un segmento (`<input>`) del MultiTextField. */
|
|
1908
|
-
interface IusMultiTextFieldSlot {
|
|
1909
|
-
/** Placeholder del segmento. */
|
|
1910
|
-
placeholder?: string;
|
|
1911
|
-
/** `name` del input (envío como form). */
|
|
1912
|
-
name?: string;
|
|
1913
|
-
/** Tipo del `<input>`. Default `text`. */
|
|
1914
|
-
type?: 'text' | 'number' | 'tel' | 'password';
|
|
1915
|
-
/** Valor controlado del segmento. */
|
|
1916
|
-
value?: string;
|
|
1917
|
-
/** Valor inicial (no controlado). */
|
|
1918
|
-
defaultValue?: string;
|
|
1919
|
-
/** Ancho fijo. Número → px; string → CSS literal. */
|
|
1920
|
-
width?: number | string;
|
|
1921
|
-
/** `flex` (`'1 1 auto'`, `'0 0 60px'`, …) si necesitas más control que `width`. */
|
|
1922
|
-
flex?: string | number;
|
|
1923
|
-
/** Largo máximo de caracteres (habilita auto-avance). */
|
|
1924
|
-
maxLength?: number;
|
|
1925
|
-
/** Etiqueta accesible del segmento (si el placeholder no basta). */
|
|
1926
|
-
ariaLabel?: string;
|
|
1927
|
-
/** Callback opcional al teclear este segmento (además del `valueChange` del conjunto). */
|
|
1928
|
-
onChange?: (value: string, event: Event) => void;
|
|
1929
|
-
}
|
|
1903
|
+
/** Tono semántico de un estado (nunca un hue "fruta"). */
|
|
1904
|
+
type StatusTone = 'info' | 'neutral' | 'primary' | 'success' | 'warning' | 'danger';
|
|
1905
|
+
/** Los 6 tonos semánticos, en el orden del contrato. Útil para matrices/demos. */
|
|
1906
|
+
declare const STATUS_TONES: readonly StatusTone[];
|
|
1930
1907
|
/**
|
|
1931
|
-
*
|
|
1932
|
-
*
|
|
1933
|
-
* Variación de **TextField** que acopla varios `<input>` dentro de una misma
|
|
1934
|
-
* caja separados por divisores verticales — para datos compuestos (tarjeta
|
|
1935
|
-
* MM | AAAA + CVV, teléfono con prefijo, NIT + DV…). Reusa el wrapper `.ius-tf`
|
|
1936
|
-
* (label con required + iconHelp, 5 estados, size, helpText/errorText) y un
|
|
1937
|
-
* **único** botón de limpiar que vacía todos los segmentos. Fuente de verdad:
|
|
1938
|
-
* `MultiTextField.jsx` + `MultiTextField.d.ts` (delta sobre `TextField.ng-spec`).
|
|
1939
|
-
*
|
|
1940
|
-
* `ControlValueAccessor` **a nivel de conjunto**: el valor es el array de
|
|
1941
|
-
* valores por segmento (`string[]`); también se emite en `valueChange`. Cada
|
|
1942
|
-
* slot puede además traer su propio `onChange`. Auto-avance al llenar el
|
|
1943
|
-
* `maxLength` y Backspace en segmento vacío retrocede.
|
|
1944
|
-
*
|
|
1945
|
-
* Nota: las clases `.ius-tf__*` (label/help/hint/field/clear) se replican en el
|
|
1946
|
-
* SCSS porque bajo `ViewEncapsulation.Emulated` las de TextField no alcanzan a
|
|
1947
|
-
* otro componente. `showIconHelp` usa `title` nativo como respaldo hasta que
|
|
1948
|
-
* exista `ius-popover`. `[data-force]` congela un estado visual en demos.
|
|
1908
|
+
* Cómo se pinta un estado: rótulo, tono semántico e ícono Material Symbols
|
|
1909
|
+
* (ligadura, p. ej. `check_circle`).
|
|
1949
1910
|
*/
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
/**
|
|
1956
|
-
|
|
1957
|
-
/** Indicador de obligatorio (•). */
|
|
1958
|
-
required: boolean;
|
|
1959
|
-
/** Ícono de ayuda `?` junto al label (respaldo: `title` nativo). */
|
|
1960
|
-
showIconHelp: boolean;
|
|
1961
|
-
/** Título del contenido de ayuda. */
|
|
1962
|
-
iconHelpTitle?: string;
|
|
1963
|
-
/** Cuerpo del contenido de ayuda. */
|
|
1964
|
-
iconHelpContent?: string;
|
|
1965
|
-
/** Línea de ayuda bajo el campo. */
|
|
1966
|
-
helpText?: string;
|
|
1967
|
-
/** Reemplaza `helpText` cuando `error` es `true`. */
|
|
1968
|
-
errorText?: string;
|
|
1969
|
-
/** Mostrar/ocultar la línea de ayuda. */
|
|
1970
|
-
showHelpText: boolean;
|
|
1971
|
-
/** Forzar visibilidad del botón limpiar (por defecto: auto con valor). */
|
|
1972
|
-
showClear?: boolean;
|
|
1973
|
-
private readonly errorState;
|
|
1974
|
-
/** Estado de error global. */
|
|
1975
|
-
set error(value: boolean);
|
|
1976
|
-
get error(): boolean;
|
|
1977
|
-
private readonly disabledState;
|
|
1978
|
-
/** Estado deshabilitado global. */
|
|
1979
|
-
set disabled(value: boolean);
|
|
1980
|
-
get disabled(): boolean;
|
|
1981
|
-
protected readonly sizeState: _angular_core.WritableSignal<IusMultiTextFieldSize>;
|
|
1982
|
-
set size(value: IusMultiTextFieldSize);
|
|
1983
|
-
get size(): IusMultiTextFieldSize;
|
|
1984
|
-
protected readonly stateState: _angular_core.WritableSignal<IusMultiTextFieldState | undefined>;
|
|
1985
|
-
/** Forzar visualmente un estado completo (solo demos). */
|
|
1986
|
-
set state(value: IusMultiTextFieldState | undefined);
|
|
1987
|
-
get state(): IusMultiTextFieldState | undefined;
|
|
1988
|
-
/** `id` base del campo (los segmentos serán `id-0`, `id-1`, …). */
|
|
1989
|
-
id?: string;
|
|
1990
|
-
/** Valores del conjunto (array por segmento). */
|
|
1991
|
-
readonly valueChange: EventEmitter<string[]>;
|
|
1992
|
-
/** Al pulsar el botón de limpiar (después de vaciar). */
|
|
1993
|
-
readonly cleared: EventEmitter<void>;
|
|
1994
|
-
protected readonly values: _angular_core.WritableSignal<string[]>;
|
|
1995
|
-
protected readonly focused: _angular_core.WritableSignal<boolean>;
|
|
1996
|
-
/** Tras limpiar en un estado demo, suprime el "valor" simulado. */
|
|
1997
|
-
private readonly suppressDemoValue;
|
|
1998
|
-
/** Último valor escrito por el CVA (por si llega antes que los slots). */
|
|
1999
|
-
private readonly pendingValue;
|
|
2000
|
-
private readonly baseIdState;
|
|
2001
|
-
private readonly slotInputs;
|
|
2002
|
-
private onChange;
|
|
2003
|
-
private onTouched;
|
|
2004
|
-
protected readonly isDisabled: _angular_core.Signal<boolean>;
|
|
2005
|
-
protected readonly isError: _angular_core.Signal<boolean>;
|
|
2006
|
-
protected readonly isFocused: _angular_core.Signal<boolean>;
|
|
2007
|
-
protected readonly hasAnyValue: _angular_core.Signal<boolean>;
|
|
2008
|
-
protected readonly demoHasValue: _angular_core.Signal<boolean>;
|
|
2009
|
-
protected get baseId(): string;
|
|
2010
|
-
protected get helpId(): string;
|
|
2011
|
-
protected get hint(): string | undefined;
|
|
2012
|
-
protected get showHint(): boolean;
|
|
2013
|
-
protected get helpIconTitle(): string | undefined;
|
|
2014
|
-
/** El botón de limpiar está activo (visible y operable). */
|
|
2015
|
-
protected get clearActive(): boolean;
|
|
2016
|
-
/** Se reserva el hueco del clear (visibility) para no desplazar los segmentos. */
|
|
2017
|
-
protected get clearReserved(): boolean;
|
|
2018
|
-
protected currentValue(i: number): string;
|
|
2019
|
-
/** flex del segmento: width > flex > (maxLength → base auto) > CSS (1 1 auto). */
|
|
2020
|
-
protected slotFlex(slot: IusMultiTextFieldSlot): string | null;
|
|
2021
|
-
/** width del segmento: solo cuando se deriva del maxLength. */
|
|
2022
|
-
protected slotWidth(slot: IusMultiTextFieldSlot): string | null;
|
|
2023
|
-
writeValue(value: string[] | null): void;
|
|
2024
|
-
registerOnChange(fn: (value: string[]) => void): void;
|
|
2025
|
-
registerOnTouched(fn: () => void): void;
|
|
2026
|
-
setDisabledState(isDisabled: boolean): void;
|
|
2027
|
-
private syncValues;
|
|
2028
|
-
private commit;
|
|
2029
|
-
private focusSlot;
|
|
2030
|
-
protected onSlotInput(i: number, event: Event): void;
|
|
2031
|
-
protected onSlotKeyDown(i: number, event: KeyboardEvent): void;
|
|
2032
|
-
protected onFocus(): void;
|
|
2033
|
-
protected onBlur(): void;
|
|
2034
|
-
protected clear(): void;
|
|
2035
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MultiTextFieldComponent, never>;
|
|
2036
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MultiTextFieldComponent, "ius-multi-text-field", never, { "slots": { "alias": "slots"; "required": false; }; "label": { "alias": "label"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showIconHelp": { "alias": "showIconHelp"; "required": false; }; "iconHelpTitle": { "alias": "iconHelpTitle"; "required": false; }; "iconHelpContent": { "alias": "iconHelpContent"; "required": false; }; "helpText": { "alias": "helpText"; "required": false; }; "errorText": { "alias": "errorText"; "required": false; }; "showHelpText": { "alias": "showHelpText"; "required": false; }; "showClear": { "alias": "showClear"; "required": false; }; "error": { "alias": "error"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "size": { "alias": "size"; "required": false; }; "state": { "alias": "state"; "required": false; }; "id": { "alias": "id"; "required": false; }; }, { "valueChange": "valueChange"; "cleared": "cleared"; }, never, never, true, never>;
|
|
2037
|
-
static ngAcceptInputType_required: unknown;
|
|
2038
|
-
static ngAcceptInputType_showIconHelp: unknown;
|
|
2039
|
-
static ngAcceptInputType_showHelpText: unknown;
|
|
2040
|
-
static ngAcceptInputType_error: unknown;
|
|
2041
|
-
static ngAcceptInputType_disabled: unknown;
|
|
1911
|
+
interface StatusMeta {
|
|
1912
|
+
/** Rótulo humano del estado. `string` (el golden usa `ReactNode`; ver §1 de la cabecera). */
|
|
1913
|
+
label: string;
|
|
1914
|
+
/** Familia semántica del estado. */
|
|
1915
|
+
tone: StatusTone;
|
|
1916
|
+
/** Ligadura Material Symbols Rounded. */
|
|
1917
|
+
icon: string;
|
|
2042
1918
|
}
|
|
2043
|
-
|
|
2044
|
-
/** Ancho máximo del diálogo — small 380 · medium 520 (default) · large 680px. */
|
|
2045
|
-
type IusModalSize = 'small' | 'medium' | 'large';
|
|
2046
|
-
/** Tono del círculo del ícono del header. */
|
|
2047
|
-
type IusModalIconTone = 'info' | 'success' | 'warning' | 'danger' | 'primary' | 'neutral';
|
|
2048
|
-
/** Motivo del cierre emitido por `closed`. */
|
|
2049
|
-
type IusModalCloseReason = 'close' | 'esc' | 'scrim' | 'secondary';
|
|
2050
1919
|
/**
|
|
2051
|
-
*
|
|
2052
|
-
*
|
|
2053
|
-
*
|
|
2054
|
-
* ```html
|
|
2055
|
-
* <ius-modal ...>
|
|
2056
|
-
* …cuerpo…
|
|
2057
|
-
* <div iusModalFooter>…acciones a medida…</div>
|
|
2058
|
-
* </ius-modal>
|
|
2059
|
-
* ```
|
|
1920
|
+
* Mapa de una entidad: `status → StatusMeta`. El **orden de declaración** de las
|
|
1921
|
+
* claves es el orden del ciclo de vida.
|
|
2060
1922
|
*/
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
|
|
1923
|
+
type StatusVocabMap = Readonly<Record<string, StatusMeta>>;
|
|
1924
|
+
/** Opción lista para dropdown / filtro / orden por estado. */
|
|
1925
|
+
interface StatusOption {
|
|
1926
|
+
/** Clave del estado (la que viaja al backend). */
|
|
1927
|
+
value: string;
|
|
1928
|
+
/** Rótulo humano. */
|
|
1929
|
+
label: string;
|
|
1930
|
+
/** Familia semántica. */
|
|
1931
|
+
tone: StatusTone;
|
|
1932
|
+
/** Ligadura Material Symbols Rounded. */
|
|
1933
|
+
icon: string;
|
|
1934
|
+
}
|
|
1935
|
+
/** Par de variables de color de un tono: texto/ícono y punto (marca). */
|
|
1936
|
+
interface StatusToneVars {
|
|
1937
|
+
/** Color del texto y del ícono. Siempre un `var(--ius-*)`. */
|
|
1938
|
+
fg: string;
|
|
1939
|
+
/** Color del punto/marca. Siempre un `var(--ius-*)`. */
|
|
1940
|
+
mark: string;
|
|
2064
1941
|
}
|
|
2065
1942
|
/**
|
|
2066
|
-
*
|
|
2067
|
-
*
|
|
2068
|
-
* Diálogo centrado sobre un scrim que exige atención/decisión (confirmaciones,
|
|
2069
|
-
* avisos accionables) sin abandonar la pantalla. Se monta vía **CDK Overlay** en
|
|
2070
|
-
* `document.body` (no acepta `container`): portal + **scroll-lock** del fondo +
|
|
2071
|
-
* **focus-trap** dentro (`cdkTrapFocus`). `Esc`/scrim cierran (configurable).
|
|
2072
|
-
* `role="dialog"` `aria-modal="true"`.
|
|
2073
|
-
*
|
|
2074
|
-
* Compone `ius-button` (footer) e `ius-icon-button` (cerrar) — no introduce
|
|
2075
|
-
* controles propios. Para tareas con varios campos usar Drawer; para avisos no
|
|
2076
|
-
* bloqueantes usar Alert/Toast.
|
|
1943
|
+
* Catálogo: entidad → `{ status → StatusMeta }`.
|
|
2077
1944
|
*
|
|
1945
|
+
* El **orden de declaración** de cada estado es el orden del ciclo. El catálogo
|
|
1946
|
+
* es ABIERTO: se agregan entidades aquí sin tocar `StatusChip` (ver
|
|
1947
|
+
* `STATUS_VOCABS_PENDING`). Un módulo puede además extender en runtime pasando
|
|
1948
|
+
* `customMap` a `resolveStatus`.
|
|
2078
1949
|
*/
|
|
2079
|
-
declare
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
showClose: boolean;
|
|
2102
|
-
/** Texto del botón primario de conveniencia. */
|
|
2103
|
-
primaryLabel?: string;
|
|
2104
|
-
/** Loading del primario. */
|
|
2105
|
-
primaryLoading: boolean;
|
|
2106
|
-
/** Deshabilita el primario. */
|
|
2107
|
-
primaryDisabled: boolean;
|
|
2108
|
-
/** Acción destructiva: el primario de conveniencia usa `variant="danger"` (rojo). */
|
|
2109
|
-
destructive: boolean;
|
|
2110
|
-
/** Texto del botón secundario. `null` lo oculta. */
|
|
2111
|
-
secondaryLabel: string | null;
|
|
2112
|
-
/** Divisores entre header/body/footer. */
|
|
2113
|
-
dividers: boolean;
|
|
2114
|
-
/** Cerrar al hacer clic en el scrim. */
|
|
2115
|
-
closeOnScrim: boolean;
|
|
2116
|
-
/** Cerrar con Escape. */
|
|
2117
|
-
closeOnEsc: boolean;
|
|
2118
|
-
/** z-index del scrim. */
|
|
2119
|
-
zIndex: number;
|
|
2120
|
-
/** Etiqueta accesible si no hay `title`. */
|
|
2121
|
-
ariaLabel?: string;
|
|
2122
|
-
/** Cierre con el motivo (`onClose` del golden). */
|
|
2123
|
-
readonly closed: EventEmitter<IusModalCloseReason>;
|
|
2124
|
-
/** Clic en el primario de conveniencia (`onPrimary`). */
|
|
2125
|
-
readonly primary: EventEmitter<MouseEvent>;
|
|
2126
|
-
/** Clic en el secundario de conveniencia (`onSecondary`). Si nadie lo escucha, cierra. */
|
|
2127
|
-
readonly secondary: EventEmitter<void>;
|
|
2128
|
-
private overlayRef;
|
|
2129
|
-
private keydownSub;
|
|
2130
|
-
private viewReady;
|
|
2131
|
-
protected get hasHead(): boolean;
|
|
2132
|
-
protected get iconColors(): {
|
|
2133
|
-
bg: string;
|
|
2134
|
-
fg: string;
|
|
1950
|
+
declare const STATUS_VOCAB: {
|
|
1951
|
+
readonly actuacion: {
|
|
1952
|
+
readonly nueva: {
|
|
1953
|
+
readonly label: "Nueva";
|
|
1954
|
+
readonly tone: "info";
|
|
1955
|
+
readonly icon: "fiber_new";
|
|
1956
|
+
};
|
|
1957
|
+
readonly vista: {
|
|
1958
|
+
readonly label: "Vista";
|
|
1959
|
+
readonly tone: "neutral";
|
|
1960
|
+
readonly icon: "drafts";
|
|
1961
|
+
};
|
|
1962
|
+
readonly gestion: {
|
|
1963
|
+
readonly label: "En gestión";
|
|
1964
|
+
readonly tone: "primary";
|
|
1965
|
+
readonly icon: "pending_actions";
|
|
1966
|
+
};
|
|
1967
|
+
readonly cerrada: {
|
|
1968
|
+
readonly label: "Cerrada";
|
|
1969
|
+
readonly tone: "success";
|
|
1970
|
+
readonly icon: "check_circle";
|
|
1971
|
+
};
|
|
2135
1972
|
};
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
1973
|
+
readonly gestion: {
|
|
1974
|
+
readonly por_hacer: {
|
|
1975
|
+
readonly label: "Por hacer";
|
|
1976
|
+
readonly tone: "info";
|
|
1977
|
+
readonly icon: "radio_button_unchecked";
|
|
1978
|
+
};
|
|
1979
|
+
readonly en_curso: {
|
|
1980
|
+
readonly label: "En curso";
|
|
1981
|
+
readonly tone: "primary";
|
|
1982
|
+
readonly icon: "pending";
|
|
1983
|
+
};
|
|
1984
|
+
readonly por_vencer: {
|
|
1985
|
+
readonly label: "Por vencer";
|
|
1986
|
+
readonly tone: "warning";
|
|
1987
|
+
readonly icon: "schedule";
|
|
1988
|
+
};
|
|
1989
|
+
readonly vencida: {
|
|
1990
|
+
readonly label: "Vencida";
|
|
1991
|
+
readonly tone: "danger";
|
|
1992
|
+
readonly icon: "event_busy";
|
|
1993
|
+
};
|
|
1994
|
+
readonly hecha: {
|
|
1995
|
+
readonly label: "Hecha";
|
|
1996
|
+
readonly tone: "success";
|
|
1997
|
+
readonly icon: "check_circle";
|
|
1998
|
+
};
|
|
1999
|
+
};
|
|
2000
|
+
};
|
|
2001
|
+
/** Entidades con vocabulario definido HOY en el catálogo. */
|
|
2002
|
+
type StatusVocabName = keyof typeof STATUS_VOCAB;
|
|
2003
|
+
/** Estados del vocabulario `actuacion` (validado). */
|
|
2004
|
+
type ActuacionStatus = keyof (typeof STATUS_VOCAB)['actuacion'];
|
|
2005
|
+
/** Estados del vocabulario `gestion` (propuesto — confirmar con backend). */
|
|
2006
|
+
type GestionStatus = keyof (typeof STATUS_VOCAB)['gestion'];
|
|
2007
|
+
/** Entidades con vocabulario definido. */
|
|
2008
|
+
declare const STATUS_VOCABS: readonly StatusVocabName[];
|
|
2162
2009
|
/**
|
|
2163
|
-
*
|
|
2164
|
-
*
|
|
2010
|
+
* Entidades que TIENEN estado pero cuyo vocabulario aún NO está en el catálogo:
|
|
2011
|
+
* sus estados/tonos son decisión humana pendiente con el backend (§6 del
|
|
2012
|
+
* golden). Se listan para documentar el hueco, no para inventarlo. Al validarse
|
|
2013
|
+
* se agregan a `STATUS_VOCAB` y se quitan de aquí; `StatusChip` no se toca.
|
|
2165
2014
|
*/
|
|
2166
|
-
|
|
2015
|
+
declare const STATUS_VOCABS_PENDING: readonly string[];
|
|
2167
2016
|
/**
|
|
2168
|
-
*
|
|
2169
|
-
* `
|
|
2017
|
+
* Estados (claves) de una entidad, en orden de ciclo.
|
|
2018
|
+
* `[]` si la entidad no existe.
|
|
2170
2019
|
*/
|
|
2171
|
-
|
|
2172
|
-
type IusTextWeight = 'regular' | 'medium' | 'bold';
|
|
2173
|
-
type IusTextAlign = 'left' | 'center' | 'right' | 'justify';
|
|
2020
|
+
declare function statusOrder(vocab: string): string[];
|
|
2174
2021
|
/**
|
|
2175
|
-
*
|
|
2176
|
-
* `
|
|
2177
|
-
* como recomienda la ng-spec §3). Cubre los tags del sistema + inline comunes.
|
|
2022
|
+
* Mapa `status → StatusMeta` de una entidad.
|
|
2023
|
+
* `null` si la entidad no está en el catálogo (retorno nullable, a propósito).
|
|
2178
2024
|
*/
|
|
2179
|
-
|
|
2025
|
+
declare function statusVocab(vocab: string): StatusVocabMap | null;
|
|
2026
|
+
/**
|
|
2027
|
+
* Resuelve un estado a `StatusMeta` en este orden:
|
|
2028
|
+
* 1. `customMap[status]` — extensión en runtime del módulo consumidor;
|
|
2029
|
+
* 2. catálogo central de la entidad;
|
|
2030
|
+
* 3. `null` — entidad o estado desconocido: el consumidor decide (el átomo
|
|
2031
|
+
* `StatusChip` cae a `neutral` con el `status` crudo como rótulo).
|
|
2032
|
+
*
|
|
2033
|
+
* @param vocab Entidad (p. ej. `'actuacion'`).
|
|
2034
|
+
* @param status Clave del estado YA resuelta por el consumidor (la urgencia de
|
|
2035
|
+
* una tarea se deriva antes de llamar aquí).
|
|
2036
|
+
* @param customMap Vocabulario extra del módulo; gana sobre el catálogo.
|
|
2037
|
+
*/
|
|
2038
|
+
declare function resolveStatus(vocab: string, status: string | null | undefined, customMap?: Readonly<Record<string, StatusMeta>>): StatusMeta | null;
|
|
2039
|
+
/**
|
|
2040
|
+
* Opciones listas para dropdown / filtro / orden de una entidad, en orden de
|
|
2041
|
+
* ciclo. `[]` si la entidad no existe.
|
|
2042
|
+
*/
|
|
2043
|
+
declare function statusOptions(vocab: string): StatusOption[];
|
|
2044
|
+
/**
|
|
2045
|
+
* Tono semántico → `{ fg, mark }` (strings `var(--ius-*)`).
|
|
2046
|
+
* Único punto del sistema que conoce las vars de color del estado.
|
|
2047
|
+
* Un tono desconocido, `null` o `undefined` cae a `neutral` (nunca falla).
|
|
2048
|
+
*/
|
|
2049
|
+
declare function statusToneVars(tone: StatusTone | null | undefined): StatusToneVars;
|
|
2050
|
+
|
|
2051
|
+
/** Tono semántico del estado. */
|
|
2052
|
+
type IusListCardTone = 'neutral' | 'success' | 'warning' | 'danger' | 'info' | 'primary';
|
|
2053
|
+
/** Densidad de la fila. */
|
|
2054
|
+
type IusListCardSize = 'small' | 'medium' | 'large';
|
|
2055
|
+
/** Columna de metadatos (label arriba / valor abajo). */
|
|
2056
|
+
interface IusListCardField {
|
|
2057
|
+
/** Etiqueta superior (opcional; omítela para un valor suelto como el monto). */
|
|
2058
|
+
label?: string;
|
|
2059
|
+
/** Valor mostrado debajo de la etiqueta. */
|
|
2060
|
+
value: string;
|
|
2061
|
+
/** Ícono Material Symbols antes del valor (p.ej. correo, teléfono). */
|
|
2062
|
+
icon?: string;
|
|
2063
|
+
/** Resalta el valor (display, semibold, color primario) — p.ej. el monto. */
|
|
2064
|
+
emphasis?: boolean;
|
|
2065
|
+
/** Alinea el campo a la derecha. */
|
|
2066
|
+
align?: 'start' | 'end';
|
|
2067
|
+
/**
|
|
2068
|
+
* Ancho fijo de ESTA columna (px o CSS). Para que toda la lista comparta la
|
|
2069
|
+
* misma rejilla, el ListView emitirá `--_lc-col-N` (cuando exista); un
|
|
2070
|
+
* `width` aquí gana sobre la rejilla.
|
|
2071
|
+
*/
|
|
2072
|
+
width?: number | string;
|
|
2073
|
+
/** Oculta el campo cuando la fila está en hover (para dar lugar a las acciones). */
|
|
2074
|
+
hideOnHover?: boolean;
|
|
2075
|
+
key?: string | number;
|
|
2076
|
+
}
|
|
2077
|
+
/** Estado al final de la fila — delega en `ius-status-chip`. */
|
|
2078
|
+
interface IusListCardStatus {
|
|
2079
|
+
label?: string;
|
|
2080
|
+
/** Tono semántico (escape hatch directo cuando no hay vocab). Default `'neutral'`. */
|
|
2081
|
+
tone?: IusListCardTone;
|
|
2082
|
+
/** `true` = ícono del estado (según catálogo) en vez del punto; string = ícono propio. */
|
|
2083
|
+
icon?: boolean | string;
|
|
2084
|
+
/** Vocabulario del catálogo de estados a resolver (p.ej. `'actuacion'`, `'gestion'`). */
|
|
2085
|
+
vocab?: string;
|
|
2086
|
+
/** Clave de estado dentro del `vocab` (p.ej. `'gestion'`, `'cerrada'`). */
|
|
2087
|
+
status?: string;
|
|
2088
|
+
/** Extensión de vocabulario en runtime (espejo de `customMap` del golden). */
|
|
2089
|
+
customMap?: Readonly<Record<string, StatusMeta>>;
|
|
2090
|
+
/** Oculta el estado en hover (p.ej. factura: "No pagada" → acciones). */
|
|
2091
|
+
hideOnHover?: boolean;
|
|
2092
|
+
}
|
|
2093
|
+
/**
|
|
2094
|
+
* Marcador de acceso PERSISTENTE en la fila (NO se oculta en hover), a
|
|
2095
|
+
* diferencia de `actions`. Para accesos a documentos/recursos siempre visibles:
|
|
2096
|
+
* p.ej. escudo = documento del estado, documento = providencia.
|
|
2097
|
+
*/
|
|
2098
|
+
interface IusListCardMarker {
|
|
2099
|
+
/** Ícono Material Symbols. */
|
|
2100
|
+
icon: string;
|
|
2101
|
+
/** Etiqueta accesible / tooltip. */
|
|
2102
|
+
label?: string;
|
|
2103
|
+
ariaLabel?: string;
|
|
2104
|
+
tooltip?: string;
|
|
2105
|
+
/** Variante del IconButton. Default `'tertiary'`. */
|
|
2106
|
+
variant?: IusIconButtonVariant;
|
|
2107
|
+
onClick?: (event: MouseEvent) => void;
|
|
2108
|
+
key?: string | number;
|
|
2109
|
+
}
|
|
2110
|
+
/** Acción utilitaria revelada en hover (IconButton). */
|
|
2111
|
+
interface IusListCardAction {
|
|
2112
|
+
/** Ícono Material Symbols. */
|
|
2113
|
+
icon: string;
|
|
2114
|
+
/** Etiqueta accesible / tooltip. */
|
|
2115
|
+
label?: string;
|
|
2116
|
+
ariaLabel?: string;
|
|
2117
|
+
/** Tooltip en hover (si no, usa `label`). */
|
|
2118
|
+
tooltip?: string;
|
|
2119
|
+
onClick?: (event: MouseEvent) => void;
|
|
2120
|
+
key?: string | number;
|
|
2121
|
+
}
|
|
2122
|
+
/** Opción del menú de overflow (⋮). Espejo de `IusDropdownItem`/`IusMenuOption`. */
|
|
2123
|
+
interface IusListCardMenuItem {
|
|
2124
|
+
key?: string | number;
|
|
2125
|
+
icon?: string;
|
|
2126
|
+
label?: string;
|
|
2127
|
+
/** Agrupa: al cambiar de `group` inserta un divisor. */
|
|
2128
|
+
group?: string | number;
|
|
2129
|
+
/** Inserta un divisor en su lugar. */
|
|
2130
|
+
separator?: boolean;
|
|
2131
|
+
danger?: boolean;
|
|
2132
|
+
disabled?: boolean;
|
|
2133
|
+
onClick?: (event: MouseEvent) => void;
|
|
2134
|
+
}
|
|
2135
|
+
/** Tag inline en la fila de título (subconjunto de props de `ius-tag`). */
|
|
2136
|
+
interface IusListCardTag {
|
|
2137
|
+
label?: string;
|
|
2138
|
+
tone?: IusTagTone;
|
|
2139
|
+
variant?: IusTagVariant;
|
|
2140
|
+
/** Ícono Material Symbols como prefijo. */
|
|
2141
|
+
icon?: string;
|
|
2142
|
+
/** Punto de acento (si se omite, el rol `status` ya lo activa). */
|
|
2143
|
+
dot?: boolean;
|
|
2144
|
+
key?: string | number;
|
|
2145
|
+
}
|
|
2146
|
+
/** Marca el bloque inicial proyectado (típicamente `<ius-avatar iusListCardLeading>`). */
|
|
2147
|
+
declare class IusListCardLeadingDirective {
|
|
2148
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusListCardLeadingDirective, never>;
|
|
2149
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusListCardLeadingDirective, "[iusListCardLeading]", never, {}, {}, never, never, true, never>;
|
|
2150
|
+
}
|
|
2151
|
+
/** Overline rico proyectado (alternativa al input `overline`). */
|
|
2152
|
+
declare class IusListCardOverlineDirective {
|
|
2153
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusListCardOverlineDirective, never>;
|
|
2154
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusListCardOverlineDirective, "[iusListCardOverline]", never, {}, {}, never, never, true, never>;
|
|
2155
|
+
}
|
|
2156
|
+
/** Título rico proyectado (alternativa al input `title`). */
|
|
2157
|
+
declare class IusListCardTitleDirective {
|
|
2158
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusListCardTitleDirective, never>;
|
|
2159
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusListCardTitleDirective, "[iusListCardTitle]", never, {}, {}, never, never, true, never>;
|
|
2160
|
+
}
|
|
2161
|
+
/** Subtítulo rico proyectado — admite markup (`<b>` resalta cifras). */
|
|
2162
|
+
declare class IusListCardSubtitleDirective {
|
|
2163
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusListCardSubtitleDirective, never>;
|
|
2164
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusListCardSubtitleDirective, "[iusListCardSubtitle]", never, {}, {}, never, never, true, never>;
|
|
2165
|
+
}
|
|
2166
|
+
/** Párrafo largo proyectado — ocupa toda la fila (empuja `fields` a 2ª línea). */
|
|
2167
|
+
declare class IusListCardParagraphDirective {
|
|
2168
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusListCardParagraphDirective, never>;
|
|
2169
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusListCardParagraphDirective, "[iusListCardParagraph]", never, {}, {}, never, never, true, never>;
|
|
2170
|
+
}
|
|
2180
2171
|
/**
|
|
2181
|
-
*
|
|
2182
|
-
*
|
|
2183
|
-
*
|
|
2184
|
-
*
|
|
2185
|
-
*
|
|
2186
|
-
*
|
|
2187
|
-
*
|
|
2188
|
-
*
|
|
2189
|
-
*
|
|
2190
|
-
*
|
|
2191
|
-
* (
|
|
2192
|
-
*
|
|
2193
|
-
*
|
|
2194
|
-
*
|
|
2195
|
-
* (
|
|
2172
|
+
* ListCard — Ius Design v2 (familia data-display).
|
|
2173
|
+
*
|
|
2174
|
+
* Fila-tarjeta horizontal y flexible para listas cuyos ítems navegan a un
|
|
2175
|
+
* detalle. Layout por slots:
|
|
2176
|
+
* `[leading]·[overline·título·subtítulo·paragraph]·[fields]·[status]·[markers]·[actions+⋮(hover)]·[chevron]`.
|
|
2177
|
+
* Fuente de verdad: `ListCard.jsx` + `ListCard.d.ts` + `ListCard.ng-spec.md`.
|
|
2178
|
+
* Card rica: resuelve su propia composición, NO se monta sobre `Card`.
|
|
2179
|
+
*
|
|
2180
|
+
* Compone `ius-avatar` (leading, proyectado), `ius-tag` (tags inline) y
|
|
2181
|
+
* `ius-icon-button` (acciones/markers). Host = la tarjeta (patrón Tag): con
|
|
2182
|
+
* `(clicked)` enlazado se vuelve navegable (role=button, tabindex, Enter en
|
|
2183
|
+
* keydown + Espacio en keyup) y muestra chevron por defecto.
|
|
2184
|
+
*
|
|
2185
|
+
* `status` delega en `ius-status-chip` (vocab+status contra el catálogo, o
|
|
2186
|
+
* tone/label/icon directo) y `menu` (⋮) compone `ius-dropdown` (trigger
|
|
2187
|
+
* IconButton `more_vert` proyectado, hover-only con `data-menu-open` mientras
|
|
2188
|
+
* el panel está abierto).
|
|
2189
|
+
*
|
|
2190
|
+
* No usar para el árbol denso de navegación (EntityRow) ni como ítem de menú
|
|
2191
|
+
* (MenuItem). Primera carga → envolver en Skeleton (patrón externo).
|
|
2196
2192
|
*/
|
|
2197
|
-
declare class
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
/**
|
|
2220
|
-
|
|
2221
|
-
/**
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
|
|
2193
|
+
declare class ListCardComponent implements AfterViewInit, OnChanges, OnDestroy {
|
|
2194
|
+
private readonly el;
|
|
2195
|
+
/** Etiqueta pequeña sobre el título (fecha, "Activo", categoría…). */
|
|
2196
|
+
overline?: string;
|
|
2197
|
+
/** Ícono Material Symbols antes del overline. */
|
|
2198
|
+
overlineIcon?: string;
|
|
2199
|
+
/** Título en negrita (radicado, nombre, "Visa ****0123", plan…). */
|
|
2200
|
+
title?: string;
|
|
2201
|
+
/** Ícono Material Symbols antes del título. */
|
|
2202
|
+
titleIcon?: string;
|
|
2203
|
+
/** Tags inline junto al título (se renderizan con `ius-tag` size small). */
|
|
2204
|
+
tags: IusListCardTag[];
|
|
2205
|
+
/** Subtítulo simple; para markup rico proyectar `[iusListCardSubtitle]`. */
|
|
2206
|
+
subtitle?: string;
|
|
2207
|
+
/** Ícono Material Symbols antes del subtítulo. */
|
|
2208
|
+
subtitleIcon?: string;
|
|
2209
|
+
/**
|
|
2210
|
+
* Párrafo de texto largo (descripción, nota). Tiene prioridad de ancho: ocupa
|
|
2211
|
+
* toda la fila, de modo que un párrafo denso empuja `fields` a la 2ª línea.
|
|
2212
|
+
* Para markup rico proyectar `[iusListCardParagraph]`.
|
|
2213
|
+
*/
|
|
2214
|
+
paragraph?: string;
|
|
2215
|
+
/** Columnas de metadatos (label arriba / valor abajo). */
|
|
2216
|
+
fields: IusListCardField[];
|
|
2217
|
+
/** Estado al final: `{vocab,status}` contra el catálogo o `{tone,label,icon}` directo. */
|
|
2218
|
+
status?: IusListCardStatus;
|
|
2219
|
+
/** Acciones reveladas en hover (IconButton por defecto). */
|
|
2220
|
+
actions: IusListCardAction[];
|
|
2221
|
+
/**
|
|
2222
|
+
* Opciones de uso frecuente en un menú de overflow (⋮, `more_vert`).
|
|
2223
|
+
* Hover-only; se mantiene visible mientras su menú está abierto.
|
|
2224
|
+
*/
|
|
2225
|
+
menu: IusListCardMenuItem[];
|
|
2226
|
+
/** Accesos PERSISTENTES (no hover): escudo/documento, etc. (IconButton). */
|
|
2227
|
+
markers: IusListCardMarker[];
|
|
2228
|
+
/** Muestra el chevron de navegación. Default: `true` si hay `(clicked)`. */
|
|
2229
|
+
chevron?: boolean;
|
|
2230
|
+
/** No leído: punto navy al inicio + título en negrita. */
|
|
2231
|
+
unread: boolean;
|
|
2232
|
+
/** Densidad. `medium` (default) hereda `--ius-density` del contexto. */
|
|
2233
|
+
size: IusListCardSize;
|
|
2234
|
+
/** Render personalizado de cada acción (original `renderAction`). */
|
|
2235
|
+
renderAction?: TemplateRef<{
|
|
2236
|
+
$implicit: IusListCardAction;
|
|
2237
|
+
index: number;
|
|
2238
|
+
}>;
|
|
2239
|
+
ariaLabel?: string;
|
|
2240
|
+
/** Click de la fila — navega a detalle (original `onClick`). */
|
|
2241
|
+
readonly clicked: EventEmitter<MouseEvent>;
|
|
2242
|
+
private readonly leadingRef;
|
|
2243
|
+
private readonly overlineRef;
|
|
2244
|
+
private readonly titleRef;
|
|
2245
|
+
private readonly subtitleRef;
|
|
2246
|
+
private readonly paragraphRef;
|
|
2247
|
+
protected get hasLeading(): boolean;
|
|
2248
|
+
protected get hasOverline(): boolean;
|
|
2249
|
+
protected get hasTitleRow(): boolean;
|
|
2250
|
+
protected get titleRefPresent(): boolean;
|
|
2251
|
+
protected get hasSubtitle(): boolean;
|
|
2252
|
+
protected get hasParagraph(): boolean;
|
|
2253
|
+
/** Navegable cuando el consumidor enlazó `(clicked)` (espejo de `onClick`). */
|
|
2254
|
+
protected get clickable(): boolean;
|
|
2255
|
+
/** Chevron: valor explícito o sigue a `clickable`. */
|
|
2256
|
+
protected get showChevron(): boolean;
|
|
2257
|
+
protected get hasTrail(): boolean;
|
|
2258
|
+
protected get statusChipSize(): 'small' | 'medium';
|
|
2259
|
+
/** Refleja la apertura del Dropdown en `data-menu-open` (hover-reveal persistente). */
|
|
2260
|
+
protected readonly menuOpen: _angular_core.WritableSignal<boolean>;
|
|
2261
|
+
protected onMenuOpenChange(open: boolean): void;
|
|
2262
|
+
protected onAction(action: IusListCardAction, event: MouseEvent): void;
|
|
2263
|
+
protected onMarker(marker: IusListCardMarker, event: MouseEvent): void;
|
|
2264
|
+
protected fieldWidth(field: IusListCardField): string | null;
|
|
2265
|
+
protected onHostClick(event: MouseEvent): void;
|
|
2266
|
+
/** Enter en keydown y Espacio en keyup activan SOLO con el foco en la fila. */
|
|
2267
|
+
protected onKeyActivate(event: Event): void;
|
|
2268
|
+
/** Espacio en keydown: solo evita el scroll; la activación ocurre en keyup. */
|
|
2269
|
+
protected onSpaceDown(event: Event): void;
|
|
2270
|
+
/** `true` cuando el bloque de `fields` cayó a la 2ª línea → divisor a lo ancho. */
|
|
2271
|
+
protected readonly wrapped: _angular_core.WritableSignal<boolean>;
|
|
2272
|
+
private resizeObserver?;
|
|
2273
|
+
private rafId;
|
|
2274
|
+
private viewReady;
|
|
2275
|
+
ngAfterViewInit(): void;
|
|
2276
|
+
ngOnChanges(): void;
|
|
2277
|
+
ngOnDestroy(): void;
|
|
2278
|
+
private scheduleMeasure;
|
|
2279
|
+
private measureWrap;
|
|
2280
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ListCardComponent, never>;
|
|
2281
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ListCardComponent, "ius-list-card", never, { "overline": { "alias": "overline"; "required": false; }; "overlineIcon": { "alias": "overlineIcon"; "required": false; }; "title": { "alias": "title"; "required": false; }; "titleIcon": { "alias": "titleIcon"; "required": false; }; "tags": { "alias": "tags"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "subtitleIcon": { "alias": "subtitleIcon"; "required": false; }; "paragraph": { "alias": "paragraph"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "status": { "alias": "status"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "menu": { "alias": "menu"; "required": false; }; "markers": { "alias": "markers"; "required": false; }; "chevron": { "alias": "chevron"; "required": false; }; "unread": { "alias": "unread"; "required": false; }; "size": { "alias": "size"; "required": false; }; "renderAction": { "alias": "renderAction"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, { "clicked": "clicked"; }, ["leadingRef", "overlineRef", "titleRef", "subtitleRef", "paragraphRef"], ["[iusListCardLeading]", "[iusListCardOverline]", "[iusListCardTitle]", "[iusListCardSubtitle]", "[iusListCardParagraph]"], true, never>;
|
|
2282
|
+
static ngAcceptInputType_unread: unknown;
|
|
2228
2283
|
}
|
|
2229
2284
|
|
|
2230
|
-
/** Degradado base según el fondo. */
|
|
2231
|
-
type IusLoadingMarkSurface = 'light' | 'dark';
|
|
2232
2285
|
/**
|
|
2286
|
+
* Opción de menú — tipo **compartido** por Menu, Dropdown y ContextMenu.
|
|
2233
2287
|
*
|
|
2234
|
-
*
|
|
2235
|
-
*
|
|
2236
|
-
* contorno sobre el degradado base navy→cian. Para splash, arranque y esperas
|
|
2237
|
-
* largas donde la marca debe estar presente. Para una espera neutra/compacta
|
|
2238
|
-
* dentro de la UI botón, fila, panel, usar Loading/CircularProgress; este no
|
|
2239
|
-
* lleva etiqueta ni se incrusta en controles.
|
|
2240
|
-
*
|
|
2288
|
+
* `trailing` acepta texto plano o un `TemplateRef` (equivalente Angular del
|
|
2289
|
+
* slot/ReactNode del golden, según la regla de port `render` → `TemplateRef`).
|
|
2241
2290
|
*/
|
|
2242
|
-
|
|
2243
|
-
/**
|
|
2244
|
-
|
|
2245
|
-
/**
|
|
2246
|
-
|
|
2247
|
-
/**
|
|
2248
|
-
paused: boolean;
|
|
2249
|
-
/** Etiqueta accesible. */
|
|
2250
|
-
ariaLabel: string;
|
|
2251
|
-
private readonly id;
|
|
2252
|
-
protected readonly baseId: string;
|
|
2253
|
-
protected readonly glowId: string;
|
|
2254
|
-
protected readonly softId: string;
|
|
2255
|
-
protected readonly maskId: string;
|
|
2256
|
-
/** Parada inicial del degradado base (siempre navy). */
|
|
2257
|
-
protected get baseFrom(): string;
|
|
2258
|
-
/** Parada final: navy en `light`; abre a `--ius-primary-600` en `dark`. */
|
|
2259
|
-
protected get baseTo(): string;
|
|
2260
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoadingMarkComponent, never>;
|
|
2261
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoadingMarkComponent, "ius-loading-mark", never, { "size": { "alias": "size"; "required": false; }; "surface": { "alias": "surface"; "required": false; }; "paused": { "alias": "paused"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, {}, never, never, true, never>;
|
|
2262
|
-
static ngAcceptInputType_size: unknown;
|
|
2263
|
-
static ngAcceptInputType_paused: unknown;
|
|
2264
|
-
}
|
|
2265
|
-
|
|
2266
|
-
/** Escala del sistema — small ~34 · medium ~40 (default) · large ~48px. */
|
|
2267
|
-
type IusSegmentedSize = 'small' | 'medium' | 'large';
|
|
2268
|
-
/** `subtle` = pastilla blanca elevada (default) · `solid` = pastilla navy de marca. */
|
|
2269
|
-
type IusSegmentedVariant = 'subtle' | 'solid';
|
|
2270
|
-
/** Opción del control (2–5, cortas, todas visibles). */
|
|
2271
|
-
interface SegmentedOption {
|
|
2272
|
-
/** Valor único (lo que recibe `valueChange`). */
|
|
2273
|
-
value: string;
|
|
2274
|
-
/** Etiqueta visible (omitible en `iconOnly`). */
|
|
2275
|
-
label?: string;
|
|
2276
|
-
/** Ligadura Material Symbols Rounded. */
|
|
2291
|
+
interface IusMenuOption {
|
|
2292
|
+
/** Valor lógico — el que viaja en `valueChange` y marca el check. */
|
|
2293
|
+
value?: string | number;
|
|
2294
|
+
/** Clave de `@for`; si falta se usa `value` y, en último caso, el índice. */
|
|
2295
|
+
key?: string | number;
|
|
2296
|
+
/** Ícono Material Symbols a la izquierda. */
|
|
2277
2297
|
icon?: string;
|
|
2278
|
-
/**
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2298
|
+
/** Texto de la fila. */
|
|
2299
|
+
label?: string;
|
|
2300
|
+
/** Contenido al final de la fila (atajo, valor, chevron). */
|
|
2301
|
+
trailing?: string | TemplateRef<unknown>;
|
|
2302
|
+
/** Al cambiar de grupo se inserta un divisor. */
|
|
2303
|
+
group?: string | number;
|
|
2304
|
+
/** Divisor explícito (la fila no se renderiza). */
|
|
2305
|
+
separator?: boolean;
|
|
2306
|
+
/** Acción destructiva (rojo). */
|
|
2307
|
+
danger?: boolean;
|
|
2308
|
+
/** Fila inerte. */
|
|
2282
2309
|
disabled?: boolean;
|
|
2310
|
+
/** Acción propia de la opción. */
|
|
2311
|
+
onClick?: (event: MouseEvent) => void;
|
|
2312
|
+
}
|
|
2313
|
+
/** Fila resuelta o divisor — lo que realmente pinta la plantilla. */
|
|
2314
|
+
interface IusMenuRow {
|
|
2315
|
+
kind: 'separator' | 'item';
|
|
2316
|
+
key: string;
|
|
2317
|
+
item?: IusMenuOption;
|
|
2318
|
+
selected?: boolean;
|
|
2283
2319
|
}
|
|
2284
2320
|
/**
|
|
2285
|
-
*
|
|
2286
|
-
*
|
|
2287
|
-
* Selector **único** de pocas opciones cortas, mutuamente excluyentes y **todas
|
|
2288
|
-
* visibles a la vez** (Mes/Semana/Día, filtros de estado, conmutadores de modo).
|
|
2289
|
-
* Para 0–1 opción → Switch; para muchas/largas → Select; para acciones → Button.
|
|
2321
|
+
* Menu — Ius Design v2 (familia overlays). **SUPERFICIE compartida de menú.**
|
|
2290
2322
|
*
|
|
2291
|
-
*
|
|
2292
|
-
*
|
|
2293
|
-
*
|
|
2323
|
+
* Lista de **MenuItem** con encabezado opcional, divisores, grupos, ítems
|
|
2324
|
+
* peligrosos/deshabilitados y modo selección única (check a la derecha). Es el
|
|
2325
|
+
* cuerpo que **Dropdown** ancla a un disparador y **ContextMenu** ancla al
|
|
2326
|
+
* cursor: por sí sola **no se posiciona ni gestiona apertura**.
|
|
2294
2327
|
*
|
|
2295
|
-
* Fuente de verdad: `
|
|
2328
|
+
* Fuente de verdad: `Menu.jsx` + `Menu.d.ts` + `Menu.ng-spec.md`. Las filas se
|
|
2329
|
+
* renderizan con `size="small"` y `variant="menu"`, como el golden.
|
|
2296
2330
|
*/
|
|
2297
|
-
declare class
|
|
2298
|
-
/** Opciones
|
|
2299
|
-
|
|
2300
|
-
/**
|
|
2301
|
-
|
|
2302
|
-
/**
|
|
2303
|
-
|
|
2304
|
-
/**
|
|
2305
|
-
|
|
2306
|
-
/**
|
|
2307
|
-
|
|
2308
|
-
/**
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
/**
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
|
|
2325
|
-
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2342
|
-
|
|
2331
|
+
declare class MenuComponent {
|
|
2332
|
+
/** Opciones del menú (tipo compartido con Dropdown/ContextMenu). */
|
|
2333
|
+
readonly items: _angular_core.InputSignal<readonly IusMenuOption[]>;
|
|
2334
|
+
/** Selección única: marca `value` con un check. */
|
|
2335
|
+
readonly selectable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2336
|
+
/** Valor elegido en modo `selectable`. */
|
|
2337
|
+
readonly value: _angular_core.InputSignal<string | number | undefined>;
|
|
2338
|
+
/** Encabezado visual del menú. */
|
|
2339
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
2340
|
+
/** Etiqueta accesible de la superficie. */
|
|
2341
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
2342
|
+
/** Modo `selectable` — espejo de `onChange`. */
|
|
2343
|
+
readonly valueChange: _angular_core.OutputEmitterRef<{
|
|
2344
|
+
value: string | number | undefined;
|
|
2345
|
+
item: IusMenuOption;
|
|
2346
|
+
}>;
|
|
2347
|
+
/** Tras activar un ítem — Dropdown/ContextMenu lo usan para cerrar. */
|
|
2348
|
+
readonly itemClick: _angular_core.OutputEmitterRef<{
|
|
2349
|
+
item: IusMenuOption;
|
|
2350
|
+
event: MouseEvent;
|
|
2351
|
+
}>;
|
|
2352
|
+
/**
|
|
2353
|
+
* Aplana `items` a filas pintables insertando los divisores de grupo: al
|
|
2354
|
+
* cambiar `group` respecto de la fila anterior se mete un separador (el
|
|
2355
|
+
* primer ítem nunca lo lleva), y `separator: true` es un divisor explícito.
|
|
2356
|
+
*/
|
|
2357
|
+
protected readonly rows: _angular_core.Signal<IusMenuRow[]>;
|
|
2358
|
+
/** `trailing` como TemplateRef (slot rico) — si no, se pinta como texto. */
|
|
2359
|
+
protected trailingTpl(item: IusMenuOption): TemplateRef<unknown> | null;
|
|
2360
|
+
/** `trailing` como texto plano (atajo, valor corto). */
|
|
2361
|
+
protected trailingText(item: IusMenuOption): string | null;
|
|
2362
|
+
protected onItemClick(row: IusMenuRow, event: MouseEvent): void;
|
|
2363
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuComponent, never>;
|
|
2364
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuComponent, "ius-menu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "itemClick": "itemClick"; }, never, never, true, never>;
|
|
2365
|
+
}
|
|
2366
|
+
|
|
2367
|
+
/** Familia de color del disparador por defecto. */
|
|
2368
|
+
type IusDropdownTone = 'primary' | 'neutral';
|
|
2369
|
+
/** Tratamiento del disparador por defecto. */
|
|
2370
|
+
type IusDropdownVariant = 'ghost' | 'outline';
|
|
2371
|
+
/** Opción del Dropdown — el tipo compartido de Menu/ContextMenu. */
|
|
2372
|
+
type IusDropdownItem = IusMenuOption;
|
|
2373
|
+
/**
|
|
2374
|
+
* Marca un disparador propio, en lugar del ghost texto+chevron por defecto:
|
|
2375
|
+
* `<ius-dropdown><ius-icon-button iusDropdownTrigger …/></ius-dropdown>`.
|
|
2376
|
+
*/
|
|
2377
|
+
declare class IusDropdownTriggerDirective {
|
|
2378
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusDropdownTriggerDirective, never>;
|
|
2379
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusDropdownTriggerDirective, "[iusDropdownTrigger]", never, {}, {}, never, never, true, never>;
|
|
2380
|
+
}
|
|
2381
|
+
/**
|
|
2382
|
+
* Dropdown — Ius Design v2 (familia overlays).
|
|
2383
|
+
*
|
|
2384
|
+
* Menú desplegable accionable: un disparador abre un **Popover** (sin rabito,
|
|
2385
|
+
* `bottom-start` por defecto) con una superficie **Menu**. Dos modos: **acciones**
|
|
2386
|
+
* (cada ítem ejecuta y cierra) y **selección única** (`selectable`, check en la
|
|
2387
|
+
* activa y la etiqueta elegida en el disparador).
|
|
2388
|
+
*
|
|
2389
|
+
* El disparador por defecto es un botón ghost texto+chevron (el chevron gira al
|
|
2390
|
+
* abrir); `variant="outline"` replica el contenedor del botón de QueryBuilder
|
|
2391
|
+
* (mismo borde/radio/padding/altura) para encajar en barras y SegmentGroup. Con
|
|
2392
|
+
* `[iusDropdownTrigger]` se proyecta un disparador propio.
|
|
2393
|
+
*
|
|
2394
|
+
* No es campo de formulario — eso es **Select**; para una sola acción →
|
|
2395
|
+
* Button/IconButton. Fuente de verdad: `Dropdown.jsx` + `Dropdown.d.ts` +
|
|
2396
|
+
* `Dropdown.ng-spec.md`.
|
|
2397
|
+
*/
|
|
2398
|
+
declare class DropdownComponent {
|
|
2399
|
+
/** Opciones del menú (mismo shape que `MenuOption`). */
|
|
2400
|
+
readonly items: _angular_core.InputSignal<readonly IusMenuOption[]>;
|
|
2401
|
+
/** Selección única: marca la opción activa con un check. */
|
|
2402
|
+
readonly selectable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2403
|
+
/** Valor elegido en modo `selectable`. */
|
|
2404
|
+
readonly value: _angular_core.InputSignal<string | number | undefined>;
|
|
2405
|
+
/** Encabezado del menú (y texto del disparador por defecto si no hay elegida). */
|
|
2406
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
2407
|
+
/** Texto del disparador por defecto (gana sobre la opción elegida y `label`). */
|
|
2408
|
+
readonly triggerLabel: _angular_core.InputSignal<string | undefined>;
|
|
2409
|
+
/** Ícono Material Symbols del disparador por defecto. */
|
|
2410
|
+
readonly triggerIcon: _angular_core.InputSignal<string | undefined>;
|
|
2411
|
+
/** Familia de color del disparador por defecto. */
|
|
2412
|
+
readonly tone: _angular_core.InputSignal<IusDropdownTone>;
|
|
2413
|
+
/** Tratamiento del disparador por defecto. */
|
|
2414
|
+
readonly variant: _angular_core.InputSignal<IusDropdownVariant>;
|
|
2415
|
+
/** Colocación del panel respecto del disparador. */
|
|
2416
|
+
readonly placement: _angular_core.InputSignal<IusPopoverPlacement>;
|
|
2417
|
+
/** Modo controlado (`undefined` = no controlado con `defaultOpen`). */
|
|
2418
|
+
readonly open: _angular_core.InputSignal<boolean | undefined>;
|
|
2419
|
+
/** Estado inicial del modo no controlado. */
|
|
2420
|
+
readonly defaultOpen: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2421
|
+
/** Etiqueta accesible del disparador por defecto. */
|
|
2422
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
2423
|
+
/** Modo `selectable` — espejo de `onChange`. */
|
|
2424
|
+
readonly valueChange: _angular_core.OutputEmitterRef<{
|
|
2425
|
+
value: string | number | undefined;
|
|
2426
|
+
item: IusDropdownItem;
|
|
2427
|
+
}>;
|
|
2428
|
+
/** Apertura/cierre del panel. */
|
|
2429
|
+
readonly openChange: _angular_core.OutputEmitterRef<boolean>;
|
|
2430
|
+
protected readonly customTrigger: _angular_core.Signal<IusDropdownTriggerDirective | undefined>;
|
|
2431
|
+
/** `null` = el usuario todavía no ha abierto/cerrado → manda `defaultOpen`. */
|
|
2432
|
+
private readonly internalOpen;
|
|
2433
|
+
/** Controlado por `open` si viene definido; si no, estado interno. */
|
|
2434
|
+
protected readonly isOpen: _angular_core.Signal<boolean>;
|
|
2435
|
+
/** Opción activa en modo `selectable` — alimenta el texto del disparador. */
|
|
2436
|
+
private readonly current;
|
|
2437
|
+
/** `triggerLabel` › etiqueta de la opción elegida › `label`. */
|
|
2438
|
+
protected readonly triggerText: _angular_core.Signal<string | undefined>;
|
|
2439
|
+
/** El encabezado del menú solo aplica en modo selección (como el golden). */
|
|
2440
|
+
protected readonly menuLabel: _angular_core.Signal<string | undefined>;
|
|
2441
|
+
protected onOpenChange(open: boolean): void;
|
|
2442
|
+
protected onValueChange(payload: {
|
|
2443
|
+
value: string | number | undefined;
|
|
2444
|
+
item: IusMenuOption;
|
|
2445
|
+
}): void;
|
|
2446
|
+
/** Activar un ítem cierra el panel (acciones y selección). */
|
|
2447
|
+
protected onItemClick(): void;
|
|
2448
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownComponent, never>;
|
|
2449
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownComponent, "ius-dropdown", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "triggerLabel": { "alias": "triggerLabel"; "required": false; "isSignal": true; }; "triggerIcon": { "alias": "triggerIcon"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "openChange": "openChange"; }, ["customTrigger"], ["[iusDropdownTrigger]"], true, never>;
|
|
2343
2450
|
}
|
|
2344
2451
|
|
|
2345
2452
|
/** Escala del campo — small ~34 · medium ~40 (default) · large ~48px. */
|
|
@@ -2636,934 +2743,1599 @@ declare class SelectComponent implements ControlValueAccessor, OnInit, OnDestroy
|
|
|
2636
2743
|
private readonly openSync;
|
|
2637
2744
|
ngOnInit(): void;
|
|
2638
2745
|
ngOnDestroy(): void;
|
|
2639
|
-
writeValue(value: IusSelectValue | IusSelectValue[] | null): void;
|
|
2640
|
-
registerOnChange(fn: (value: IusSelectValue | IusSelectValue[] | null) => void): void;
|
|
2746
|
+
writeValue(value: IusSelectValue | IusSelectValue[] | null): void;
|
|
2747
|
+
registerOnChange(fn: (value: IusSelectValue | IusSelectValue[] | null) => void): void;
|
|
2748
|
+
registerOnTouched(fn: () => void): void;
|
|
2749
|
+
setDisabledState(isDisabled: boolean): void;
|
|
2750
|
+
private commit;
|
|
2751
|
+
protected handleSelect(opt: SelectOption): void;
|
|
2752
|
+
protected removeChip(val: IusSelectValue): void;
|
|
2753
|
+
protected clear(event: Event): void;
|
|
2754
|
+
protected toggleOpen(): void;
|
|
2755
|
+
/**
|
|
2756
|
+
* Solo actualiza estado y notifica. El montaje/desmontaje del overlay NO va
|
|
2757
|
+
* aquí: lo gobierna `openSync` a partir de `isOpen()`. Si se hiciera aquí, en
|
|
2758
|
+
* modo controlado (`[open]`) el menú se abriría sin permiso del padre y, al
|
|
2759
|
+
* revés, cambiar `[open]` desde fuera no montaría nada.
|
|
2760
|
+
*/
|
|
2761
|
+
private setOpen;
|
|
2762
|
+
/**
|
|
2763
|
+
* El alto del menú cambió (filtro de búsqueda, alta de una opción por el pie
|
|
2764
|
+
* `creatable`): re-evalúa flip/posición del overlay en el siguiente frame,
|
|
2765
|
+
* cuando el DOM ya midió el alto nuevo.
|
|
2766
|
+
*/
|
|
2767
|
+
private schedulePositionUpdate;
|
|
2768
|
+
protected onSearch(event: Event): void;
|
|
2769
|
+
protected onCreateInput(event: Event): void;
|
|
2770
|
+
/**
|
|
2771
|
+
* `Enter` agrega la opción; `Escape` **con texto** solo limpia el borrador y
|
|
2772
|
+
* frena la propagación para que el listener de `document` no cierre el menú
|
|
2773
|
+
* (espejo del golden). Sin texto, `Escape` sigue cerrando el menú.
|
|
2774
|
+
*/
|
|
2775
|
+
protected onCreateKeyDown(event: KeyboardEvent): void;
|
|
2776
|
+
/**
|
|
2777
|
+
* Agrega la opción escrita en el pie: la construye con `createFactory` (o
|
|
2778
|
+
* envuelve el texto), la anexa si su `value` no existe ya, emite `created`,
|
|
2779
|
+
* limpia el borrador y devuelve el foco al campo del pie.
|
|
2780
|
+
*/
|
|
2781
|
+
protected addItem(): void;
|
|
2782
|
+
private moveActive;
|
|
2783
|
+
/**
|
|
2784
|
+
* ¿Es una tecla imprimible de una sola posición (typeahead)? Se ignora
|
|
2785
|
+
* cuando el foco está en una caja de texto del menú — la de búsqueda **o**
|
|
2786
|
+
* la del pie `creatable`: ahí escribir filtra o redacta el nombre nuevo, y
|
|
2787
|
+
* mover el resaltado sería un efecto colateral indeseado. También se ignora
|
|
2788
|
+
* con modificadores (Ctrl/Alt/Meta).
|
|
2789
|
+
*
|
|
2790
|
+
* (Hoy el pie de `creatable` no enruta a `onTriggerKeyDown` —vive en el
|
|
2791
|
+
* overlay y tiene su propio handler—, pero la guarda se deja explícita para
|
|
2792
|
+
* que reenrutarlo mañana no reintroduzca el bug.)
|
|
2793
|
+
*/
|
|
2794
|
+
private isTypeaheadKey;
|
|
2795
|
+
/** Quita diacríticos y normaliza a minúsculas para comparar etiquetas. */
|
|
2796
|
+
private normalizeLabel;
|
|
2797
|
+
/**
|
|
2798
|
+
* Typeahead: acumula el carácter en un buffer (expira a los ~700ms) y
|
|
2799
|
+
* salta el resaltado/apertura a la primera opción habilitada cuya etiqueta
|
|
2800
|
+
* empiece por el buffer. Con el menú abierto solo mueve el resaltado; con
|
|
2801
|
+
* el menú cerrado (single) lo abre y resalta el match (sin seleccionar).
|
|
2802
|
+
*/
|
|
2803
|
+
private handleTypeahead;
|
|
2804
|
+
protected onTriggerKeyDown(event: KeyboardEvent): void;
|
|
2805
|
+
protected onDocumentMouseDown(event: MouseEvent): void;
|
|
2806
|
+
protected onEscape(): void;
|
|
2807
|
+
/** Difiere el attach un frame (deja que `@if`/inputs terminen de asentarse). */
|
|
2808
|
+
private scheduleOpen;
|
|
2809
|
+
private attachOverlay;
|
|
2810
|
+
private detachOverlay;
|
|
2811
|
+
private updateMenuWidth;
|
|
2812
|
+
private readonly onWindowResize;
|
|
2813
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectComponent, never>;
|
|
2814
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectComponent, "ius-select", never, { "options": { "alias": "options"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "error": { "alias": "error"; "required": false; }; "state": { "alias": "state"; "required": false; }; "open": { "alias": "open"; "required": false; }; "value": { "alias": "value"; "required": false; }; "label": { "alias": "label"; "required": false; }; "required": { "alias": "required"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; }; "emptyText": { "alias": "emptyText"; "required": false; }; "creatable": { "alias": "creatable"; "required": false; }; "createPlaceholder": { "alias": "createPlaceholder"; "required": false; }; "createLabel": { "alias": "createLabel"; "required": false; }; "createFactory": { "alias": "createFactory"; "required": false; }; "maxVisible": { "alias": "maxVisible"; "required": false; }; "helpText": { "alias": "helpText"; "required": false; }; "errorText": { "alias": "errorText"; "required": false; }; "showHelpText": { "alias": "showHelpText"; "required": false; }; "showIconHelp": { "alias": "showIconHelp"; "required": false; }; "iconHelpTitle": { "alias": "iconHelpTitle"; "required": false; }; "iconHelpContent": { "alias": "iconHelpContent"; "required": false; }; "showClear": { "alias": "showClear"; "required": false; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; }; "compact": { "alias": "compact"; "required": false; }; "defaultValue": { "alias": "defaultValue"; "required": false; }; "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; }, { "valueChange": "valueChange"; "cleared": "cleared"; "openChange": "openChange"; "created": "created"; }, never, never, true, never>;
|
|
2815
|
+
static ngAcceptInputType_multiple: unknown;
|
|
2816
|
+
static ngAcceptInputType_disabled: unknown;
|
|
2817
|
+
static ngAcceptInputType_error: unknown;
|
|
2818
|
+
static ngAcceptInputType_open: unknown;
|
|
2819
|
+
static ngAcceptInputType_required: unknown;
|
|
2820
|
+
static ngAcceptInputType_searchable: unknown;
|
|
2821
|
+
static ngAcceptInputType_creatable: unknown;
|
|
2822
|
+
static ngAcceptInputType_maxVisible: unknown;
|
|
2823
|
+
static ngAcceptInputType_showHelpText: unknown;
|
|
2824
|
+
static ngAcceptInputType_showIconHelp: unknown;
|
|
2825
|
+
static ngAcceptInputType_showClear: unknown;
|
|
2826
|
+
static ngAcceptInputType_defaultOpen: unknown;
|
|
2827
|
+
static ngAcceptInputType_compact: unknown;
|
|
2828
|
+
}
|
|
2829
|
+
|
|
2830
|
+
/** Estilo de la paginación. */
|
|
2831
|
+
type IusListViewPaginationVariant = 'compact' | 'numbered';
|
|
2832
|
+
|
|
2833
|
+
/** Escala del header/footer/paginación. */
|
|
2834
|
+
type IusListViewSize = 'small' | 'medium' | 'large';
|
|
2835
|
+
/** Acción utilitaria del header (IconButton tertiary). */
|
|
2836
|
+
interface IusListViewAction {
|
|
2837
|
+
/** Ícono Material Symbols Rounded. */
|
|
2838
|
+
icon: string;
|
|
2839
|
+
/** Etiqueta accesible / tooltip. */
|
|
2840
|
+
label?: string;
|
|
2841
|
+
ariaLabel?: string;
|
|
2842
|
+
onClick?: (event: MouseEvent) => void;
|
|
2843
|
+
disabled?: boolean;
|
|
2844
|
+
key?: string | number;
|
|
2845
|
+
}
|
|
2846
|
+
/** Opción del dropdown de orden. */
|
|
2847
|
+
interface IusListViewSortOption {
|
|
2848
|
+
value: string | number;
|
|
2849
|
+
label: string;
|
|
2850
|
+
/** Agrupa opciones (inserta divisor al cambiar de grupo). */
|
|
2851
|
+
group?: string | number;
|
|
2852
|
+
}
|
|
2853
|
+
/** Marca el slot de filtros secundarios (Tags) del header. */
|
|
2854
|
+
declare class IusListViewFiltersDirective {
|
|
2855
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusListViewFiltersDirective, never>;
|
|
2856
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusListViewFiltersDirective, "[iusListViewFilters]", never, {}, {}, never, never, true, never>;
|
|
2857
|
+
}
|
|
2858
|
+
/** Escape-hatch al inicio del header integrado. */
|
|
2859
|
+
declare class IusListViewHeaderStartDirective {
|
|
2860
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusListViewHeaderStartDirective, never>;
|
|
2861
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusListViewHeaderStartDirective, "[iusListViewHeaderStart]", never, {}, {}, never, never, true, never>;
|
|
2862
|
+
}
|
|
2863
|
+
/** Escape-hatch al final del header integrado. */
|
|
2864
|
+
declare class IusListViewHeaderEndDirective {
|
|
2865
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusListViewHeaderEndDirective, never>;
|
|
2866
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusListViewHeaderEndDirective, "[iusListViewHeaderEnd]", never, {}, {}, never, never, true, never>;
|
|
2867
|
+
}
|
|
2868
|
+
/**
|
|
2869
|
+
* Fila-toolbar full-width que reemplaza el header integrado cuando NO hay
|
|
2870
|
+
* selección activa (búsqueda + filtros + controles del listado).
|
|
2871
|
+
*/
|
|
2872
|
+
declare class IusListViewToolbarDirective {
|
|
2873
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusListViewToolbarDirective, never>;
|
|
2874
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusListViewToolbarDirective, "[iusListViewToolbar]", never, {}, {}, never, never, true, never>;
|
|
2875
|
+
}
|
|
2876
|
+
/** Escape-hatch al inicio del footer. */
|
|
2877
|
+
declare class IusListViewFooterStartDirective {
|
|
2878
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusListViewFooterStartDirective, never>;
|
|
2879
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusListViewFooterStartDirective, "[iusListViewFooterStart]", never, {}, {}, never, never, true, never>;
|
|
2880
|
+
}
|
|
2881
|
+
/** Escape-hatch al final del footer. */
|
|
2882
|
+
declare class IusListViewFooterEndDirective {
|
|
2883
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusListViewFooterEndDirective, never>;
|
|
2884
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusListViewFooterEndDirective, "[iusListViewFooterEnd]", never, {}, {}, never, never, true, never>;
|
|
2885
|
+
}
|
|
2886
|
+
/**
|
|
2887
|
+
* ListView — Ius Design v2 (familia data-display).
|
|
2888
|
+
*
|
|
2889
|
+
* **Cáscara de lista** en tres zonas — header (acciones de lista) · body
|
|
2890
|
+
* (scroll con las filas) · footer (conteo sutil + paginación) — para cualquier
|
|
2891
|
+
* listado que navega al detalle. No conoce los datos: el consumidor proyecta
|
|
2892
|
+
* las filas (normalmente `ius-list-card`) y maneja orden/filtrado/paginación.
|
|
2893
|
+
* Fuente de verdad: `ListView.jsx` + `ListView.d.ts` + `ListView.ng-spec.md`.
|
|
2894
|
+
*
|
|
2895
|
+
* Header híbrido: controles integrados (seleccionar todo, orden, acciones) +
|
|
2896
|
+
* slots (`iusListViewHeaderStart/End`, `iusListViewFilters`,
|
|
2897
|
+
* `iusListViewToolbar` full-width). Con `selectedCount > 0` el header conmuta a
|
|
2898
|
+
* **modo selección** (conteo + acciones masivas + "Limpiar"). Paginación
|
|
2899
|
+
* numerada homogénea SIEMPRE en el footer (sin scroll infinito).
|
|
2900
|
+
*
|
|
2901
|
+
* `fieldWidths` fija la rejilla de columnas de los `ListCard` descendientes
|
|
2902
|
+
* (emite `--_lc-col-N` en el body). `fit` confina el scroll en el body (el
|
|
2903
|
+
* ancestro debe darle alto acotado). Compone Checkbox, IconButton, TextButton.
|
|
2904
|
+
*
|
|
2905
|
+
* El orden compone `ius-dropdown` (selección única, trigger ghost `swap_vert`
|
|
2906
|
+
* tone neutral, como el golden).
|
|
2907
|
+
*
|
|
2908
|
+
* FALLBACK (API idéntica, reemplazar cuando exista el port):
|
|
2909
|
+
* - paginación: `ius-list-view-pagination` (port interno de Pagination.jsx
|
|
2910
|
+
* sobre ius-button/ius-icon-button/ius-select compact). Reemplazar por
|
|
2911
|
+
* `ius-pagination` cuando exista.
|
|
2912
|
+
*/
|
|
2913
|
+
declare class ListViewComponent {
|
|
2914
|
+
/** Oculta por completo el header. */
|
|
2915
|
+
hideHeader: boolean;
|
|
2916
|
+
/** Muestra el checkbox "Seleccionar todo". */
|
|
2917
|
+
selectable: boolean;
|
|
2918
|
+
/** Todas las filas visibles están seleccionadas. */
|
|
2919
|
+
allSelected: boolean;
|
|
2920
|
+
/** Estado indeterminado (algunas seleccionadas). */
|
|
2921
|
+
someSelected: boolean;
|
|
2922
|
+
/** Texto junto al checkbox de selección. */
|
|
2923
|
+
selectLabel: string;
|
|
2924
|
+
/** Opciones de orden → dropdown de selección única en el header. */
|
|
2925
|
+
sortOptions: IusListViewSortOption[];
|
|
2926
|
+
sortValue?: string | number;
|
|
2927
|
+
/** Acciones utilitarias de lista (refrescar, marcar leídos…) → IconButtons. */
|
|
2928
|
+
actions: IusListViewAction[];
|
|
2929
|
+
/** Nº de filas seleccionadas; > 0 activa el modo selección del header. */
|
|
2930
|
+
selectedCount: number;
|
|
2931
|
+
/** Acciones masivas mostradas en modo selección. */
|
|
2932
|
+
selectionActions: IusListViewAction[];
|
|
2933
|
+
/** Separación entre filas (px o CSS). */
|
|
2934
|
+
gap: number | string;
|
|
2935
|
+
/** Padding interno del body. */
|
|
2936
|
+
bodyPadding: number | string;
|
|
2937
|
+
/** Contenedor con superficie + borde + radio y divisores internos. */
|
|
2938
|
+
bordered: boolean;
|
|
2939
|
+
/** Tope sup/inf del track del scrollbar (evita choque con el radio). */
|
|
2940
|
+
scrollTrackMargin: number | string;
|
|
2941
|
+
/** Confina el scroll en la lista (contrato de alto — ver ng-spec). */
|
|
2942
|
+
fit: boolean;
|
|
2943
|
+
/** Rejilla de columnas de `fields` para TODOS los ListCard (hasta 6). */
|
|
2944
|
+
fieldWidths?: Array<number | string | null>;
|
|
2945
|
+
/** Oculta el footer. */
|
|
2946
|
+
hideFooter: boolean;
|
|
2947
|
+
/** Total de elementos (conteo sutil / paginación). */
|
|
2948
|
+
total?: number;
|
|
2949
|
+
/** Sustantivo del conteo. Ej. `procesos`. */
|
|
2950
|
+
countNoun: string;
|
|
2951
|
+
/** Activa la paginación en el footer. */
|
|
2952
|
+
pagination: boolean;
|
|
2953
|
+
paginationVariant: IusListViewPaginationVariant;
|
|
2954
|
+
page?: number;
|
|
2955
|
+
pageSize: number;
|
|
2956
|
+
pageSizeOptions?: number[];
|
|
2957
|
+
size: IusListViewSize;
|
|
2958
|
+
/** Checkbox "Seleccionar todo" (original `onSelectAll`). */
|
|
2959
|
+
readonly selectAll: EventEmitter<boolean>;
|
|
2960
|
+
/** Cambio de orden (original `onSortChange`). */
|
|
2961
|
+
readonly sortChange: EventEmitter<string | number>;
|
|
2962
|
+
/** Limpiar selección (original `onClearSelection`; su enlace muestra "Limpiar"). */
|
|
2963
|
+
readonly clearSelection: EventEmitter<void>;
|
|
2964
|
+
/** Cambio de página (original `onPageChange`). */
|
|
2965
|
+
readonly pageChange: EventEmitter<number>;
|
|
2966
|
+
/** Cambio de tamaño de página (original `onPageSizeChange`). */
|
|
2967
|
+
readonly pageSizeChange: EventEmitter<number>;
|
|
2968
|
+
private readonly filtersRef;
|
|
2969
|
+
private readonly headerStartRef;
|
|
2970
|
+
private readonly headerEndRef;
|
|
2971
|
+
private readonly toolbarRef;
|
|
2972
|
+
private readonly footerStartRef;
|
|
2973
|
+
private readonly footerEndRef;
|
|
2974
|
+
protected get hasFilters(): boolean;
|
|
2975
|
+
protected get hasToolbar(): boolean;
|
|
2976
|
+
protected get inSelection(): boolean;
|
|
2977
|
+
protected get iconSize(): 'small' | 'medium';
|
|
2978
|
+
/** "Limpiar" aparece cuando el consumidor enlazó `(clearSelection)`. */
|
|
2979
|
+
protected get showClear(): boolean;
|
|
2980
|
+
protected get selCountText(): string;
|
|
2981
|
+
protected get countText(): string | null;
|
|
2982
|
+
protected get showFooter(): boolean;
|
|
2983
|
+
protected px(value: number | string | null | undefined): string | null;
|
|
2984
|
+
/** Var `--_lc-col-N` de la rejilla (null deja la columna en auto). */
|
|
2985
|
+
protected colVar(index: number): string | null;
|
|
2986
|
+
protected onAction(action: IusListViewAction, event: MouseEvent): void;
|
|
2987
|
+
/** Sin opción vigente el trigger cae a "Ordenar" (con vigente, el Dropdown muestra su label). */
|
|
2988
|
+
protected get sortTriggerFallback(): string | undefined;
|
|
2989
|
+
protected onSortChange(payload: {
|
|
2990
|
+
value: string | number | undefined;
|
|
2991
|
+
item: IusDropdownItem;
|
|
2992
|
+
}): void;
|
|
2993
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ListViewComponent, never>;
|
|
2994
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ListViewComponent, "ius-list-view", never, { "hideHeader": { "alias": "hideHeader"; "required": false; }; "selectable": { "alias": "selectable"; "required": false; }; "allSelected": { "alias": "allSelected"; "required": false; }; "someSelected": { "alias": "someSelected"; "required": false; }; "selectLabel": { "alias": "selectLabel"; "required": false; }; "sortOptions": { "alias": "sortOptions"; "required": false; }; "sortValue": { "alias": "sortValue"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "selectedCount": { "alias": "selectedCount"; "required": false; }; "selectionActions": { "alias": "selectionActions"; "required": false; }; "gap": { "alias": "gap"; "required": false; }; "bodyPadding": { "alias": "bodyPadding"; "required": false; }; "bordered": { "alias": "bordered"; "required": false; }; "scrollTrackMargin": { "alias": "scrollTrackMargin"; "required": false; }; "fit": { "alias": "fit"; "required": false; }; "fieldWidths": { "alias": "fieldWidths"; "required": false; }; "hideFooter": { "alias": "hideFooter"; "required": false; }; "total": { "alias": "total"; "required": false; }; "countNoun": { "alias": "countNoun"; "required": false; }; "pagination": { "alias": "pagination"; "required": false; }; "paginationVariant": { "alias": "paginationVariant"; "required": false; }; "page": { "alias": "page"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, { "selectAll": "selectAll"; "sortChange": "sortChange"; "clearSelection": "clearSelection"; "pageChange": "pageChange"; "pageSizeChange": "pageSizeChange"; }, ["filtersRef", "headerStartRef", "headerEndRef", "toolbarRef", "footerStartRef", "footerEndRef"], ["[iusListViewToolbar]", "[iusListViewHeaderStart]", "[iusListViewFilters]", "[iusListViewHeaderEnd]", "*", "[iusListViewFooterStart]", "[iusListViewFooterEnd]"], true, never>;
|
|
2995
|
+
static ngAcceptInputType_hideHeader: unknown;
|
|
2996
|
+
static ngAcceptInputType_selectable: unknown;
|
|
2997
|
+
static ngAcceptInputType_allSelected: unknown;
|
|
2998
|
+
static ngAcceptInputType_someSelected: unknown;
|
|
2999
|
+
static ngAcceptInputType_selectedCount: unknown;
|
|
3000
|
+
static ngAcceptInputType_bordered: unknown;
|
|
3001
|
+
static ngAcceptInputType_fit: unknown;
|
|
3002
|
+
static ngAcceptInputType_hideFooter: unknown;
|
|
3003
|
+
static ngAcceptInputType_pagination: unknown;
|
|
3004
|
+
static ngAcceptInputType_pageSize: unknown;
|
|
3005
|
+
}
|
|
3006
|
+
|
|
3007
|
+
/** Doble rol de la fila: seleccionable (option) o valor eliminable (chip). */
|
|
3008
|
+
type IusPersonItemVariant = 'option' | 'chip';
|
|
3009
|
+
/** Escala de avatar + texto. */
|
|
3010
|
+
type IusPersonItemSize = 'small' | 'medium' | 'large';
|
|
3011
|
+
/** Estado forzado — solo demos. */
|
|
3012
|
+
type IusPersonItemState = 'hover' | 'pressed';
|
|
3013
|
+
/** Acción del menú ⋮ del chip (espejo de `IusDropdownItem`/`IusMenuOption`). */
|
|
3014
|
+
interface IusPersonItemAction {
|
|
3015
|
+
key?: string | number;
|
|
3016
|
+
icon?: string;
|
|
3017
|
+
label?: string;
|
|
3018
|
+
/** Agrupa: al cambiar de `group` inserta un divisor. */
|
|
3019
|
+
group?: string | number;
|
|
3020
|
+
/** Inserta un divisor en su lugar. */
|
|
3021
|
+
separator?: boolean;
|
|
3022
|
+
danger?: boolean;
|
|
3023
|
+
disabled?: boolean;
|
|
3024
|
+
onClick?: (event: MouseEvent) => void;
|
|
3025
|
+
}
|
|
3026
|
+
/** Slot a la derecha antes de la X. */
|
|
3027
|
+
declare class IusPersonItemTrailingDirective {
|
|
3028
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusPersonItemTrailingDirective, never>;
|
|
3029
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusPersonItemTrailingDirective, "[iusPersonItemTrailing]", never, {}, {}, never, never, true, never>;
|
|
3030
|
+
}
|
|
3031
|
+
/** Nombre rico proyectado (alternativa al input `name`). */
|
|
3032
|
+
declare class IusPersonItemNameDirective {
|
|
3033
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusPersonItemNameDirective, never>;
|
|
3034
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusPersonItemNameDirective, "[iusPersonItemName]", never, {}, {}, never, never, true, never>;
|
|
3035
|
+
}
|
|
3036
|
+
/**
|
|
3037
|
+
* PersonItem — Ius Design v2 (familia data-display).
|
|
3038
|
+
*
|
|
3039
|
+
* Fila-tarjeta genérica de **persona**: avatar + nombre + hasta 2 líneas
|
|
3040
|
+
* (documento, correo, cargo). Doble rol: `option` (fila seleccionable con
|
|
3041
|
+
* estados tintados info + check) / `chip` (valor eliminable con X estilo Chip
|
|
3042
|
+
* y, opcionalmente, menú ⋮ de acciones). Fuente de verdad: `PersonItem.jsx` +
|
|
3043
|
+
* `PersonItem.d.ts` + `PersonItem.ng-spec.md`. Compone `ius-avatar`.
|
|
3044
|
+
*
|
|
3045
|
+
* Host = la tarjeta (patrón Tag/ListCard): con `(clicked)` enlazado y sin
|
|
3046
|
+
* `disabled` se vuelve botón ARIA (role, tabindex, Enter/Espacio). La X de
|
|
3047
|
+
* eliminar aparece al enlazar `(removed)`.
|
|
3048
|
+
*
|
|
3049
|
+
* `actions` (chip) compone `ius-dropdown` (trigger IconButton `more_vert`
|
|
3050
|
+
* proyectado, antes de la X).
|
|
3051
|
+
*
|
|
3052
|
+
* FALLBACK (API idéntica, reemplazar cuando exista el port):
|
|
3053
|
+
* - superficie: el golden compone `Card` (outlined · radius lg · padding none ·
|
|
3054
|
+
* interactive) — aquí la superficie se replica en `:host` con el CSS verbatim
|
|
3055
|
+
* de Card.jsx (solo los estados que PersonItem usa; los tintes info de option
|
|
3056
|
+
* los sobreescriben igual que el golden). Reemplazar por `ius-card`.
|
|
3057
|
+
*
|
|
3058
|
+
* Para cuenta a la que cambiar → AccountItem; fila de acción → MenuItem; pill
|
|
3059
|
+
* de texto simple → Chip/Tag.
|
|
3060
|
+
*/
|
|
3061
|
+
declare class PersonItemComponent {
|
|
3062
|
+
private readonly el;
|
|
3063
|
+
/** Nombre (línea principal, negrita). Para markup rico proyectar `[iusPersonItemName]`. */
|
|
3064
|
+
name?: string;
|
|
3065
|
+
/** Hasta 2 líneas secundarias; `TemplateRef` para contenido rico (no se enmascara). */
|
|
3066
|
+
lines?: Array<string | TemplateRef<unknown>>;
|
|
3067
|
+
/** URL de la fotografía (pasa a `ius-avatar` como `src`). */
|
|
3068
|
+
avatar?: string;
|
|
3069
|
+
/** Ícono Material Symbols del medallón (sin foto/monograma/nombre cae a `person`). */
|
|
3070
|
+
icon?: string;
|
|
3071
|
+
/** Monograma explícito. */
|
|
3072
|
+
monogram?: string;
|
|
3073
|
+
/** Familia de color del medallón. */
|
|
3074
|
+
color: IusAvatarColor;
|
|
3075
|
+
/** Forma del medallón; default square (option) / circle (chip). */
|
|
3076
|
+
shape?: IusAvatarShape;
|
|
3077
|
+
/** Fila seleccionable (`option`) o valor eliminable (`chip`). */
|
|
3078
|
+
variant: IusPersonItemVariant;
|
|
3079
|
+
/** Escala de avatar + texto; `medium` hereda `--ius-density` del contexto. */
|
|
3080
|
+
size: IusPersonItemSize;
|
|
3081
|
+
/** (option) fila elegida: fondo resaltado. */
|
|
3082
|
+
selected: boolean;
|
|
3083
|
+
/** (option) check cuando `selected`. */
|
|
3084
|
+
showCheck: boolean;
|
|
3085
|
+
/** Enmascara las líneas string (email → inicial+dominio; documento → 1ª+últimas 3). */
|
|
3086
|
+
mask: boolean;
|
|
3087
|
+
disabled: boolean;
|
|
3088
|
+
/** (chip) Acciones secundarias en menú ⋮ antes de la X. */
|
|
3089
|
+
actions: IusPersonItemAction[];
|
|
3090
|
+
/** aria del menú de acciones. */
|
|
3091
|
+
actionsLabel: string;
|
|
3092
|
+
/** aria del botón X. */
|
|
3093
|
+
removeLabel: string;
|
|
3094
|
+
/** Estado forzado — solo demos. */
|
|
3095
|
+
state?: IusPersonItemState;
|
|
3096
|
+
ariaLabel?: string;
|
|
3097
|
+
/** (option) fila pulsada (original `onClick`); su enlace vuelve la fila botón. */
|
|
3098
|
+
readonly clicked: EventEmitter<MouseEvent>;
|
|
3099
|
+
/** X pulsada (original `onRemove`); su enlace muestra la X. */
|
|
3100
|
+
readonly removed: EventEmitter<MouseEvent>;
|
|
3101
|
+
private readonly trailingRef;
|
|
3102
|
+
private readonly nameRef;
|
|
3103
|
+
protected get hasTrailing(): boolean;
|
|
3104
|
+
protected get clickable(): boolean;
|
|
3105
|
+
protected get showRemove(): boolean;
|
|
3106
|
+
protected get isChip(): boolean;
|
|
3107
|
+
protected get avatarShape(): IusAvatarShape;
|
|
3108
|
+
protected get avatarSize(): 'small' | 'medium' | 'large';
|
|
3109
|
+
protected get menuIbSize(): 'small' | 'medium';
|
|
3110
|
+
/** Sin foto/monograma/nombre, el medallón cae al ícono genérico `person`. */
|
|
3111
|
+
protected get effIcon(): string | undefined;
|
|
3112
|
+
protected get avatarName(): string | undefined;
|
|
3113
|
+
protected get hasName(): boolean;
|
|
3114
|
+
/** Líneas visibles (mask aplicado solo a strings, como el golden). */
|
|
3115
|
+
protected get displayLines(): Array<{
|
|
3116
|
+
text?: string;
|
|
3117
|
+
tpl?: TemplateRef<unknown>;
|
|
3118
|
+
}>;
|
|
3119
|
+
protected get showMenu(): boolean;
|
|
3120
|
+
protected onRemoveMouseDown(event: MouseEvent): void;
|
|
3121
|
+
protected onRemoveClick(event: MouseEvent): void;
|
|
3122
|
+
protected onHostClick(event: MouseEvent): void;
|
|
3123
|
+
protected onKeyActivate(event: Event): void;
|
|
3124
|
+
protected onSpaceDown(event: Event): void;
|
|
3125
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PersonItemComponent, never>;
|
|
3126
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PersonItemComponent, "ius-person-item", never, { "name": { "alias": "name"; "required": false; }; "lines": { "alias": "lines"; "required": false; }; "avatar": { "alias": "avatar"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "monogram": { "alias": "monogram"; "required": false; }; "color": { "alias": "color"; "required": false; }; "shape": { "alias": "shape"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "showCheck": { "alias": "showCheck"; "required": false; }; "mask": { "alias": "mask"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "actionsLabel": { "alias": "actionsLabel"; "required": false; }; "removeLabel": { "alias": "removeLabel"; "required": false; }; "state": { "alias": "state"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, { "clicked": "clicked"; "removed": "removed"; }, ["trailingRef", "nameRef"], ["[iusPersonItemName]", "[iusPersonItemTrailing]"], true, never>;
|
|
3127
|
+
static ngAcceptInputType_selected: unknown;
|
|
3128
|
+
static ngAcceptInputType_showCheck: unknown;
|
|
3129
|
+
static ngAcceptInputType_mask: unknown;
|
|
3130
|
+
static ngAcceptInputType_disabled: unknown;
|
|
3131
|
+
}
|
|
3132
|
+
|
|
3133
|
+
/** Costado desde el que entra el panel. */
|
|
3134
|
+
type IusDrawerSide = 'right' | 'left';
|
|
3135
|
+
/** Ancho del panel — sm 400 · md 440 · lg 560 · xl 720 px (≤480 full-width). */
|
|
3136
|
+
type IusDrawerSize = 'sm' | 'md' | 'lg' | 'xl';
|
|
3137
|
+
/** Título rico proyectado (alternativa al input `title`). */
|
|
3138
|
+
declare class IusDrawerTitleDirective {
|
|
3139
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusDrawerTitleDirective, never>;
|
|
3140
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusDrawerTitleDirective, "[iusDrawerTitle]", never, {}, {}, never, never, true, never>;
|
|
3141
|
+
}
|
|
3142
|
+
/** Acciones del header (antes del ×). */
|
|
3143
|
+
declare class IusDrawerHeaderActionsDirective {
|
|
3144
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusDrawerHeaderActionsDirective, never>;
|
|
3145
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusDrawerHeaderActionsDirective, "[iusDrawerHeaderActions]", never, {}, {}, never, never, true, never>;
|
|
3146
|
+
}
|
|
3147
|
+
/** Footer sticky (Button primario + Cancelar). */
|
|
3148
|
+
declare class IusDrawerFooterDirective {
|
|
3149
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusDrawerFooterDirective, never>;
|
|
3150
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusDrawerFooterDirective, "[iusDrawerFooter]", never, {}, {}, never, never, true, never>;
|
|
3151
|
+
}
|
|
3152
|
+
/**
|
|
3153
|
+
* Drawer (Side Sheet) — Ius Design v2 (familia overlays).
|
|
3154
|
+
*
|
|
3155
|
+
* Panel lateral para flujos de **crear/editar** (varios campos): scrim + panel
|
|
3156
|
+
* que entra desde `side` con header (volver + título + acciones + ×), body con
|
|
3157
|
+
* scroll propio y footer sticky. Fuente de verdad: `Drawer.jsx` + `Drawer.d.ts`
|
|
3158
|
+
* + `Drawer.ng-spec.md`. Confirmaciones breves → Modal.
|
|
3159
|
+
*
|
|
3160
|
+
* Se monta vía **CDK Overlay** en `document.body` (no acepta `container`):
|
|
3161
|
+
* portal + scroll-lock del fondo (`block()`) + focus-trap (`cdkTrapFocus`, que
|
|
3162
|
+
* además restaura el foco al cerrar). `Esc`/scrim cierran (configurable).
|
|
3163
|
+
* La animación replica el golden: `data-visible` desliza, y `data-entered`
|
|
3164
|
+
* suelta el transform al asentarse para que el texto rasterice nítido.
|
|
3165
|
+
*
|
|
3166
|
+
* La flecha de volver emite `back` si está enlazado; si no, cierra.
|
|
3167
|
+
*/
|
|
3168
|
+
declare class DrawerComponent implements AfterViewInit, OnDestroy {
|
|
3169
|
+
private readonly overlay;
|
|
3170
|
+
private readonly viewContainerRef;
|
|
3171
|
+
/** Template con scrim + panel; se portalea al overlay al abrir. */
|
|
3172
|
+
private tpl;
|
|
3173
|
+
protected titleSlot?: IusDrawerTitleDirective;
|
|
3174
|
+
protected actionsSlot?: IusDrawerHeaderActionsDirective;
|
|
3175
|
+
protected footerSlot?: IusDrawerFooterDirective;
|
|
3176
|
+
private _open?;
|
|
3177
|
+
/** Apertura controlada (undefined = no controlado con `defaultOpen`). */
|
|
3178
|
+
set open(value: boolean | undefined);
|
|
3179
|
+
get open(): boolean | undefined;
|
|
3180
|
+
/** Estado inicial del modo no controlado. */
|
|
3181
|
+
defaultOpen: boolean;
|
|
3182
|
+
/** Costado desde el que entra. */
|
|
3183
|
+
side: IusDrawerSide;
|
|
3184
|
+
/** Ancho del panel; lg/xl dan aire a formularios de 2 columnas. */
|
|
3185
|
+
size: IusDrawerSize;
|
|
3186
|
+
/** Título del header. Para markup rico proyectar `[iusDrawerTitle]`. */
|
|
3187
|
+
title?: string;
|
|
3188
|
+
centerTitle: boolean;
|
|
3189
|
+
/** Flecha de volver; default: visible si `(back)` está enlazado. */
|
|
3190
|
+
showBack?: boolean;
|
|
3191
|
+
/** × a la derecha. */
|
|
3192
|
+
showClose: boolean;
|
|
3193
|
+
closeOnScrim: boolean;
|
|
3194
|
+
closeOnEsc: boolean;
|
|
3195
|
+
showScrim: boolean;
|
|
3196
|
+
ariaLabel?: string;
|
|
3197
|
+
/** Cierre solicitado (original `onClose`): ×, scrim, Esc o volver sin `(back)`. */
|
|
3198
|
+
readonly closed: EventEmitter<void>;
|
|
3199
|
+
/** Espejo de `onOpenChange`. */
|
|
3200
|
+
readonly openChange: EventEmitter<boolean>;
|
|
3201
|
+
/** Flecha de volver (original `onBack`); si no se enlaza, la flecha cierra. */
|
|
3202
|
+
readonly back: EventEmitter<void>;
|
|
3203
|
+
protected readonly titleId: string;
|
|
3204
|
+
/** Estado de animación: visible desliza; entered suelta el transform. */
|
|
3205
|
+
protected readonly visible: _angular_core.WritableSignal<boolean>;
|
|
3206
|
+
protected readonly entered: _angular_core.WritableSignal<boolean>;
|
|
3207
|
+
private overlayRef;
|
|
3208
|
+
private keydownSub;
|
|
3209
|
+
private internalOpen;
|
|
3210
|
+
private viewReady;
|
|
3211
|
+
private timers;
|
|
3212
|
+
protected get isOpen(): boolean;
|
|
3213
|
+
protected get showBackBtn(): boolean;
|
|
3214
|
+
protected get hasTitle(): boolean;
|
|
3215
|
+
protected get hasActionsZone(): boolean;
|
|
3216
|
+
protected get hasHeader(): boolean;
|
|
3217
|
+
protected get labelledBy(): string | null;
|
|
3218
|
+
ngAfterViewInit(): void;
|
|
3219
|
+
ngOnDestroy(): void;
|
|
3220
|
+
protected requestClose(): void;
|
|
3221
|
+
protected onBackClick(): void;
|
|
3222
|
+
protected onScrimClick(): void;
|
|
3223
|
+
private sync;
|
|
3224
|
+
private attach;
|
|
3225
|
+
private detach;
|
|
3226
|
+
private clearTimers;
|
|
3227
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DrawerComponent, never>;
|
|
3228
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DrawerComponent, "ius-drawer", never, { "open": { "alias": "open"; "required": false; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; }; "side": { "alias": "side"; "required": false; }; "size": { "alias": "size"; "required": false; }; "title": { "alias": "title"; "required": false; }; "centerTitle": { "alias": "centerTitle"; "required": false; }; "showBack": { "alias": "showBack"; "required": false; }; "showClose": { "alias": "showClose"; "required": false; }; "closeOnScrim": { "alias": "closeOnScrim"; "required": false; }; "closeOnEsc": { "alias": "closeOnEsc"; "required": false; }; "showScrim": { "alias": "showScrim"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, { "closed": "closed"; "openChange": "openChange"; "back": "back"; }, ["titleSlot", "actionsSlot", "footerSlot"], ["[iusDrawerTitle]", "[iusDrawerHeaderActions]", "*", "[iusDrawerFooter]"], true, never>;
|
|
3229
|
+
static ngAcceptInputType_defaultOpen: unknown;
|
|
3230
|
+
static ngAcceptInputType_centerTitle: unknown;
|
|
3231
|
+
static ngAcceptInputType_showClose: unknown;
|
|
3232
|
+
static ngAcceptInputType_closeOnScrim: unknown;
|
|
3233
|
+
static ngAcceptInputType_closeOnEsc: unknown;
|
|
3234
|
+
static ngAcceptInputType_showScrim: unknown;
|
|
3235
|
+
}
|
|
3236
|
+
|
|
3237
|
+
/** Identificador de una persona (id o value de la opción). */
|
|
3238
|
+
type IusPersonId = string | number;
|
|
3239
|
+
/** Persona elegible del picker. */
|
|
3240
|
+
interface IusPersonOption {
|
|
3241
|
+
id?: IusPersonId;
|
|
3242
|
+
value?: IusPersonId;
|
|
3243
|
+
name?: string;
|
|
3244
|
+
/** Hasta 2 líneas secundarias (documento, correo, cargo…). */
|
|
3245
|
+
lines?: string[];
|
|
3246
|
+
avatar?: string;
|
|
3247
|
+
monogram?: string;
|
|
3248
|
+
icon?: string;
|
|
3249
|
+
color?: IusAvatarColor;
|
|
3250
|
+
shape?: IusAvatarShape;
|
|
3251
|
+
disabled?: boolean;
|
|
3252
|
+
/** `false` = el chip seleccionado no muestra la X. */
|
|
3253
|
+
removable?: boolean;
|
|
3254
|
+
/** Acciones del chip seleccionado (menú ⋮ del PersonItem). */
|
|
3255
|
+
actions?: IusPersonItemAction[];
|
|
3256
|
+
}
|
|
3257
|
+
/** Contexto del template `renderSelected`. */
|
|
3258
|
+
interface IusPersonPickerSelectedContext {
|
|
3259
|
+
$implicit: IusPersonOption;
|
|
3260
|
+
remove: () => void;
|
|
3261
|
+
}
|
|
3262
|
+
/**
|
|
3263
|
+
* PersonPicker — Ius Design v2 (familia inputs, CVA).
|
|
3264
|
+
*
|
|
3265
|
+
* Selector de **personas** al estilo del Select: un trigger (campo con chevron)
|
|
3266
|
+
* abre en un `ius-popover` la búsqueda en vivo + la lista con scroll de
|
|
3267
|
+
* `ius-person-item` (option); los elegidos se muestran como chips eliminables
|
|
3268
|
+
* bajo el trigger. Fuente de verdad: `PersonPicker.jsx` + `PersonPicker.d.ts` +
|
|
3269
|
+
* `PersonPicker.ng-spec.md`. Single cierra al elegir; multi mantiene abierto y
|
|
3270
|
+
* marca check. Búsqueda por nombre + líneas, normalizada NFD sin diacríticos.
|
|
3271
|
+
*
|
|
3272
|
+
* El panel iguala el ancho del trigger (medición con ResizeObserver) — usa la
|
|
3273
|
+
* piel `panelClass="ius-personpicker-pop"` del Popover para soltar el
|
|
3274
|
+
* `max-width` del panel (mismo patrón que la piel Tooltip). La búsqueda
|
|
3275
|
+
* compone `ius-search-bar`.
|
|
3276
|
+
*
|
|
3277
|
+
* Para enum corto y cerrado → Select; cambiar de cuenta → UserMenu.
|
|
3278
|
+
*/
|
|
3279
|
+
declare class PersonPickerComponent implements ControlValueAccessor, AfterViewInit, OnDestroy {
|
|
3280
|
+
/** Personas elegibles. */
|
|
3281
|
+
options: IusPersonOption[];
|
|
3282
|
+
/** Varias personas (arreglo) o una sola (id). */
|
|
3283
|
+
multiple: boolean;
|
|
3284
|
+
/** Texto del trigger sin selección. */
|
|
3285
|
+
placeholder: string;
|
|
3286
|
+
/** Búsqueda en vivo dentro del menú. */
|
|
3287
|
+
searchable: boolean;
|
|
3288
|
+
searchPlaceholder: string;
|
|
3289
|
+
emptyText: string;
|
|
3290
|
+
/** Chips de seleccionados bajo el trigger. */
|
|
3291
|
+
showSelected: boolean;
|
|
3292
|
+
/** Etiqueta del bloque de seleccionados; `null`/`''` la oculta. */
|
|
3293
|
+
selectedLabel: string | null;
|
|
3294
|
+
/** Acciones por seleccionado (arreglo fijo o por opción). */
|
|
3295
|
+
selectedActions?: IusPersonItemAction[] | ((opt: IusPersonOption) => IusPersonItemAction[]);
|
|
3296
|
+
/** Control total del chip seleccionado (contexto `{$implicit, remove}`). */
|
|
3297
|
+
renderSelected?: TemplateRef<IusPersonPickerSelectedContext>;
|
|
3298
|
+
/** Propaga el enmascarado de PersonItem. */
|
|
3299
|
+
mask: boolean;
|
|
3300
|
+
/** Propaga a búsqueda y PersonItem; escala el trigger (34/40/48). */
|
|
3301
|
+
size: IusPersonItemSize;
|
|
3302
|
+
/** Alto máximo de la lista con scroll. */
|
|
3303
|
+
maxHeight: number | string;
|
|
3304
|
+
/** Alto máximo del bloque de seleccionados (activa su scroll propio). */
|
|
3305
|
+
selectedMaxHeight?: number | string;
|
|
3306
|
+
defaultOpen: boolean;
|
|
3307
|
+
private _open?;
|
|
3308
|
+
/** Apertura controlada del menú. */
|
|
3309
|
+
set open(value: boolean | undefined);
|
|
3310
|
+
get open(): boolean | undefined;
|
|
3311
|
+
private readonly inputDisabled;
|
|
3312
|
+
set disabled(value: boolean);
|
|
3313
|
+
get disabled(): boolean;
|
|
3314
|
+
private readonly valueState;
|
|
3315
|
+
/** Valor controlado: arreglo en multi, id único en single (CVA / `[(value)]`). */
|
|
3316
|
+
set value(value: IusPersonId[] | IusPersonId | null | undefined);
|
|
3317
|
+
get value(): IusPersonId[] | IusPersonId | null;
|
|
3318
|
+
/** CVA `onChange` (original `onChange`). */
|
|
3319
|
+
readonly valueChange: EventEmitter<IusPersonId | IusPersonId[] | null>;
|
|
3320
|
+
/** Abrir/cerrar el menú. */
|
|
3321
|
+
readonly openChange: EventEmitter<boolean>;
|
|
3322
|
+
private triggerEl?;
|
|
3323
|
+
protected readonly query: _angular_core.WritableSignal<string>;
|
|
3324
|
+
protected readonly menuWidth: _angular_core.WritableSignal<number | null>;
|
|
3325
|
+
private readonly innerOpen;
|
|
3326
|
+
private readonly cvaDisabled;
|
|
3327
|
+
private resizeObserver?;
|
|
3328
|
+
private initialized;
|
|
3329
|
+
private onChangeFn;
|
|
3330
|
+
private onTouchedFn;
|
|
3331
|
+
ngAfterViewInit(): void;
|
|
3332
|
+
ngOnDestroy(): void;
|
|
3333
|
+
writeValue(value: IusPersonId[] | IusPersonId | null): void;
|
|
3334
|
+
registerOnChange(fn: (value: IusPersonId[] | IusPersonId | null) => void): void;
|
|
2641
3335
|
registerOnTouched(fn: () => void): void;
|
|
2642
3336
|
setDisabledState(isDisabled: boolean): void;
|
|
2643
|
-
|
|
2644
|
-
protected
|
|
2645
|
-
protected
|
|
2646
|
-
protected
|
|
3337
|
+
protected get effDisabled(): boolean;
|
|
3338
|
+
protected get isOpen(): boolean;
|
|
3339
|
+
protected optId(opt: IusPersonOption): IusPersonId | undefined;
|
|
3340
|
+
protected get selectedIds(): IusPersonId[];
|
|
3341
|
+
protected isSelected(opt: IusPersonOption): boolean;
|
|
3342
|
+
protected get selectedOptions(): IusPersonOption[];
|
|
3343
|
+
protected get filtered(): IusPersonOption[];
|
|
3344
|
+
protected get triggerText(): string;
|
|
3345
|
+
protected get selectedLabelVisible(): boolean;
|
|
3346
|
+
protected chipActions(opt: IusPersonOption): IusPersonItemAction[];
|
|
3347
|
+
protected selectedCtx(opt: IusPersonOption): IusPersonPickerSelectedContext;
|
|
3348
|
+
protected px(value: number | string | null | undefined): string | null;
|
|
2647
3349
|
protected toggleOpen(): void;
|
|
2648
|
-
|
|
2649
|
-
* Solo actualiza estado y notifica. El montaje/desmontaje del overlay NO va
|
|
2650
|
-
* aquí: lo gobierna `openSync` a partir de `isOpen()`. Si se hiciera aquí, en
|
|
2651
|
-
* modo controlado (`[open]`) el menú se abriría sin permiso del padre y, al
|
|
2652
|
-
* revés, cambiar `[open]` desde fuera no montaría nada.
|
|
2653
|
-
*/
|
|
3350
|
+
protected onPopoverOpenChange(open: boolean): void;
|
|
2654
3351
|
private setOpen;
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
/**
|
|
2664
|
-
* `Enter` agrega la opción; `Escape` **con texto** solo limpia el borrador y
|
|
2665
|
-
* frena la propagación para que el listener de `document` no cierre el menú
|
|
2666
|
-
* (espejo del golden). Sin texto, `Escape` sigue cerrando el menú.
|
|
2667
|
-
*/
|
|
2668
|
-
protected onCreateKeyDown(event: KeyboardEvent): void;
|
|
2669
|
-
/**
|
|
2670
|
-
* Agrega la opción escrita en el pie: la construye con `createFactory` (o
|
|
2671
|
-
* envuelve el texto), la anexa si su `value` no existe ya, emite `created`,
|
|
2672
|
-
* limpia el borrador y devuelve el foco al campo del pie.
|
|
2673
|
-
*/
|
|
2674
|
-
protected addItem(): void;
|
|
2675
|
-
private moveActive;
|
|
2676
|
-
/**
|
|
2677
|
-
* ¿Es una tecla imprimible de una sola posición (typeahead)? Se ignora
|
|
2678
|
-
* cuando el foco está en una caja de texto del menú — la de búsqueda **o**
|
|
2679
|
-
* la del pie `creatable`: ahí escribir filtra o redacta el nombre nuevo, y
|
|
2680
|
-
* mover el resaltado sería un efecto colateral indeseado. También se ignora
|
|
2681
|
-
* con modificadores (Ctrl/Alt/Meta).
|
|
2682
|
-
*
|
|
2683
|
-
* (Hoy el pie de `creatable` no enruta a `onTriggerKeyDown` —vive en el
|
|
2684
|
-
* overlay y tiene su propio handler—, pero la guarda se deja explícita para
|
|
2685
|
-
* que reenrutarlo mañana no reintroduzca el bug.)
|
|
2686
|
-
*/
|
|
2687
|
-
private isTypeaheadKey;
|
|
2688
|
-
/** Quita diacríticos y normaliza a minúsculas para comparar etiquetas. */
|
|
2689
|
-
private normalizeLabel;
|
|
2690
|
-
/**
|
|
2691
|
-
* Typeahead: acumula el carácter en un buffer (expira a los ~700ms) y
|
|
2692
|
-
* salta el resaltado/apertura a la primera opción habilitada cuya etiqueta
|
|
2693
|
-
* empiece por el buffer. Con el menú abierto solo mueve el resaltado; con
|
|
2694
|
-
* el menú cerrado (single) lo abre y resalta el match (sin seleccionar).
|
|
2695
|
-
*/
|
|
2696
|
-
private handleTypeahead;
|
|
2697
|
-
protected onTriggerKeyDown(event: KeyboardEvent): void;
|
|
2698
|
-
protected onDocumentMouseDown(event: MouseEvent): void;
|
|
2699
|
-
protected onEscape(): void;
|
|
2700
|
-
/** Difiere el attach un frame (deja que `@if`/inputs terminen de asentarse). */
|
|
2701
|
-
private scheduleOpen;
|
|
2702
|
-
private attachOverlay;
|
|
2703
|
-
private detachOverlay;
|
|
2704
|
-
private updateMenuWidth;
|
|
2705
|
-
private readonly onWindowResize;
|
|
2706
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectComponent, never>;
|
|
2707
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectComponent, "ius-select", never, { "options": { "alias": "options"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "error": { "alias": "error"; "required": false; }; "state": { "alias": "state"; "required": false; }; "open": { "alias": "open"; "required": false; }; "value": { "alias": "value"; "required": false; }; "label": { "alias": "label"; "required": false; }; "required": { "alias": "required"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; }; "emptyText": { "alias": "emptyText"; "required": false; }; "creatable": { "alias": "creatable"; "required": false; }; "createPlaceholder": { "alias": "createPlaceholder"; "required": false; }; "createLabel": { "alias": "createLabel"; "required": false; }; "createFactory": { "alias": "createFactory"; "required": false; }; "maxVisible": { "alias": "maxVisible"; "required": false; }; "helpText": { "alias": "helpText"; "required": false; }; "errorText": { "alias": "errorText"; "required": false; }; "showHelpText": { "alias": "showHelpText"; "required": false; }; "showIconHelp": { "alias": "showIconHelp"; "required": false; }; "iconHelpTitle": { "alias": "iconHelpTitle"; "required": false; }; "iconHelpContent": { "alias": "iconHelpContent"; "required": false; }; "showClear": { "alias": "showClear"; "required": false; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; }; "compact": { "alias": "compact"; "required": false; }; "defaultValue": { "alias": "defaultValue"; "required": false; }; "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; }, { "valueChange": "valueChange"; "cleared": "cleared"; "openChange": "openChange"; "created": "created"; }, never, never, true, never>;
|
|
3352
|
+
private measure;
|
|
3353
|
+
protected onQueryChange(value: string): void;
|
|
3354
|
+
protected clearQuery(): void;
|
|
3355
|
+
private commit;
|
|
3356
|
+
protected toggle(opt: IusPersonOption): void;
|
|
3357
|
+
protected remove(opt: IusPersonOption): void;
|
|
3358
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PersonPickerComponent, never>;
|
|
3359
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PersonPickerComponent, "ius-person-picker", never, { "options": { "alias": "options"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; }; "emptyText": { "alias": "emptyText"; "required": false; }; "showSelected": { "alias": "showSelected"; "required": false; }; "selectedLabel": { "alias": "selectedLabel"; "required": false; }; "selectedActions": { "alias": "selectedActions"; "required": false; }; "renderSelected": { "alias": "renderSelected"; "required": false; }; "mask": { "alias": "mask"; "required": false; }; "size": { "alias": "size"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; }; "selectedMaxHeight": { "alias": "selectedMaxHeight"; "required": false; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; }; "open": { "alias": "open"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; "openChange": "openChange"; }, never, never, true, never>;
|
|
2708
3360
|
static ngAcceptInputType_multiple: unknown;
|
|
2709
|
-
static ngAcceptInputType_disabled: unknown;
|
|
2710
|
-
static ngAcceptInputType_error: unknown;
|
|
2711
|
-
static ngAcceptInputType_open: unknown;
|
|
2712
|
-
static ngAcceptInputType_required: unknown;
|
|
2713
3361
|
static ngAcceptInputType_searchable: unknown;
|
|
2714
|
-
static
|
|
2715
|
-
static
|
|
2716
|
-
static ngAcceptInputType_showHelpText: unknown;
|
|
2717
|
-
static ngAcceptInputType_showIconHelp: unknown;
|
|
2718
|
-
static ngAcceptInputType_showClear: unknown;
|
|
3362
|
+
static ngAcceptInputType_showSelected: unknown;
|
|
3363
|
+
static ngAcceptInputType_mask: unknown;
|
|
2719
3364
|
static ngAcceptInputType_defaultOpen: unknown;
|
|
2720
|
-
static
|
|
3365
|
+
static ngAcceptInputType_disabled: unknown;
|
|
2721
3366
|
}
|
|
2722
3367
|
|
|
3368
|
+
/** Tamaño del campo: small ~34 · medium ~40 (default) · large ~48 px. */
|
|
3369
|
+
type IusMultiTextFieldSize = 'small' | 'medium' | 'large';
|
|
3370
|
+
/** Estado forzado — solo demos / especímenes. */
|
|
3371
|
+
type IusMultiTextFieldState = 'hover' | 'focused' | 'error' | 'disabled';
|
|
3372
|
+
/** Un segmento (`<input>`) del MultiTextField. */
|
|
3373
|
+
interface IusMultiTextFieldSlot {
|
|
3374
|
+
/** Placeholder del segmento. */
|
|
3375
|
+
placeholder?: string;
|
|
3376
|
+
/** `name` del input (envío como form). */
|
|
3377
|
+
name?: string;
|
|
3378
|
+
/** Tipo del `<input>`. Default `text`. */
|
|
3379
|
+
type?: 'text' | 'number' | 'tel' | 'password';
|
|
3380
|
+
/** Valor controlado del segmento. */
|
|
3381
|
+
value?: string;
|
|
3382
|
+
/** Valor inicial (no controlado). */
|
|
3383
|
+
defaultValue?: string;
|
|
3384
|
+
/** Ancho fijo. Número → px; string → CSS literal. */
|
|
3385
|
+
width?: number | string;
|
|
3386
|
+
/** `flex` (`'1 1 auto'`, `'0 0 60px'`, …) si necesitas más control que `width`. */
|
|
3387
|
+
flex?: string | number;
|
|
3388
|
+
/** Largo máximo de caracteres (habilita auto-avance). */
|
|
3389
|
+
maxLength?: number;
|
|
3390
|
+
/** Etiqueta accesible del segmento (si el placeholder no basta). */
|
|
3391
|
+
ariaLabel?: string;
|
|
3392
|
+
/** Callback opcional al teclear este segmento (además del `valueChange` del conjunto). */
|
|
3393
|
+
onChange?: (value: string, event: Event) => void;
|
|
3394
|
+
}
|
|
2723
3395
|
/**
|
|
2724
|
-
*
|
|
3396
|
+
* MultiTextField — Ius Design v2 (familia inputs).
|
|
2725
3397
|
*
|
|
2726
|
-
*
|
|
2727
|
-
*
|
|
2728
|
-
*
|
|
3398
|
+
* Variación de **TextField** que acopla varios `<input>` dentro de una misma
|
|
3399
|
+
* caja separados por divisores verticales — para datos compuestos (tarjeta
|
|
3400
|
+
* MM | AAAA + CVV, teléfono con prefijo, NIT + DV…). Reusa el wrapper `.ius-tf`
|
|
3401
|
+
* (label con required + iconHelp, 5 estados, size, helpText/errorText) y un
|
|
3402
|
+
* **único** botón de limpiar que vacía todos los segmentos. Fuente de verdad:
|
|
3403
|
+
* `MultiTextField.jsx` + `MultiTextField.d.ts` (delta sobre `TextField.ng-spec`).
|
|
3404
|
+
*
|
|
3405
|
+
* `ControlValueAccessor` **a nivel de conjunto**: el valor es el array de
|
|
3406
|
+
* valores por segmento (`string[]`); también se emite en `valueChange`. Cada
|
|
3407
|
+
* slot puede además traer su propio `onChange`. Auto-avance al llenar el
|
|
3408
|
+
* `maxLength` y Backspace en segmento vacío retrocede.
|
|
3409
|
+
*
|
|
3410
|
+
* Nota: las clases `.ius-tf__*` (label/help/hint/field/clear) se replican en el
|
|
3411
|
+
* SCSS porque bajo `ViewEncapsulation.Emulated` las de TextField no alcanzan a
|
|
3412
|
+
* otro componente. `showIconHelp` usa `title` nativo como respaldo hasta que
|
|
3413
|
+
* exista `ius-popover`. `[data-force]` congela un estado visual en demos.
|
|
2729
3414
|
*/
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
|
|
2733
|
-
|
|
3415
|
+
declare class MultiTextFieldComponent implements ControlValueAccessor {
|
|
3416
|
+
protected readonly slotsState: _angular_core.WritableSignal<IusMultiTextFieldSlot[]>;
|
|
3417
|
+
/** Segmentos; cada uno un `<input>` separado por un divisor vertical. */
|
|
3418
|
+
set slots(value: IusMultiTextFieldSlot[]);
|
|
3419
|
+
get slots(): IusMultiTextFieldSlot[];
|
|
3420
|
+
/** Label común a todos los segmentos. */
|
|
2734
3421
|
label?: string;
|
|
2735
|
-
/**
|
|
2736
|
-
|
|
2737
|
-
|
|
2738
|
-
|
|
2739
|
-
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
2743
|
-
|
|
2744
|
-
|
|
2745
|
-
|
|
2746
|
-
|
|
2747
|
-
|
|
2748
|
-
|
|
2749
|
-
|
|
2750
|
-
|
|
2751
|
-
readonly
|
|
2752
|
-
/**
|
|
2753
|
-
|
|
2754
|
-
|
|
2755
|
-
|
|
2756
|
-
/**
|
|
2757
|
-
|
|
2758
|
-
|
|
2759
|
-
|
|
2760
|
-
|
|
2761
|
-
|
|
2762
|
-
|
|
2763
|
-
|
|
2764
|
-
|
|
2765
|
-
|
|
2766
|
-
/**
|
|
2767
|
-
|
|
2768
|
-
|
|
2769
|
-
|
|
2770
|
-
|
|
2771
|
-
|
|
2772
|
-
|
|
2773
|
-
|
|
2774
|
-
/**
|
|
2775
|
-
|
|
2776
|
-
|
|
2777
|
-
|
|
2778
|
-
|
|
2779
|
-
|
|
2780
|
-
|
|
2781
|
-
|
|
2782
|
-
|
|
2783
|
-
|
|
2784
|
-
readonly
|
|
2785
|
-
|
|
2786
|
-
|
|
2787
|
-
|
|
2788
|
-
|
|
2789
|
-
|
|
2790
|
-
|
|
2791
|
-
get
|
|
2792
|
-
|
|
2793
|
-
get
|
|
2794
|
-
|
|
2795
|
-
get
|
|
2796
|
-
|
|
2797
|
-
|
|
2798
|
-
|
|
2799
|
-
|
|
3422
|
+
/** Indicador de obligatorio (•). */
|
|
3423
|
+
required: boolean;
|
|
3424
|
+
/** Ícono de ayuda `?` junto al label (respaldo: `title` nativo). */
|
|
3425
|
+
showIconHelp: boolean;
|
|
3426
|
+
/** Título del contenido de ayuda. */
|
|
3427
|
+
iconHelpTitle?: string;
|
|
3428
|
+
/** Cuerpo del contenido de ayuda. */
|
|
3429
|
+
iconHelpContent?: string;
|
|
3430
|
+
/** Línea de ayuda bajo el campo. */
|
|
3431
|
+
helpText?: string;
|
|
3432
|
+
/** Reemplaza `helpText` cuando `error` es `true`. */
|
|
3433
|
+
errorText?: string;
|
|
3434
|
+
/** Mostrar/ocultar la línea de ayuda. */
|
|
3435
|
+
showHelpText: boolean;
|
|
3436
|
+
/** Forzar visibilidad del botón limpiar (por defecto: auto con valor). */
|
|
3437
|
+
showClear?: boolean;
|
|
3438
|
+
private readonly errorState;
|
|
3439
|
+
/** Estado de error global. */
|
|
3440
|
+
set error(value: boolean);
|
|
3441
|
+
get error(): boolean;
|
|
3442
|
+
private readonly disabledState;
|
|
3443
|
+
/** Estado deshabilitado global. */
|
|
3444
|
+
set disabled(value: boolean);
|
|
3445
|
+
get disabled(): boolean;
|
|
3446
|
+
protected readonly sizeState: _angular_core.WritableSignal<IusMultiTextFieldSize>;
|
|
3447
|
+
set size(value: IusMultiTextFieldSize);
|
|
3448
|
+
get size(): IusMultiTextFieldSize;
|
|
3449
|
+
protected readonly stateState: _angular_core.WritableSignal<IusMultiTextFieldState | undefined>;
|
|
3450
|
+
/** Forzar visualmente un estado completo (solo demos). */
|
|
3451
|
+
set state(value: IusMultiTextFieldState | undefined);
|
|
3452
|
+
get state(): IusMultiTextFieldState | undefined;
|
|
3453
|
+
/** `id` base del campo (los segmentos serán `id-0`, `id-1`, …). */
|
|
3454
|
+
id?: string;
|
|
3455
|
+
/** Valores del conjunto (array por segmento). */
|
|
3456
|
+
readonly valueChange: EventEmitter<string[]>;
|
|
3457
|
+
/** Al pulsar el botón de limpiar (después de vaciar). */
|
|
3458
|
+
readonly cleared: EventEmitter<void>;
|
|
3459
|
+
protected readonly values: _angular_core.WritableSignal<string[]>;
|
|
3460
|
+
protected readonly focused: _angular_core.WritableSignal<boolean>;
|
|
3461
|
+
/** Tras limpiar en un estado demo, suprime el "valor" simulado. */
|
|
3462
|
+
private readonly suppressDemoValue;
|
|
3463
|
+
/** Último valor escrito por el CVA (por si llega antes que los slots). */
|
|
3464
|
+
private readonly pendingValue;
|
|
3465
|
+
private readonly baseIdState;
|
|
3466
|
+
private readonly slotInputs;
|
|
3467
|
+
private onChange;
|
|
3468
|
+
private onTouched;
|
|
3469
|
+
protected readonly isDisabled: _angular_core.Signal<boolean>;
|
|
3470
|
+
protected readonly isError: _angular_core.Signal<boolean>;
|
|
3471
|
+
protected readonly isFocused: _angular_core.Signal<boolean>;
|
|
3472
|
+
protected readonly hasAnyValue: _angular_core.Signal<boolean>;
|
|
3473
|
+
protected readonly demoHasValue: _angular_core.Signal<boolean>;
|
|
3474
|
+
protected get baseId(): string;
|
|
3475
|
+
protected get helpId(): string;
|
|
3476
|
+
protected get hint(): string | undefined;
|
|
3477
|
+
protected get showHint(): boolean;
|
|
3478
|
+
protected get helpIconTitle(): string | undefined;
|
|
3479
|
+
/** El botón de limpiar está activo (visible y operable). */
|
|
3480
|
+
protected get clearActive(): boolean;
|
|
3481
|
+
/** Se reserva el hueco del clear (visibility) para no desplazar los segmentos. */
|
|
3482
|
+
protected get clearReserved(): boolean;
|
|
3483
|
+
protected currentValue(i: number): string;
|
|
3484
|
+
/** flex del segmento: width > flex > (maxLength → base auto) > CSS (1 1 auto). */
|
|
3485
|
+
protected slotFlex(slot: IusMultiTextFieldSlot): string | null;
|
|
3486
|
+
/** width del segmento: solo cuando se deriva del maxLength. */
|
|
3487
|
+
protected slotWidth(slot: IusMultiTextFieldSlot): string | null;
|
|
3488
|
+
writeValue(value: string[] | null): void;
|
|
3489
|
+
registerOnChange(fn: (value: string[]) => void): void;
|
|
3490
|
+
registerOnTouched(fn: () => void): void;
|
|
3491
|
+
setDisabledState(isDisabled: boolean): void;
|
|
3492
|
+
private syncValues;
|
|
3493
|
+
private commit;
|
|
3494
|
+
private focusSlot;
|
|
3495
|
+
protected onSlotInput(i: number, event: Event): void;
|
|
3496
|
+
protected onSlotKeyDown(i: number, event: KeyboardEvent): void;
|
|
3497
|
+
protected onFocus(): void;
|
|
3498
|
+
protected onBlur(): void;
|
|
3499
|
+
protected clear(): void;
|
|
3500
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MultiTextFieldComponent, never>;
|
|
3501
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MultiTextFieldComponent, "ius-multi-text-field", never, { "slots": { "alias": "slots"; "required": false; }; "label": { "alias": "label"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showIconHelp": { "alias": "showIconHelp"; "required": false; }; "iconHelpTitle": { "alias": "iconHelpTitle"; "required": false; }; "iconHelpContent": { "alias": "iconHelpContent"; "required": false; }; "helpText": { "alias": "helpText"; "required": false; }; "errorText": { "alias": "errorText"; "required": false; }; "showHelpText": { "alias": "showHelpText"; "required": false; }; "showClear": { "alias": "showClear"; "required": false; }; "error": { "alias": "error"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "size": { "alias": "size"; "required": false; }; "state": { "alias": "state"; "required": false; }; "id": { "alias": "id"; "required": false; }; }, { "valueChange": "valueChange"; "cleared": "cleared"; }, never, never, true, never>;
|
|
3502
|
+
static ngAcceptInputType_required: unknown;
|
|
3503
|
+
static ngAcceptInputType_showIconHelp: unknown;
|
|
3504
|
+
static ngAcceptInputType_showHelpText: unknown;
|
|
3505
|
+
static ngAcceptInputType_error: unknown;
|
|
3506
|
+
static ngAcceptInputType_disabled: unknown;
|
|
2800
3507
|
}
|
|
2801
|
-
/**
|
|
2802
|
-
* `createWizard(options)` — fábrica del estado del asistente (equivalente a
|
|
2803
|
-
* `Wizard.use(...)`). Devuelve la `WizardApi` que leen `<ius-wizard>` y
|
|
2804
|
-
* `<ius-wizard-nav>`.
|
|
2805
|
-
*/
|
|
2806
|
-
declare function createWizard(options: UseWizardOptions): WizardApi;
|
|
2807
3508
|
|
|
3509
|
+
/** Ancho máximo del diálogo — small 380 · medium 520 (default) · large 680px. */
|
|
3510
|
+
type IusModalSize = 'small' | 'medium' | 'large';
|
|
3511
|
+
/** Tono del círculo del ícono del header. */
|
|
3512
|
+
type IusModalIconTone = 'info' | 'success' | 'warning' | 'danger' | 'primary' | 'neutral';
|
|
3513
|
+
/** Motivo del cierre emitido por `closed`. */
|
|
3514
|
+
type IusModalCloseReason = 'close' | 'esc' | 'scrim' | 'secondary';
|
|
2808
3515
|
/**
|
|
2809
|
-
*
|
|
2810
|
-
*
|
|
2811
|
-
* Cuerpo del asistente: indicador de progreso + etiqueta "Paso X de N · label"
|
|
2812
|
-
* + el contenido del paso activo. **Agnóstico del contenedor** — vive en el
|
|
2813
|
-
* body de un Drawer/Modal o de una página; el footer (`ius-wizard-nav`) lee la
|
|
2814
|
-
* misma `api`. Distinto del `Stepper` (indicador display-only).
|
|
2815
|
-
*
|
|
2816
|
-
* El estado lo gobierna el controller `createWizard(...)` (ver `wizard.ts`),
|
|
2817
|
-
* espejo del hook `Wizard.use` de React (ng-spec §2).
|
|
3516
|
+
* Marca el footer libre proyectado. Tiene prioridad sobre el footer de
|
|
3517
|
+
* conveniencia (`primaryLabel`/`secondaryLabel`):
|
|
2818
3518
|
*
|
|
2819
|
-
*
|
|
2820
|
-
*
|
|
2821
|
-
*
|
|
2822
|
-
*
|
|
3519
|
+
* ```html
|
|
3520
|
+
* <ius-modal ...>
|
|
3521
|
+
* …cuerpo…
|
|
3522
|
+
* <div iusModalFooter>…acciones a medida…</div>
|
|
3523
|
+
* </ius-modal>
|
|
3524
|
+
* ```
|
|
2823
3525
|
*/
|
|
2824
|
-
declare class
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
/** Muestra el indicador de progreso (por defecto la barra "steps"). */
|
|
2828
|
-
showIndicator: boolean;
|
|
2829
|
-
/** Indicador personalizado (reemplaza la barra por defecto). */
|
|
2830
|
-
indicator?: TemplateRef<unknown>;
|
|
2831
|
-
/** Muestra la etiqueta "Paso X de N · label". */
|
|
2832
|
-
showStepLabel: boolean;
|
|
2833
|
-
/** Palabra para "Paso". */
|
|
2834
|
-
stepWord: string;
|
|
2835
|
-
/** Palabra para "de". */
|
|
2836
|
-
ofWord: string;
|
|
2837
|
-
/** Porcentaje del indicador (step/total), espejo del modo stepped del LPB. */
|
|
2838
|
-
protected get percent(): number;
|
|
2839
|
-
protected get ariaNow(): number;
|
|
2840
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WizardComponent, never>;
|
|
2841
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WizardComponent, "ius-wizard", never, { "api": { "alias": "api"; "required": true; }; "showIndicator": { "alias": "showIndicator"; "required": false; }; "indicator": { "alias": "indicator"; "required": false; }; "showStepLabel": { "alias": "showStepLabel"; "required": false; }; "stepWord": { "alias": "stepWord"; "required": false; }; "ofWord": { "alias": "ofWord"; "required": false; }; }, {}, never, never, true, never>;
|
|
2842
|
-
static ngAcceptInputType_showIndicator: unknown;
|
|
2843
|
-
static ngAcceptInputType_showStepLabel: unknown;
|
|
3526
|
+
declare class IusModalFooterDirective {
|
|
3527
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusModalFooterDirective, never>;
|
|
3528
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusModalFooterDirective, "[iusModalFooter]", never, {}, {}, never, never, true, never>;
|
|
2844
3529
|
}
|
|
2845
|
-
|
|
2846
3530
|
/**
|
|
2847
|
-
*
|
|
2848
|
-
*
|
|
2849
|
-
* Footer de navegación del asistente: **Atrás** (secondary, deshabilitado en el
|
|
2850
|
-
* primero — o `hideBackOnFirst` para ocultarlo) + **Siguiente** (primary, ícono
|
|
2851
|
-
* `arrow_forward`); en el último paso, Siguiente pasa a **Guardar**
|
|
2852
|
-
* (`finishDynamic` activa el modo dynamic loading → success del Button).
|
|
2853
|
-
*
|
|
2854
|
-
* Pensado para el slot `footer` del Drawer/Modal o el footer propio de una
|
|
2855
|
-
* página. Lee la misma `api` que `<ius-wizard>`. Compone `ius-button`.
|
|
3531
|
+
* Modal — Ius Design v2.
|
|
2856
3532
|
*
|
|
2857
|
-
*
|
|
2858
|
-
*
|
|
2859
|
-
*
|
|
2860
|
-
|
|
2861
|
-
|
|
2862
|
-
/** API de `createWizard(...)`. */
|
|
2863
|
-
api: WizardApi;
|
|
2864
|
-
/** Etiqueta del botón atrás. */
|
|
2865
|
-
backLabel: string;
|
|
2866
|
-
/** Etiqueta del botón siguiente. */
|
|
2867
|
-
nextLabel: string;
|
|
2868
|
-
/** Etiqueta del botón final (último paso). */
|
|
2869
|
-
finishLabel: string;
|
|
2870
|
-
/** Ícono al final del botón siguiente. */
|
|
2871
|
-
nextIcon: string;
|
|
2872
|
-
/** El botón final usa el modo `dynamic` del Button (loading → success). */
|
|
2873
|
-
finishDynamic: boolean;
|
|
2874
|
-
/** Deshabilita "siguiente" (p. ej. validación del paso pendiente). */
|
|
2875
|
-
nextDisabled: boolean;
|
|
2876
|
-
/** Oculta el botón atrás en el primer paso (en vez de deshabilitarlo). */
|
|
2877
|
-
hideBackOnFirst: boolean;
|
|
2878
|
-
/**
|
|
2879
|
-
* Handler del botón final. Con `finishDynamic` debe devolver una `Promise`
|
|
2880
|
-
* (su resolución decide success/error del Button).
|
|
2881
|
-
*/
|
|
2882
|
-
finishAction?: () => void | IusButtonActionResult | Promise<IusButtonActionResult | void>;
|
|
2883
|
-
/** Se dispara al pulsar el botón final (original `onFinish`). */
|
|
2884
|
-
readonly finish: EventEmitter<void>;
|
|
2885
|
-
/** `action` para el modo dynamic del Button: emite `finish` y espera el handler. */
|
|
2886
|
-
protected readonly runFinish: () => Promise<IusButtonActionResult | void>;
|
|
2887
|
-
/** Click del botón final en modo NO dynamic. */
|
|
2888
|
-
protected onFinishClick(): void;
|
|
2889
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WizardNavComponent, never>;
|
|
2890
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WizardNavComponent, "ius-wizard-nav", never, { "api": { "alias": "api"; "required": true; }; "backLabel": { "alias": "backLabel"; "required": false; }; "nextLabel": { "alias": "nextLabel"; "required": false; }; "finishLabel": { "alias": "finishLabel"; "required": false; }; "nextIcon": { "alias": "nextIcon"; "required": false; }; "finishDynamic": { "alias": "finishDynamic"; "required": false; }; "nextDisabled": { "alias": "nextDisabled"; "required": false; }; "hideBackOnFirst": { "alias": "hideBackOnFirst"; "required": false; }; "finishAction": { "alias": "finishAction"; "required": false; }; }, { "finish": "finish"; }, never, never, true, never>;
|
|
2891
|
-
static ngAcceptInputType_finishDynamic: unknown;
|
|
2892
|
-
static ngAcceptInputType_nextDisabled: unknown;
|
|
2893
|
-
static ngAcceptInputType_hideBackOnFirst: unknown;
|
|
2894
|
-
}
|
|
2895
|
-
|
|
2896
|
-
/** Eje con scroll. */
|
|
2897
|
-
type IusScrollAxis = 'y' | 'x' | 'both';
|
|
2898
|
-
/** Grosor de la barra — `thin` es alias de `small`. */
|
|
2899
|
-
type IusScrollSize = 'small' | 'medium' | 'large' | 'thin';
|
|
2900
|
-
/**
|
|
2901
|
-
* ScrollArea — Ius Design v2.
|
|
3533
|
+
* Diálogo centrado sobre un scrim que exige atención/decisión (confirmaciones,
|
|
3534
|
+
* avisos accionables) sin abandonar la pantalla. Se monta vía **CDK Overlay** en
|
|
3535
|
+
* `document.body` (no acepta `container`): portal + **scroll-lock** del fondo +
|
|
3536
|
+
* **focus-trap** dentro (`cdkTrapFocus`). `Esc`/scrim cierran (configurable).
|
|
3537
|
+
* `role="dialog"` `aria-modal="true"`.
|
|
2902
3538
|
*
|
|
2903
|
-
*
|
|
2904
|
-
*
|
|
2905
|
-
*
|
|
2906
|
-
* track transparente) sin reescribir reglas `::-webkit-scrollbar`. **No** para
|
|
2907
|
-
* el scroll de toda la página (eso lo maneja el documento).
|
|
3539
|
+
* Compone `ius-button` (footer) e `ius-icon-button` (cerrar) — no introduce
|
|
3540
|
+
* controles propios. Para tareas con varios campos usar Drawer; para avisos no
|
|
3541
|
+
* bloqueantes usar Alert/Toast.
|
|
2908
3542
|
*
|
|
2909
|
-
* Nota del port: el `as` polimórfico del golden no aplica — el host es siempre
|
|
2910
|
-
* `<ius-scroll-area>` (`.ius-sa`). El `viewRef` de React se expone como
|
|
2911
|
-
* `getViewport()` (equivalente a un `@ViewChild` del viewport).
|
|
2912
3543
|
*/
|
|
2913
|
-
declare class
|
|
2914
|
-
|
|
2915
|
-
|
|
2916
|
-
/**
|
|
2917
|
-
|
|
2918
|
-
/**
|
|
2919
|
-
|
|
2920
|
-
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
|
|
2924
|
-
/**
|
|
2925
|
-
|
|
2926
|
-
/**
|
|
2927
|
-
|
|
2928
|
-
/**
|
|
2929
|
-
|
|
2930
|
-
|
|
2931
|
-
|
|
2932
|
-
|
|
2933
|
-
|
|
2934
|
-
|
|
2935
|
-
|
|
2936
|
-
|
|
2937
|
-
|
|
3544
|
+
declare class ModalComponent implements AfterViewInit, OnDestroy {
|
|
3545
|
+
private readonly overlay;
|
|
3546
|
+
private readonly viewContainerRef;
|
|
3547
|
+
/** Template con scrim + diálogo; se portalea al overlay al abrir. */
|
|
3548
|
+
private tpl;
|
|
3549
|
+
/** Footer libre proyectado (`[iusModalFooter]`). Si existe, gana al de conveniencia. */
|
|
3550
|
+
protected customFooter?: IusModalFooterDirective;
|
|
3551
|
+
private _open;
|
|
3552
|
+
/** Apertura controlada. */
|
|
3553
|
+
set open(value: boolean);
|
|
3554
|
+
get open(): boolean;
|
|
3555
|
+
/** Ancho máximo (380·520·680; ≤480px full-width). */
|
|
3556
|
+
size: IusModalSize;
|
|
3557
|
+
/** Título del header. */
|
|
3558
|
+
title?: string;
|
|
3559
|
+
/** Descripción breve bajo el título. */
|
|
3560
|
+
description?: string;
|
|
3561
|
+
/** Ligadura Material Symbols al inicio del header (círculo suave del tono). */
|
|
3562
|
+
icon?: string;
|
|
3563
|
+
/** Tono del círculo del ícono. */
|
|
3564
|
+
iconTone: IusModalIconTone;
|
|
3565
|
+
/** Botón de cerrar (×) en el header. */
|
|
3566
|
+
showClose: boolean;
|
|
3567
|
+
/** Texto del botón primario de conveniencia. */
|
|
3568
|
+
primaryLabel?: string;
|
|
3569
|
+
/** Loading del primario. */
|
|
3570
|
+
primaryLoading: boolean;
|
|
3571
|
+
/** Deshabilita el primario. */
|
|
3572
|
+
primaryDisabled: boolean;
|
|
3573
|
+
/** Acción destructiva: el primario de conveniencia usa `variant="danger"` (rojo). */
|
|
3574
|
+
destructive: boolean;
|
|
3575
|
+
/** Texto del botón secundario. `null` lo oculta. */
|
|
3576
|
+
secondaryLabel: string | null;
|
|
3577
|
+
/** Divisores entre header/body/footer. */
|
|
3578
|
+
dividers: boolean;
|
|
3579
|
+
/** Cerrar al hacer clic en el scrim. */
|
|
3580
|
+
closeOnScrim: boolean;
|
|
3581
|
+
/** Cerrar con Escape. */
|
|
3582
|
+
closeOnEsc: boolean;
|
|
3583
|
+
/** z-index del scrim. */
|
|
3584
|
+
zIndex: number;
|
|
3585
|
+
/** Etiqueta accesible si no hay `title`. */
|
|
3586
|
+
ariaLabel?: string;
|
|
3587
|
+
/** Cierre con el motivo (`onClose` del golden). */
|
|
3588
|
+
readonly closed: EventEmitter<IusModalCloseReason>;
|
|
3589
|
+
/** Clic en el primario de conveniencia (`onPrimary`). */
|
|
3590
|
+
readonly primary: EventEmitter<MouseEvent>;
|
|
3591
|
+
/** Clic en el secundario de conveniencia (`onSecondary`). Si nadie lo escucha, cierra. */
|
|
3592
|
+
readonly secondary: EventEmitter<void>;
|
|
3593
|
+
private overlayRef;
|
|
3594
|
+
private keydownSub;
|
|
3595
|
+
private viewReady;
|
|
3596
|
+
protected get hasHead(): boolean;
|
|
3597
|
+
protected get iconColors(): {
|
|
3598
|
+
bg: string;
|
|
3599
|
+
fg: string;
|
|
3600
|
+
};
|
|
3601
|
+
protected get showSecondary(): boolean;
|
|
3602
|
+
/** Footer de conveniencia sólo si no hay footer libre y hay algo que mostrar. */
|
|
3603
|
+
protected get hasConvenienceFooter(): boolean;
|
|
2938
3604
|
ngAfterViewInit(): void;
|
|
2939
|
-
ngOnChanges(): void;
|
|
2940
3605
|
ngOnDestroy(): void;
|
|
2941
|
-
|
|
2942
|
-
|
|
2943
|
-
private
|
|
2944
|
-
|
|
2945
|
-
|
|
2946
|
-
|
|
2947
|
-
|
|
3606
|
+
private sync;
|
|
3607
|
+
private attach;
|
|
3608
|
+
private detach;
|
|
3609
|
+
protected onScrimMouseDown(event: MouseEvent): void;
|
|
3610
|
+
protected onCloseClick(): void;
|
|
3611
|
+
protected onPrimary(event: MouseEvent): void;
|
|
3612
|
+
protected onSecondary(): void;
|
|
3613
|
+
private emitClose;
|
|
3614
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalComponent, never>;
|
|
3615
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalComponent, "ius-modal", never, { "open": { "alias": "open"; "required": false; }; "size": { "alias": "size"; "required": false; }; "title": { "alias": "title"; "required": false; }; "description": { "alias": "description"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconTone": { "alias": "iconTone"; "required": false; }; "showClose": { "alias": "showClose"; "required": false; }; "primaryLabel": { "alias": "primaryLabel"; "required": false; }; "primaryLoading": { "alias": "primaryLoading"; "required": false; }; "primaryDisabled": { "alias": "primaryDisabled"; "required": false; }; "destructive": { "alias": "destructive"; "required": false; }; "secondaryLabel": { "alias": "secondaryLabel"; "required": false; }; "dividers": { "alias": "dividers"; "required": false; }; "closeOnScrim": { "alias": "closeOnScrim"; "required": false; }; "closeOnEsc": { "alias": "closeOnEsc"; "required": false; }; "zIndex": { "alias": "zIndex"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, { "closed": "closed"; "primary": "primary"; "secondary": "secondary"; }, ["customFooter"], ["*", "[iusModalFooter]"], true, never>;
|
|
3616
|
+
static ngAcceptInputType_open: unknown;
|
|
3617
|
+
static ngAcceptInputType_showClose: unknown;
|
|
3618
|
+
static ngAcceptInputType_primaryLoading: unknown;
|
|
3619
|
+
static ngAcceptInputType_primaryDisabled: unknown;
|
|
3620
|
+
static ngAcceptInputType_destructive: unknown;
|
|
3621
|
+
static ngAcceptInputType_dividers: unknown;
|
|
3622
|
+
static ngAcceptInputType_closeOnScrim: unknown;
|
|
3623
|
+
static ngAcceptInputType_closeOnEsc: unknown;
|
|
3624
|
+
static ngAcceptInputType_zIndex: unknown;
|
|
2948
3625
|
}
|
|
2949
3626
|
|
|
2950
|
-
/** Tamaño de la fila — heredado del Select. small · medium (default) · large. */
|
|
2951
|
-
type IusOptionItemSize = 'small' | 'medium' | 'large';
|
|
2952
3627
|
/**
|
|
2953
|
-
*
|
|
2954
|
-
* `
|
|
3628
|
+
* Rol tipográfico → clase de escala (`typography.css`). `body` es alias de
|
|
3629
|
+
* `body-base`. Mapa exacto en VARIANT_CLASS/DEFAULT_TAG.
|
|
2955
3630
|
*/
|
|
2956
|
-
type
|
|
3631
|
+
type IusTextVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'body-lg' | 'emphasis-lg' | 'body-base' | 'emphasis-base' | 'body' | 'caption' | 'body-sm' | 'label' | 'overline';
|
|
2957
3632
|
/**
|
|
2958
|
-
*
|
|
2959
|
-
*
|
|
2960
|
-
* Átomo de **fila de opción** dentro del menú (MenuInput) del **Select** (y
|
|
2961
|
-
* SelectNumber, y cualquier lista de opciones del sistema). **No se usa suelto en
|
|
2962
|
-
* formularios** — es la pieza interna que renderiza cada opción. Cubre los 7
|
|
2963
|
-
* estados del especimen Figma: Default · Hovered · Pressed · Disabled · Selected
|
|
2964
|
-
* (multi, check circular al final) · Selected Var (single, relleno azul) ·
|
|
2965
|
-
* Selected Hovered.
|
|
2966
|
-
*
|
|
2967
|
-
* Regla de marca: `multi` + `selected` → check (Selected); single + `selected` →
|
|
2968
|
-
* relleno azul (Selected Var). `active` es el resaltado de navegación por teclado
|
|
2969
|
-
* (mismo fondo que hover) sin marcar la opción como elegida.
|
|
2970
|
-
*
|
|
2971
|
-
* Fuente de verdad: `components/inputs/OptionItem/OptionItem.jsx` + `.d.ts` +
|
|
2972
|
-
* `OptionItem.ng-spec.md`. Todo sale de tokens `--ius-*` (los px 6/11/22 son los
|
|
2973
|
-
* mismos valores crudos que fija el golden para el alto de fila y el disco del
|
|
2974
|
-
* check — excepción documentada por la fuente de verdad).
|
|
3633
|
+
* Alias de color de texto → `--ius-text-*`. `danger`→`--ius-text-error`,
|
|
3634
|
+
* `inverse`→`--ius-text-on-primary`.
|
|
2975
3635
|
*/
|
|
2976
|
-
|
|
2977
|
-
|
|
2978
|
-
|
|
2979
|
-
/** Ícono Material Symbols a la izquierda (opcional). */
|
|
2980
|
-
icon?: string;
|
|
2981
|
-
/** La opción está elegida. */
|
|
2982
|
-
selected: boolean;
|
|
2983
|
-
/** Selección múltiple: con `selected` → check circular (si no, relleno azul). */
|
|
2984
|
-
multi: boolean;
|
|
2985
|
-
/** Resaltado de navegación por teclado (activa, sin elegir aún). */
|
|
2986
|
-
active: boolean;
|
|
2987
|
-
/** Opción no seleccionable. */
|
|
2988
|
-
disabled: boolean;
|
|
2989
|
-
/** Tamaño de la fila, heredado del Select. */
|
|
2990
|
-
size: IusOptionItemSize;
|
|
2991
|
-
/** Valor de la opción (para `role="option"` / aria). */
|
|
2992
|
-
value?: string | number;
|
|
2993
|
-
/** Estado forzado — **solo demos/especímenes**. */
|
|
2994
|
-
state?: IusOptionItemState;
|
|
2995
|
-
/** Al elegir la opción (original `onSelect`). */
|
|
2996
|
-
readonly selectClicked: EventEmitter<void>;
|
|
2997
|
-
/** ¿Hay un estado forzado activo (demo)? */
|
|
2998
|
-
protected get forced(): boolean;
|
|
2999
|
-
/** ¿La opción se ve como elegida (real o forzada)? */
|
|
3000
|
-
protected get isSelected(): boolean;
|
|
3001
|
-
/** ¿Elegida en modo múltiple (check) vs single (relleno)? */
|
|
3002
|
-
protected get isMultiSel(): boolean;
|
|
3003
|
-
/** Marca de elegido: `check` (multi) o `fill` (single). */
|
|
3004
|
-
protected get variant(): 'check' | 'fill';
|
|
3005
|
-
/** Deshabilitada (real o forzada). */
|
|
3006
|
-
protected get isDisabled(): boolean;
|
|
3007
|
-
/** ¿Mostrar el disco de check al final (solo multi elegido)? */
|
|
3008
|
-
protected get showCheck(): boolean;
|
|
3009
|
-
protected handleClick(): void;
|
|
3010
|
-
protected onMouseDown(event: MouseEvent): void;
|
|
3011
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OptionItemComponent, never>;
|
|
3012
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OptionItemComponent, "ius-option-item", never, { "label": { "alias": "label"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "multi": { "alias": "multi"; "required": false; }; "active": { "alias": "active"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "size": { "alias": "size"; "required": false; }; "value": { "alias": "value"; "required": false; }; "state": { "alias": "state"; "required": false; }; }, { "selectClicked": "selectClicked"; }, never, ["*"], true, never>;
|
|
3013
|
-
static ngAcceptInputType_selected: unknown;
|
|
3014
|
-
static ngAcceptInputType_multi: unknown;
|
|
3015
|
-
static ngAcceptInputType_active: unknown;
|
|
3016
|
-
static ngAcceptInputType_disabled: unknown;
|
|
3017
|
-
}
|
|
3018
|
-
|
|
3019
|
-
/** Tamaño del chip — small ~24 · medium ~28 (default) · large ~32px (alineado a inputs). */
|
|
3020
|
-
type IusChipSize = 'small' | 'medium' | 'large';
|
|
3021
|
-
/** Estado forzado — **solo demos/especímenes del DS**. Sobrescribe la interacción real. */
|
|
3022
|
-
type IusChipState = 'idle' | 'hover' | 'disabled';
|
|
3636
|
+
type IusTextColor = 'primary' | 'secondary' | 'tertiary' | 'disabled' | 'inverse' | 'success' | 'danger' | 'warning' | 'info' | 'link';
|
|
3637
|
+
type IusTextWeight = 'regular' | 'medium' | 'bold';
|
|
3638
|
+
type IusTextAlign = 'left' | 'center' | 'right' | 'justify';
|
|
3023
3639
|
/**
|
|
3024
|
-
*
|
|
3025
|
-
*
|
|
3026
|
-
*
|
|
3027
|
-
* - **Eliminable** (`removable`): relleno azul + botón × circular. Para inputs y
|
|
3028
|
-
* formularios (lo usan Select / CascaderSelect en multiselección) — cada chip es
|
|
3029
|
-
* un valor elegido que el usuario puede quitar.
|
|
3030
|
-
* - **No eliminable** (default): blanco con borde. Para vistas de solo lectura /
|
|
3031
|
-
* display.
|
|
3032
|
-
*
|
|
3033
|
-
* Tres estados (Default · Hovered · Disabled) y tres tamaños. Admite un ícono a la
|
|
3034
|
-
* izquierda. **No** es interactivo (no clickable/toggle) ni maneja color de estado
|
|
3035
|
-
* → para eso usar **Tag**.
|
|
3036
|
-
*
|
|
3037
|
-
* Fuente de verdad: `components/data-display/Chip/Chip.jsx` + `.d.ts` + ng-spec.
|
|
3038
|
-
* Todo sale de tokens `--ius-*`; los px de la pill (3/4/5 py, 8/10/12 px, 16/18/20
|
|
3039
|
-
* de la ×) son los valores que fija el golden para el alto por tamaño (excepción
|
|
3040
|
-
* documentada por la fuente de verdad).
|
|
3640
|
+
* Tag polimórfico soportado. Adaptación Angular del `as` (React acepta cualquier
|
|
3641
|
+
* `keyof JSX.IntrinsicElements`; aquí un set finito para elegir el template, tal
|
|
3642
|
+
* como recomienda la ng-spec §3). Cubre los tags del sistema + inline comunes.
|
|
3041
3643
|
*/
|
|
3042
|
-
|
|
3043
|
-
/** Texto del chip. Alternativa a la proyección de contenido. */
|
|
3044
|
-
label?: string;
|
|
3045
|
-
/** Ícono Material Symbols a la izquierda (opcional). */
|
|
3046
|
-
icon?: string;
|
|
3047
|
-
/** Muestra el botón × y habilita quitar el chip (relleno azul). */
|
|
3048
|
-
removable: boolean;
|
|
3049
|
-
/** Tamaño de la pill. */
|
|
3050
|
-
size: IusChipSize;
|
|
3051
|
-
/** Deshabilitado (atenuado, × no funcional). */
|
|
3052
|
-
disabled: boolean;
|
|
3053
|
-
/** Estado forzado — **solo demos/especímenes**. */
|
|
3054
|
-
state?: IusChipState;
|
|
3055
|
-
/** aria-label del botón quitar. */
|
|
3056
|
-
removeLabel: string;
|
|
3057
|
-
/** Al pulsar la × (original `onRemove`). */
|
|
3058
|
-
readonly removed: EventEmitter<void>;
|
|
3059
|
-
/** Deshabilitado (real o forzado). */
|
|
3060
|
-
protected get isDisabled(): boolean;
|
|
3061
|
-
/** `data-state` solo cuando hay un estado forzado (≠ idle). */
|
|
3062
|
-
protected get forcedState(): IusChipState | null;
|
|
3063
|
-
protected handleRemove(event: MouseEvent): void;
|
|
3064
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChipComponent, never>;
|
|
3065
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChipComponent, "ius-chip", never, { "label": { "alias": "label"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "removable": { "alias": "removable"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "state": { "alias": "state"; "required": false; }; "removeLabel": { "alias": "removeLabel"; "required": false; }; }, { "removed": "removed"; }, never, ["*"], true, never>;
|
|
3066
|
-
static ngAcceptInputType_removable: unknown;
|
|
3067
|
-
static ngAcceptInputType_disabled: unknown;
|
|
3068
|
-
}
|
|
3069
|
-
|
|
3070
|
-
type IusFlexDirection = 'row' | 'column';
|
|
3071
|
-
type IusFlexGap = 'none' | 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';
|
|
3072
|
-
type IusFlexAlign = 'start' | 'center' | 'end' | 'stretch' | 'baseline';
|
|
3073
|
-
type IusFlexJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
|
|
3644
|
+
type IusTextTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'p' | 'span' | 'label' | 'div' | 'strong' | 'em' | 'small';
|
|
3074
3645
|
/**
|
|
3075
|
-
*
|
|
3076
|
-
*
|
|
3077
|
-
* Contenedor flexbox cuyo `gap` está RESTRINGIDO a la escala --ius-space-*
|
|
3078
|
-
* (no existe gap numérico libre: esa restricción es el punto del componente).
|
|
3079
|
-
* Reemplaza el `<div style="display:flex; gap:…">` a mano.
|
|
3646
|
+
* Text — Ius Design v2. Primitiva tipográfica (display-only, sin estado).
|
|
3080
3647
|
*
|
|
3081
|
-
*
|
|
3082
|
-
*
|
|
3083
|
-
*
|
|
3648
|
+
* Wrapper delgado sobre la escala de `typography.css`: mapea `variant` → clase y
|
|
3649
|
+
* expone `color / weight / as / align / italic / truncate / tabularNums` con
|
|
3650
|
+
* tokens `--ius-*` (cero valores crudos). Contrato único para todo texto plano.
|
|
3084
3651
|
*
|
|
3085
|
-
* El `
|
|
3086
|
-
*
|
|
3087
|
-
* La forma de elemento también es válida: <ius-flex gap="lg">…</ius-flex>.
|
|
3652
|
+
* El host `ius-text` usa `display: contents`, así que no genera caja propia: el
|
|
3653
|
+
* tag renderizado (h1…h5 / p / span / label…) se comporta como hijo directo.
|
|
3088
3654
|
*
|
|
3089
|
-
*
|
|
3090
|
-
*
|
|
3091
|
-
|
|
3092
|
-
declare class FlexComponent {
|
|
3093
|
-
/** Eje principal; 'column' = patrón stack. Solo emite data-dir en column. */
|
|
3094
|
-
direction: IusFlexDirection;
|
|
3095
|
-
/** Separación entre hijos — SOLO escala --ius-space-*. */
|
|
3096
|
-
gap: IusFlexGap;
|
|
3097
|
-
/** align-items; sin valor no se emite (default del navegador: stretch). */
|
|
3098
|
-
align?: IusFlexAlign;
|
|
3099
|
-
/** justify-content; sin valor no se emite (default: flex-start). */
|
|
3100
|
-
justify?: IusFlexJustify;
|
|
3101
|
-
/** flex-wrap: wrap (patrón cluster). */
|
|
3102
|
-
wrap: boolean;
|
|
3103
|
-
/** inline-flex en vez de flex (grupos que fluyen dentro de texto). */
|
|
3104
|
-
inline: boolean;
|
|
3105
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlexComponent, never>;
|
|
3106
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlexComponent, "ius-flex, [ius-flex]", never, { "direction": { "alias": "direction"; "required": false; }; "gap": { "alias": "gap"; "required": false; }; "align": { "alias": "align"; "required": false; }; "justify": { "alias": "justify"; "required": false; }; "wrap": { "alias": "wrap"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; }, {}, never, ["*"], true, never>;
|
|
3107
|
-
}
|
|
3108
|
-
|
|
3109
|
-
type IusDividerOrientation = 'horizontal' | 'vertical';
|
|
3110
|
-
type IusDividerVariant = 'solid' | 'dashed';
|
|
3111
|
-
type IusDividerTextAlign = 'start' | 'center' | 'end';
|
|
3112
|
-
/**
|
|
3113
|
-
* Divider — separador NEUTRO (ng-spec components/data-display/Divider).
|
|
3114
|
-
* Línea fina 1px --ius-neutral-3, horizontal (con etiqueta opcional proyectada)
|
|
3115
|
-
* o vertical (rellena el alto del contenedor). Para separadores con tono
|
|
3116
|
-
* semántico → Alert o borde propio. Sin outputs.
|
|
3655
|
+
* Port completo: los 14 variants mapean a su clase real de `typography.css`
|
|
3656
|
+
* (incl. `.ius-label`/`.ius-overline`) y los 10 colores a su token `--ius-text-*`
|
|
3657
|
+
* (incl. `--ius-text-warning`/`--ius-text-info`), sincronizados desde Claude Design.
|
|
3117
3658
|
*
|
|
3118
|
-
*
|
|
3119
|
-
*
|
|
3659
|
+
* Fuente de verdad: `components/data-display/Text/Text.jsx` + `Text.d.ts`
|
|
3660
|
+
* (contrato en `Text.ng-spec.md` §4).
|
|
3120
3661
|
*/
|
|
3121
|
-
declare class
|
|
3122
|
-
/**
|
|
3123
|
-
|
|
3124
|
-
/**
|
|
3125
|
-
|
|
3126
|
-
/**
|
|
3127
|
-
|
|
3128
|
-
|
|
3129
|
-
|
|
3130
|
-
|
|
3131
|
-
|
|
3132
|
-
|
|
3662
|
+
declare class TextComponent {
|
|
3663
|
+
/** Rol tipográfico → clase de escala + tag por defecto. */
|
|
3664
|
+
variant: IusTextVariant;
|
|
3665
|
+
/** Color semántico (alias → `--ius-text-*`). Sin valor: hereda el de la clase. */
|
|
3666
|
+
color?: IusTextColor;
|
|
3667
|
+
/** Peso: override del peso por defecto del variant → `--ius-fw-*`. */
|
|
3668
|
+
weight?: IusTextWeight;
|
|
3669
|
+
/** Tag polimórfico: override del tag semántico por defecto del variant. */
|
|
3670
|
+
as?: IusTextTag;
|
|
3671
|
+
/** Alineación (`text-align`). */
|
|
3672
|
+
align?: IusTextAlign;
|
|
3673
|
+
/** Itálico (clase modificadora en body-base/caption/body-sm; inline en el resto). */
|
|
3674
|
+
italic: boolean;
|
|
3675
|
+
/** Trunca a una línea con elipsis. */
|
|
3676
|
+
truncate: boolean;
|
|
3677
|
+
/** Números tabulares (montos/radicados es-CO). */
|
|
3678
|
+
tabularNums: boolean;
|
|
3679
|
+
/** `for` del `<label>` (sólo aplica cuando el tag renderizado es `label`). */
|
|
3680
|
+
for?: string;
|
|
3681
|
+
/** Tag efectivo (as > default del variant > span). */
|
|
3682
|
+
protected get tag(): IusTextTag;
|
|
3683
|
+
private get variantClass();
|
|
3684
|
+
/** `ius-text` base + clase de escala (+ modificador itálico si aplica). */
|
|
3685
|
+
protected get klass(): string;
|
|
3686
|
+
/** Overrides por token (color/weight/align/italic-inline/tabular/truncate). */
|
|
3687
|
+
protected get styleObject(): Record<string, string>;
|
|
3688
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextComponent, never>;
|
|
3689
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextComponent, "ius-text", never, { "variant": { "alias": "variant"; "required": false; }; "color": { "alias": "color"; "required": false; }; "weight": { "alias": "weight"; "required": false; }; "as": { "alias": "as"; "required": false; }; "align": { "alias": "align"; "required": false; }; "italic": { "alias": "italic"; "required": false; }; "truncate": { "alias": "truncate"; "required": false; }; "tabularNums": { "alias": "tabularNums"; "required": false; }; "for": { "alias": "for"; "required": false; }; }, {}, never, ["*"], true, never>;
|
|
3690
|
+
static ngAcceptInputType_italic: unknown;
|
|
3691
|
+
static ngAcceptInputType_truncate: unknown;
|
|
3692
|
+
static ngAcceptInputType_tabularNums: unknown;
|
|
3133
3693
|
}
|
|
3134
3694
|
|
|
3135
|
-
/**
|
|
3136
|
-
type
|
|
3137
|
-
/** Familia de color: 6 semánticas + 6 frutas categóricas. */
|
|
3138
|
-
type IusInsigniaTone = 'primary' | 'info' | 'success' | 'warning' | 'danger' | 'neutral' | 'durazno' | 'banano' | 'sandia' | 'arandano' | 'uva' | 'aguacate';
|
|
3139
|
-
/** Tamaño. */
|
|
3140
|
-
type IusInsigniaSize = 'small' | 'medium' | 'large';
|
|
3695
|
+
/** Degradado base según el fondo. */
|
|
3696
|
+
type IusLoadingMarkSurface = 'light' | 'dark';
|
|
3141
3697
|
/**
|
|
3142
|
-
* Insignia — Ius Design v2 (familia feedback).
|
|
3143
3698
|
*
|
|
3144
|
-
*
|
|
3145
|
-
*
|
|
3146
|
-
*
|
|
3147
|
-
*
|
|
3699
|
+
* Cargador de **identidad** Litigiovirtual: tres fichas se deslizan por el
|
|
3700
|
+
* cuadrado mientras el conjunto gira y un **cometa** de luz cian orbita el
|
|
3701
|
+
* contorno sobre el degradado base navy→cian. Para splash, arranque y esperas
|
|
3702
|
+
* largas donde la marca debe estar presente. Para una espera neutra/compacta
|
|
3703
|
+
* dentro de la UI botón, fila, panel, usar Loading/CircularProgress; este no
|
|
3704
|
+
* lleva etiqueta ni se incrusta en controles.
|
|
3148
3705
|
*
|
|
3149
|
-
* Para etiqueta con texto contenedor → Tag; para token removible en un campo →
|
|
3150
|
-
* Chip. La consume MenuItem (badge) y la barra de navegación.
|
|
3151
3706
|
*/
|
|
3152
|
-
declare class
|
|
3153
|
-
/**
|
|
3154
|
-
|
|
3155
|
-
/**
|
|
3156
|
-
|
|
3157
|
-
/**
|
|
3158
|
-
|
|
3159
|
-
/**
|
|
3160
|
-
|
|
3161
|
-
|
|
3162
|
-
readonly
|
|
3163
|
-
|
|
3164
|
-
readonly
|
|
3165
|
-
|
|
3166
|
-
|
|
3167
|
-
|
|
3168
|
-
|
|
3169
|
-
|
|
3170
|
-
|
|
3171
|
-
|
|
3172
|
-
|
|
3173
|
-
|
|
3174
|
-
protected readonly displayCount: _angular_core.Signal<string | number | undefined>;
|
|
3175
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<InsigniaComponent, never>;
|
|
3176
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<InsigniaComponent, "ius-insignia", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "count": { "alias": "count"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "ring": { "alias": "ring"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
3707
|
+
declare class LoadingMarkComponent {
|
|
3708
|
+
/** Lado del cuadro en px. */
|
|
3709
|
+
size: number;
|
|
3710
|
+
/** `light` navy sólido (default) · `dark` navy→cian sobre superficie navy. */
|
|
3711
|
+
surface: IusLoadingMarkSurface;
|
|
3712
|
+
/** Congela la animación (figura estática). También respeta reduced-motion. */
|
|
3713
|
+
paused: boolean;
|
|
3714
|
+
/** Etiqueta accesible. */
|
|
3715
|
+
ariaLabel: string;
|
|
3716
|
+
private readonly id;
|
|
3717
|
+
protected readonly baseId: string;
|
|
3718
|
+
protected readonly glowId: string;
|
|
3719
|
+
protected readonly softId: string;
|
|
3720
|
+
protected readonly maskId: string;
|
|
3721
|
+
/** Parada inicial del degradado base (siempre navy). */
|
|
3722
|
+
protected get baseFrom(): string;
|
|
3723
|
+
/** Parada final: navy en `light`; abre a `--ius-primary-600` en `dark`. */
|
|
3724
|
+
protected get baseTo(): string;
|
|
3725
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoadingMarkComponent, never>;
|
|
3726
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoadingMarkComponent, "ius-loading-mark", never, { "size": { "alias": "size"; "required": false; }; "surface": { "alias": "surface"; "required": false; }; "paused": { "alias": "paused"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, {}, never, never, true, never>;
|
|
3727
|
+
static ngAcceptInputType_size: unknown;
|
|
3728
|
+
static ngAcceptInputType_paused: unknown;
|
|
3177
3729
|
}
|
|
3178
3730
|
|
|
3179
|
-
/**
|
|
3180
|
-
type
|
|
3181
|
-
/**
|
|
3182
|
-
type
|
|
3183
|
-
/**
|
|
3184
|
-
|
|
3185
|
-
/**
|
|
3186
|
-
|
|
3187
|
-
|
|
3188
|
-
|
|
3189
|
-
|
|
3190
|
-
|
|
3191
|
-
|
|
3731
|
+
/** Escala del sistema — small ~34 · medium ~40 (default) · large ~48px. */
|
|
3732
|
+
type IusSegmentedSize = 'small' | 'medium' | 'large';
|
|
3733
|
+
/** `subtle` = pastilla blanca elevada (default) · `solid` = pastilla navy de marca. */
|
|
3734
|
+
type IusSegmentedVariant = 'subtle' | 'solid';
|
|
3735
|
+
/** Opción del control (2–5, cortas, todas visibles). */
|
|
3736
|
+
interface SegmentedOption {
|
|
3737
|
+
/** Valor único (lo que recibe `valueChange`). */
|
|
3738
|
+
value: string;
|
|
3739
|
+
/** Etiqueta visible (omitible en `iconOnly`). */
|
|
3740
|
+
label?: string;
|
|
3741
|
+
/** Ligadura Material Symbols Rounded. */
|
|
3742
|
+
icon?: string;
|
|
3743
|
+
/** Etiqueta accesible cuando `iconOnly` oculta el texto. */
|
|
3744
|
+
ariaLabel?: string;
|
|
3745
|
+
title?: string;
|
|
3746
|
+
/** Deshabilita sólo esta opción. */
|
|
3747
|
+
disabled?: boolean;
|
|
3192
3748
|
}
|
|
3193
3749
|
/**
|
|
3194
|
-
*
|
|
3750
|
+
* SegmentedControl — Ius Design v2.
|
|
3195
3751
|
*
|
|
3196
|
-
*
|
|
3197
|
-
*
|
|
3198
|
-
*
|
|
3199
|
-
* el pressed verde sólido sobre blanco (firma del rail). `danger` (rojo) solo
|
|
3200
|
-
* aplica a `menu` — el caso canónico es «Cerrar sesión».
|
|
3752
|
+
* Selector **único** de pocas opciones cortas, mutuamente excluyentes y **todas
|
|
3753
|
+
* visibles a la vez** (Mes/Semana/Día, filtros de estado, conmutadores de modo).
|
|
3754
|
+
* Para 0–1 opción → Switch; para muchas/largas → Select; para acciones → Button.
|
|
3201
3755
|
*
|
|
3202
|
-
*
|
|
3203
|
-
*
|
|
3204
|
-
*
|
|
3756
|
+
* `role="radiogroup"` + `role="radio"` con `aria-checked`; navegación con
|
|
3757
|
+
* ←/→/↑/↓/Home/End (mueve foco y selección) y roving `tabindex`. Implementa
|
|
3758
|
+
* `ControlValueAccessor` (`string`) y además soporta `[(value)]` directo.
|
|
3205
3759
|
*
|
|
3206
|
-
* Fuente de verdad: `
|
|
3207
|
-
* Compone Insignia para el badge. Para botón con texto → Button; píldora de
|
|
3208
|
-
* valor → Tag/Chip.
|
|
3760
|
+
* Fuente de verdad: `components/inputs/SegmentedControl/SegmentedControl.jsx` + `.d.ts`.
|
|
3209
3761
|
*/
|
|
3210
|
-
declare class
|
|
3211
|
-
/**
|
|
3212
|
-
|
|
3213
|
-
/**
|
|
3214
|
-
|
|
3215
|
-
/**
|
|
3216
|
-
|
|
3217
|
-
/**
|
|
3218
|
-
|
|
3219
|
-
/**
|
|
3220
|
-
|
|
3221
|
-
/**
|
|
3222
|
-
|
|
3223
|
-
/**
|
|
3224
|
-
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
|
|
3230
|
-
|
|
3231
|
-
|
|
3232
|
-
|
|
3233
|
-
/**
|
|
3234
|
-
readonly
|
|
3235
|
-
|
|
3236
|
-
readonly
|
|
3237
|
-
|
|
3238
|
-
|
|
3239
|
-
|
|
3240
|
-
|
|
3241
|
-
|
|
3242
|
-
|
|
3243
|
-
protected
|
|
3244
|
-
/**
|
|
3245
|
-
protected
|
|
3246
|
-
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
3762
|
+
declare class SegmentedControlComponent implements ControlValueAccessor {
|
|
3763
|
+
/** Opciones mutuamente excluyentes (2–5 cortas; todas visibles). */
|
|
3764
|
+
options: SegmentedOption[];
|
|
3765
|
+
/** Escala del sistema. */
|
|
3766
|
+
size: IusSegmentedSize;
|
|
3767
|
+
/** Jerarquía visual de la pastilla seleccionada. */
|
|
3768
|
+
variant: IusSegmentedVariant;
|
|
3769
|
+
/** Ocupa todo el ancho, repartiendo las opciones por igual. */
|
|
3770
|
+
fullWidth: boolean;
|
|
3771
|
+
/** Sólo íconos (oculta labels; usa ariaLabel/label como título accesible). */
|
|
3772
|
+
iconOnly: boolean;
|
|
3773
|
+
/** Etiqueta accesible del grupo. */
|
|
3774
|
+
ariaLabel?: string;
|
|
3775
|
+
/** `name` de los radios. */
|
|
3776
|
+
name?: string;
|
|
3777
|
+
private readonly valueState;
|
|
3778
|
+
/** Valor seleccionado (controlado / CVA). */
|
|
3779
|
+
set value(v: string | undefined);
|
|
3780
|
+
get value(): string | undefined;
|
|
3781
|
+
private readonly disabledState;
|
|
3782
|
+
/** Deshabilita todo el control. */
|
|
3783
|
+
set disabled(v: boolean);
|
|
3784
|
+
get disabled(): boolean;
|
|
3785
|
+
/** Cambio de selección (original `onChange`). Habilita `[(value)]`. */
|
|
3786
|
+
readonly valueChange: EventEmitter<string>;
|
|
3787
|
+
protected readonly selected: _angular_core.Signal<string | undefined>;
|
|
3788
|
+
private readonly optRefs;
|
|
3789
|
+
private onChange;
|
|
3790
|
+
private onTouched;
|
|
3791
|
+
writeValue(value: string): void;
|
|
3792
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
3793
|
+
registerOnTouched(fn: () => void): void;
|
|
3794
|
+
setDisabledState(isDisabled: boolean): void;
|
|
3795
|
+
protected isEnabled(o: SegmentedOption): boolean;
|
|
3796
|
+
/** Roving tabindex (espejo del golden: seleccionado, o el primero si no hay valor). */
|
|
3797
|
+
protected tabIndexFor(o: SegmentedOption, index: number): number;
|
|
3798
|
+
private commit;
|
|
3799
|
+
private focusAndSelect;
|
|
3800
|
+
private focusByOffset;
|
|
3801
|
+
protected onOptionClick(o: SegmentedOption): void;
|
|
3802
|
+
protected onKeyDown(event: KeyboardEvent, index: number): void;
|
|
3803
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SegmentedControlComponent, never>;
|
|
3804
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SegmentedControlComponent, "ius-segmented-control", never, { "options": { "alias": "options"; "required": false; }; "size": { "alias": "size"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "iconOnly": { "alias": "iconOnly"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "name": { "alias": "name"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
3805
|
+
static ngAcceptInputType_fullWidth: unknown;
|
|
3806
|
+
static ngAcceptInputType_iconOnly: unknown;
|
|
3807
|
+
static ngAcceptInputType_disabled: unknown;
|
|
3808
|
+
}
|
|
3809
|
+
|
|
3810
|
+
/**
|
|
3811
|
+
* Un paso del asistente.
|
|
3812
|
+
*
|
|
3813
|
+
* `content` (que en el golden React es un `ReactNode`) se resuelve en Angular
|
|
3814
|
+
* con un `TemplateRef` por paso (ng-spec §2 / §7): el consumidor declara un
|
|
3815
|
+
* `<ng-template>` por paso y lo pasa aquí.
|
|
3816
|
+
*/
|
|
3817
|
+
interface WizardStep {
|
|
3818
|
+
/** Identificador opcional del paso. */
|
|
3819
|
+
key?: string;
|
|
3820
|
+
/** Nombre visible del paso (etiqueta "Paso X de N · label"). */
|
|
3821
|
+
label?: string;
|
|
3822
|
+
/** Contenido del paso (típicamente un formulario), como plantilla. */
|
|
3823
|
+
content?: TemplateRef<unknown> | null;
|
|
3824
|
+
}
|
|
3825
|
+
/** API que devuelve `createWizard(...)` y consumen `<ius-wizard>` y `<ius-wizard-nav>`. */
|
|
3826
|
+
interface WizardApi {
|
|
3827
|
+
/** Pasos del flujo. */
|
|
3828
|
+
readonly steps: WizardStep[];
|
|
3829
|
+
/** Total de pasos. */
|
|
3830
|
+
readonly total: number;
|
|
3831
|
+
/** Paso actual (1-based). Reactivo (signal-backed). */
|
|
3832
|
+
readonly step: number;
|
|
3833
|
+
/** Índice actual (0-based). */
|
|
3834
|
+
readonly index: number;
|
|
3835
|
+
/** Paso actual (`steps[index]`). */
|
|
3836
|
+
readonly current: WizardStep | null;
|
|
3837
|
+
/** `true` en el primer paso. */
|
|
3838
|
+
readonly isFirst: boolean;
|
|
3839
|
+
/** `true` en el último paso. */
|
|
3840
|
+
readonly isLast: boolean;
|
|
3841
|
+
/** Avanza un paso; en el último, dispara `onFinish`. */
|
|
3842
|
+
next(): void;
|
|
3843
|
+
/** Retrocede un paso (no baja de 1). */
|
|
3844
|
+
back(): void;
|
|
3845
|
+
/** Salta a un paso (1-based), o función `(prev) => next`. */
|
|
3846
|
+
goTo(next: number | ((prev: number) => number)): void;
|
|
3847
|
+
}
|
|
3848
|
+
interface UseWizardOptions {
|
|
3849
|
+
/** Pasos del flujo. */
|
|
3850
|
+
steps: WizardStep[];
|
|
3851
|
+
/** Paso inicial (no controlado). Default 1. */
|
|
3852
|
+
defaultStep?: number;
|
|
3853
|
+
/**
|
|
3854
|
+
* Paso inicial controlado (1-based). En el port Angular el estado siempre
|
|
3855
|
+
* vive en el controller (signal); pásalo para sembrar el paso inicial y
|
|
3856
|
+
* observa los cambios con `onStepChange` / fuérzalos con `goTo`.
|
|
3857
|
+
*/
|
|
3858
|
+
step?: number;
|
|
3859
|
+
/** Cambio de paso (recibe el nuevo paso 1-based). */
|
|
3860
|
+
onStepChange?: (step: number) => void;
|
|
3861
|
+
/** Se dispara al pulsar "siguiente" en el último paso (cierre del flujo). */
|
|
3862
|
+
onFinish?: () => void;
|
|
3251
3863
|
}
|
|
3252
|
-
|
|
3253
3864
|
/**
|
|
3254
|
-
*
|
|
3255
|
-
*
|
|
3256
|
-
* `
|
|
3257
|
-
*
|
|
3865
|
+
* Controller de estado del Wizard — equivalente Angular del hook `Wizard.use`
|
|
3866
|
+
* de React (ng-spec §2). El paso vive en un `signal` interno, así que leer
|
|
3867
|
+
* `api.step` / `api.current` / `api.isLast` en una plantilla registra la
|
|
3868
|
+
* dependencia y refresca los componentes `OnPush` que consumen la `api`.
|
|
3258
3869
|
*/
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
|
|
3262
|
-
/**
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
|
|
3268
|
-
|
|
3269
|
-
|
|
3270
|
-
|
|
3271
|
-
|
|
3272
|
-
|
|
3273
|
-
|
|
3274
|
-
|
|
3275
|
-
|
|
3276
|
-
/** Fila inerte. */
|
|
3277
|
-
disabled?: boolean;
|
|
3278
|
-
/** Acción propia de la opción. */
|
|
3279
|
-
onClick?: (event: MouseEvent) => void;
|
|
3280
|
-
}
|
|
3281
|
-
/** Fila resuelta o divisor — lo que realmente pinta la plantilla. */
|
|
3282
|
-
interface IusMenuRow {
|
|
3283
|
-
kind: 'separator' | 'item';
|
|
3284
|
-
key: string;
|
|
3285
|
-
item?: IusMenuOption;
|
|
3286
|
-
selected?: boolean;
|
|
3870
|
+
declare class WizardController implements WizardApi {
|
|
3871
|
+
readonly steps: WizardStep[];
|
|
3872
|
+
private readonly _step;
|
|
3873
|
+
/** Señal de solo lectura del paso (por si el consumidor la quiere directa). */
|
|
3874
|
+
readonly step$: Signal<number>;
|
|
3875
|
+
private readonly onStepChange?;
|
|
3876
|
+
private readonly onFinish?;
|
|
3877
|
+
constructor(options: UseWizardOptions);
|
|
3878
|
+
get total(): number;
|
|
3879
|
+
get step(): number;
|
|
3880
|
+
get index(): number;
|
|
3881
|
+
get current(): WizardStep | null;
|
|
3882
|
+
get isFirst(): boolean;
|
|
3883
|
+
get isLast(): boolean;
|
|
3884
|
+
goTo: (next: number | ((prev: number) => number)) => void;
|
|
3885
|
+
next: () => void;
|
|
3886
|
+
back: () => void;
|
|
3287
3887
|
}
|
|
3288
3888
|
/**
|
|
3289
|
-
*
|
|
3290
|
-
*
|
|
3291
|
-
*
|
|
3292
|
-
* peligrosos/deshabilitados y modo selección única (check a la derecha). Es el
|
|
3293
|
-
* cuerpo que **Dropdown** ancla a un disparador y **ContextMenu** ancla al
|
|
3294
|
-
* cursor: por sí sola **no se posiciona ni gestiona apertura**.
|
|
3295
|
-
*
|
|
3296
|
-
* Fuente de verdad: `Menu.jsx` + `Menu.d.ts` + `Menu.ng-spec.md`. Las filas se
|
|
3297
|
-
* renderizan con `size="small"` y `variant="menu"`, como el golden.
|
|
3889
|
+
* `createWizard(options)` — fábrica del estado del asistente (equivalente a
|
|
3890
|
+
* `Wizard.use(...)`). Devuelve la `WizardApi` que leen `<ius-wizard>` y
|
|
3891
|
+
* `<ius-wizard-nav>`.
|
|
3298
3892
|
*/
|
|
3299
|
-
declare
|
|
3300
|
-
/** Opciones del menú (tipo compartido con Dropdown/ContextMenu). */
|
|
3301
|
-
readonly items: _angular_core.InputSignal<readonly IusMenuOption[]>;
|
|
3302
|
-
/** Selección única: marca `value` con un check. */
|
|
3303
|
-
readonly selectable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3304
|
-
/** Valor elegido en modo `selectable`. */
|
|
3305
|
-
readonly value: _angular_core.InputSignal<string | number | undefined>;
|
|
3306
|
-
/** Encabezado visual del menú. */
|
|
3307
|
-
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
3308
|
-
/** Etiqueta accesible de la superficie. */
|
|
3309
|
-
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
3310
|
-
/** Modo `selectable` — espejo de `onChange`. */
|
|
3311
|
-
readonly valueChange: _angular_core.OutputEmitterRef<{
|
|
3312
|
-
value: string | number | undefined;
|
|
3313
|
-
item: IusMenuOption;
|
|
3314
|
-
}>;
|
|
3315
|
-
/** Tras activar un ítem — Dropdown/ContextMenu lo usan para cerrar. */
|
|
3316
|
-
readonly itemClick: _angular_core.OutputEmitterRef<{
|
|
3317
|
-
item: IusMenuOption;
|
|
3318
|
-
event: MouseEvent;
|
|
3319
|
-
}>;
|
|
3320
|
-
/**
|
|
3321
|
-
* Aplana `items` a filas pintables insertando los divisores de grupo: al
|
|
3322
|
-
* cambiar `group` respecto de la fila anterior se mete un separador (el
|
|
3323
|
-
* primer ítem nunca lo lleva), y `separator: true` es un divisor explícito.
|
|
3324
|
-
*/
|
|
3325
|
-
protected readonly rows: _angular_core.Signal<IusMenuRow[]>;
|
|
3326
|
-
/** `trailing` como TemplateRef (slot rico) — si no, se pinta como texto. */
|
|
3327
|
-
protected trailingTpl(item: IusMenuOption): TemplateRef<unknown> | null;
|
|
3328
|
-
/** `trailing` como texto plano (atajo, valor corto). */
|
|
3329
|
-
protected trailingText(item: IusMenuOption): string | null;
|
|
3330
|
-
protected onItemClick(row: IusMenuRow, event: MouseEvent): void;
|
|
3331
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuComponent, never>;
|
|
3332
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuComponent, "ius-menu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "itemClick": "itemClick"; }, never, never, true, never>;
|
|
3333
|
-
}
|
|
3893
|
+
declare function createWizard(options: UseWizardOptions): WizardApi;
|
|
3334
3894
|
|
|
3335
|
-
/** Familia de color del disparador por defecto. */
|
|
3336
|
-
type IusDropdownTone = 'primary' | 'neutral';
|
|
3337
|
-
/** Tratamiento del disparador por defecto. */
|
|
3338
|
-
type IusDropdownVariant = 'ghost' | 'outline';
|
|
3339
|
-
/** Opción del Dropdown — el tipo compartido de Menu/ContextMenu. */
|
|
3340
|
-
type IusDropdownItem = IusMenuOption;
|
|
3341
3895
|
/**
|
|
3342
|
-
*
|
|
3343
|
-
*
|
|
3896
|
+
* Wizard (body) — Ius Design v2.
|
|
3897
|
+
*
|
|
3898
|
+
* Cuerpo del asistente: indicador de progreso + etiqueta "Paso X de N · label"
|
|
3899
|
+
* + el contenido del paso activo. **Agnóstico del contenedor** — vive en el
|
|
3900
|
+
* body de un Drawer/Modal o de una página; el footer (`ius-wizard-nav`) lee la
|
|
3901
|
+
* misma `api`. Distinto del `Stepper` (indicador display-only).
|
|
3902
|
+
*
|
|
3903
|
+
* El estado lo gobierna el controller `createWizard(...)` (ver `wizard.ts`),
|
|
3904
|
+
* espejo del hook `Wizard.use` de React (ng-spec §2).
|
|
3905
|
+
*
|
|
3906
|
+
* Nota del port: el indicador por defecto del golden es `LinearProgressBar`
|
|
3907
|
+
* (aún no portado); aquí se inlinea su modo "steps" (`.ius-lpb`, fill/rest)
|
|
3908
|
+
* fiel al golden. Cuando exista `ius-linear-progress-bar`, reemplazar por
|
|
3909
|
+
* composición sin cambiar la API. `indicator` permite pasar un nodo propio.
|
|
3344
3910
|
*/
|
|
3345
|
-
declare class
|
|
3346
|
-
|
|
3347
|
-
|
|
3911
|
+
declare class WizardComponent {
|
|
3912
|
+
/** API de `createWizard(...)`. */
|
|
3913
|
+
api: WizardApi;
|
|
3914
|
+
/** Muestra el indicador de progreso (por defecto la barra "steps"). */
|
|
3915
|
+
showIndicator: boolean;
|
|
3916
|
+
/** Indicador personalizado (reemplaza la barra por defecto). */
|
|
3917
|
+
indicator?: TemplateRef<unknown>;
|
|
3918
|
+
/** Muestra la etiqueta "Paso X de N · label". */
|
|
3919
|
+
showStepLabel: boolean;
|
|
3920
|
+
/** Palabra para "Paso". */
|
|
3921
|
+
stepWord: string;
|
|
3922
|
+
/** Palabra para "de". */
|
|
3923
|
+
ofWord: string;
|
|
3924
|
+
/** Porcentaje del indicador (step/total), espejo del modo stepped del LPB. */
|
|
3925
|
+
protected get percent(): number;
|
|
3926
|
+
protected get ariaNow(): number;
|
|
3927
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WizardComponent, never>;
|
|
3928
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WizardComponent, "ius-wizard", never, { "api": { "alias": "api"; "required": true; }; "showIndicator": { "alias": "showIndicator"; "required": false; }; "indicator": { "alias": "indicator"; "required": false; }; "showStepLabel": { "alias": "showStepLabel"; "required": false; }; "stepWord": { "alias": "stepWord"; "required": false; }; "ofWord": { "alias": "ofWord"; "required": false; }; }, {}, never, never, true, never>;
|
|
3929
|
+
static ngAcceptInputType_showIndicator: unknown;
|
|
3930
|
+
static ngAcceptInputType_showStepLabel: unknown;
|
|
3348
3931
|
}
|
|
3932
|
+
|
|
3349
3933
|
/**
|
|
3350
|
-
*
|
|
3934
|
+
* WizardNav (footer) — Ius Design v2.
|
|
3351
3935
|
*
|
|
3352
|
-
*
|
|
3353
|
-
* `
|
|
3354
|
-
*
|
|
3355
|
-
* activa
|
|
3936
|
+
* Footer de navegación del asistente: **Atrás** (secondary, deshabilitado en el
|
|
3937
|
+
* primero — o `hideBackOnFirst` para ocultarlo) + **Siguiente** (primary, ícono
|
|
3938
|
+
* `arrow_forward`); en el último paso, Siguiente pasa a **Guardar**
|
|
3939
|
+
* (`finishDynamic` activa el modo dynamic loading → success del Button).
|
|
3356
3940
|
*
|
|
3357
|
-
*
|
|
3358
|
-
*
|
|
3359
|
-
* (mismo borde/radio/padding/altura) para encajar en barras y SegmentGroup. Con
|
|
3360
|
-
* `[iusDropdownTrigger]` se proyecta un disparador propio.
|
|
3941
|
+
* Pensado para el slot `footer` del Drawer/Modal o el footer propio de una
|
|
3942
|
+
* página. Lee la misma `api` que `<ius-wizard>`. Compone `ius-button`.
|
|
3361
3943
|
*
|
|
3362
|
-
*
|
|
3363
|
-
*
|
|
3364
|
-
* `
|
|
3944
|
+
* El handler final se pasa como `finishAction` (con `finishDynamic` debe
|
|
3945
|
+
* devolver una `Promise` para integrarse con el modo dynamic del Button);
|
|
3946
|
+
* además se emite el output `finish` (ng-spec §4).
|
|
3365
3947
|
*/
|
|
3366
|
-
declare class
|
|
3367
|
-
/**
|
|
3368
|
-
|
|
3369
|
-
/**
|
|
3370
|
-
|
|
3371
|
-
/**
|
|
3372
|
-
|
|
3373
|
-
/**
|
|
3374
|
-
|
|
3375
|
-
/**
|
|
3376
|
-
|
|
3377
|
-
/**
|
|
3378
|
-
|
|
3379
|
-
/**
|
|
3380
|
-
|
|
3381
|
-
/**
|
|
3382
|
-
|
|
3383
|
-
/**
|
|
3384
|
-
|
|
3385
|
-
|
|
3386
|
-
|
|
3387
|
-
|
|
3388
|
-
|
|
3389
|
-
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
}>;
|
|
3396
|
-
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
/** `null` = el usuario todavía no ha abierto/cerrado → manda `defaultOpen`. */
|
|
3400
|
-
private readonly internalOpen;
|
|
3401
|
-
/** Controlado por `open` si viene definido; si no, estado interno. */
|
|
3402
|
-
protected readonly isOpen: _angular_core.Signal<boolean>;
|
|
3403
|
-
/** Opción activa en modo `selectable` — alimenta el texto del disparador. */
|
|
3404
|
-
private readonly current;
|
|
3405
|
-
/** `triggerLabel` › etiqueta de la opción elegida › `label`. */
|
|
3406
|
-
protected readonly triggerText: _angular_core.Signal<string | undefined>;
|
|
3407
|
-
/** El encabezado del menú solo aplica en modo selección (como el golden). */
|
|
3408
|
-
protected readonly menuLabel: _angular_core.Signal<string | undefined>;
|
|
3409
|
-
protected onOpenChange(open: boolean): void;
|
|
3410
|
-
protected onValueChange(payload: {
|
|
3411
|
-
value: string | number | undefined;
|
|
3412
|
-
item: IusMenuOption;
|
|
3413
|
-
}): void;
|
|
3414
|
-
/** Activar un ítem cierra el panel (acciones y selección). */
|
|
3415
|
-
protected onItemClick(): void;
|
|
3416
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownComponent, never>;
|
|
3417
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownComponent, "ius-dropdown", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "triggerLabel": { "alias": "triggerLabel"; "required": false; "isSignal": true; }; "triggerIcon": { "alias": "triggerIcon"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "openChange": "openChange"; }, ["customTrigger"], ["[iusDropdownTrigger]"], true, never>;
|
|
3948
|
+
declare class WizardNavComponent {
|
|
3949
|
+
/** API de `createWizard(...)`. */
|
|
3950
|
+
api: WizardApi;
|
|
3951
|
+
/** Etiqueta del botón atrás. */
|
|
3952
|
+
backLabel: string;
|
|
3953
|
+
/** Etiqueta del botón siguiente. */
|
|
3954
|
+
nextLabel: string;
|
|
3955
|
+
/** Etiqueta del botón final (último paso). */
|
|
3956
|
+
finishLabel: string;
|
|
3957
|
+
/** Ícono al final del botón siguiente. */
|
|
3958
|
+
nextIcon: string;
|
|
3959
|
+
/** El botón final usa el modo `dynamic` del Button (loading → success). */
|
|
3960
|
+
finishDynamic: boolean;
|
|
3961
|
+
/** Deshabilita "siguiente" (p. ej. validación del paso pendiente). */
|
|
3962
|
+
nextDisabled: boolean;
|
|
3963
|
+
/** Oculta el botón atrás en el primer paso (en vez de deshabilitarlo). */
|
|
3964
|
+
hideBackOnFirst: boolean;
|
|
3965
|
+
/**
|
|
3966
|
+
* Handler del botón final. Con `finishDynamic` debe devolver una `Promise`
|
|
3967
|
+
* (su resolución decide success/error del Button).
|
|
3968
|
+
*/
|
|
3969
|
+
finishAction?: () => void | IusButtonActionResult | Promise<IusButtonActionResult | void>;
|
|
3970
|
+
/** Se dispara al pulsar el botón final (original `onFinish`). */
|
|
3971
|
+
readonly finish: EventEmitter<void>;
|
|
3972
|
+
/** `action` para el modo dynamic del Button: emite `finish` y espera el handler. */
|
|
3973
|
+
protected readonly runFinish: () => Promise<IusButtonActionResult | void>;
|
|
3974
|
+
/** Click del botón final en modo NO dynamic. */
|
|
3975
|
+
protected onFinishClick(): void;
|
|
3976
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WizardNavComponent, never>;
|
|
3977
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WizardNavComponent, "ius-wizard-nav", never, { "api": { "alias": "api"; "required": true; }; "backLabel": { "alias": "backLabel"; "required": false; }; "nextLabel": { "alias": "nextLabel"; "required": false; }; "finishLabel": { "alias": "finishLabel"; "required": false; }; "nextIcon": { "alias": "nextIcon"; "required": false; }; "finishDynamic": { "alias": "finishDynamic"; "required": false; }; "nextDisabled": { "alias": "nextDisabled"; "required": false; }; "hideBackOnFirst": { "alias": "hideBackOnFirst"; "required": false; }; "finishAction": { "alias": "finishAction"; "required": false; }; }, { "finish": "finish"; }, never, never, true, never>;
|
|
3978
|
+
static ngAcceptInputType_finishDynamic: unknown;
|
|
3979
|
+
static ngAcceptInputType_nextDisabled: unknown;
|
|
3980
|
+
static ngAcceptInputType_hideBackOnFirst: unknown;
|
|
3418
3981
|
}
|
|
3419
3982
|
|
|
3420
|
-
/**
|
|
3421
|
-
type
|
|
3422
|
-
/**
|
|
3423
|
-
|
|
3983
|
+
/** Eje con scroll. */
|
|
3984
|
+
type IusScrollAxis = 'y' | 'x' | 'both';
|
|
3985
|
+
/** Grosor de la barra — `thin` es alias de `small`. */
|
|
3986
|
+
type IusScrollSize = 'small' | 'medium' | 'large' | 'thin';
|
|
3424
3987
|
/**
|
|
3425
|
-
*
|
|
3426
|
-
*
|
|
3988
|
+
* ScrollArea — Ius Design v2.
|
|
3989
|
+
*
|
|
3990
|
+
* Contenedor con scroll **canónico** del sistema: aplica la barra unificada
|
|
3991
|
+
* (utilidad global `.ius-scroll` de `tokens/scrollbar.css`) para que cualquier
|
|
3992
|
+
* área desplazable tenga el mismo thumb pill `neutral-4` (hover `neutral-5`,
|
|
3993
|
+
* track transparente) sin reescribir reglas `::-webkit-scrollbar`. **No** para
|
|
3994
|
+
* el scroll de toda la página (eso lo maneja el documento).
|
|
3995
|
+
*
|
|
3996
|
+
* Nota del port: el `as` polimórfico del golden no aplica — el host es siempre
|
|
3997
|
+
* `<ius-scroll-area>` (`.ius-sa`). El `viewRef` de React se expone como
|
|
3998
|
+
* `getViewport()` (equivalente a un `@ViewChild` del viewport).
|
|
3427
3999
|
*/
|
|
3428
|
-
|
|
3429
|
-
/**
|
|
3430
|
-
|
|
3431
|
-
/**
|
|
3432
|
-
|
|
3433
|
-
/**
|
|
3434
|
-
|
|
4000
|
+
declare class ScrollAreaComponent implements AfterViewInit, OnChanges, OnDestroy {
|
|
4001
|
+
/** Eje con scroll. */
|
|
4002
|
+
axis: IusScrollAxis;
|
|
4003
|
+
/** Grosor de barra; `thin` = alias de `small`. */
|
|
4004
|
+
size: IusScrollSize;
|
|
4005
|
+
/** Thumb solo visible en hover/foco (lienzos amplios). */
|
|
4006
|
+
autoHide: boolean;
|
|
4007
|
+
/** Máscara de gradiente en los bordes con scroll disponible. */
|
|
4008
|
+
fade: boolean;
|
|
4009
|
+
/** Límite que dispara el scroll vertical (número → px). */
|
|
4010
|
+
maxHeight?: number | string;
|
|
4011
|
+
/** Límite que dispara el scroll horizontal (número → px). */
|
|
4012
|
+
maxWidth?: number | string;
|
|
4013
|
+
/** Clase(s) extra para el viewport. */
|
|
4014
|
+
viewClassName?: string;
|
|
4015
|
+
/** Reenvía el evento nativo `scroll` del viewport (opcional, ng-spec §3). */
|
|
4016
|
+
readonly scrolled: EventEmitter<Event>;
|
|
4017
|
+
private readonly view;
|
|
4018
|
+
private ro;
|
|
4019
|
+
private readonly onScroll;
|
|
4020
|
+
/** Clases del viewport: base + barra unificada + variante de tamaño/autoHide. */
|
|
4021
|
+
protected get viewClasses(): string;
|
|
4022
|
+
protected get maxHeightCss(): string | null;
|
|
4023
|
+
protected get maxWidthCss(): string | null;
|
|
4024
|
+
private toCss;
|
|
4025
|
+
ngAfterViewInit(): void;
|
|
4026
|
+
ngOnChanges(): void;
|
|
4027
|
+
ngOnDestroy(): void;
|
|
4028
|
+
/** Acceso al viewport (equivalente al `viewRef` del golden). */
|
|
4029
|
+
getViewport(): HTMLElement | null;
|
|
4030
|
+
private updateFade;
|
|
4031
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScrollAreaComponent, never>;
|
|
4032
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScrollAreaComponent, "ius-scroll-area", never, { "axis": { "alias": "axis"; "required": false; }; "size": { "alias": "size"; "required": false; }; "autoHide": { "alias": "autoHide"; "required": false; }; "fade": { "alias": "fade"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; }; "maxWidth": { "alias": "maxWidth"; "required": false; }; "viewClassName": { "alias": "viewClassName"; "required": false; }; }, { "scrolled": "scrolled"; }, never, ["*"], true, never>;
|
|
4033
|
+
static ngAcceptInputType_autoHide: unknown;
|
|
4034
|
+
static ngAcceptInputType_fade: unknown;
|
|
3435
4035
|
}
|
|
4036
|
+
|
|
4037
|
+
/** Tamaño de la fila — heredado del Select. small · medium (default) · large. */
|
|
4038
|
+
type IusOptionItemSize = 'small' | 'medium' | 'large';
|
|
3436
4039
|
/**
|
|
3437
|
-
*
|
|
3438
|
-
*
|
|
4040
|
+
* Estado forzado — **solo demos/especímenes del DS**. En producción usar
|
|
4041
|
+
* `selected`/`multi`/`active`/`disabled`. Sobrescribe la interacción real.
|
|
3439
4042
|
*/
|
|
3440
|
-
type
|
|
3441
|
-
/** Opción lista para dropdown / filtro / orden por estado. */
|
|
3442
|
-
interface StatusOption {
|
|
3443
|
-
/** Clave del estado (la que viaja al backend). */
|
|
3444
|
-
value: string;
|
|
3445
|
-
/** Rótulo humano. */
|
|
3446
|
-
label: string;
|
|
3447
|
-
/** Familia semántica. */
|
|
3448
|
-
tone: StatusTone;
|
|
3449
|
-
/** Ligadura Material Symbols Rounded. */
|
|
3450
|
-
icon: string;
|
|
3451
|
-
}
|
|
3452
|
-
/** Par de variables de color de un tono: texto/ícono y punto (marca). */
|
|
3453
|
-
interface StatusToneVars {
|
|
3454
|
-
/** Color del texto y del ícono. Siempre un `var(--ius-*)`. */
|
|
3455
|
-
fg: string;
|
|
3456
|
-
/** Color del punto/marca. Siempre un `var(--ius-*)`. */
|
|
3457
|
-
mark: string;
|
|
3458
|
-
}
|
|
4043
|
+
type IusOptionItemState = 'idle' | 'hover' | 'pressed' | 'disabled' | 'selected' | 'selectedVar' | 'selectedHovered';
|
|
3459
4044
|
/**
|
|
3460
|
-
*
|
|
4045
|
+
* OptionItem — Ius Design.
|
|
3461
4046
|
*
|
|
3462
|
-
*
|
|
3463
|
-
*
|
|
3464
|
-
*
|
|
3465
|
-
*
|
|
4047
|
+
* Átomo de **fila de opción** dentro del menú (MenuInput) del **Select** (y
|
|
4048
|
+
* SelectNumber, y cualquier lista de opciones del sistema). **No se usa suelto en
|
|
4049
|
+
* formularios** — es la pieza interna que renderiza cada opción. Cubre los 7
|
|
4050
|
+
* estados del especimen Figma: Default · Hovered · Pressed · Disabled · Selected
|
|
4051
|
+
* (multi, check circular al final) · Selected Var (single, relleno azul) ·
|
|
4052
|
+
* Selected Hovered.
|
|
4053
|
+
*
|
|
4054
|
+
* Regla de marca: `multi` + `selected` → check (Selected); single + `selected` →
|
|
4055
|
+
* relleno azul (Selected Var). `active` es el resaltado de navegación por teclado
|
|
4056
|
+
* (mismo fondo que hover) sin marcar la opción como elegida.
|
|
4057
|
+
*
|
|
4058
|
+
* Fuente de verdad: `components/inputs/OptionItem/OptionItem.jsx` + `.d.ts` +
|
|
4059
|
+
* `OptionItem.ng-spec.md`. Todo sale de tokens `--ius-*` (los px 6/11/22 son los
|
|
4060
|
+
* mismos valores crudos que fija el golden para el alto de fila y el disco del
|
|
4061
|
+
* check — excepción documentada por la fuente de verdad).
|
|
3466
4062
|
*/
|
|
3467
|
-
declare
|
|
3468
|
-
|
|
3469
|
-
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
|
|
3474
|
-
|
|
3475
|
-
|
|
3476
|
-
|
|
3477
|
-
|
|
3478
|
-
|
|
3479
|
-
|
|
3480
|
-
|
|
3481
|
-
|
|
3482
|
-
|
|
3483
|
-
|
|
3484
|
-
|
|
3485
|
-
|
|
3486
|
-
|
|
3487
|
-
|
|
3488
|
-
|
|
3489
|
-
|
|
3490
|
-
|
|
3491
|
-
|
|
3492
|
-
|
|
3493
|
-
|
|
3494
|
-
|
|
3495
|
-
|
|
3496
|
-
|
|
3497
|
-
|
|
3498
|
-
|
|
3499
|
-
|
|
3500
|
-
|
|
3501
|
-
|
|
3502
|
-
|
|
3503
|
-
|
|
3504
|
-
|
|
3505
|
-
|
|
3506
|
-
|
|
3507
|
-
|
|
3508
|
-
|
|
3509
|
-
|
|
3510
|
-
|
|
3511
|
-
|
|
3512
|
-
|
|
3513
|
-
|
|
3514
|
-
readonly icon: "check_circle";
|
|
3515
|
-
};
|
|
3516
|
-
};
|
|
3517
|
-
};
|
|
3518
|
-
/** Entidades con vocabulario definido HOY en el catálogo. */
|
|
3519
|
-
type StatusVocabName = keyof typeof STATUS_VOCAB;
|
|
3520
|
-
/** Estados del vocabulario `actuacion` (validado). */
|
|
3521
|
-
type ActuacionStatus = keyof (typeof STATUS_VOCAB)['actuacion'];
|
|
3522
|
-
/** Estados del vocabulario `gestion` (propuesto — confirmar con backend). */
|
|
3523
|
-
type GestionStatus = keyof (typeof STATUS_VOCAB)['gestion'];
|
|
3524
|
-
/** Entidades con vocabulario definido. */
|
|
3525
|
-
declare const STATUS_VOCABS: readonly StatusVocabName[];
|
|
4063
|
+
declare class OptionItemComponent {
|
|
4064
|
+
/** Texto de la opción. Alternativa a la proyección de contenido. */
|
|
4065
|
+
label?: string;
|
|
4066
|
+
/** Ícono Material Symbols a la izquierda (opcional). */
|
|
4067
|
+
icon?: string;
|
|
4068
|
+
/** La opción está elegida. */
|
|
4069
|
+
selected: boolean;
|
|
4070
|
+
/** Selección múltiple: con `selected` → check circular (si no, relleno azul). */
|
|
4071
|
+
multi: boolean;
|
|
4072
|
+
/** Resaltado de navegación por teclado (activa, sin elegir aún). */
|
|
4073
|
+
active: boolean;
|
|
4074
|
+
/** Opción no seleccionable. */
|
|
4075
|
+
disabled: boolean;
|
|
4076
|
+
/** Tamaño de la fila, heredado del Select. */
|
|
4077
|
+
size: IusOptionItemSize;
|
|
4078
|
+
/** Valor de la opción (para `role="option"` / aria). */
|
|
4079
|
+
value?: string | number;
|
|
4080
|
+
/** Estado forzado — **solo demos/especímenes**. */
|
|
4081
|
+
state?: IusOptionItemState;
|
|
4082
|
+
/** Al elegir la opción (original `onSelect`). */
|
|
4083
|
+
readonly selectClicked: EventEmitter<void>;
|
|
4084
|
+
/** ¿Hay un estado forzado activo (demo)? */
|
|
4085
|
+
protected get forced(): boolean;
|
|
4086
|
+
/** ¿La opción se ve como elegida (real o forzada)? */
|
|
4087
|
+
protected get isSelected(): boolean;
|
|
4088
|
+
/** ¿Elegida en modo múltiple (check) vs single (relleno)? */
|
|
4089
|
+
protected get isMultiSel(): boolean;
|
|
4090
|
+
/** Marca de elegido: `check` (multi) o `fill` (single). */
|
|
4091
|
+
protected get variant(): 'check' | 'fill';
|
|
4092
|
+
/** Deshabilitada (real o forzada). */
|
|
4093
|
+
protected get isDisabled(): boolean;
|
|
4094
|
+
/** ¿Mostrar el disco de check al final (solo multi elegido)? */
|
|
4095
|
+
protected get showCheck(): boolean;
|
|
4096
|
+
protected handleClick(): void;
|
|
4097
|
+
protected onMouseDown(event: MouseEvent): void;
|
|
4098
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OptionItemComponent, never>;
|
|
4099
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OptionItemComponent, "ius-option-item", never, { "label": { "alias": "label"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "multi": { "alias": "multi"; "required": false; }; "active": { "alias": "active"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "size": { "alias": "size"; "required": false; }; "value": { "alias": "value"; "required": false; }; "state": { "alias": "state"; "required": false; }; }, { "selectClicked": "selectClicked"; }, never, ["*"], true, never>;
|
|
4100
|
+
static ngAcceptInputType_selected: unknown;
|
|
4101
|
+
static ngAcceptInputType_multi: unknown;
|
|
4102
|
+
static ngAcceptInputType_active: unknown;
|
|
4103
|
+
static ngAcceptInputType_disabled: unknown;
|
|
4104
|
+
}
|
|
4105
|
+
|
|
4106
|
+
/** Tamaño del chip — small ~24 · medium ~28 (default) · large ~32px (alineado a inputs). */
|
|
4107
|
+
type IusChipSize = 'small' | 'medium' | 'large';
|
|
4108
|
+
/** Estado forzado — **solo demos/especímenes del DS**. Sobrescribe la interacción real. */
|
|
4109
|
+
type IusChipState = 'idle' | 'hover' | 'disabled';
|
|
3526
4110
|
/**
|
|
3527
|
-
*
|
|
3528
|
-
*
|
|
3529
|
-
*
|
|
3530
|
-
*
|
|
4111
|
+
* Chip — Ius Design.
|
|
4112
|
+
*
|
|
4113
|
+
* Etiqueta compacta tipo "pill" que representa un valor seleccionado. Dos modos:
|
|
4114
|
+
* - **Eliminable** (`removable`): relleno azul + botón × circular. Para inputs y
|
|
4115
|
+
* formularios (lo usan Select / CascaderSelect en multiselección) — cada chip es
|
|
4116
|
+
* un valor elegido que el usuario puede quitar.
|
|
4117
|
+
* - **No eliminable** (default): blanco con borde. Para vistas de solo lectura /
|
|
4118
|
+
* display.
|
|
4119
|
+
*
|
|
4120
|
+
* Tres estados (Default · Hovered · Disabled) y tres tamaños. Admite un ícono a la
|
|
4121
|
+
* izquierda. **No** es interactivo (no clickable/toggle) ni maneja color de estado
|
|
4122
|
+
* → para eso usar **Tag**.
|
|
4123
|
+
*
|
|
4124
|
+
* Fuente de verdad: `components/data-display/Chip/Chip.jsx` + `.d.ts` + ng-spec.
|
|
4125
|
+
* Todo sale de tokens `--ius-*`; los px de la pill (3/4/5 py, 8/10/12 px, 16/18/20
|
|
4126
|
+
* de la ×) son los valores que fija el golden para el alto por tamaño (excepción
|
|
4127
|
+
* documentada por la fuente de verdad).
|
|
3531
4128
|
*/
|
|
3532
|
-
declare
|
|
4129
|
+
declare class ChipComponent {
|
|
4130
|
+
/** Texto del chip. Alternativa a la proyección de contenido. */
|
|
4131
|
+
label?: string;
|
|
4132
|
+
/** Ícono Material Symbols a la izquierda (opcional). */
|
|
4133
|
+
icon?: string;
|
|
4134
|
+
/** Muestra el botón × y habilita quitar el chip (relleno azul). */
|
|
4135
|
+
removable: boolean;
|
|
4136
|
+
/** Tamaño de la pill. */
|
|
4137
|
+
size: IusChipSize;
|
|
4138
|
+
/** Deshabilitado (atenuado, × no funcional). */
|
|
4139
|
+
disabled: boolean;
|
|
4140
|
+
/** Estado forzado — **solo demos/especímenes**. */
|
|
4141
|
+
state?: IusChipState;
|
|
4142
|
+
/** aria-label del botón quitar. */
|
|
4143
|
+
removeLabel: string;
|
|
4144
|
+
/** Al pulsar la × (original `onRemove`). */
|
|
4145
|
+
readonly removed: EventEmitter<void>;
|
|
4146
|
+
/** Deshabilitado (real o forzado). */
|
|
4147
|
+
protected get isDisabled(): boolean;
|
|
4148
|
+
/** `data-state` solo cuando hay un estado forzado (≠ idle). */
|
|
4149
|
+
protected get forcedState(): IusChipState | null;
|
|
4150
|
+
protected handleRemove(event: MouseEvent): void;
|
|
4151
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChipComponent, never>;
|
|
4152
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChipComponent, "ius-chip", never, { "label": { "alias": "label"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "removable": { "alias": "removable"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "state": { "alias": "state"; "required": false; }; "removeLabel": { "alias": "removeLabel"; "required": false; }; }, { "removed": "removed"; }, never, ["*"], true, never>;
|
|
4153
|
+
static ngAcceptInputType_removable: unknown;
|
|
4154
|
+
static ngAcceptInputType_disabled: unknown;
|
|
4155
|
+
}
|
|
4156
|
+
|
|
4157
|
+
type IusFlexDirection = 'row' | 'column';
|
|
4158
|
+
type IusFlexGap = 'none' | 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';
|
|
4159
|
+
type IusFlexAlign = 'start' | 'center' | 'end' | 'stretch' | 'baseline';
|
|
4160
|
+
type IusFlexJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
|
|
3533
4161
|
/**
|
|
3534
|
-
*
|
|
3535
|
-
*
|
|
4162
|
+
* Flex — primitivo de maquetación (ng-spec components/layout/Flex).
|
|
4163
|
+
*
|
|
4164
|
+
* Contenedor flexbox cuyo `gap` está RESTRINGIDO a la escala --ius-space-*
|
|
4165
|
+
* (no existe gap numérico libre: esa restricción es el punto del componente).
|
|
4166
|
+
* Reemplaza el `<div style="display:flex; gap:…">` a mano.
|
|
4167
|
+
*
|
|
4168
|
+
* Sin estilos propios: todas las reglas viven en la librería de estilos
|
|
4169
|
+
* (tokens.css › sección layout.css, clases .ius-flex + data-attrs) — este
|
|
4170
|
+
* componente es azúcar que emite la clase y los atributos.
|
|
4171
|
+
*
|
|
4172
|
+
* El `as` de la spec se resuelve con el selector de ATRIBUTO, sin nodo extra:
|
|
4173
|
+
* <nav ius-flex gap="sm">…</nav> · <ul ius-flex direction="column">…</ul>
|
|
4174
|
+
* La forma de elemento también es válida: <ius-flex gap="lg">…</ius-flex>.
|
|
4175
|
+
*
|
|
4176
|
+
* Solo estructura: no aporta cáscara de página (AppLayout), superficie (Card)
|
|
4177
|
+
* ni tipografía (Text). Sin outputs, sin estado, sin user-select.
|
|
3536
4178
|
*/
|
|
3537
|
-
declare
|
|
4179
|
+
declare class FlexComponent {
|
|
4180
|
+
/** Eje principal; 'column' = patrón stack. Solo emite data-dir en column. */
|
|
4181
|
+
direction: IusFlexDirection;
|
|
4182
|
+
/** Separación entre hijos — SOLO escala --ius-space-*. */
|
|
4183
|
+
gap: IusFlexGap;
|
|
4184
|
+
/** align-items; sin valor no se emite (default del navegador: stretch). */
|
|
4185
|
+
align?: IusFlexAlign;
|
|
4186
|
+
/** justify-content; sin valor no se emite (default: flex-start). */
|
|
4187
|
+
justify?: IusFlexJustify;
|
|
4188
|
+
/** flex-wrap: wrap (patrón cluster). */
|
|
4189
|
+
wrap: boolean;
|
|
4190
|
+
/** inline-flex en vez de flex (grupos que fluyen dentro de texto). */
|
|
4191
|
+
inline: boolean;
|
|
4192
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlexComponent, never>;
|
|
4193
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlexComponent, "ius-flex, [ius-flex]", never, { "direction": { "alias": "direction"; "required": false; }; "gap": { "alias": "gap"; "required": false; }; "align": { "alias": "align"; "required": false; }; "justify": { "alias": "justify"; "required": false; }; "wrap": { "alias": "wrap"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; }, {}, never, ["*"], true, never>;
|
|
4194
|
+
}
|
|
4195
|
+
|
|
4196
|
+
type IusDividerOrientation = 'horizontal' | 'vertical';
|
|
4197
|
+
type IusDividerVariant = 'solid' | 'dashed';
|
|
4198
|
+
type IusDividerTextAlign = 'start' | 'center' | 'end';
|
|
3538
4199
|
/**
|
|
3539
|
-
*
|
|
3540
|
-
*
|
|
4200
|
+
* Divider — separador NEUTRO (ng-spec components/data-display/Divider).
|
|
4201
|
+
* Línea fina 1px --ius-neutral-3, horizontal (con etiqueta opcional proyectada)
|
|
4202
|
+
* o vertical (rellena el alto del contenedor). Para separadores con tono
|
|
4203
|
+
* semántico → Alert o borde propio. Sin outputs.
|
|
4204
|
+
*
|
|
4205
|
+
* Etiqueta: contenido proyectado (solo horizontal). textAlign mueve el trazo
|
|
4206
|
+
* corto (stub) al lado del título, como el golden.
|
|
3541
4207
|
*/
|
|
3542
|
-
declare
|
|
4208
|
+
declare class DividerComponent implements AfterViewInit {
|
|
4209
|
+
/** Eje; vertical rellena el alto del contenedor (sin etiqueta). */
|
|
4210
|
+
orientation: IusDividerOrientation;
|
|
4211
|
+
/** dashed = separación suave. */
|
|
4212
|
+
variant: IusDividerVariant;
|
|
4213
|
+
/** Alineación de la etiqueta (solo horizontal con etiqueta). */
|
|
4214
|
+
textAlign: IusDividerTextAlign;
|
|
4215
|
+
private labelWrap;
|
|
4216
|
+
protected readonly hasLabel: _angular_core.WritableSignal<boolean>;
|
|
4217
|
+
ngAfterViewInit(): void;
|
|
4218
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DividerComponent, never>;
|
|
4219
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DividerComponent, "ius-divider", never, { "orientation": { "alias": "orientation"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "textAlign": { "alias": "textAlign"; "required": false; }; }, {}, never, ["*"], true, never>;
|
|
4220
|
+
}
|
|
4221
|
+
|
|
4222
|
+
/** Tratamiento del indicador: punto de color · píldora tonal · píldora neutra. */
|
|
4223
|
+
type IusInsigniaVariant = 'dot' | 'count' | 'count-soft';
|
|
4224
|
+
/** Familia de color: 6 semánticas + 6 frutas categóricas. */
|
|
4225
|
+
type IusInsigniaTone = 'primary' | 'info' | 'success' | 'warning' | 'danger' | 'neutral' | 'durazno' | 'banano' | 'sandia' | 'arandano' | 'uva' | 'aguacate';
|
|
4226
|
+
/** Tamaño. */
|
|
4227
|
+
type IusInsigniaSize = 'small' | 'medium' | 'large';
|
|
3543
4228
|
/**
|
|
3544
|
-
*
|
|
3545
|
-
* 1. `customMap[status]` — extensión en runtime del módulo consumidor;
|
|
3546
|
-
* 2. catálogo central de la entidad;
|
|
3547
|
-
* 3. `null` — entidad o estado desconocido: el consumidor decide (el átomo
|
|
3548
|
-
* `StatusChip` cae a `neutral` con el `status` crudo como rótulo).
|
|
4229
|
+
* Insignia — Ius Design v2 (familia feedback).
|
|
3549
4230
|
*
|
|
3550
|
-
*
|
|
3551
|
-
*
|
|
3552
|
-
*
|
|
3553
|
-
*
|
|
4231
|
+
* Indicador atómico de estado o actividad: punto de color (`dot`) o píldora de
|
|
4232
|
+
* contador (`count` tonal · `count-soft` suave), con `label` opcional al lado.
|
|
4233
|
+
* Display puro — sin outputs. Fuente de verdad: `Insignia.jsx` + `Insignia.d.ts`
|
|
4234
|
+
* + `Insignia.ng-spec.md`.
|
|
4235
|
+
*
|
|
4236
|
+
* Para etiqueta con texto contenedor → Tag; para token removible en un campo →
|
|
4237
|
+
* Chip. La consume MenuItem (badge) y la barra de navegación.
|
|
3554
4238
|
*/
|
|
3555
|
-
declare
|
|
4239
|
+
declare class InsigniaComponent {
|
|
4240
|
+
/** Punto de color · píldora tonal · píldora neutra. */
|
|
4241
|
+
readonly variant: _angular_core.InputSignal<IusInsigniaVariant>;
|
|
4242
|
+
/** Familia de color. */
|
|
4243
|
+
readonly tone: _angular_core.InputSignal<IusInsigniaTone>;
|
|
4244
|
+
/** Tamaño. */
|
|
4245
|
+
readonly size: _angular_core.InputSignal<IusInsigniaSize>;
|
|
4246
|
+
/** Texto junto al indicador (alternativa a proyectar contenido). */
|
|
4247
|
+
readonly label: _angular_core.InputSignal<string | number | undefined>;
|
|
4248
|
+
/** Valor del contador (variantes `count` / `count-soft`). */
|
|
4249
|
+
readonly count: _angular_core.InputSignal<string | number | undefined>;
|
|
4250
|
+
/** Tope antes de mostrar `N+`. */
|
|
4251
|
+
readonly max: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
4252
|
+
/** Halo suave alrededor del punto (solo `dot`). */
|
|
4253
|
+
readonly ring: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4254
|
+
/** Recomendada cuando no hay `label`. */
|
|
4255
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
4256
|
+
/** `count`/`count-soft` renderizan píldora; `dot` renderiza punto. */
|
|
4257
|
+
protected readonly isCount: _angular_core.Signal<boolean>;
|
|
4258
|
+
/** El halo es exclusivo del punto (el golden lo ignora en las píldoras). */
|
|
4259
|
+
protected readonly showRing: _angular_core.Signal<boolean>;
|
|
4260
|
+
/** `count > max` → `${max}+`; los valores string pasan tal cual. */
|
|
4261
|
+
protected readonly displayCount: _angular_core.Signal<string | number | undefined>;
|
|
4262
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<InsigniaComponent, never>;
|
|
4263
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<InsigniaComponent, "ius-insignia", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "count": { "alias": "count"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "ring": { "alias": "ring"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
4264
|
+
}
|
|
4265
|
+
|
|
4266
|
+
/** Contexto de uso: fila de overlay (neutral) · fila del NavRail (verde marca). */
|
|
4267
|
+
type IusMenuItemVariant = 'menu' | 'rail';
|
|
4268
|
+
/** Tamaño de la fila. */
|
|
4269
|
+
type IusMenuItemSize = 'small' | 'medium' | 'large';
|
|
4270
|
+
/** Estado forzado — **solo demos/especímenes del DS**. */
|
|
4271
|
+
type IusMenuItemState = 'hover' | 'pressed';
|
|
3556
4272
|
/**
|
|
3557
|
-
*
|
|
3558
|
-
*
|
|
4273
|
+
* Marca contenido libre al final de la fila (chevron, valor, atajo):
|
|
4274
|
+
* `<ius-menu-item><span iusMenuItemTrailing>⌘K</span></ius-menu-item>`.
|
|
3559
4275
|
*/
|
|
3560
|
-
declare
|
|
4276
|
+
declare class IusMenuItemTrailingDirective {
|
|
4277
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IusMenuItemTrailingDirective, never>;
|
|
4278
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IusMenuItemTrailingDirective, "[iusMenuItemTrailing]", never, {}, {}, never, never, true, never>;
|
|
4279
|
+
}
|
|
3561
4280
|
/**
|
|
3562
|
-
*
|
|
3563
|
-
*
|
|
3564
|
-
*
|
|
4281
|
+
* MenuItem — Ius Design v2 (familia navigation).
|
|
4282
|
+
*
|
|
4283
|
+
* Fila de acción o navegación: ícono + etiqueta + badge/trailing. Unidad
|
|
4284
|
+
* compartida por la superficie **Menu** (overlays) y el **NavRail**:
|
|
4285
|
+
* `variant="menu"` es neutral; `variant="rail"` lleva el ícono verde de marca y
|
|
4286
|
+
* el pressed verde sólido sobre blanco (firma del rail). `danger` (rojo) solo
|
|
4287
|
+
* aplica a `menu` — el caso canónico es «Cerrar sesión».
|
|
4288
|
+
*
|
|
4289
|
+
* Con `href` renderiza `<a>`; si no, `<button type="button">`. Por eso el host
|
|
4290
|
+
* es `display: contents`: el elemento real de la fila (y por tanto el foco, el
|
|
4291
|
+
* `:hover` y la semántica) es el `<a>`/`<button>` interno, tal como el golden.
|
|
4292
|
+
*
|
|
4293
|
+
* Fuente de verdad: `MenuItem.jsx` + `MenuItem.d.ts` + `MenuItem.ng-spec.md`.
|
|
4294
|
+
* Compone Insignia para el badge. Para botón con texto → Button; píldora de
|
|
4295
|
+
* valor → Tag/Chip.
|
|
3565
4296
|
*/
|
|
3566
|
-
declare
|
|
4297
|
+
declare class MenuItemComponent {
|
|
4298
|
+
/** Ícono Material Symbols a la izquierda. */
|
|
4299
|
+
readonly icon: _angular_core.InputSignal<string | undefined>;
|
|
4300
|
+
/** Texto de la fila (alternativa a proyectar contenido). */
|
|
4301
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
4302
|
+
/** `number` → Insignia contador; `true` → punto; `null`/`false` → sin badge. */
|
|
4303
|
+
readonly badge: _angular_core.InputSignal<number | boolean | null | undefined>;
|
|
4304
|
+
/** Contexto de uso (menu neutral · rail verde marca). */
|
|
4305
|
+
readonly variant: _angular_core.InputSignal<IusMenuItemVariant>;
|
|
4306
|
+
/** Tamaño de la fila. */
|
|
4307
|
+
readonly size: _angular_core.InputSignal<IusMenuItemSize>;
|
|
4308
|
+
/** Fondo persistente + `aria-current`. */
|
|
4309
|
+
readonly selected: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4310
|
+
/** Fila inerte. */
|
|
4311
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4312
|
+
/** Acción destructiva (rojo). Solo `variant="menu"`. */
|
|
4313
|
+
readonly danger: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4314
|
+
/** Estado forzado — **solo demos**. */
|
|
4315
|
+
readonly state: _angular_core.InputSignal<IusMenuItemState | undefined>;
|
|
4316
|
+
/** Renderiza la fila como `<a href>`. */
|
|
4317
|
+
readonly href: _angular_core.InputSignal<string | undefined>;
|
|
4318
|
+
/** Etiqueta accesible cuando el texto no basta. */
|
|
4319
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
4320
|
+
/** Rol ARIA del elemento de fila — Menu lo fija en `menuitem`. */
|
|
4321
|
+
readonly itemRole: _angular_core.InputSignal<string | undefined>;
|
|
4322
|
+
/** Al activar la fila (espejo de `onClick`). */
|
|
4323
|
+
readonly clicked: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
4324
|
+
protected readonly trailingRef: _angular_core.Signal<IusMenuItemTrailingDirective | undefined>;
|
|
4325
|
+
/** El `<a>` solo se usa si hay `href` y la fila no está deshabilitada. */
|
|
4326
|
+
protected readonly isLink: _angular_core.Signal<boolean>;
|
|
4327
|
+
/** `null`/`undefined`/`false` = sin badge (el 0 sí se muestra, como el golden). */
|
|
4328
|
+
protected readonly hasBadge: _angular_core.Signal<boolean>;
|
|
4329
|
+
/** `true` → punto; número → píldora de contador. */
|
|
4330
|
+
protected readonly badgeVariant: _angular_core.Signal<IusInsigniaVariant>;
|
|
4331
|
+
/** El punto del rail es informativo (azul); en menu avisa (rojo). */
|
|
4332
|
+
protected readonly badgeTone: _angular_core.Signal<IusInsigniaTone>;
|
|
4333
|
+
/** Valor del contador (solo cuando el badge es numérico). */
|
|
4334
|
+
protected readonly badgeCount: _angular_core.Signal<number | undefined>;
|
|
4335
|
+
protected onClick(event: MouseEvent): void;
|
|
4336
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuItemComponent, never>;
|
|
4337
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuItemComponent, "ius-menu-item", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "danger": { "alias": "danger"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "itemRole": { "alias": "itemRole"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, ["trailingRef"], ["*", "[iusMenuItemTrailing]"], true, never>;
|
|
4338
|
+
}
|
|
3567
4339
|
|
|
3568
4340
|
/** Escala de la barra — small ~34 · medium ~40 (default) · large ~48px. */
|
|
3569
4341
|
type IusSearchBarSize = 'small' | 'medium' | 'large';
|
|
@@ -4327,5 +5099,214 @@ declare class SegmentGroupComponent {
|
|
|
4327
5099
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SegmentGroupComponent, "ius-segment-group", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
4328
5100
|
}
|
|
4329
5101
|
|
|
4330
|
-
|
|
4331
|
-
|
|
5102
|
+
/** Eje del reparto — `horizontal` = áreas lado a lado (divisor vertical). */
|
|
5103
|
+
type IusSplitterOrientation = 'horizontal' | 'vertical';
|
|
5104
|
+
/** Color de módulo del divisor en hover / arrastre / foco. */
|
|
5105
|
+
type IusSplitterAccent = 'primary' | 'info' | 'success' | 'warning' | 'danger' | 'neutral' | 'durazno' | 'banano' | 'sandia' | 'arandano' | 'uva' | 'aguacate';
|
|
5106
|
+
/**
|
|
5107
|
+
* Splitter — Ius Design v2.
|
|
5108
|
+
*
|
|
5109
|
+
* Separa dos áreas (horizontal o verticalmente) con un divisor que el usuario
|
|
5110
|
+
* **arrastra**. La primera área es la redimensionable; la segunda ocupa el resto.
|
|
5111
|
+
* El tamaño se mantiene internamente en **porcentaje** (así se adapta solo cuando
|
|
5112
|
+
* el contenedor cambia de tamaño) y se **reporta en píxeles** por `changed` /
|
|
5113
|
+
* `resizeEnd`. Para 3+ áreas, anidar splitters.
|
|
5114
|
+
*
|
|
5115
|
+
* Las dos áreas se proyectan por atributo — el consumidor marca sus dos hijos
|
|
5116
|
+
* (equivale al `children: [first, second]` del golden React):
|
|
5117
|
+
*
|
|
5118
|
+
* ```html
|
|
5119
|
+
* <ius-splitter [min]="160" [minSecond]="240" accent="info">
|
|
5120
|
+
* <aside iusSplitterFirst>…</aside>
|
|
5121
|
+
* <section iusSplitterSecond>…</section>
|
|
5122
|
+
* </ius-splitter>
|
|
5123
|
+
* ```
|
|
5124
|
+
*
|
|
5125
|
+
* Controlado vs no controlado: si `size` está presente el componente es
|
|
5126
|
+
* **controlado** (no muta su porcentaje solo; el consumidor reacciona a
|
|
5127
|
+
* `changed`); si no, `defaultSize` fija el tamaño inicial y el componente se
|
|
5128
|
+
* gestiona internamente.
|
|
5129
|
+
*
|
|
5130
|
+
* Notas de port:
|
|
5131
|
+
* - El host `<ius-splitter>` **es** el div raíz `.ius-splitter` del golden.
|
|
5132
|
+
* - `aria-orientation` es `vertical` cuando `orientation` es `horizontal` (el
|
|
5133
|
+
* divisor es la línea vertical) y viceversa: así está en el golden.
|
|
5134
|
+
* - `aria-valuenow` se publica siempre (0 mientras no se ha medido) para no
|
|
5135
|
+
* dejar el `role="separator"` sin valor en el primer tick.
|
|
5136
|
+
* - El gutter de 1px, el grip de 4x24px y el área de agarre de -6px vienen del
|
|
5137
|
+
* CSS golden y se portan tal cual (px fuera de escala documentados).
|
|
5138
|
+
* - `ResizeObserver` no recalcula el porcentaje (ya es relativo), pero sí
|
|
5139
|
+
* reclampa cuando el nuevo total viola `min`/`minSecond`.
|
|
5140
|
+
*/
|
|
5141
|
+
declare class SplitterComponent implements AfterViewInit, OnChanges, OnDestroy {
|
|
5142
|
+
/** Eje del reparto: `horizontal` = lado a lado (divisor vertical). */
|
|
5143
|
+
orientation: IusSplitterOrientation;
|
|
5144
|
+
/** Tamaño de la primera área (px o `'40%'`). Presente = componente CONTROLADO. */
|
|
5145
|
+
size?: number | string;
|
|
5146
|
+
/** Tamaño inicial de la primera área cuando NO es controlado. */
|
|
5147
|
+
defaultSize: number | string;
|
|
5148
|
+
/** Color de módulo del divisor en hover / arrastre / foco. */
|
|
5149
|
+
accent: IusSplitterAccent;
|
|
5150
|
+
/** Mínimo de la primera área, en px. */
|
|
5151
|
+
min: number;
|
|
5152
|
+
/** Máximo de la primera área, en px. Omitido = contenedor − `minSecond`. */
|
|
5153
|
+
max?: number;
|
|
5154
|
+
/** Mínimo de la segunda área, en px. */
|
|
5155
|
+
minSecond: number;
|
|
5156
|
+
/** Congela el divisor (sin arrastre, sin teclado, sin grip). */
|
|
5157
|
+
disabled: boolean;
|
|
5158
|
+
/** Clase(s) extra para el panel de la primera área. */
|
|
5159
|
+
firstClass?: string;
|
|
5160
|
+
/** Clase(s) extra para el panel de la segunda área. */
|
|
5161
|
+
secondClass?: string;
|
|
5162
|
+
/** Estilos en línea para el panel de la primera área. */
|
|
5163
|
+
firstStyle?: Record<string, string>;
|
|
5164
|
+
/** Estilos en línea para el panel de la segunda área. */
|
|
5165
|
+
secondStyle?: Record<string, string>;
|
|
5166
|
+
/** Tamaño de la primera área en px, durante el arrastre o el teclado. */
|
|
5167
|
+
readonly changed: EventEmitter<number>;
|
|
5168
|
+
/** Tamaño de la primera área en px al terminar el arrastre — para persistir. */
|
|
5169
|
+
readonly resizeEnd: EventEmitter<number>;
|
|
5170
|
+
/** Porcentaje de la primera área; `null` hasta la primera medición. */
|
|
5171
|
+
protected readonly pct: _angular_core.WritableSignal<number | null>;
|
|
5172
|
+
/** Arrastre en curso. */
|
|
5173
|
+
protected readonly dragging: _angular_core.WritableSignal<boolean>;
|
|
5174
|
+
private readonly host;
|
|
5175
|
+
private ro;
|
|
5176
|
+
private viewReady;
|
|
5177
|
+
/** `true` cuando el reparto es lado a lado. */
|
|
5178
|
+
private get horizontal();
|
|
5179
|
+
/** El consumidor manda el tamaño (no se muta el porcentaje en drag/teclado). */
|
|
5180
|
+
private get isControlled();
|
|
5181
|
+
/** Clases del panel de la primera área (base + `firstClass`). */
|
|
5182
|
+
protected get firstClasses(): string;
|
|
5183
|
+
/** Clases del panel de la segunda área (base + `secondClass`). */
|
|
5184
|
+
protected get secondClasses(): string;
|
|
5185
|
+
/** `flex-basis` de la primera área: `%` medido, o el `defaultSize` en crudo. */
|
|
5186
|
+
protected get firstBasis(): string;
|
|
5187
|
+
/** El divisor es la línea perpendicular al eje del reparto (así en el golden). */
|
|
5188
|
+
protected get ariaOrientation(): 'horizontal' | 'vertical';
|
|
5189
|
+
/** Valor del `separator` (porcentaje redondeado). */
|
|
5190
|
+
protected get valueNow(): number;
|
|
5191
|
+
ngAfterViewInit(): void;
|
|
5192
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
5193
|
+
ngOnDestroy(): void;
|
|
5194
|
+
/** Tamaño útil del host en el eje del reparto. */
|
|
5195
|
+
private measure;
|
|
5196
|
+
/** Deriva el porcentaje inicial desde `size` (controlado) o `defaultSize`. */
|
|
5197
|
+
private sync;
|
|
5198
|
+
/** Acota px de la primera área respetando `min`, `max` y `minSecond`. */
|
|
5199
|
+
private clampPx;
|
|
5200
|
+
/**
|
|
5201
|
+
* El contenedor cambió de tamaño: el porcentaje sigue siendo válido, pero el
|
|
5202
|
+
* nuevo total puede violar `min`/`minSecond` → se reclampa.
|
|
5203
|
+
*/
|
|
5204
|
+
private onHostResize;
|
|
5205
|
+
/** Traduce la posición del puntero a tamaño de la primera área y lo emite. */
|
|
5206
|
+
private applyFromPointer;
|
|
5207
|
+
protected onPointerDown(event: PointerEvent): void;
|
|
5208
|
+
protected onPointerMove(event: PointerEvent): void;
|
|
5209
|
+
protected onPointerUp(event: PointerEvent): void;
|
|
5210
|
+
protected onKeyDown(event: KeyboardEvent): void;
|
|
5211
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SplitterComponent, never>;
|
|
5212
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SplitterComponent, "ius-splitter", never, { "orientation": { "alias": "orientation"; "required": false; }; "size": { "alias": "size"; "required": false; }; "defaultSize": { "alias": "defaultSize"; "required": false; }; "accent": { "alias": "accent"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "minSecond": { "alias": "minSecond"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "firstClass": { "alias": "firstClass"; "required": false; }; "secondClass": { "alias": "secondClass"; "required": false; }; "firstStyle": { "alias": "firstStyle"; "required": false; }; "secondStyle": { "alias": "secondStyle"; "required": false; }; }, { "changed": "changed"; "resizeEnd": "resizeEnd"; }, never, ["[iusSplitterFirst]", "[iusSplitterSecond]"], true, never>;
|
|
5213
|
+
static ngAcceptInputType_min: unknown;
|
|
5214
|
+
static ngAcceptInputType_max: unknown;
|
|
5215
|
+
static ngAcceptInputType_minSecond: unknown;
|
|
5216
|
+
static ngAcceptInputType_disabled: unknown;
|
|
5217
|
+
}
|
|
5218
|
+
|
|
5219
|
+
/**
|
|
5220
|
+
* Color de módulo del divisor del nav (6 semánticos + 6 frutas).
|
|
5221
|
+
* Reusa el contrato del Splitter: es el mismo `accent` que se le pasa.
|
|
5222
|
+
*/
|
|
5223
|
+
type IusAppLayoutAccent = IusSplitterAccent;
|
|
5224
|
+
/**
|
|
5225
|
+
* AppLayout — Ius Design v2.
|
|
5226
|
+
*
|
|
5227
|
+
* Cáscara estructural del ecosistema, de alto completo del viewport: HeaderBar
|
|
5228
|
+
* arriba; debajo, la fila `rail` (NavRail de módulos **o** SettingsNav de
|
|
5229
|
+
* configuración del ecosistema — mutuamente excluyentes) · `nav` (EntityNavigator
|
|
5230
|
+
* **o** SettingsNav de módulo, convive con el rail) · contenido con **scroll
|
|
5231
|
+
* propio** · `overlay` (UserMenu, sheets) por encima de todo.
|
|
5232
|
+
*
|
|
5233
|
+
* Es **solo estructura por slots**: el cambio de módulo y los menús los maneja
|
|
5234
|
+
* el consumidor. Los slots son agnósticos (no imponen qué componente va dentro).
|
|
5235
|
+
*
|
|
5236
|
+
* Slots (por atributo): `header`, `rail`, `nav`, `overlay` y el contenido por
|
|
5237
|
+
* defecto (`children` del golden):
|
|
5238
|
+
*
|
|
5239
|
+
* ```html
|
|
5240
|
+
* <ius-app-layout resizableNav navAccent="uva" (navResizeEnd)="guardar($event)">
|
|
5241
|
+
* <ius-header-bar header />
|
|
5242
|
+
* <nav rail>…</nav>
|
|
5243
|
+
* <aside nav>…</aside>
|
|
5244
|
+
* <section>… contenido del módulo …</section>
|
|
5245
|
+
* <ius-user-menu overlay />
|
|
5246
|
+
* </ius-app-layout>
|
|
5247
|
+
* ```
|
|
5248
|
+
*
|
|
5249
|
+
* Notas de port:
|
|
5250
|
+
* - El host `<ius-app-layout>` **es** el div raíz `.ius-applayout` del golden.
|
|
5251
|
+
* - Los slots `[nav]` y el contenido aparecen en **dos ramas** del golden (con y
|
|
5252
|
+
* sin Splitter), pero un `<ng-content>` con el mismo selector solo puede vivir
|
|
5253
|
+
* una vez a la vez → se declaran en `<ng-template>` (`#navSlot` / `#mainSlot`)
|
|
5254
|
+
* y se instancian con `NgTemplateOutlet`, igual que el golden reusa su
|
|
5255
|
+
* `mainEl`. Las ramas son `@if`/`@else`, así que nunca hay dos instancias
|
|
5256
|
+
* simultáneas del mismo `ng-content`.
|
|
5257
|
+
* - Angular no puede saber si `[nav]` trae contenido antes de renderizar, así que
|
|
5258
|
+
* la rama del Splitter se decide **solo** con `resizableNav && !navCollapsed`
|
|
5259
|
+
* (el golden añade `nav != null`, guarda que aquí no aplica). El consumidor
|
|
5260
|
+
* activa `resizableNav` únicamente cuando proyecta algo en `[nav]` — que es el
|
|
5261
|
+
* uso real. Sin `nav`, la rama no-splitter renderiza el envoltorio
|
|
5262
|
+
* `.ius-applayout__nav` vacío: con `flex: 0 0 auto` colapsa a 0px, así que es
|
|
5263
|
+
* equivalente visual al condicional del golden.
|
|
5264
|
+
* - Por lo mismo, `.ius-applayout__header` y `.ius-applayout__rail` se renderizan
|
|
5265
|
+
* siempre (vacíos colapsan a 0). El `overlay` se proyecta directo, sin
|
|
5266
|
+
* envoltorio, como en el golden.
|
|
5267
|
+
* - El segundo área del Splitter necesita un **elemento real** que reciba el
|
|
5268
|
+
* atributo de proyección (`<ng-container>` no puede llevarlo) → se añade el
|
|
5269
|
+
* envoltorio `.ius-applayout__splitsecond`, propio del port, con estilos que
|
|
5270
|
+
* dejan al `<main>` llenar el panel.
|
|
5271
|
+
* - `navCollapsed` no fija ancho aquí: el golden solo omite el Splitter y el
|
|
5272
|
+
* riel angosto lo define el propio componente del slot `[nav]`
|
|
5273
|
+
* (`.ius-applayout__nav` es `flex: 0 0 auto`, respeta el ancho intrínseco).
|
|
5274
|
+
* - El `pane--first` del Splitter trae `overflow: auto` de su CSS golden; es
|
|
5275
|
+
* correcto y esperado, no se altera.
|
|
5276
|
+
* - `fill` viene en `true` (100vh). Para desactivarlo se usa `[fill]="false"`.
|
|
5277
|
+
*/
|
|
5278
|
+
declare class AppLayoutComponent {
|
|
5279
|
+
/** Envuelve el slot `[nav]` en un Splitter arrastrable. */
|
|
5280
|
+
resizableNav: boolean;
|
|
5281
|
+
/** Nav colapsado (riel angosto): omite el Splitter y usa el ancho del propio nav. */
|
|
5282
|
+
navCollapsed: boolean;
|
|
5283
|
+
/** Ancho inicial del nav redimensionable (número → px, o `'300px'` / `'22%'`). */
|
|
5284
|
+
navWidth: number | string;
|
|
5285
|
+
/** Mínimo del nav, en px. */
|
|
5286
|
+
navMin: number;
|
|
5287
|
+
/** Máximo del nav, en px. */
|
|
5288
|
+
navMax: number;
|
|
5289
|
+
/** Mínimo del contenido (segunda área), en px. */
|
|
5290
|
+
navMinSecond: number;
|
|
5291
|
+
/** Color del divisor del nav = color del módulo activo. */
|
|
5292
|
+
navAccent: IusAppLayoutAccent;
|
|
5293
|
+
/** Ocupa el alto completo del viewport (100vh). Desactivar con `[fill]="false"`. */
|
|
5294
|
+
fill: boolean;
|
|
5295
|
+
/** Ancho final del nav en px al soltar el divisor — para persistirlo. */
|
|
5296
|
+
readonly navResizeEnd: EventEmitter<number>;
|
|
5297
|
+
/** Fondo del panel de contenido (equivale al `secondStyle` del golden). */
|
|
5298
|
+
protected readonly mainPaneStyle: Record<string, string>;
|
|
5299
|
+
/** El nav va dentro del Splitter solo si es redimensionable y no está colapsado. */
|
|
5300
|
+
protected get splitNav(): boolean;
|
|
5301
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppLayoutComponent, never>;
|
|
5302
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppLayoutComponent, "ius-app-layout", never, { "resizableNav": { "alias": "resizableNav"; "required": false; }; "navCollapsed": { "alias": "navCollapsed"; "required": false; }; "navWidth": { "alias": "navWidth"; "required": false; }; "navMin": { "alias": "navMin"; "required": false; }; "navMax": { "alias": "navMax"; "required": false; }; "navMinSecond": { "alias": "navMinSecond"; "required": false; }; "navAccent": { "alias": "navAccent"; "required": false; }; "fill": { "alias": "fill"; "required": false; }; }, { "navResizeEnd": "navResizeEnd"; }, never, ["[header]", "[rail]", "[overlay]", "[nav]", "*"], true, never>;
|
|
5303
|
+
static ngAcceptInputType_resizableNav: unknown;
|
|
5304
|
+
static ngAcceptInputType_navCollapsed: unknown;
|
|
5305
|
+
static ngAcceptInputType_navMin: unknown;
|
|
5306
|
+
static ngAcceptInputType_navMax: unknown;
|
|
5307
|
+
static ngAcceptInputType_navMinSecond: unknown;
|
|
5308
|
+
static ngAcceptInputType_fill: unknown;
|
|
5309
|
+
}
|
|
5310
|
+
|
|
5311
|
+
export { AlertComponent, AppLayoutComponent, AvatarComponent, ButtonComponent, CaptchaFieldComponent, CarouselComponent, CheckboxComponent, ChipComponent, CircularProgressComponent, CodeFieldComponent, CountdownComponent, CountdownRingComponent, DescriptionListComponent, DividerComponent, DrawerComponent, DropdownComponent, EleniaBubbleComponent, EleniaOrbComponent, EmptyStateComponent, FlexComponent, HeaderBarComponent, ILLUSTRATIONS, ILLUSTRATION_ALIAS, ILLUSTRATION_NAMES, IUS_FILTER_OPERATORS, IconButtonComponent, IllustrationComponent, InsigniaComponent, IusAlertActionsDirective, IusAlertTrailingDirective, IusDrawerFooterDirective, IusDrawerHeaderActionsDirective, IusDrawerTitleDirective, IusDropdownTriggerDirective, IusListCardLeadingDirective, IusListCardOverlineDirective, IusListCardParagraphDirective, IusListCardSubtitleDirective, IusListCardTitleDirective, IusListViewFiltersDirective, IusListViewFooterEndDirective, IusListViewFooterStartDirective, IusListViewHeaderEndDirective, IusListViewHeaderStartDirective, IusListViewToolbarDirective, IusMenuItemTrailingDirective, IusModalFooterDirective, IusPersonItemNameDirective, IusPersonItemTrailingDirective, IusTagPrefixDirective, IusTagSuffixDirective, ListCardComponent, ListViewComponent, LoadingComponent, LoadingMarkComponent, MenuComponent, MenuItemComponent, ModalComponent, MultiTextFieldComponent, NavUserComponent, ORB_PERIODS, OauthButtonComponent, OptionItemComponent, PersonItemComponent, PersonPickerComponent, PopoverComponent, QueryBuilderComponent, STATUS_TONES, STATUS_VOCAB, STATUS_VOCABS, STATUS_VOCABS_PENDING, ScrollAreaComponent, SearchBarComponent, SegmentGroupComponent, SegmentedControlComponent, SelectComponent, ShowMoreComponent, SplitterComponent, StatusChipComponent, StatusStateComponent, TagComponent, TextAreaComponent, TextButtonComponent, TextComponent, TextFieldComponent, TooltipComponent, WizardComponent, WizardController, WizardNavComponent, createWizard, pose, poseIso, poseSpeaking, poseThinking, renderCubeSvg, resolveIllustration, resolveStatus, statusOptions, statusOrder, statusToneVars, statusVocab, voiceEnv };
|
|
5312
|
+
export type { ActuacionStatus, AlertSize, AlertTone, AlertVariant, CountdownDirection, CountdownFormat, CountdownRingSize, CountdownRingTone, DescriptionListItem, DescriptionListLayout, DescriptionListSize, DescriptionListValueClick, GestionStatus, IllustrationEntry, IllustrationName, IllustrationSize, IusAppLayoutAccent, IusAvatarColor, IusAvatarShape, IusAvatarSize, IusButtonActionResult, IusButtonSize, IusButtonStatus, IusButtonType, IusButtonVariant, IusCaptchaAppearance, IusCaptchaFieldHandle, IusCaptchaProvider, IusCaptchaSize, IusCaptchaState, IusCaptchaTheme, IusCarouselImage, IusCarouselImageInput, IusCarouselObjectFit, IusCarouselOrder, IusCarouselOverlay, IusCarouselTransition, IusCheckboxLabelPosition, IusCheckboxSize, IusChipSize, IusChipState, IusCircularProgressSize, IusCircularProgressTone, IusCodeFieldSize, IusDividerOrientation, IusDividerTextAlign, IusDividerVariant, IusDrawerSide, IusDrawerSize, IusDropdownItem, IusDropdownTone, IusDropdownVariant, IusEleniaBubblePosition, IusEleniaBubbleSize, IusEleniaOrbMood, IusEleniaOrbSurface, IusEmptyStateAction, IusEmptyStateSize, IusEmptyStateTone, IusEmptyStateVariant, IusFilterField, IusFilterFieldOption, IusFilterFieldType, IusFilterRule, IusFilterValue, IusFlexAlign, IusFlexDirection, IusFlexGap, IusFlexJustify, IusIconButtonShape, IusIconButtonSize, IusIconButtonVariant, IusInsigniaSize, IusInsigniaTone, IusInsigniaVariant, IusListCardAction, IusListCardField, IusListCardMarker, IusListCardMenuItem, IusListCardSize, IusListCardStatus, IusListCardTag, IusListCardTone, IusListViewAction, IusListViewSize, IusListViewSortOption, IusLoadingMarkSurface, IusLoadingVariant, IusMenuItemSize, IusMenuItemState, IusMenuItemVariant, IusMenuOption, IusModalCloseReason, IusModalIconTone, IusModalSize, IusMultiTextFieldSize, IusMultiTextFieldSlot, IusMultiTextFieldState, IusNavUserAccount, IusNavUserLayout, IusNavUserUser, IusOAuthButtonSize, IusOAuthButtonType, IusOAuthProvider, IusOptionItemSize, IusOptionItemState, IusPersonId, IusPersonItemAction, IusPersonItemSize, IusPersonItemState, IusPersonItemVariant, IusPersonOption, IusPersonPickerSelectedContext, IusPopoverPadding, IusPopoverPlacement, IusPopoverTrigger, IusQueryBuilderSize, IusScrollAxis, IusScrollSize, IusSearchBarSize, IusSearchBarState, IusSegmentedSize, IusSegmentedVariant, IusSelectCreateFactory, IusSelectSize, IusSelectState, IusSelectValue, IusShowMoreAlign, IusSplitterAccent, IusSplitterOrientation, IusStatusChipSize, IusStatusChipTone, IusStatusKind, IusTagRole, IusTagShape, IusTagSize, IusTagState, IusTagTone, IusTagVariant, IusTextAlign, IusTextAreaSize, IusTextAreaState, IusTextButtonSize, IusTextButtonType, IusTextColor, IusTextFieldSize, IusTextFieldType, IusTextTag, IusTextVariant, IusTextWeight, IusTooltipTrigger, OrbMood, OrbPose, SegmentedOption, SelectOption, SelectOptionGroup, StatusMeta, StatusOption, StatusTone, StatusToneVars, StatusVocabMap, StatusVocabName, UseWizardOptions, WizardApi, WizardStep };
|