@moni-labs/moni-ui 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +5230 -1007
- package/dist/components/_base/moni-element.d.ts +16 -9
- package/dist/components/_base/moni-element.d.ts.map +1 -1
- package/dist/components/_base/moni-element.js +63 -9
- package/dist/components/index.js +2 -2
- package/dist/components/loading-shapes.d.ts +19 -0
- package/dist/components/loading-shapes.d.ts.map +1 -1
- package/dist/components/loading-shapes.js +19 -0
- package/dist/components/moni-app-bar.d.ts +72 -62
- package/dist/components/moni-app-bar.d.ts.map +1 -1
- package/dist/components/moni-app-bar.js +72 -62
- package/dist/components/moni-badge.d.ts +64 -65
- package/dist/components/moni-badge.d.ts.map +1 -1
- package/dist/components/moni-badge.js +64 -66
- package/dist/components/moni-bottom-sheet.d.ts +129 -61
- package/dist/components/moni-bottom-sheet.d.ts.map +1 -1
- package/dist/components/moni-bottom-sheet.js +217 -131
- package/dist/components/moni-button-group.d.ts +107 -29
- package/dist/components/moni-button-group.d.ts.map +1 -1
- package/dist/components/moni-button-group.js +107 -29
- package/dist/components/moni-button-segment.d.ts +53 -12
- package/dist/components/moni-button-segment.d.ts.map +1 -1
- package/dist/components/moni-button-segment.js +53 -12
- package/dist/components/moni-button.d.ts +116 -38
- package/dist/components/moni-button.d.ts.map +1 -1
- package/dist/components/moni-button.js +128 -38
- package/dist/components/moni-card.d.ts +68 -50
- package/dist/components/moni-card.d.ts.map +1 -1
- package/dist/components/moni-card.js +68 -50
- package/dist/components/moni-carousel.d.ts +484 -53
- package/dist/components/moni-carousel.d.ts.map +1 -1
- package/dist/components/moni-carousel.js +1024 -245
- package/dist/components/moni-checkbox.d.ts +49 -46
- package/dist/components/moni-checkbox.d.ts.map +1 -1
- package/dist/components/moni-checkbox.js +55 -48
- package/dist/components/moni-chip.d.ts +100 -33
- package/dist/components/moni-chip.d.ts.map +1 -1
- package/dist/components/moni-chip.js +104 -34
- package/dist/components/moni-color-field.d.ts +99 -24
- package/dist/components/moni-color-field.d.ts.map +1 -1
- package/dist/components/moni-color-field.js +99 -24
- package/dist/components/moni-context-menu.d.ts +72 -26
- package/dist/components/moni-context-menu.d.ts.map +1 -1
- package/dist/components/moni-context-menu.js +76 -30
- package/dist/components/moni-dialog.d.ts +84 -59
- package/dist/components/moni-dialog.d.ts.map +1 -1
- package/dist/components/moni-dialog.js +105 -58
- package/dist/components/moni-divider.d.ts +39 -27
- package/dist/components/moni-divider.d.ts.map +1 -1
- package/dist/components/moni-divider.js +42 -30
- package/dist/components/moni-expansion.d.ts +32 -22
- package/dist/components/moni-expansion.d.ts.map +1 -1
- package/dist/components/moni-expansion.js +32 -22
- package/dist/components/moni-fab-menu.d.ts +61 -23
- package/dist/components/moni-fab-menu.d.ts.map +1 -1
- package/dist/components/moni-fab-menu.js +69 -31
- package/dist/components/moni-fab.d.ts +86 -28
- package/dist/components/moni-fab.d.ts.map +1 -1
- package/dist/components/moni-fab.js +92 -34
- package/dist/components/moni-file-field.d.ts +118 -30
- package/dist/components/moni-file-field.d.ts.map +1 -1
- package/dist/components/moni-file-field.js +118 -30
- package/dist/components/moni-icon.d.ts +40 -35
- package/dist/components/moni-icon.d.ts.map +1 -1
- package/dist/components/moni-icon.js +43 -38
- package/dist/components/moni-list-item.d.ts +46 -33
- package/dist/components/moni-list-item.d.ts.map +1 -1
- package/dist/components/moni-list-item.js +61 -41
- package/dist/components/moni-list.d.ts +30 -20
- package/dist/components/moni-list.d.ts.map +1 -1
- package/dist/components/moni-list.js +36 -21
- package/dist/components/moni-loading-indicator.d.ts +54 -22
- package/dist/components/moni-loading-indicator.d.ts.map +1 -1
- package/dist/components/moni-loading-indicator.js +54 -22
- package/dist/components/moni-menu-item.d.ts +23 -16
- package/dist/components/moni-menu-item.d.ts.map +1 -1
- package/dist/components/moni-menu-item.js +23 -16
- package/dist/components/moni-menu.d.ts +81 -28
- package/dist/components/moni-menu.d.ts.map +1 -1
- package/dist/components/moni-menu.js +81 -30
- package/dist/components/moni-morph-modal.d.ts +141 -0
- package/dist/components/moni-morph-modal.d.ts.map +1 -1
- package/dist/components/moni-morph-modal.js +295 -58
- package/dist/components/moni-nav-item.d.ts +59 -29
- package/dist/components/moni-nav-item.d.ts.map +1 -1
- package/dist/components/moni-nav-item.js +59 -29
- package/dist/components/moni-nav.d.ts +94 -35
- package/dist/components/moni-nav.d.ts.map +1 -1
- package/dist/components/moni-nav.js +94 -35
- package/dist/components/moni-progress.d.ts +99 -55
- package/dist/components/moni-progress.d.ts.map +1 -1
- package/dist/components/moni-progress.js +99 -55
- package/dist/components/moni-radio.d.ts +62 -50
- package/dist/components/moni-radio.d.ts.map +1 -1
- package/dist/components/moni-radio.js +65 -52
- package/dist/components/moni-ripple.d.ts +74 -59
- package/dist/components/moni-ripple.d.ts.map +1 -1
- package/dist/components/moni-ripple.js +74 -59
- package/dist/components/moni-segmented-button.d.ts +91 -16
- package/dist/components/moni-segmented-button.d.ts.map +1 -1
- package/dist/components/moni-segmented-button.js +94 -17
- package/dist/components/moni-select-option.d.ts +30 -23
- package/dist/components/moni-select-option.d.ts.map +1 -1
- package/dist/components/moni-select-option.js +30 -23
- package/dist/components/moni-select.d.ts +300 -35
- package/dist/components/moni-select.d.ts.map +1 -1
- package/dist/components/moni-select.js +323 -39
- package/dist/components/moni-side-sheet.d.ts +94 -32
- package/dist/components/moni-side-sheet.d.ts.map +1 -1
- package/dist/components/moni-side-sheet.js +94 -32
- package/dist/components/moni-slider.d.ts +152 -41
- package/dist/components/moni-slider.d.ts.map +1 -1
- package/dist/components/moni-slider.js +154 -42
- package/dist/components/moni-snackbar.d.ts +53 -43
- package/dist/components/moni-snackbar.d.ts.map +1 -1
- package/dist/components/moni-snackbar.js +53 -43
- package/dist/components/moni-split-button.d.ts +63 -18
- package/dist/components/moni-split-button.d.ts.map +1 -1
- package/dist/components/moni-split-button.js +63 -18
- package/dist/components/moni-step.d.ts +36 -24
- package/dist/components/moni-step.d.ts.map +1 -1
- package/dist/components/moni-step.js +41 -29
- package/dist/components/moni-stepper.d.ts +64 -27
- package/dist/components/moni-stepper.d.ts.map +1 -1
- package/dist/components/moni-stepper.js +72 -34
- package/dist/components/moni-switch.d.ts +57 -46
- package/dist/components/moni-switch.d.ts.map +1 -1
- package/dist/components/moni-switch.js +59 -47
- package/dist/components/moni-tab.d.ts +26 -18
- package/dist/components/moni-tab.d.ts.map +1 -1
- package/dist/components/moni-tab.js +29 -21
- package/dist/components/moni-tabs.d.ts +34 -28
- package/dist/components/moni-tabs.d.ts.map +1 -1
- package/dist/components/moni-tabs.js +34 -28
- package/dist/components/moni-text-field.d.ts +139 -29
- package/dist/components/moni-text-field.d.ts.map +1 -1
- package/dist/components/moni-text-field.js +157 -31
- package/dist/components/moni-textarea.d.ts +127 -29
- package/dist/components/moni-textarea.d.ts.map +1 -1
- package/dist/components/moni-textarea.js +131 -32
- package/dist/components/moni-time-picker.d.ts +114 -24
- package/dist/components/moni-time-picker.d.ts.map +1 -1
- package/dist/components/moni-time-picker.js +127 -33
- package/dist/components/moni-toolbar.d.ts +37 -23
- package/dist/components/moni-toolbar.d.ts.map +1 -1
- package/dist/components/moni-toolbar.js +37 -23
- package/dist/components/moni-tooltip.d.ts +100 -36
- package/dist/components/moni-tooltip.d.ts.map +1 -1
- package/dist/components/moni-tooltip.js +104 -40
- package/dist/components/moni-typography.d.ts +68 -30
- package/dist/components/moni-typography.d.ts.map +1 -1
- package/dist/components/moni-typography.js +70 -32
- package/dist/styles/tokens.css +7 -7
- package/dist/types/events.d.ts +17 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +1 -0
- package/dist/utils/event-emitter.d.ts +13 -0
- package/dist/utils/event-emitter.d.ts.map +1 -0
- package/dist/utils/event-emitter.js +13 -0
- package/package.json +2 -1
- package/src/components/_base/moni-element.ts +73 -9
- package/src/components/index.ts +2 -2
- package/src/components/loading-shapes.ts +19 -0
- package/src/components/moni-app-bar.test.ts +10 -10
- package/src/components/moni-app-bar.ts +72 -62
- package/src/components/moni-badge.ts +64 -66
- package/src/components/moni-bottom-sheet.test.ts +39 -45
- package/src/components/moni-bottom-sheet.ts +222 -131
- package/src/components/moni-button-group.test.ts +14 -14
- package/src/components/moni-button-group.ts +107 -29
- package/src/components/moni-button-segment.ts +53 -12
- package/src/components/moni-button.test.ts +28 -26
- package/src/components/moni-button.ts +139 -39
- package/src/components/moni-card.test.ts +6 -6
- package/src/components/moni-card.ts +70 -50
- package/src/components/moni-carousel.test.ts +12 -12
- package/src/components/moni-carousel.ts +1129 -269
- package/src/components/moni-checkbox.test.ts +7 -7
- package/src/components/moni-checkbox.ts +62 -48
- package/src/components/moni-chip.test.ts +17 -17
- package/src/components/moni-chip.ts +112 -34
- package/src/components/moni-color-field.test.ts +5 -5
- package/src/components/moni-color-field.ts +108 -24
- package/src/components/moni-context-menu.test.ts +11 -11
- package/src/components/moni-context-menu.ts +76 -30
- package/src/components/moni-dialog.ts +108 -59
- package/src/components/moni-divider.test.ts +4 -4
- package/src/components/moni-divider.ts +42 -30
- package/src/components/moni-expansion.ts +32 -22
- package/src/components/moni-fab-menu.test.ts +11 -11
- package/src/components/moni-fab-menu.ts +69 -31
- package/src/components/moni-fab.test.ts +16 -16
- package/src/components/moni-fab.ts +100 -34
- package/src/components/moni-file-field.test.ts +8 -8
- package/src/components/moni-file-field.ts +132 -30
- package/src/components/moni-icon.test.ts +11 -11
- package/src/components/moni-icon.ts +43 -38
- package/src/components/moni-list-item.test.ts +10 -10
- package/src/components/moni-list-item.ts +61 -41
- package/src/components/moni-list.ts +37 -21
- package/src/components/moni-loading-indicator.test.ts +3 -3
- package/src/components/moni-loading-indicator.ts +54 -22
- package/src/components/moni-menu-item.ts +23 -16
- package/src/components/moni-menu.test.ts +7 -7
- package/src/components/moni-menu.ts +87 -30
- package/src/components/moni-morph-modal.test.ts +18 -17
- package/src/components/moni-morph-modal.ts +327 -60
- package/src/components/moni-nav-item.ts +59 -29
- package/src/components/moni-nav.test.ts +11 -11
- package/src/components/moni-nav.ts +94 -35
- package/src/components/moni-progress.test.ts +9 -9
- package/src/components/moni-progress.ts +100 -56
- package/src/components/moni-radio.test.ts +8 -8
- package/src/components/moni-radio.ts +71 -51
- package/src/components/moni-ripple.ts +74 -59
- package/src/components/moni-segmented-button.test.ts +4 -4
- package/src/components/moni-segmented-button.ts +94 -17
- package/src/components/moni-select-option.ts +30 -23
- package/src/components/moni-select.test.ts +11 -11
- package/src/components/moni-select.ts +361 -50
- package/src/components/moni-side-sheet.test.ts +7 -7
- package/src/components/moni-side-sheet.ts +94 -32
- package/src/components/moni-slider.test.ts +7 -7
- package/src/components/moni-slider.ts +165 -42
- package/src/components/moni-snackbar.test.ts +8 -8
- package/src/components/moni-snackbar.ts +53 -43
- package/src/components/moni-split-button.ts +63 -18
- package/src/components/moni-step.test.ts +7 -7
- package/src/components/moni-step.ts +41 -29
- package/src/components/moni-stepper.test.ts +7 -7
- package/src/components/moni-stepper.ts +72 -34
- package/src/components/moni-switch.test.ts +12 -12
- package/src/components/moni-switch.ts +66 -47
- package/src/components/moni-tab.test.ts +5 -5
- package/src/components/moni-tab.ts +29 -21
- package/src/components/moni-tabs.ts +34 -28
- package/src/components/moni-text-field.test.ts +13 -13
- package/src/components/moni-text-field.ts +181 -30
- package/src/components/moni-textarea.test.ts +17 -17
- package/src/components/moni-textarea.ts +155 -31
- package/src/components/moni-time-picker.test.ts +5 -5
- package/src/components/moni-time-picker.ts +128 -33
- package/src/components/moni-toolbar.test.ts +8 -8
- package/src/components/moni-toolbar.ts +37 -23
- package/src/components/moni-tooltip.test.ts +15 -15
- package/src/components/moni-tooltip.ts +107 -40
- package/src/components/moni-typography.test.ts +10 -10
- package/src/components/moni-typography.ts +73 -32
- package/src/styles/tokens.css +7 -7
- package/src/types/events.ts +17 -0
- package/src/utils/event-emitter.ts +26 -0
|
@@ -6,84 +6,148 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { MoniElement } from './_base/index.js';
|
|
8
8
|
/**
|
|
9
|
-
* Material Design 3 Tooltip
|
|
9
|
+
* Componente Material Design 3 Tooltip (Información sobre herramientas).
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* Los tooltips proporcionan etiquetas de texto contextual o contenido enriquecido que aparecen cuando
|
|
12
|
+
* los usuarios pasan el cursor por encima, enfocan o tocan un elemento. Muestran información
|
|
13
|
+
* complementaria que ayuda a los usuarios a entender los elementos de la interfaz sin
|
|
14
|
+
* ocupar permanentemente espacio en la pantalla.
|
|
15
15
|
*
|
|
16
|
-
* **
|
|
16
|
+
* **Referencia a la especificación M3:** `m3-docs/components/tooltips/specs.md`
|
|
17
17
|
*
|
|
18
|
-
* **
|
|
19
|
-
* - **Plain** (
|
|
20
|
-
* - **Rich** (`rich`
|
|
21
|
-
*
|
|
18
|
+
* **Tipos:**
|
|
19
|
+
* - **Plain** (por defecto) — Etiqueta solo de texto para descripciones simples (máx. 1 línea).
|
|
20
|
+
* - **Rich** (atributo `rich`) — Contenido HTML que incluye texto formateado,
|
|
21
|
+
* enlaces e iconos. Los tooltips enriquecidos pueden contener múltiples líneas y enlaces de acción.
|
|
22
22
|
*
|
|
23
|
-
* **Placements:**
|
|
24
|
-
* - `top` (
|
|
23
|
+
* **Ubicaciones (Placements):**
|
|
24
|
+
* - `top` (por defecto), `top-start`, `top-end`
|
|
25
25
|
* - `bottom`, `bottom-start`, `bottom-end`
|
|
26
26
|
*
|
|
27
|
-
* **Trigger
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* `:focus-within`
|
|
27
|
+
* **Mecanismo de activación (Trigger):**
|
|
28
|
+
* El tooltip usa `position: absolute` dentro del elemento padre. El padre
|
|
29
|
+
* debe tener `position: relative` (establecido automáticamente vía `connectedCallback`).
|
|
30
|
+
* Los eventos hover/focus en el padre activan los selectores CSS `:hover` y
|
|
31
|
+
* `:focus-within` del tooltip, los cuales impulsan la transición de mostrar/ocultar.
|
|
32
32
|
*
|
|
33
|
-
* **
|
|
34
|
-
* -
|
|
35
|
-
* -
|
|
36
|
-
*
|
|
37
|
-
* `tooltipId`
|
|
38
|
-
* -
|
|
33
|
+
* **Accesibilidad:**
|
|
34
|
+
* - El tooltip tiene `role="tooltip"`.
|
|
35
|
+
* - Para accesibilidad por teclado, el padre debe tener `aria-describedby`
|
|
36
|
+
* apuntando al atributo `id` del tooltip. El componente expone un
|
|
37
|
+
* getter `tooltipId` para este propósito.
|
|
38
|
+
* - La tecla `Escape` cierra los tooltips enriquecidos.
|
|
39
39
|
*
|
|
40
40
|
* @example
|
|
41
41
|
* ```html
|
|
42
|
-
* <!-- Plain
|
|
42
|
+
* <!-- Tooltip simple (Plain) -->
|
|
43
43
|
* <button aria-describedby="save-tip">
|
|
44
|
-
*
|
|
44
|
+
* Guardar
|
|
45
45
|
* <moni-tooltip id="save-tip" text="Ctrl+S"></moni-tooltip>
|
|
46
46
|
* </button>
|
|
47
47
|
*
|
|
48
|
-
* <!-- Rich
|
|
48
|
+
* <!-- Tooltip enriquecido (Rich) -->
|
|
49
49
|
* <button>
|
|
50
|
-
*
|
|
50
|
+
* Filtrar
|
|
51
51
|
* <moni-tooltip rich position="bottom">
|
|
52
|
-
* <strong>
|
|
53
|
-
* <p>
|
|
52
|
+
* <strong>Filtrar por fecha</strong>
|
|
53
|
+
* <p>Selecciona un rango de fechas para filtrar resultados.</p>
|
|
54
54
|
* </moni-tooltip>
|
|
55
55
|
* </button>
|
|
56
56
|
* ```
|
|
57
57
|
*
|
|
58
|
-
* @slot default -
|
|
58
|
+
* @slot default - Contenido enriquecido para el cuerpo del tooltip (solo usado cuando `rich=true`).
|
|
59
59
|
*
|
|
60
|
-
* @csspart tooltip -
|
|
60
|
+
* @csspart tooltip - El elemento contenedor del tooltip.
|
|
61
61
|
*/
|
|
62
62
|
export declare class MoniTooltip extends MoniElement {
|
|
63
|
+
/**
|
|
64
|
+
* Contenido de texto simple para mostrar. Utilizado cuando `rich` es falso.
|
|
65
|
+
* @type {string}
|
|
66
|
+
*/
|
|
63
67
|
text: string;
|
|
68
|
+
/**
|
|
69
|
+
* Ubicación preferida relativa al ancla/activador.
|
|
70
|
+
* @type {'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end'}
|
|
71
|
+
* @default 'top'
|
|
72
|
+
*/
|
|
64
73
|
position: 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end';
|
|
74
|
+
/**
|
|
75
|
+
* Mapeo de tamaño opcional (usado por hojas de estilo internas para escalar fuente/relleno).
|
|
76
|
+
* @type {'' | 'small' | 'medium' | 'large'}
|
|
77
|
+
* @default ''
|
|
78
|
+
*/
|
|
65
79
|
size: '' | 'small' | 'medium' | 'large';
|
|
80
|
+
/**
|
|
81
|
+
* Si es true, cambia al modo de Tooltip Enriquecido (permite HTML/componentes en el slot por defecto).
|
|
82
|
+
* @type {boolean}
|
|
83
|
+
*/
|
|
66
84
|
rich: boolean;
|
|
67
85
|
private _target;
|
|
68
86
|
private _tooltipEl;
|
|
87
|
+
/**
|
|
88
|
+
* Wrapper estático para el evento de teclado global.
|
|
89
|
+
* Mantiene fijo el contexto léxico para registrar/desregistrar limpiamente.
|
|
90
|
+
*/
|
|
69
91
|
private _docKeydown;
|
|
70
92
|
/**
|
|
71
|
-
* CSS `anchor-name`
|
|
72
|
-
*
|
|
73
|
-
* `crypto.randomUUID()`
|
|
93
|
+
* Nombre de anclaje CSS (`anchor-name`) registrado en el activador padre para que el tooltip
|
|
94
|
+
* pueda usar `position-anchor` para vincularse a él. Generado por instancia vía
|
|
95
|
+
* `crypto.randomUUID()` cuando el posicionamiento de anclaje CSS está soportado.
|
|
74
96
|
*/
|
|
75
97
|
private _anchorName;
|
|
98
|
+
/**
|
|
99
|
+
* Hook de inicialización (Lit).
|
|
100
|
+
* Resuelve la asociación nativa con su elemento padre (trigger), forzando un contexto
|
|
101
|
+
* de posicionamiento relativo (`position: relative`) si es necesario. Vincula dinámicamente
|
|
102
|
+
* listeners de `mouseenter/leave` y `focusin/out` para controlar la visibilidad del globo.
|
|
103
|
+
* También auto-registra la revolucionaria CSS Anchor Positioning API si el navegador la soporta.
|
|
104
|
+
*/
|
|
76
105
|
connectedCallback(): void;
|
|
106
|
+
/**
|
|
107
|
+
* Hook de destrucción (Lit).
|
|
108
|
+
* Remueve diligentemente todos los detectores de eventos del padre (trigger)
|
|
109
|
+
* y limpia las declaraciones generadas dinámicamente en estilos inline (`anchor-name`).
|
|
110
|
+
*/
|
|
77
111
|
disconnectedCallback(): void;
|
|
112
|
+
/**
|
|
113
|
+
* Inyecta la clase activa (`.visible`) desencadenando la animación de opacidad/escalado.
|
|
114
|
+
* Cached-query: Recupera asíncronamente el tooltip del Shadow DOM si no lo había hecho.
|
|
115
|
+
*/
|
|
78
116
|
private _show;
|
|
117
|
+
/**
|
|
118
|
+
* Retira la clase activa (`.visible`), desvaneciendo el globo con gracia.
|
|
119
|
+
*/
|
|
79
120
|
private _hide;
|
|
121
|
+
/**
|
|
122
|
+
* Manejador global del teclado (a11y).
|
|
123
|
+
* Permite disipar instantáneamente el tooltip presionando `Escape`
|
|
124
|
+
* sin necesidad de mover el ratón o perder el foco.
|
|
125
|
+
*/
|
|
80
126
|
private _handleDocKeydown;
|
|
81
127
|
/**
|
|
82
|
-
*
|
|
83
|
-
*
|
|
128
|
+
* ID público del elemento tooltip, adecuado para `aria-describedby` en
|
|
129
|
+
* el padre activador. Generado automáticamente si el consumidor no estableció un `id`.
|
|
84
130
|
*/
|
|
85
131
|
get tooltipId(): string;
|
|
86
132
|
static styles: import("lit").CSSResult[];
|
|
133
|
+
/**
|
|
134
|
+
* Renderiza el `<div>` del tooltip con su lista de clases calculada y atributos ARIA.
|
|
135
|
+
*
|
|
136
|
+
* **Composición de clases:**
|
|
137
|
+
* - `'tooltip'` — siempre presente; estilos base.
|
|
138
|
+
* - `this.position` — variante de ubicación (ej. `'top'`, `'bottom-start'`).
|
|
139
|
+
* - `this.size` — modificador de tamaño (`'small'`, `'medium'`, `'large'`).
|
|
140
|
+
*
|
|
141
|
+
* **CSS Anchor Positioning:**
|
|
142
|
+
* Si `_anchorName` está poblado, lo inyecta como la propiedad personalizada `--_anchor-name`.
|
|
143
|
+
* La declaración CSS `@anchor-name` conecta este tooltip a su elemento activador
|
|
144
|
+
* a través de la API CSS Anchor Positioning (Chrome 125+).
|
|
145
|
+
* En navegadores no compatibles, se utiliza un posicionamiento absoluto clásico como respaldo.
|
|
146
|
+
*
|
|
147
|
+
* **Respaldo de contenido:**
|
|
148
|
+
* El slot por defecto renderiza el contenido distribuido (slotted); si no hay hijos,
|
|
149
|
+
* el valor del atributo `text` se muestra como la etiqueta del tooltip.
|
|
150
|
+
*/
|
|
87
151
|
render(): import("lit").TemplateResult<1>;
|
|
88
152
|
}
|
|
89
153
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moni-tooltip.d.ts","sourceRoot":"","sources":["../../src/components/moni-tooltip.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,qBACa,WAAY,SAAQ,WAAW;
|
|
1
|
+
{"version":3,"file":"moni-tooltip.d.ts","sourceRoot":"","sources":["../../src/components/moni-tooltip.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,qBACa,WAAY,SAAQ,WAAW;IAC3C;;;OAGG;IAC0B,IAAI,SAAM;IAEvC;;;;OAIG;IAEH,QAAQ,EACL,KAAK,GACL,WAAW,GACX,SAAS,GACT,QAAQ,GACR,cAAc,GACd,YAAY,CAAS;IAExB;;;;OAIG;IAEH,IAAI,EAAE,EAAE,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAM;IAE7C;;;OAGG;IACyC,IAAI,UAAS;IAEzD,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,UAAU,CAA4B;IAC9C;;;OAGG;IACH,OAAO,CAAC,WAAW,CAAmD;IACtE;;;;OAIG;IACH,OAAO,CAAC,WAAW,CAAuB;IAE1C;;;;;;OAMG;IACM,iBAAiB;IAoC1B;;;;OAIG;IACM,oBAAoB;IAe7B;;;OAGG;IACH,OAAO,CAAC,KAAK,CAOX;IAEF;;OAEG;IACH,OAAO,CAAC,KAAK,CAOX;IAEF;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;;OAGG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,OAAgB,MAAM,4BA2JpB;IAEF;;;;;;;;;;;;;;;;;OAiBG;IACM,MAAM;CAgBf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,cAAc,EAAE,WAAW,CAAC;KAC5B;CACD;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -14,75 +14,101 @@ import { html, css } from 'lit';
|
|
|
14
14
|
import { customElement, property } from 'lit/decorators.js';
|
|
15
15
|
import { MoniElement, sharedStyles } from './_base/index.js';
|
|
16
16
|
/**
|
|
17
|
-
* Material Design 3 Tooltip
|
|
17
|
+
* Componente Material Design 3 Tooltip (Información sobre herramientas).
|
|
18
18
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
19
|
+
* Los tooltips proporcionan etiquetas de texto contextual o contenido enriquecido que aparecen cuando
|
|
20
|
+
* los usuarios pasan el cursor por encima, enfocan o tocan un elemento. Muestran información
|
|
21
|
+
* complementaria que ayuda a los usuarios a entender los elementos de la interfaz sin
|
|
22
|
+
* ocupar permanentemente espacio en la pantalla.
|
|
23
23
|
*
|
|
24
|
-
* **
|
|
24
|
+
* **Referencia a la especificación M3:** `m3-docs/components/tooltips/specs.md`
|
|
25
25
|
*
|
|
26
|
-
* **
|
|
27
|
-
* - **Plain** (
|
|
28
|
-
* - **Rich** (`rich`
|
|
29
|
-
*
|
|
26
|
+
* **Tipos:**
|
|
27
|
+
* - **Plain** (por defecto) — Etiqueta solo de texto para descripciones simples (máx. 1 línea).
|
|
28
|
+
* - **Rich** (atributo `rich`) — Contenido HTML que incluye texto formateado,
|
|
29
|
+
* enlaces e iconos. Los tooltips enriquecidos pueden contener múltiples líneas y enlaces de acción.
|
|
30
30
|
*
|
|
31
|
-
* **Placements:**
|
|
32
|
-
* - `top` (
|
|
31
|
+
* **Ubicaciones (Placements):**
|
|
32
|
+
* - `top` (por defecto), `top-start`, `top-end`
|
|
33
33
|
* - `bottom`, `bottom-start`, `bottom-end`
|
|
34
34
|
*
|
|
35
|
-
* **Trigger
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* `:focus-within`
|
|
35
|
+
* **Mecanismo de activación (Trigger):**
|
|
36
|
+
* El tooltip usa `position: absolute` dentro del elemento padre. El padre
|
|
37
|
+
* debe tener `position: relative` (establecido automáticamente vía `connectedCallback`).
|
|
38
|
+
* Los eventos hover/focus en el padre activan los selectores CSS `:hover` y
|
|
39
|
+
* `:focus-within` del tooltip, los cuales impulsan la transición de mostrar/ocultar.
|
|
40
40
|
*
|
|
41
|
-
* **
|
|
42
|
-
* -
|
|
43
|
-
* -
|
|
44
|
-
*
|
|
45
|
-
* `tooltipId`
|
|
46
|
-
* -
|
|
41
|
+
* **Accesibilidad:**
|
|
42
|
+
* - El tooltip tiene `role="tooltip"`.
|
|
43
|
+
* - Para accesibilidad por teclado, el padre debe tener `aria-describedby`
|
|
44
|
+
* apuntando al atributo `id` del tooltip. El componente expone un
|
|
45
|
+
* getter `tooltipId` para este propósito.
|
|
46
|
+
* - La tecla `Escape` cierra los tooltips enriquecidos.
|
|
47
47
|
*
|
|
48
48
|
* @example
|
|
49
49
|
* ```html
|
|
50
|
-
* <!-- Plain
|
|
50
|
+
* <!-- Tooltip simple (Plain) -->
|
|
51
51
|
* <button aria-describedby="save-tip">
|
|
52
|
-
*
|
|
52
|
+
* Guardar
|
|
53
53
|
* <moni-tooltip id="save-tip" text="Ctrl+S"></moni-tooltip>
|
|
54
54
|
* </button>
|
|
55
55
|
*
|
|
56
|
-
* <!-- Rich
|
|
56
|
+
* <!-- Tooltip enriquecido (Rich) -->
|
|
57
57
|
* <button>
|
|
58
|
-
*
|
|
58
|
+
* Filtrar
|
|
59
59
|
* <moni-tooltip rich position="bottom">
|
|
60
|
-
* <strong>
|
|
61
|
-
* <p>
|
|
60
|
+
* <strong>Filtrar por fecha</strong>
|
|
61
|
+
* <p>Selecciona un rango de fechas para filtrar resultados.</p>
|
|
62
62
|
* </moni-tooltip>
|
|
63
63
|
* </button>
|
|
64
64
|
* ```
|
|
65
65
|
*
|
|
66
|
-
* @slot default -
|
|
66
|
+
* @slot default - Contenido enriquecido para el cuerpo del tooltip (solo usado cuando `rich=true`).
|
|
67
67
|
*
|
|
68
|
-
* @csspart tooltip -
|
|
68
|
+
* @csspart tooltip - El elemento contenedor del tooltip.
|
|
69
69
|
*/
|
|
70
70
|
let MoniTooltip = class MoniTooltip extends MoniElement {
|
|
71
71
|
constructor() {
|
|
72
72
|
super(...arguments);
|
|
73
|
+
/**
|
|
74
|
+
* Contenido de texto simple para mostrar. Utilizado cuando `rich` es falso.
|
|
75
|
+
* @type {string}
|
|
76
|
+
*/
|
|
73
77
|
this.text = '';
|
|
78
|
+
/**
|
|
79
|
+
* Ubicación preferida relativa al ancla/activador.
|
|
80
|
+
* @type {'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end'}
|
|
81
|
+
* @default 'top'
|
|
82
|
+
*/
|
|
74
83
|
this.position = 'top';
|
|
84
|
+
/**
|
|
85
|
+
* Mapeo de tamaño opcional (usado por hojas de estilo internas para escalar fuente/relleno).
|
|
86
|
+
* @type {'' | 'small' | 'medium' | 'large'}
|
|
87
|
+
* @default ''
|
|
88
|
+
*/
|
|
75
89
|
this.size = '';
|
|
90
|
+
/**
|
|
91
|
+
* Si es true, cambia al modo de Tooltip Enriquecido (permite HTML/componentes en el slot por defecto).
|
|
92
|
+
* @type {boolean}
|
|
93
|
+
*/
|
|
76
94
|
this.rich = false;
|
|
77
95
|
this._target = null;
|
|
78
96
|
this._tooltipEl = null;
|
|
97
|
+
/**
|
|
98
|
+
* Wrapper estático para el evento de teclado global.
|
|
99
|
+
* Mantiene fijo el contexto léxico para registrar/desregistrar limpiamente.
|
|
100
|
+
*/
|
|
79
101
|
this._docKeydown = (e) => this._handleDocKeydown(e);
|
|
80
102
|
/**
|
|
81
|
-
* CSS `anchor-name`
|
|
82
|
-
*
|
|
83
|
-
* `crypto.randomUUID()`
|
|
103
|
+
* Nombre de anclaje CSS (`anchor-name`) registrado en el activador padre para que el tooltip
|
|
104
|
+
* pueda usar `position-anchor` para vincularse a él. Generado por instancia vía
|
|
105
|
+
* `crypto.randomUUID()` cuando el posicionamiento de anclaje CSS está soportado.
|
|
84
106
|
*/
|
|
85
107
|
this._anchorName = null;
|
|
108
|
+
/**
|
|
109
|
+
* Inyecta la clase activa (`.visible`) desencadenando la animación de opacidad/escalado.
|
|
110
|
+
* Cached-query: Recupera asíncronamente el tooltip del Shadow DOM si no lo había hecho.
|
|
111
|
+
*/
|
|
86
112
|
this._show = () => {
|
|
87
113
|
if (!this._tooltipEl) {
|
|
88
114
|
this._tooltipEl = this.shadowRoot?.querySelector('.tooltip');
|
|
@@ -91,6 +117,9 @@ let MoniTooltip = class MoniTooltip extends MoniElement {
|
|
|
91
117
|
this._tooltipEl.classList.add('visible');
|
|
92
118
|
}
|
|
93
119
|
};
|
|
120
|
+
/**
|
|
121
|
+
* Retira la clase activa (`.visible`), desvaneciendo el globo con gracia.
|
|
122
|
+
*/
|
|
94
123
|
this._hide = () => {
|
|
95
124
|
if (!this._tooltipEl) {
|
|
96
125
|
this._tooltipEl = this.shadowRoot?.querySelector('.tooltip');
|
|
@@ -100,11 +129,18 @@ let MoniTooltip = class MoniTooltip extends MoniElement {
|
|
|
100
129
|
}
|
|
101
130
|
};
|
|
102
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Hook de inicialización (Lit).
|
|
134
|
+
* Resuelve la asociación nativa con su elemento padre (trigger), forzando un contexto
|
|
135
|
+
* de posicionamiento relativo (`position: relative`) si es necesario. Vincula dinámicamente
|
|
136
|
+
* listeners de `mouseenter/leave` y `focusin/out` para controlar la visibilidad del globo.
|
|
137
|
+
* También auto-registra la revolucionaria CSS Anchor Positioning API si el navegador la soporta.
|
|
138
|
+
*/
|
|
103
139
|
connectedCallback() {
|
|
104
140
|
super.connectedCallback();
|
|
105
141
|
this._target = this.parentElement;
|
|
106
142
|
if (this._target) {
|
|
107
|
-
//
|
|
143
|
+
// Asegura que el padre tenga position: relative para anclar el tooltip absoluto
|
|
108
144
|
const style = getComputedStyle(this._target);
|
|
109
145
|
if (style.position === 'static') {
|
|
110
146
|
this._target.style.position = 'relative';
|
|
@@ -113,9 +149,9 @@ let MoniTooltip = class MoniTooltip extends MoniElement {
|
|
|
113
149
|
this._target.addEventListener('focusin', this._show);
|
|
114
150
|
this._target.addEventListener('mouseleave', this._hide);
|
|
115
151
|
this._target.addEventListener('focusout', this._hide);
|
|
116
|
-
// Auto-
|
|
117
|
-
//
|
|
118
|
-
//
|
|
152
|
+
// Auto-registra un nombre de ancla CSS en el activador padre cuando el
|
|
153
|
+
// navegador soporta posicionamiento de ancla. Los consumidores pueden excluirse
|
|
154
|
+
// estableciendo `data-no-anchor` en el activador.
|
|
119
155
|
const cssSupports = globalThis.CSS?.supports;
|
|
120
156
|
const supportsAnchor = cssSupports
|
|
121
157
|
? cssSupports.call(window.CSS, 'anchor-name: --x')
|
|
@@ -130,6 +166,11 @@ let MoniTooltip = class MoniTooltip extends MoniElement {
|
|
|
130
166
|
}
|
|
131
167
|
document.addEventListener('keydown', this._docKeydown);
|
|
132
168
|
}
|
|
169
|
+
/**
|
|
170
|
+
* Hook de destrucción (Lit).
|
|
171
|
+
* Remueve diligentemente todos los detectores de eventos del padre (trigger)
|
|
172
|
+
* y limpia las declaraciones generadas dinámicamente en estilos inline (`anchor-name`).
|
|
173
|
+
*/
|
|
133
174
|
disconnectedCallback() {
|
|
134
175
|
if (this._target) {
|
|
135
176
|
this._target.removeEventListener('mouseenter', this._show);
|
|
@@ -144,6 +185,11 @@ let MoniTooltip = class MoniTooltip extends MoniElement {
|
|
|
144
185
|
document.removeEventListener('keydown', this._docKeydown);
|
|
145
186
|
super.disconnectedCallback();
|
|
146
187
|
}
|
|
188
|
+
/**
|
|
189
|
+
* Manejador global del teclado (a11y).
|
|
190
|
+
* Permite disipar instantáneamente el tooltip presionando `Escape`
|
|
191
|
+
* sin necesidad de mover el ratón o perder el foco.
|
|
192
|
+
*/
|
|
147
193
|
_handleDocKeydown(e) {
|
|
148
194
|
if (e.key !== 'Escape')
|
|
149
195
|
return;
|
|
@@ -152,8 +198,8 @@ let MoniTooltip = class MoniTooltip extends MoniElement {
|
|
|
152
198
|
this._hide();
|
|
153
199
|
}
|
|
154
200
|
/**
|
|
155
|
-
*
|
|
156
|
-
*
|
|
201
|
+
* ID público del elemento tooltip, adecuado para `aria-describedby` en
|
|
202
|
+
* el padre activador. Generado automáticamente si el consumidor no estableció un `id`.
|
|
157
203
|
*/
|
|
158
204
|
get tooltipId() {
|
|
159
205
|
return this._tooltipEl?.id || '';
|
|
@@ -314,6 +360,24 @@ let MoniTooltip = class MoniTooltip extends MoniElement {
|
|
|
314
360
|
.tooltip.visible.right { transform: translate(100%, -50%) scale(1); }
|
|
315
361
|
`
|
|
316
362
|
]; }
|
|
363
|
+
/**
|
|
364
|
+
* Renderiza el `<div>` del tooltip con su lista de clases calculada y atributos ARIA.
|
|
365
|
+
*
|
|
366
|
+
* **Composición de clases:**
|
|
367
|
+
* - `'tooltip'` — siempre presente; estilos base.
|
|
368
|
+
* - `this.position` — variante de ubicación (ej. `'top'`, `'bottom-start'`).
|
|
369
|
+
* - `this.size` — modificador de tamaño (`'small'`, `'medium'`, `'large'`).
|
|
370
|
+
*
|
|
371
|
+
* **CSS Anchor Positioning:**
|
|
372
|
+
* Si `_anchorName` está poblado, lo inyecta como la propiedad personalizada `--_anchor-name`.
|
|
373
|
+
* La declaración CSS `@anchor-name` conecta este tooltip a su elemento activador
|
|
374
|
+
* a través de la API CSS Anchor Positioning (Chrome 125+).
|
|
375
|
+
* En navegadores no compatibles, se utiliza un posicionamiento absoluto clásico como respaldo.
|
|
376
|
+
*
|
|
377
|
+
* **Respaldo de contenido:**
|
|
378
|
+
* El slot por defecto renderiza el contenido distribuido (slotted); si no hay hijos,
|
|
379
|
+
* el valor del atributo `text` se muestra como la etiqueta del tooltip.
|
|
380
|
+
*/
|
|
317
381
|
render() {
|
|
318
382
|
const classes = [
|
|
319
383
|
'tooltip',
|
|
@@ -6,55 +6,93 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { MoniElement } from './_base/index.js';
|
|
8
8
|
/**
|
|
9
|
-
* Material Design 3 Typography
|
|
9
|
+
* Componente Material Design 3 Typography (Tipografía).
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* Un componente de texto especializado que aplica la escala tipográfica M3. Asegura
|
|
12
|
+
* que la tipografía sea consistente, accesible y correctamente estilizada en toda la
|
|
13
|
+
* aplicación sin requerir clases CSS manuales.
|
|
14
14
|
*
|
|
15
|
-
* **
|
|
15
|
+
* **Categorías de Escala Tipográfica:**
|
|
16
|
+
* - `display`: El texto más grande en la pantalla, reservado para texto corto e importante
|
|
17
|
+
* o números. Funciona mejor en pantallas grandes. (Renderiza `<h1>` por defecto).
|
|
18
|
+
* - `headline`: Texto de alto énfasis para encabezados primarios de página/sección.
|
|
19
|
+
* (Renderiza `<h2>` por defecto).
|
|
20
|
+
* - `title`: Texto de énfasis medio utilizado para encabezados de diálogos o títulos
|
|
21
|
+
* de sección más pequeños. (Renderiza `<h3>` por defecto).
|
|
22
|
+
* - `body`: Texto de párrafo estándar utilizado para contenido largo.
|
|
23
|
+
* (Renderiza `<p>` por defecto).
|
|
24
|
+
* - `label`: Texto pequeño y utilitario usado para botones, leyendas y elementos
|
|
25
|
+
* de formulario. (Renderiza `<label>` por defecto).
|
|
16
26
|
*
|
|
17
|
-
*
|
|
18
|
-
* - `display`: The largest text on the screen, reserved for short, important
|
|
19
|
-
* text or numerals. Works best on large screens. (Renders `<h1>` by default).
|
|
20
|
-
* - `headline`: High-emphasis text for primary page/section headers.
|
|
21
|
-
* (Renders `<h2>` by default).
|
|
22
|
-
* - `title`: Medium-emphasis text used for dialog headers or smaller section
|
|
23
|
-
* titles. (Renders `<h3>` by default).
|
|
24
|
-
* - `body`: Standard paragraph text used for long-form content.
|
|
25
|
-
* (Renders `<p>` by default).
|
|
26
|
-
* - `label`: Small, utilitarian text used for buttons, captions, and form
|
|
27
|
-
* elements. (Renders `<label>` by default).
|
|
27
|
+
* Cada categoría soporta tres tamaños: `large`, `medium` y `small`.
|
|
28
28
|
*
|
|
29
|
-
*
|
|
29
|
+
* **Etiquetas Semánticas:**
|
|
30
|
+
* El componente selecciona automáticamente una etiqueta semántica HTML apropiada basada en
|
|
31
|
+
* la variante. Puedes sobrescribir esto explícitamente configurando el atributo `as`
|
|
32
|
+
* (ej., para renderizar un estilo `headline` pero usando una etiqueta `<span>` por razones
|
|
33
|
+
* de SEO o estructurales).
|
|
30
34
|
*
|
|
31
|
-
*
|
|
32
|
-
* The component automatically selects an appropriate HTML semantic tag based on
|
|
33
|
-
* the variant. You can explicitly override this by setting the `as` attribute
|
|
34
|
-
* (e.g., to render a `headline` style but using a `<span>` tag for SEO or
|
|
35
|
-
* structural reasons).
|
|
35
|
+
* @element moni-typography
|
|
36
36
|
*
|
|
37
37
|
* @example
|
|
38
38
|
* ```html
|
|
39
|
-
* <!--
|
|
40
|
-
* <moni-typography variant="display" size="large">
|
|
39
|
+
* <!-- Renderiza un <h1> con estilos display-large -->
|
|
40
|
+
* <moni-typography variant="display" size="large">Texto Héroe</moni-typography>
|
|
41
41
|
*
|
|
42
|
-
* <!--
|
|
43
|
-
* <moni-typography variant="body">
|
|
42
|
+
* <!-- Renderiza un <p> con estilos body-medium -->
|
|
43
|
+
* <moni-typography variant="body">Texto de párrafo estándar.</moni-typography>
|
|
44
44
|
*
|
|
45
|
-
* <!--
|
|
46
|
-
* <moni-typography variant="title" as="span">
|
|
45
|
+
* <!-- Sobrescribiendo la etiqueta semántica -->
|
|
46
|
+
* <moni-typography variant="title" as="span">Título en línea</moni-typography>
|
|
47
47
|
* ```
|
|
48
48
|
*
|
|
49
|
-
* @slot default -
|
|
49
|
+
* @slot default - El contenido de texto a mostrar.
|
|
50
|
+
* @csspart text - El elemento semántico interno (ej., h1, p, span) que envuelve el texto.
|
|
50
51
|
*/
|
|
51
52
|
export declare class MoniTypography extends MoniElement {
|
|
53
|
+
/**
|
|
54
|
+
* La categoría de la escala tipográfica M3 a aplicar.
|
|
55
|
+
* Dicta la lógica base de font-family, line-height, weight, y letter-spacing.
|
|
56
|
+
* @type {'display' | 'headline' | 'title' | 'body' | 'label'}
|
|
57
|
+
*/
|
|
52
58
|
variant: 'display' | 'headline' | 'title' | 'body' | 'label';
|
|
59
|
+
/**
|
|
60
|
+
* El tamaño dentro de la categoría de variante elegida.
|
|
61
|
+
* @type {'large' | 'medium' | 'small'}
|
|
62
|
+
*/
|
|
53
63
|
size: 'large' | 'medium' | 'small';
|
|
64
|
+
/**
|
|
65
|
+
* Sobrescribe la etiqueta semántica HTML por defecto (ej. 'h1', 'p', 'span')
|
|
66
|
+
* que se asigna automáticamente basándose en la variante (`variant`).
|
|
67
|
+
* @type {string | null}
|
|
68
|
+
*/
|
|
54
69
|
as: string | null;
|
|
70
|
+
/**
|
|
71
|
+
* Contenido de texto simple opcional. Típicamente usarías el slot por defecto en su lugar.
|
|
72
|
+
* @type {string}
|
|
73
|
+
*/
|
|
55
74
|
text: string;
|
|
56
|
-
/**
|
|
75
|
+
/** Etiqueta semántica por defecto para cada variante según la especificación M3. */
|
|
57
76
|
private static _tagFor;
|
|
77
|
+
/**
|
|
78
|
+
* Renderiza el elemento tipográfico con una etiqueta HTML seleccionada dinámicamente.
|
|
79
|
+
*
|
|
80
|
+
* **Selección dinámica de etiquetas:**
|
|
81
|
+
* `_tagFor(variant)` infiere el elemento HTML semántico de la variante de tipografía
|
|
82
|
+
* (ej. `'display-large'` → `<h1>`, `'body-medium'` → `<p>`).
|
|
83
|
+
* El atributo `as` sobrescribe esta inferencia para contextos semánticos personalizados
|
|
84
|
+
* (ej. usar `as="div"` cuando la tipografía está dentro de un `<dl>`).
|
|
85
|
+
*
|
|
86
|
+
* **¿Por qué `staticHtml` + `unsafeStatic`?**
|
|
87
|
+
* Lit 3 no permite expresiones dinámicas en posiciones de nombres de etiquetas
|
|
88
|
+
* (`<${tag}>` lanzaría un error de plantilla). `staticHtml` es un template tag
|
|
89
|
+
* provisto por Lit que sí permite la interpolación estática de etiquetas, y `unsafeStatic`
|
|
90
|
+
* envuelve el string para marcarlo como de confianza (sin riesgo XSS ya que `tag` proviene de
|
|
91
|
+
* un enum controlado vía `_tagFor()`).
|
|
92
|
+
*
|
|
93
|
+
* El string `cls` (`variant + size`) mapea directamente a clases de utilidad
|
|
94
|
+
* de tipografía (ej. `'display large'`).
|
|
95
|
+
*/
|
|
58
96
|
render(): import("lit").TemplateResult;
|
|
59
97
|
static styles: import("lit").CSSResult[];
|
|
60
98
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moni-typography.d.ts","sourceRoot":"","sources":["../../src/components/moni-typography.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D
|
|
1
|
+
{"version":3,"file":"moni-typography.d.ts","sourceRoot":"","sources":["../../src/components/moni-typography.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,qBACa,cAAe,SAAQ,WAAW;IAC9C;;;;OAIG;IAEH,OAAO,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAU;IAEtE;;;OAGG;IAEH,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAY;IAE9C;;;;OAIG;IAEH,EAAE,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEzB;;;OAGG;IAC0B,IAAI,SAAM;IAEvC,oFAAoF;IACpF,OAAO,CAAC,MAAM,CAAC,OAAO;IAiBtB;;;;;;;;;;;;;;;;;;OAkBG;IACM,MAAM;IAcf,OAAgB,MAAM,4BAkHpB;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,iBAAiB,EAAE,cAAc,CAAC;KAClC;CACD;AAED,eAAe,cAAc,CAAC"}
|