@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
|
@@ -7,49 +7,49 @@
|
|
|
7
7
|
import { MoniElement } from './_base/index.js';
|
|
8
8
|
import './moni-icon.js';
|
|
9
9
|
/**
|
|
10
|
-
* Material Design 3 Navigation Item
|
|
10
|
+
* Componente Material Design 3 Navigation Item (Elemento de Navegación).
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
12
|
+
* Un elemento de destino individual dentro de un contenedor `<moni-nav>`. Se renderiza como un
|
|
13
|
+
* elemento `<a>` accesible con un icono, etiqueta y capa de estado M3.
|
|
14
14
|
*
|
|
15
|
-
* **
|
|
16
|
-
* -
|
|
17
|
-
* -
|
|
18
|
-
* -
|
|
15
|
+
* **Referencias a la especificación M3:**
|
|
16
|
+
* - Elemento de barra de navegación: `m3-docs/components/navigation-bar/specs.md`
|
|
17
|
+
* - Elemento de riel de navegación: `m3-docs/components/navigation-rail/specs.md`
|
|
18
|
+
* - Elemento de cajón de navegación: `m3-docs/components/navigation-drawer/specs.md`
|
|
19
19
|
*
|
|
20
|
-
* **
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* render
|
|
24
|
-
* -
|
|
25
|
-
* -
|
|
26
|
-
* -
|
|
20
|
+
* **Adaptación de diseño:**
|
|
21
|
+
* Las propiedades `placement`, `variant` y `layout` son retransmitidas desde
|
|
22
|
+
* el padre `<moni-nav>` (típicamente a través de vinculación de atributos en el
|
|
23
|
+
* método render del padre). El elemento de navegación las usa para renderizar condicionalmente:
|
|
24
|
+
* - Icono + etiqueta abajo (barra de navegación).
|
|
25
|
+
* - Solo icono + etiqueta horizontal (riel).
|
|
26
|
+
* - Icono + etiqueta completa (cajón).
|
|
27
27
|
*
|
|
28
|
-
* **
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
28
|
+
* **Comportamiento responsivo:**
|
|
29
|
+
* Usa `window.matchMedia('(min-width: 601px)')` para detectar pantallas medianas
|
|
30
|
+
* y almacena el resultado en `_isMediumScreen`. Esto impulsa el cambio de diseño
|
|
31
|
+
* automático entre estilos de barra y riel.
|
|
32
32
|
*
|
|
33
|
-
* **
|
|
34
|
-
*
|
|
35
|
-
*
|
|
33
|
+
* **Estado activo:**
|
|
34
|
+
* El atributo `active` aplica el indicador activo M3: un fondo `secondary-container`
|
|
35
|
+
* en forma de píldora detrás del icono y un color de etiqueta más oscuro.
|
|
36
36
|
*
|
|
37
37
|
* @example
|
|
38
38
|
* ```html
|
|
39
39
|
* <moni-nav placement="bottom">
|
|
40
|
-
* <moni-nav-item href="/" icon="home" label="
|
|
41
|
-
* <moni-nav-item href="/search" icon="search" label="
|
|
42
|
-
* <moni-nav-item href="/profile" icon="person" label="
|
|
43
|
-
* <moni-badge value="3"></moni-badge> <!--
|
|
40
|
+
* <moni-nav-item href="/" icon="home" label="Inicio" active></moni-nav-item>
|
|
41
|
+
* <moni-nav-item href="/search" icon="search" label="Buscar"></moni-nav-item>
|
|
42
|
+
* <moni-nav-item href="/profile" icon="person" label="Perfil">
|
|
43
|
+
* <moni-badge value="3"></moni-badge> <!-- insignia de notificación -->
|
|
44
44
|
* </moni-nav-item>
|
|
45
45
|
* </moni-nav>
|
|
46
46
|
* ```
|
|
47
47
|
*
|
|
48
|
-
* @slot default -
|
|
48
|
+
* @slot default - Contenido adicional colocado después del icono (ej. `<moni-badge>`).
|
|
49
49
|
*
|
|
50
|
-
* @csspart item -
|
|
51
|
-
* @csspart icon -
|
|
52
|
-
* @csspart label -
|
|
50
|
+
* @csspart item - El elemento exterior `<a>`.
|
|
51
|
+
* @csspart icon - El contenedor del icono.
|
|
52
|
+
* @csspart label - El elemento de texto de la etiqueta.
|
|
53
53
|
*/
|
|
54
54
|
export declare class MoniNavItem extends MoniElement {
|
|
55
55
|
href: string;
|
|
@@ -62,11 +62,41 @@ export declare class MoniNavItem extends MoniElement {
|
|
|
62
62
|
layout: string;
|
|
63
63
|
private _isMediumScreen;
|
|
64
64
|
private _query;
|
|
65
|
+
/**
|
|
66
|
+
* Hook de inicialización (Lit).
|
|
67
|
+
* Vincula un listener de `MediaQueryList` nativo para poder reaccionar en tiempo real
|
|
68
|
+
* cuando la pantalla cruza el breakpoint de 600px, adaptando la disposición
|
|
69
|
+
* (horizontal vs vertical) del ícono y la etiqueta automáticamente.
|
|
70
|
+
*/
|
|
65
71
|
connectedCallback(): void;
|
|
72
|
+
/**
|
|
73
|
+
* Hook de destrucción (Lit).
|
|
74
|
+
* Desvincula rigurosamente el listener del `matchMedia` para
|
|
75
|
+
* prevenir fugas de memoria (memory leaks).
|
|
76
|
+
*/
|
|
66
77
|
disconnectedCallback(): void;
|
|
78
|
+
/**
|
|
79
|
+
* Callback asíncrono disparado nativamente por el navegador cuando
|
|
80
|
+
* cambian las condiciones del Media Query.
|
|
81
|
+
* Actualiza el estado reactivo `_isMediumScreen` lo que fuerza a Lit a re-renderizar.
|
|
82
|
+
*/
|
|
67
83
|
private _handleQueryChange;
|
|
68
84
|
get computedLayout(): 'vertical' | 'horizontal';
|
|
69
85
|
static styles: import("lit").CSSResult[];
|
|
86
|
+
/**
|
|
87
|
+
* Renderiza el elemento de navegación como un `<a>` o `<button>` con ranura de icono, etiqueta y badge (insignia).
|
|
88
|
+
*
|
|
89
|
+
* **Indicador activo:**
|
|
90
|
+
* La barra de navegación M3 usa un indicador en forma de píldora detrás del icono del
|
|
91
|
+
* elemento activo. Esto se implementa como el pseudo-elemento `::before` en
|
|
92
|
+
* `.item` que crece de `0` a `64px` de ancho usando una transición CSS.
|
|
93
|
+
* La clase `active` en `.item` activa la transición y también establece
|
|
94
|
+
* `aria-current="page"` para lectores de pantalla.
|
|
95
|
+
*
|
|
96
|
+
* **Ranura para badge (insignia):**
|
|
97
|
+
* `[slot="badge"]` se renderiza posicionado absolutamente sobre la esquina superior final del icono.
|
|
98
|
+
* Los consumidores colocan un `<moni-badge>` aquí para cuentas de notificaciones.
|
|
99
|
+
*/
|
|
70
100
|
render(): import("lit").TemplateResult<1>;
|
|
71
101
|
}
|
|
72
102
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moni-nav-item.d.ts","sourceRoot":"","sources":["../../src/components/moni-nav-item.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,qBACa,WAAY,SAAQ,WAAW;IACd,IAAI,SAAO;IACX,MAAM,SAAM;IACZ,IAAI,SAAM;IACV,KAAK,SAAM;IACI,MAAM,UAAS;IAC9B,SAAS,SAAS;IAClB,OAAO,SAAU;IACjB,MAAM,SAAU;IAG7C,OAAO,CAAC,eAAe,CAAS;IAEhC,OAAO,CAAC,MAAM,CAEN;
|
|
1
|
+
{"version":3,"file":"moni-nav-item.d.ts","sourceRoot":"","sources":["../../src/components/moni-nav-item.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,qBACa,WAAY,SAAQ,WAAW;IACd,IAAI,SAAO;IACX,MAAM,SAAM;IACZ,IAAI,SAAM;IACV,KAAK,SAAM;IACI,MAAM,UAAS;IAC9B,SAAS,SAAS;IAClB,OAAO,SAAU;IACjB,MAAM,SAAU;IAG7C,OAAO,CAAC,eAAe,CAAS;IAEhC,OAAO,CAAC,MAAM,CAEN;IAER;;;;;OAKG;IACM,iBAAiB;IAQ1B;;;;OAIG;IACM,oBAAoB;IAO7B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB,CAExB;IAEF,IAAI,cAAc,IAAI,UAAU,GAAG,YAAY,CAQ9C;IAED,OAAgB,MAAM,4BAmIpB;IAEF;;;;;;;;;;;;;OAaG;IACM,MAAM;CAqCf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,eAAe,EAAE,WAAW,CAAC;KAC7B;CACD;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -16,49 +16,49 @@ import { ifDefined } from 'lit/directives/if-defined.js';
|
|
|
16
16
|
import { MoniElement, sharedStyles } from './_base/index.js';
|
|
17
17
|
import './moni-icon.js';
|
|
18
18
|
/**
|
|
19
|
-
* Material Design 3 Navigation Item
|
|
19
|
+
* Componente Material Design 3 Navigation Item (Elemento de Navegación).
|
|
20
20
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
21
|
+
* Un elemento de destino individual dentro de un contenedor `<moni-nav>`. Se renderiza como un
|
|
22
|
+
* elemento `<a>` accesible con un icono, etiqueta y capa de estado M3.
|
|
23
23
|
*
|
|
24
|
-
* **
|
|
25
|
-
* -
|
|
26
|
-
* -
|
|
27
|
-
* -
|
|
24
|
+
* **Referencias a la especificación M3:**
|
|
25
|
+
* - Elemento de barra de navegación: `m3-docs/components/navigation-bar/specs.md`
|
|
26
|
+
* - Elemento de riel de navegación: `m3-docs/components/navigation-rail/specs.md`
|
|
27
|
+
* - Elemento de cajón de navegación: `m3-docs/components/navigation-drawer/specs.md`
|
|
28
28
|
*
|
|
29
|
-
* **
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* render
|
|
33
|
-
* -
|
|
34
|
-
* -
|
|
35
|
-
* -
|
|
29
|
+
* **Adaptación de diseño:**
|
|
30
|
+
* Las propiedades `placement`, `variant` y `layout` son retransmitidas desde
|
|
31
|
+
* el padre `<moni-nav>` (típicamente a través de vinculación de atributos en el
|
|
32
|
+
* método render del padre). El elemento de navegación las usa para renderizar condicionalmente:
|
|
33
|
+
* - Icono + etiqueta abajo (barra de navegación).
|
|
34
|
+
* - Solo icono + etiqueta horizontal (riel).
|
|
35
|
+
* - Icono + etiqueta completa (cajón).
|
|
36
36
|
*
|
|
37
|
-
* **
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
37
|
+
* **Comportamiento responsivo:**
|
|
38
|
+
* Usa `window.matchMedia('(min-width: 601px)')` para detectar pantallas medianas
|
|
39
|
+
* y almacena el resultado en `_isMediumScreen`. Esto impulsa el cambio de diseño
|
|
40
|
+
* automático entre estilos de barra y riel.
|
|
41
41
|
*
|
|
42
|
-
* **
|
|
43
|
-
*
|
|
44
|
-
*
|
|
42
|
+
* **Estado activo:**
|
|
43
|
+
* El atributo `active` aplica el indicador activo M3: un fondo `secondary-container`
|
|
44
|
+
* en forma de píldora detrás del icono y un color de etiqueta más oscuro.
|
|
45
45
|
*
|
|
46
46
|
* @example
|
|
47
47
|
* ```html
|
|
48
48
|
* <moni-nav placement="bottom">
|
|
49
|
-
* <moni-nav-item href="/" icon="home" label="
|
|
50
|
-
* <moni-nav-item href="/search" icon="search" label="
|
|
51
|
-
* <moni-nav-item href="/profile" icon="person" label="
|
|
52
|
-
* <moni-badge value="3"></moni-badge> <!--
|
|
49
|
+
* <moni-nav-item href="/" icon="home" label="Inicio" active></moni-nav-item>
|
|
50
|
+
* <moni-nav-item href="/search" icon="search" label="Buscar"></moni-nav-item>
|
|
51
|
+
* <moni-nav-item href="/profile" icon="person" label="Perfil">
|
|
52
|
+
* <moni-badge value="3"></moni-badge> <!-- insignia de notificación -->
|
|
53
53
|
* </moni-nav-item>
|
|
54
54
|
* </moni-nav>
|
|
55
55
|
* ```
|
|
56
56
|
*
|
|
57
|
-
* @slot default -
|
|
57
|
+
* @slot default - Contenido adicional colocado después del icono (ej. `<moni-badge>`).
|
|
58
58
|
*
|
|
59
|
-
* @csspart item -
|
|
60
|
-
* @csspart icon -
|
|
61
|
-
* @csspart label -
|
|
59
|
+
* @csspart item - El elemento exterior `<a>`.
|
|
60
|
+
* @csspart icon - El contenedor del icono.
|
|
61
|
+
* @csspart label - El elemento de texto de la etiqueta.
|
|
62
62
|
*/
|
|
63
63
|
let MoniNavItem = class MoniNavItem extends MoniElement {
|
|
64
64
|
constructor() {
|
|
@@ -75,10 +75,21 @@ let MoniNavItem = class MoniNavItem extends MoniElement {
|
|
|
75
75
|
this._query = typeof window !== 'undefined' && typeof window.matchMedia === 'function'
|
|
76
76
|
? window.matchMedia('(min-width: 601px)')
|
|
77
77
|
: null;
|
|
78
|
+
/**
|
|
79
|
+
* Callback asíncrono disparado nativamente por el navegador cuando
|
|
80
|
+
* cambian las condiciones del Media Query.
|
|
81
|
+
* Actualiza el estado reactivo `_isMediumScreen` lo que fuerza a Lit a re-renderizar.
|
|
82
|
+
*/
|
|
78
83
|
this._handleQueryChange = (e) => {
|
|
79
84
|
this._isMediumScreen = e.matches;
|
|
80
85
|
};
|
|
81
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Hook de inicialización (Lit).
|
|
89
|
+
* Vincula un listener de `MediaQueryList` nativo para poder reaccionar en tiempo real
|
|
90
|
+
* cuando la pantalla cruza el breakpoint de 600px, adaptando la disposición
|
|
91
|
+
* (horizontal vs vertical) del ícono y la etiqueta automáticamente.
|
|
92
|
+
*/
|
|
82
93
|
connectedCallback() {
|
|
83
94
|
super.connectedCallback();
|
|
84
95
|
if (this._query) {
|
|
@@ -86,6 +97,11 @@ let MoniNavItem = class MoniNavItem extends MoniElement {
|
|
|
86
97
|
this._isMediumScreen = this._query.matches;
|
|
87
98
|
}
|
|
88
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Hook de destrucción (Lit).
|
|
102
|
+
* Desvincula rigurosamente el listener del `matchMedia` para
|
|
103
|
+
* prevenir fugas de memoria (memory leaks).
|
|
104
|
+
*/
|
|
89
105
|
disconnectedCallback() {
|
|
90
106
|
super.disconnectedCallback();
|
|
91
107
|
if (this._query) {
|
|
@@ -233,6 +249,20 @@ let MoniNavItem = class MoniNavItem extends MoniElement {
|
|
|
233
249
|
}
|
|
234
250
|
`
|
|
235
251
|
]; }
|
|
252
|
+
/**
|
|
253
|
+
* Renderiza el elemento de navegación como un `<a>` o `<button>` con ranura de icono, etiqueta y badge (insignia).
|
|
254
|
+
*
|
|
255
|
+
* **Indicador activo:**
|
|
256
|
+
* La barra de navegación M3 usa un indicador en forma de píldora detrás del icono del
|
|
257
|
+
* elemento activo. Esto se implementa como el pseudo-elemento `::before` en
|
|
258
|
+
* `.item` que crece de `0` a `64px` de ancho usando una transición CSS.
|
|
259
|
+
* La clase `active` en `.item` activa la transición y también establece
|
|
260
|
+
* `aria-current="page"` para lectores de pantalla.
|
|
261
|
+
*
|
|
262
|
+
* **Ranura para badge (insignia):**
|
|
263
|
+
* `[slot="badge"]` se renderiza posicionado absolutamente sobre la esquina superior final del icono.
|
|
264
|
+
* Los consumidores colocan un `<moni-badge>` aquí para cuentas de notificaciones.
|
|
265
|
+
*/
|
|
236
266
|
render() {
|
|
237
267
|
const isHorizontal = this.computedLayout === 'horizontal';
|
|
238
268
|
const iconEl = html `
|
|
@@ -6,56 +6,56 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { MoniElement } from './_base/index.js';
|
|
8
8
|
/**
|
|
9
|
-
* Material Design 3
|
|
9
|
+
* Componente contenedor de Navegación Material Design 3.
|
|
10
10
|
*
|
|
11
|
-
* `<moni-nav>`
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* `<moni-nav>` es el contenedor que envuelve los elementos `<moni-nav-item>` y
|
|
12
|
+
* controla el patrón de navegación M3: barra de navegación, riel de navegación o
|
|
13
|
+
* cajón de navegación.
|
|
14
14
|
*
|
|
15
|
-
* **
|
|
16
|
-
* -
|
|
17
|
-
* -
|
|
18
|
-
* -
|
|
15
|
+
* **Referencias a la especificación M3:**
|
|
16
|
+
* - Barra de navegación: `m3-docs/components/navigation-bar/specs.md`
|
|
17
|
+
* - Riel de navegación: `m3-docs/components/navigation-rail/specs.md`
|
|
18
|
+
* - Cajón de navegación: `m3-docs/components/navigation-drawer/specs.md`
|
|
19
19
|
*
|
|
20
|
-
* **
|
|
21
|
-
* - **
|
|
22
|
-
*
|
|
23
|
-
* - **
|
|
24
|
-
*
|
|
25
|
-
* - **
|
|
26
|
-
*
|
|
27
|
-
* - **
|
|
28
|
-
*
|
|
29
|
-
*
|
|
20
|
+
* **Patrones de navegación:**
|
|
21
|
+
* - **Barra de navegación** (`placement="bottom"`) — Barra horizontal de elementos de icono+etiqueta
|
|
22
|
+
* en la parte inferior de la pantalla. Ideal para 3–5 destinos de nivel superior.
|
|
23
|
+
* - **Riel de navegación** (`variant="rail"`) — Riel vertical de elementos de icono+etiqueta
|
|
24
|
+
* en el lateral de la pantalla. Ideal para puntos de interrupción medianos/expandidos.
|
|
25
|
+
* - **Cajón estándar** (`variant="drawer"`) — Panel vertical siempre visible
|
|
26
|
+
* con etiquetas de texto completo. Sin atenuación (scrim). Ideal para pantallas grandes.
|
|
27
|
+
* - **Cajón modal** (`variant="drawer" modal`) — Cajón superpuesto con atenuación (scrim).
|
|
28
|
+
* Se abre/cierra a través de la propiedad `open`. Atrapa el foco del teclado mientras está abierto.
|
|
29
|
+
* Se cierra al presionar la tecla `Escape`.
|
|
30
30
|
*
|
|
31
|
-
* **
|
|
32
|
-
*
|
|
33
|
-
* `connectedCallback`
|
|
34
|
-
*
|
|
31
|
+
* **Manejo del teclado:**
|
|
32
|
+
* Cuando `modal=true`, el componente añade un listener global de `keydown` en
|
|
33
|
+
* `connectedCallback` que cierra el cajón con `Escape`. El listener se
|
|
34
|
+
* elimina en `disconnectedCallback`.
|
|
35
35
|
*
|
|
36
36
|
* @example
|
|
37
37
|
* ```html
|
|
38
|
-
* <!--
|
|
38
|
+
* <!-- Barra de navegación inferior -->
|
|
39
39
|
* <moni-nav placement="bottom">
|
|
40
|
-
* <moni-nav-item icon="home" label="
|
|
41
|
-
* <moni-nav-item icon="search" label="
|
|
42
|
-
* <moni-nav-item icon="person" label="
|
|
40
|
+
* <moni-nav-item icon="home" label="Inicio" active></moni-nav-item>
|
|
41
|
+
* <moni-nav-item icon="search" label="Buscar"></moni-nav-item>
|
|
42
|
+
* <moni-nav-item icon="person" label="Perfil"></moni-nav-item>
|
|
43
43
|
* </moni-nav>
|
|
44
44
|
*
|
|
45
|
-
* <!--
|
|
45
|
+
* <!-- Cajón de navegación modal -->
|
|
46
46
|
* <moni-nav variant="drawer" modal open placement="left">
|
|
47
|
-
* <h3 slot="header">
|
|
48
|
-
* <moni-nav-item icon="home" label="
|
|
49
|
-
* <moni-nav-item icon="settings" label="
|
|
47
|
+
* <h3 slot="header">Mi App</h3>
|
|
48
|
+
* <moni-nav-item icon="home" label="Inicio" active></moni-nav-item>
|
|
49
|
+
* <moni-nav-item icon="settings" label="Ajustes"></moni-nav-item>
|
|
50
50
|
* </moni-nav>
|
|
51
51
|
* ```
|
|
52
52
|
*
|
|
53
|
-
* @slot default - `<moni-nav-item
|
|
54
|
-
* @slot header -
|
|
55
|
-
* @slot footer -
|
|
53
|
+
* @slot default - Hijos `<moni-nav-item>`.
|
|
54
|
+
* @slot header - Contenido encima de los elementos de navegación (solo variante drawer).
|
|
55
|
+
* @slot footer - Contenido debajo de los elementos de navegación (solo variante drawer).
|
|
56
56
|
*
|
|
57
|
-
* @csspart nav -
|
|
58
|
-
* @csspart scrim -
|
|
57
|
+
* @csspart nav - El elemento `<nav>` interior.
|
|
58
|
+
* @csspart scrim - El atenuador de fondo (scrim) (solo cajón modal).
|
|
59
59
|
*/
|
|
60
60
|
export declare class MoniNav extends MoniElement {
|
|
61
61
|
placement: 'top' | 'bottom' | 'left' | 'right';
|
|
@@ -63,13 +63,72 @@ export declare class MoniNav extends MoniElement {
|
|
|
63
63
|
modal: boolean;
|
|
64
64
|
open: boolean;
|
|
65
65
|
layout: 'vertical' | 'horizontal' | 'auto';
|
|
66
|
+
/**
|
|
67
|
+
* Hook de inicialización (Lit).
|
|
68
|
+
* Vincula el listener global para teclado, asegurando que `_onKeydown` mantenga
|
|
69
|
+
* el contexto correcto de `this` al ser disparado por el documento.
|
|
70
|
+
*/
|
|
66
71
|
connectedCallback(): void;
|
|
72
|
+
/**
|
|
73
|
+
* Hook de destrucción (Lit).
|
|
74
|
+
* Remueve el listener de teclado global para evitar fugas de memoria (memory leaks)
|
|
75
|
+
* cuando el componente de navegación es retirado del DOM.
|
|
76
|
+
*/
|
|
67
77
|
disconnectedCallback(): void;
|
|
78
|
+
/**
|
|
79
|
+
* Manejador global de eventos de teclado.
|
|
80
|
+
* Implementa el patrón de accesibilidad estándar: Si el drawer es modal y está abierto,
|
|
81
|
+
* presionar la tecla Escape forzará su cierre inmediato.
|
|
82
|
+
*/
|
|
68
83
|
private _onKeydown;
|
|
84
|
+
/**
|
|
85
|
+
* Función de cierre rápido invocada típicamente al hacer clic en el backdrop/scrim.
|
|
86
|
+
* Modifica directamente la propiedad `open` a false si la navegación opera en modo modal.
|
|
87
|
+
*/
|
|
69
88
|
private _closeModal;
|
|
89
|
+
/**
|
|
90
|
+
* Propaga los cambios estructurales a todos los hijos `<moni-nav-item>` insertados en la ranura.
|
|
91
|
+
*
|
|
92
|
+
* Cuando `placement`, `variant`, `layout`, `modal` o `open` cambian en el
|
|
93
|
+
* `<moni-nav>` padre, los elementos hijos `<moni-nav-item>` también deben actualizar su estado
|
|
94
|
+
* de diseño calculado (layout) y de apertura. Esto se hace imperativamente a través de `_propagateToItems()` en lugar
|
|
95
|
+
* de a través de la API de Contexto de Lit para evitar la sobrecarga del Proveedor de Contexto para una simple
|
|
96
|
+
* relación padre→hijo.
|
|
97
|
+
*
|
|
98
|
+
* @param changed - Mapa de los nombres de las propiedades reactivas que desencadenaron este ciclo de actualización.
|
|
99
|
+
*/
|
|
70
100
|
updated(changed: Map<string, unknown>): void;
|
|
101
|
+
/**
|
|
102
|
+
* Patrón de inyección de propiedades "Top-Down" sin usar Context API.
|
|
103
|
+
* Pasa las variables arquitectónicas (`placement`, `variant`, `layout`) a los `moni-nav-item`
|
|
104
|
+
* hijos para que ellos puedan adaptar su CSS (ej: ocultar la etiqueta en la variante 'rail').
|
|
105
|
+
* Se lanza al inicializar o cada vez que cambia una prop en el contenedor.
|
|
106
|
+
*/
|
|
71
107
|
private _propagateToItems;
|
|
72
108
|
static styles: import("lit").CSSResult[];
|
|
109
|
+
/**
|
|
110
|
+
* Renderiza el contenedor de navegación con su superposición opcional de atenuación (scrim).
|
|
111
|
+
*
|
|
112
|
+
* **Composición de clases:**
|
|
113
|
+
* - `this.placement` (`'left'`, `'right'`, `'bottom'`) — posiciona el cajón
|
|
114
|
+
* o la barra de navegación inferior contra el borde correcto de la ventana gráfica.
|
|
115
|
+
* - `'max'` — agregado cuando `variant='drawer'`; expande la navegación a toda altura
|
|
116
|
+
* y ancho según la especificación M3 Navigation Drawer.
|
|
117
|
+
*
|
|
118
|
+
* **Atenuación de cajón modal (Modal drawer scrim):**
|
|
119
|
+
* `isModalDrawer` es `true` cuando `variant='drawer'` Y `modal=true`. En este
|
|
120
|
+
* caso, se renderiza un div `.scrim` detrás del cajón como una superposición
|
|
121
|
+
* de hacer-clic-para-descartar. La atenuación tiene `aria-hidden="true"` ya que es puramente visual.
|
|
122
|
+
*
|
|
123
|
+
* **Atributo `[open]`:**
|
|
124
|
+
* La vinculación `?open=${this.open}` agrega/elimina el atributo `open` en el
|
|
125
|
+
* elemento `<nav>`. Los selectores de atributo CSS `[open]` impulsan la transición
|
|
126
|
+
* de deslizamiento hacia adentro/afuera, manteniendo la animación completamente en CSS (no se requiere GSAP para este componente).
|
|
127
|
+
*
|
|
128
|
+
* **Punto de referencia ARIA (ARIA landmark):**
|
|
129
|
+
* El elemento `<nav>` se usa directamente (no un `<div role="navigation">`) para
|
|
130
|
+
* proporcionar un punto de referencia ARIA implícito al que pueden saltar los lectores de pantalla.
|
|
131
|
+
*/
|
|
73
132
|
render(): import("lit").TemplateResult<1>;
|
|
74
133
|
}
|
|
75
134
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moni-nav.d.ts","sourceRoot":"","sources":["../../src/components/moni-nav.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,qBACa,OAAQ,SAAQ,WAAW;IAEvC,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAS;IAEvD,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAU;IACQ,KAAK,UAAS;IACd,IAAI,UAAQ;IAExD,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,CAAU;
|
|
1
|
+
{"version":3,"file":"moni-nav.d.ts","sourceRoot":"","sources":["../../src/components/moni-nav.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,qBACa,OAAQ,SAAQ,WAAW;IAEvC,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAS;IAEvD,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAU;IACQ,KAAK,UAAS;IACd,IAAI,UAAQ;IAExD,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,CAAU;IAEpD;;;;OAIG;IACM,iBAAiB;IAM1B;;;;OAIG;IACM,oBAAoB;IAK7B;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAMlB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAMnB;;;;;;;;;;OAUG;IACM,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAY9C;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB,CAOvB;IAEF,OAAgB,MAAM,4BAoJpB;IAEF;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACM,MAAM;CAyBf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,UAAU,EAAE,OAAO,CAAC;KACpB;CACD;AAED,eAAe,OAAO,CAAC"}
|