@moni-labs/moni-ui 0.3.1 → 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 +5181 -1043
- 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 +471 -53
- package/dist/components/moni-carousel.d.ts.map +1 -1
- package/dist/components/moni-carousel.js +862 -264
- 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 +953 -290
- 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,51 +6,96 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { MoniElement } from './_base/index.js';
|
|
8
8
|
/**
|
|
9
|
-
* Material Design 3 Split Button
|
|
9
|
+
* Componente Material Design 3 Split Button (Botón dividido).
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* Un botón dividido combina un botón de acción principal con un botón secundario desplegable.
|
|
12
|
+
* Los dos botones se asientan a ras uno del otro, típicamente compartiendo
|
|
13
|
+
* un color de fondo y elevación, pero separados por un borde distinto.
|
|
14
14
|
*
|
|
15
|
-
* **
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
15
|
+
* **Arquitectura visual:**
|
|
16
|
+
* El componente actúa como un contenedor de diseño (`display: inline-flex`) que
|
|
17
|
+
* agrupa dos botones estándar. Anula (overrides) los márgenes del botón posterior (trailing)
|
|
18
|
+
* para crear el aspecto "conectado" (similar a los grupos de botones conectados).
|
|
19
19
|
*
|
|
20
|
-
* **
|
|
21
|
-
*
|
|
22
|
-
* - `slot="leading-button"` —
|
|
23
|
-
* - `slot="trailing-button"` —
|
|
20
|
+
* **Uso:**
|
|
21
|
+
* Los consumidores deben proporcionar exactamente dos botones a través de los slots con nombre:
|
|
22
|
+
* - `slot="leading-button"` — La acción principal (usualmente texto o texto+icono).
|
|
23
|
+
* - `slot="trailing-button"` — La acción secundaria (usualmente solo un icono desplegable).
|
|
24
24
|
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
25
|
+
* Ambos botones deben ser elementos `<moni-button>` o `<moni-icon-button>` estándar
|
|
26
|
+
* configurados con variantes coincidentes para una apariencia cohesiva.
|
|
27
27
|
*
|
|
28
28
|
* @example
|
|
29
29
|
* ```html
|
|
30
30
|
* <moni-split-button variant="filled">
|
|
31
|
-
* <moni-button slot="leading-button" icon="send">
|
|
31
|
+
* <moni-button slot="leading-button" icon="send">Enviar</moni-button>
|
|
32
32
|
* <moni-button slot="trailing-button" icon="arrow_drop_down" id="schedule-trigger"></moni-button>
|
|
33
33
|
* </moni-split-button>
|
|
34
34
|
*
|
|
35
35
|
* <moni-menu id="schedule-menu" placement="bottom">
|
|
36
|
-
* <moni-menu-item>
|
|
36
|
+
* <moni-menu-item>Programar envío...</moni-menu-item>
|
|
37
37
|
* </moni-menu>
|
|
38
38
|
* ```
|
|
39
39
|
*
|
|
40
|
-
* @slot leading-button -
|
|
41
|
-
* @slot trailing-button -
|
|
40
|
+
* @slot leading-button - El botón de acción principal a la izquierda.
|
|
41
|
+
* @slot trailing-button - La acción secundaria (disparador desplegable) a la derecha.
|
|
42
42
|
*/
|
|
43
43
|
export declare class MoniSplitButton extends MoniElement {
|
|
44
|
+
/**
|
|
45
|
+
* Variante visual del contenedor del botón dividido.
|
|
46
|
+
* Pasa las sugerencias de estilo apropiadas a sus hijos.
|
|
47
|
+
* @type {'filled' | 'tonal' | 'outlined' | 'elevated'}
|
|
48
|
+
* @default 'filled'
|
|
49
|
+
*/
|
|
44
50
|
variant: 'filled' | 'tonal' | 'outlined' | 'elevated';
|
|
51
|
+
/**
|
|
52
|
+
* Tamaño global aplicado a ambos botones en los slots.
|
|
53
|
+
* @type {'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'extra'}
|
|
54
|
+
* @default 'medium'
|
|
55
|
+
*/
|
|
45
56
|
size: 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'extra';
|
|
57
|
+
/**
|
|
58
|
+
* El espacio (gap) CSS entre los botones líder y posterior.
|
|
59
|
+
* Normalmente 1px o 0 según la especificación M3.
|
|
60
|
+
* @type {string}
|
|
61
|
+
*/
|
|
46
62
|
gap: string;
|
|
47
63
|
private leadingElements;
|
|
48
64
|
private trailingElements;
|
|
49
65
|
static styles: import("lit").CSSResult[];
|
|
66
|
+
/**
|
|
67
|
+
* Hook del ciclo de vida reactivo (Lit).
|
|
68
|
+
* Responde a cualquier cambio en `variant`, `size` o `gap`
|
|
69
|
+
* forzando una actualización hacia todos los botones anidados.
|
|
70
|
+
*/
|
|
50
71
|
protected updated(changedProperties: Map<string | number | symbol, unknown>): void;
|
|
72
|
+
/**
|
|
73
|
+
* Manejador del slot change.
|
|
74
|
+
* Cuando los botones líder o cola se inyectan en el DOM,
|
|
75
|
+
* propaga las configuraciones físicas.
|
|
76
|
+
*/
|
|
51
77
|
private handleSlotChange;
|
|
52
78
|
private getGapValue;
|
|
79
|
+
/**
|
|
80
|
+
* Sincronizador de Propiedades.
|
|
81
|
+
* Distingue explícitamente entre el botón primario (leading) y el secundario (trailing)
|
|
82
|
+
* que usualmente alberga un ícono de dropdown. A cada uno se le inyecta un `shape`
|
|
83
|
+
* distinto (`left-round-flat` vs `right-round-flat`) para que juntos formen una cápsula pill uniforme.
|
|
84
|
+
*/
|
|
53
85
|
private updateChildren;
|
|
86
|
+
/**
|
|
87
|
+
* Renderiza el botón dividido como un control compuesto: botón de acción principal + disparador desplegable.
|
|
88
|
+
*
|
|
89
|
+
* **Diseño de dos zonas:**
|
|
90
|
+
* - Botón principal (zona líder) — la acción principal; lleva el `icon` y
|
|
91
|
+
* la etiqueta del slot por defecto. Al hacer clic se dispara el evento principal `click`.
|
|
92
|
+
* - Disparador desplegable (zona posterior) — un botón de icono secundario (icono `expand_more`)
|
|
93
|
+
* que abre el menú desplegable. Ambas zonas comparten el mismo `variant` y `size`.
|
|
94
|
+
*
|
|
95
|
+
* **Borde compartido:**
|
|
96
|
+
* Los dos botones usan los atributos de forma (shape) `left-round` / `right-round` para
|
|
97
|
+
* crear una sola píldora (pill) conectada con un borde interior compartido.
|
|
98
|
+
*/
|
|
54
99
|
render(): import("lit").TemplateResult<1>;
|
|
55
100
|
}
|
|
56
101
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moni-split-button.d.ts","sourceRoot":"","sources":["../../src/components/moni-split-button.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBACa,eAAgB,SAAQ,WAAW;
|
|
1
|
+
{"version":3,"file":"moni-split-button.d.ts","sourceRoot":"","sources":["../../src/components/moni-split-button.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBACa,eAAgB,SAAQ,WAAW;IAC/C;;;;;OAKG;IAEH,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAY;IAEjE;;;;OAIG;IAEH,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAY;IAE9E;;;;OAIG;IAEH,GAAG,SAAM;IAGT,OAAO,CAAC,eAAe,CAAiB;IAGxC,OAAO,CAAC,gBAAgB,CAAiB;IAEzC,OAAgB,MAAM,4BAoBpB;IAEF;;;;OAIG;cACgB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC;IAOpF;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,WAAW;IAWnB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAuBtB;;;;;;;;;;;;OAYG;IACM,MAAM;CAYf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,mBAAmB,EAAE,eAAe,CAAC;KACrC;CACD;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -14,45 +14,61 @@ import { html, css } from 'lit';
|
|
|
14
14
|
import { customElement, property, queryAssignedElements } from 'lit/decorators.js';
|
|
15
15
|
import { MoniElement, sharedStyles } from './_base/index.js';
|
|
16
16
|
/**
|
|
17
|
-
* Material Design 3 Split Button
|
|
17
|
+
* Componente Material Design 3 Split Button (Botón dividido).
|
|
18
18
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
19
|
+
* Un botón dividido combina un botón de acción principal con un botón secundario desplegable.
|
|
20
|
+
* Los dos botones se asientan a ras uno del otro, típicamente compartiendo
|
|
21
|
+
* un color de fondo y elevación, pero separados por un borde distinto.
|
|
22
22
|
*
|
|
23
|
-
* **
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
23
|
+
* **Arquitectura visual:**
|
|
24
|
+
* El componente actúa como un contenedor de diseño (`display: inline-flex`) que
|
|
25
|
+
* agrupa dos botones estándar. Anula (overrides) los márgenes del botón posterior (trailing)
|
|
26
|
+
* para crear el aspecto "conectado" (similar a los grupos de botones conectados).
|
|
27
27
|
*
|
|
28
|
-
* **
|
|
29
|
-
*
|
|
30
|
-
* - `slot="leading-button"` —
|
|
31
|
-
* - `slot="trailing-button"` —
|
|
28
|
+
* **Uso:**
|
|
29
|
+
* Los consumidores deben proporcionar exactamente dos botones a través de los slots con nombre:
|
|
30
|
+
* - `slot="leading-button"` — La acción principal (usualmente texto o texto+icono).
|
|
31
|
+
* - `slot="trailing-button"` — La acción secundaria (usualmente solo un icono desplegable).
|
|
32
32
|
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
33
|
+
* Ambos botones deben ser elementos `<moni-button>` o `<moni-icon-button>` estándar
|
|
34
|
+
* configurados con variantes coincidentes para una apariencia cohesiva.
|
|
35
35
|
*
|
|
36
36
|
* @example
|
|
37
37
|
* ```html
|
|
38
38
|
* <moni-split-button variant="filled">
|
|
39
|
-
* <moni-button slot="leading-button" icon="send">
|
|
39
|
+
* <moni-button slot="leading-button" icon="send">Enviar</moni-button>
|
|
40
40
|
* <moni-button slot="trailing-button" icon="arrow_drop_down" id="schedule-trigger"></moni-button>
|
|
41
41
|
* </moni-split-button>
|
|
42
42
|
*
|
|
43
43
|
* <moni-menu id="schedule-menu" placement="bottom">
|
|
44
|
-
* <moni-menu-item>
|
|
44
|
+
* <moni-menu-item>Programar envío...</moni-menu-item>
|
|
45
45
|
* </moni-menu>
|
|
46
46
|
* ```
|
|
47
47
|
*
|
|
48
|
-
* @slot leading-button -
|
|
49
|
-
* @slot trailing-button -
|
|
48
|
+
* @slot leading-button - El botón de acción principal a la izquierda.
|
|
49
|
+
* @slot trailing-button - La acción secundaria (disparador desplegable) a la derecha.
|
|
50
50
|
*/
|
|
51
51
|
let MoniSplitButton = class MoniSplitButton extends MoniElement {
|
|
52
52
|
constructor() {
|
|
53
53
|
super(...arguments);
|
|
54
|
+
/**
|
|
55
|
+
* Variante visual del contenedor del botón dividido.
|
|
56
|
+
* Pasa las sugerencias de estilo apropiadas a sus hijos.
|
|
57
|
+
* @type {'filled' | 'tonal' | 'outlined' | 'elevated'}
|
|
58
|
+
* @default 'filled'
|
|
59
|
+
*/
|
|
54
60
|
this.variant = 'filled';
|
|
61
|
+
/**
|
|
62
|
+
* Tamaño global aplicado a ambos botones en los slots.
|
|
63
|
+
* @type {'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'extra'}
|
|
64
|
+
* @default 'medium'
|
|
65
|
+
*/
|
|
55
66
|
this.size = 'medium';
|
|
67
|
+
/**
|
|
68
|
+
* El espacio (gap) CSS entre los botones líder y posterior.
|
|
69
|
+
* Normalmente 1px o 0 según la especificación M3.
|
|
70
|
+
* @type {string}
|
|
71
|
+
*/
|
|
56
72
|
this.gap = '';
|
|
57
73
|
}
|
|
58
74
|
static { this.styles = [
|
|
@@ -76,12 +92,22 @@ let MoniSplitButton = class MoniSplitButton extends MoniElement {
|
|
|
76
92
|
}
|
|
77
93
|
`
|
|
78
94
|
]; }
|
|
95
|
+
/**
|
|
96
|
+
* Hook del ciclo de vida reactivo (Lit).
|
|
97
|
+
* Responde a cualquier cambio en `variant`, `size` o `gap`
|
|
98
|
+
* forzando una actualización hacia todos los botones anidados.
|
|
99
|
+
*/
|
|
79
100
|
updated(changedProperties) {
|
|
80
101
|
super.updated(changedProperties);
|
|
81
102
|
if (changedProperties.has('variant') || changedProperties.has('size') || changedProperties.has('gap')) {
|
|
82
103
|
this.updateChildren();
|
|
83
104
|
}
|
|
84
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Manejador del slot change.
|
|
108
|
+
* Cuando los botones líder o cola se inyectan en el DOM,
|
|
109
|
+
* propaga las configuraciones físicas.
|
|
110
|
+
*/
|
|
85
111
|
handleSlotChange() {
|
|
86
112
|
this.updateChildren();
|
|
87
113
|
}
|
|
@@ -101,6 +127,12 @@ let MoniSplitButton = class MoniSplitButton extends MoniElement {
|
|
|
101
127
|
return '0.5rem';
|
|
102
128
|
return gap;
|
|
103
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Sincronizador de Propiedades.
|
|
132
|
+
* Distingue explícitamente entre el botón primario (leading) y el secundario (trailing)
|
|
133
|
+
* que usualmente alberga un ícono de dropdown. A cada uno se le inyecta un `shape`
|
|
134
|
+
* distinto (`left-round-flat` vs `right-round-flat`) para que juntos formen una cápsula pill uniforme.
|
|
135
|
+
*/
|
|
104
136
|
updateChildren() {
|
|
105
137
|
const leading = this.leadingElements.find((el) => el.tagName.toLowerCase() === 'moni-button' || el.tagName.toLowerCase() === 'moni-icon-button');
|
|
106
138
|
const trailing = this.trailingElements.find((el) => el.tagName.toLowerCase() === 'moni-button' || el.tagName.toLowerCase() === 'moni-icon-button');
|
|
@@ -116,6 +148,19 @@ let MoniSplitButton = class MoniSplitButton extends MoniElement {
|
|
|
116
148
|
trailing.setAttribute('variant', this.variant);
|
|
117
149
|
}
|
|
118
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Renderiza el botón dividido como un control compuesto: botón de acción principal + disparador desplegable.
|
|
153
|
+
*
|
|
154
|
+
* **Diseño de dos zonas:**
|
|
155
|
+
* - Botón principal (zona líder) — la acción principal; lleva el `icon` y
|
|
156
|
+
* la etiqueta del slot por defecto. Al hacer clic se dispara el evento principal `click`.
|
|
157
|
+
* - Disparador desplegable (zona posterior) — un botón de icono secundario (icono `expand_more`)
|
|
158
|
+
* que abre el menú desplegable. Ambas zonas comparten el mismo `variant` y `size`.
|
|
159
|
+
*
|
|
160
|
+
* **Borde compartido:**
|
|
161
|
+
* Los dos botones usan los atributos de forma (shape) `left-round` / `right-round` para
|
|
162
|
+
* crear una sola píldora (pill) conectada con un borde interior compartido.
|
|
163
|
+
*/
|
|
119
164
|
render() {
|
|
120
165
|
const resolvedGap = this.getGapValue(this.gap);
|
|
121
166
|
const inlineStyles = resolvedGap
|
|
@@ -7,42 +7,42 @@
|
|
|
7
7
|
import { MoniElement } from './_base/index.js';
|
|
8
8
|
import './moni-icon.js';
|
|
9
9
|
/**
|
|
10
|
-
* Material Design 3 Step
|
|
10
|
+
* Componente Material Design 3 Step (Paso).
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
12
|
+
* Un paso individual dentro de un `<moni-stepper>`. Los pasos muestran el progreso a través
|
|
13
|
+
* de una secuencia de operaciones lógicas y numeradas.
|
|
14
14
|
*
|
|
15
|
-
* **
|
|
15
|
+
* **Referencia a la especificación M3:** `m3-docs/components/progress-indicators/specs.md` (Patrón Stepper)
|
|
16
16
|
*
|
|
17
|
-
* **
|
|
18
|
-
*
|
|
19
|
-
* (
|
|
20
|
-
*
|
|
21
|
-
*
|
|
17
|
+
* **Anatomía y aspecto visual:**
|
|
18
|
+
* Un paso renderiza un indicador circular que contiene ya sea su número de secuencia
|
|
19
|
+
* (inyectado automáticamente por el stepper padre) o un icono personalizado. Debajo o
|
|
20
|
+
* al lado del indicador (dependiendo de la `orientation` del padre), renderiza
|
|
21
|
+
* el `title` (título) y un `description` (descripción) opcional.
|
|
22
22
|
*
|
|
23
|
-
* **
|
|
24
|
-
*
|
|
25
|
-
* `active
|
|
26
|
-
* - **Active:**
|
|
27
|
-
* - **Completed:**
|
|
28
|
-
*
|
|
23
|
+
* **Gestión del estado:**
|
|
24
|
+
* El `<moni-stepper>` padre calcula e inyecta automáticamente las propiedades `index`,
|
|
25
|
+
* `active` y `completed` basándose en su estado actual.
|
|
26
|
+
* - **Activo (Active):** Resaltado con el color primario, indicando el paso actual.
|
|
27
|
+
* - **Completado (Completed):** Se muestra con un fondo primario sólido y un icono de
|
|
28
|
+
* marca de verificación (el estado `completed` anula el índice numérico).
|
|
29
29
|
*
|
|
30
30
|
* @example
|
|
31
31
|
* ```html
|
|
32
|
-
* <!--
|
|
32
|
+
* <!-- Típicamente usado dentro de un stepper -->
|
|
33
33
|
* <moni-stepper current="1">
|
|
34
|
-
* <moni-step title="
|
|
35
|
-
* <moni-step title="
|
|
36
|
-
* <moni-step title="
|
|
34
|
+
* <moni-step title="Envío" description="Ingresar dirección"></moni-step>
|
|
35
|
+
* <moni-step title="Pago" description="Detalles de tarjeta de crédito"></moni-step>
|
|
36
|
+
* <moni-step title="Revisión" description="Confirmar pedido"></moni-step>
|
|
37
37
|
* </moni-stepper>
|
|
38
38
|
*
|
|
39
|
-
* <!--
|
|
40
|
-
* <moni-step title="
|
|
39
|
+
* <!-- Anulando el icono -->
|
|
40
|
+
* <moni-step title="Hecho" icon="celebration"></moni-step>
|
|
41
41
|
* ```
|
|
42
42
|
*
|
|
43
|
-
* @csspart step-indicator -
|
|
44
|
-
* @csspart title -
|
|
45
|
-
* @csspart description -
|
|
43
|
+
* @csspart step-indicator - La insignia circular que contiene el número/icono.
|
|
44
|
+
* @csspart title - El texto principal del título.
|
|
45
|
+
* @csspart description - El texto secundario de la descripción.
|
|
46
46
|
*/
|
|
47
47
|
export declare class MoniStep extends MoniElement {
|
|
48
48
|
title: string;
|
|
@@ -52,6 +52,18 @@ export declare class MoniStep extends MoniElement {
|
|
|
52
52
|
icon: string;
|
|
53
53
|
index: number;
|
|
54
54
|
static styles: import("lit").CSSResult[];
|
|
55
|
+
/**
|
|
56
|
+
* Renderiza el indicador del paso y la etiqueta (el conector se hace vía CSS ::after).
|
|
57
|
+
*
|
|
58
|
+
* **Indicador de paso (Step indicator):**
|
|
59
|
+
* - `completed=true` — muestra un icono de marca de verificación.
|
|
60
|
+
* - `active=true` — muestra el número de paso en un contenedor resaltado (vía CSS).
|
|
61
|
+
* - De lo contrario — muestra el número de paso en un estilo tenue.
|
|
62
|
+
*
|
|
63
|
+
* **Contenido del Slot:**
|
|
64
|
+
* El slot por defecto permite a los consumidores proyectar contenido personalizado
|
|
65
|
+
* dentro del cuerpo del paso.
|
|
66
|
+
*/
|
|
55
67
|
render(): import("lit").TemplateResult<1>;
|
|
56
68
|
}
|
|
57
69
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moni-step.d.ts","sourceRoot":"","sources":["../../src/components/moni-step.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBACa,QAAS,SAAQ,WAAW;IACX,KAAK,SAAM;IACX,WAAW,SAAM;IACF,MAAM,UAAS;IACf,SAAS,UAAS;IACjC,IAAI,SAAM;IACI,KAAK,SAAK;IAErD,OAAgB,MAAM,4BAqGpB;
|
|
1
|
+
{"version":3,"file":"moni-step.d.ts","sourceRoot":"","sources":["../../src/components/moni-step.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBACa,QAAS,SAAQ,WAAW;IACX,KAAK,SAAM;IACX,WAAW,SAAM;IACF,MAAM,UAAS;IACf,SAAS,UAAS;IACjC,IAAI,SAAM;IACI,KAAK,SAAK;IAErD,OAAgB,MAAM,4BAqGpB;IAEF;;;;;;;;;;;OAWG;IACM,MAAM;CAkBf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,WAAW,EAAE,QAAQ,CAAC;KACtB;CACD;AAED,eAAe,QAAQ,CAAC"}
|
|
@@ -15,42 +15,42 @@ import { customElement, property } from 'lit/decorators.js';
|
|
|
15
15
|
import { MoniElement, sharedStyles } from './_base/index.js';
|
|
16
16
|
import './moni-icon.js';
|
|
17
17
|
/**
|
|
18
|
-
* Material Design 3 Step
|
|
18
|
+
* Componente Material Design 3 Step (Paso).
|
|
19
19
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
20
|
+
* Un paso individual dentro de un `<moni-stepper>`. Los pasos muestran el progreso a través
|
|
21
|
+
* de una secuencia de operaciones lógicas y numeradas.
|
|
22
22
|
*
|
|
23
|
-
* **
|
|
23
|
+
* **Referencia a la especificación M3:** `m3-docs/components/progress-indicators/specs.md` (Patrón Stepper)
|
|
24
24
|
*
|
|
25
|
-
* **
|
|
26
|
-
*
|
|
27
|
-
* (
|
|
28
|
-
*
|
|
29
|
-
*
|
|
25
|
+
* **Anatomía y aspecto visual:**
|
|
26
|
+
* Un paso renderiza un indicador circular que contiene ya sea su número de secuencia
|
|
27
|
+
* (inyectado automáticamente por el stepper padre) o un icono personalizado. Debajo o
|
|
28
|
+
* al lado del indicador (dependiendo de la `orientation` del padre), renderiza
|
|
29
|
+
* el `title` (título) y un `description` (descripción) opcional.
|
|
30
30
|
*
|
|
31
|
-
* **
|
|
32
|
-
*
|
|
33
|
-
* `active
|
|
34
|
-
* - **Active:**
|
|
35
|
-
* - **Completed:**
|
|
36
|
-
*
|
|
31
|
+
* **Gestión del estado:**
|
|
32
|
+
* El `<moni-stepper>` padre calcula e inyecta automáticamente las propiedades `index`,
|
|
33
|
+
* `active` y `completed` basándose en su estado actual.
|
|
34
|
+
* - **Activo (Active):** Resaltado con el color primario, indicando el paso actual.
|
|
35
|
+
* - **Completado (Completed):** Se muestra con un fondo primario sólido y un icono de
|
|
36
|
+
* marca de verificación (el estado `completed` anula el índice numérico).
|
|
37
37
|
*
|
|
38
38
|
* @example
|
|
39
39
|
* ```html
|
|
40
|
-
* <!--
|
|
40
|
+
* <!-- Típicamente usado dentro de un stepper -->
|
|
41
41
|
* <moni-stepper current="1">
|
|
42
|
-
* <moni-step title="
|
|
43
|
-
* <moni-step title="
|
|
44
|
-
* <moni-step title="
|
|
42
|
+
* <moni-step title="Envío" description="Ingresar dirección"></moni-step>
|
|
43
|
+
* <moni-step title="Pago" description="Detalles de tarjeta de crédito"></moni-step>
|
|
44
|
+
* <moni-step title="Revisión" description="Confirmar pedido"></moni-step>
|
|
45
45
|
* </moni-stepper>
|
|
46
46
|
*
|
|
47
|
-
* <!--
|
|
48
|
-
* <moni-step title="
|
|
47
|
+
* <!-- Anulando el icono -->
|
|
48
|
+
* <moni-step title="Hecho" icon="celebration"></moni-step>
|
|
49
49
|
* ```
|
|
50
50
|
*
|
|
51
|
-
* @csspart step-indicator -
|
|
52
|
-
* @csspart title -
|
|
53
|
-
* @csspart description -
|
|
51
|
+
* @csspart step-indicator - La insignia circular que contiene el número/icono.
|
|
52
|
+
* @csspart title - El texto principal del título.
|
|
53
|
+
* @csspart description - El texto secundario de la descripción.
|
|
54
54
|
*/
|
|
55
55
|
let MoniStep = class MoniStep extends MoniElement {
|
|
56
56
|
constructor() {
|
|
@@ -96,11 +96,11 @@ let MoniStep = class MoniStep extends MoniElement {
|
|
|
96
96
|
min-block-size: 4rem;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
/*
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
99
|
+
/* Conector vertical. Geometría: el punto (dot) ocupa y=0 a y=2rem en
|
|
100
|
+
la parte superior del paso (el host es flex de columna con min-block-size 4rem).
|
|
101
|
+
El conector va desde la parte INFERIOR del punto actual (y=2rem) hasta
|
|
102
|
+
la parte INFERIOR del paso actual (y=100%). Esta fórmula se mantiene
|
|
103
|
+
calibrada independientemente de la altura del paso. */
|
|
104
104
|
:host-context(moni-stepper[orientation='vertical']):host(:not(:last-child))::after {
|
|
105
105
|
position: absolute;
|
|
106
106
|
inset-inline-start: calc(1rem - 0.03125rem);
|
|
@@ -164,6 +164,18 @@ let MoniStep = class MoniStep extends MoniElement {
|
|
|
164
164
|
}
|
|
165
165
|
`
|
|
166
166
|
]; }
|
|
167
|
+
/**
|
|
168
|
+
* Renderiza el indicador del paso y la etiqueta (el conector se hace vía CSS ::after).
|
|
169
|
+
*
|
|
170
|
+
* **Indicador de paso (Step indicator):**
|
|
171
|
+
* - `completed=true` — muestra un icono de marca de verificación.
|
|
172
|
+
* - `active=true` — muestra el número de paso en un contenedor resaltado (vía CSS).
|
|
173
|
+
* - De lo contrario — muestra el número de paso en un estilo tenue.
|
|
174
|
+
*
|
|
175
|
+
* **Contenido del Slot:**
|
|
176
|
+
* El slot por defecto permite a los consumidores proyectar contenido personalizado
|
|
177
|
+
* dentro del cuerpo del paso.
|
|
178
|
+
*/
|
|
167
179
|
render() {
|
|
168
180
|
const dot = this.completed
|
|
169
181
|
? html `<moni-icon name="check"></moni-icon>`
|
|
@@ -6,61 +6,98 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { MoniElement } from './_base/index.js';
|
|
8
8
|
/**
|
|
9
|
-
* Material Design 3 Stepper
|
|
9
|
+
* Componente Material Design 3 Stepper (Pasos/Progresión).
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* Un contenedor para una progresión lineal de elementos `<moni-step>`. Los steppers
|
|
12
|
+
* transmiten el progreso a través de pasos numerados e indican la posición
|
|
13
|
+
* actual del usuario dentro de un flujo.
|
|
14
14
|
*
|
|
15
|
-
* **
|
|
15
|
+
* **Referencia a la especificación M3:** `m3-docs/components/progress-indicators/specs.md`
|
|
16
16
|
*
|
|
17
|
-
* **
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* stepper
|
|
21
|
-
* -
|
|
22
|
-
* -
|
|
23
|
-
* -
|
|
17
|
+
* **Orquestación:**
|
|
18
|
+
* Este componente actúa como orquestador para sus hijos `<moni-step>` en los slots.
|
|
19
|
+
* Cada vez que cambia la propiedad `current` o se añaden/eliminan hijos, el
|
|
20
|
+
* stepper itera sobre todos los pasos hijos e inyecta su estado:
|
|
21
|
+
* - Asigna el `index` secuencial (basado en 0) a cada paso.
|
|
22
|
+
* - Establece `active=true` en el paso que coincide con el índice `current`.
|
|
23
|
+
* - Establece `completed=true` en todos los pasos anteriores al índice `current`.
|
|
24
24
|
*
|
|
25
|
-
* **
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
25
|
+
* **Diseño visual:**
|
|
26
|
+
* El stepper maneja el diseño (flex row o column basado en `orientation`)
|
|
27
|
+
* y asegura que las líneas conectoras entre los pasos se rendericen correctamente a través de
|
|
28
|
+
* pseudo-elementos CSS definidos en los estilos del `<moni-step>` hijo.
|
|
29
29
|
*
|
|
30
30
|
* @example
|
|
31
31
|
* ```html
|
|
32
32
|
* <moni-stepper current="1" orientation="horizontal">
|
|
33
|
-
* <moni-step title="
|
|
34
|
-
* <moni-step title="
|
|
35
|
-
* <moni-step title="
|
|
33
|
+
* <moni-step title="Paso 1"></moni-step>
|
|
34
|
+
* <moni-step title="Paso 2"></moni-step>
|
|
35
|
+
* <moni-step title="Paso 3"></moni-step>
|
|
36
36
|
* </moni-stepper>
|
|
37
37
|
*
|
|
38
38
|
* <script>
|
|
39
39
|
* const stepper = document.querySelector('moni-stepper');
|
|
40
|
-
* //
|
|
40
|
+
* // Mover al siguiente paso
|
|
41
41
|
* stepper.current = 2;
|
|
42
42
|
* </script>
|
|
43
43
|
* ```
|
|
44
44
|
*
|
|
45
|
-
* @slot default - `<moni-step
|
|
45
|
+
* @slot default - Elementos `<moni-step>`.
|
|
46
46
|
*/
|
|
47
47
|
export declare class MoniStepper extends MoniElement {
|
|
48
48
|
orientation: 'horizontal' | 'vertical';
|
|
49
49
|
current: number;
|
|
50
50
|
private _steps;
|
|
51
|
+
/**
|
|
52
|
+
* Hook del ciclo de vida reactivo (Lit).
|
|
53
|
+
* Cuando la orientación o el índice actual cambian, sincroniza
|
|
54
|
+
* el estado hacia todos los elementos hijos (`<moni-step>`).
|
|
55
|
+
*/
|
|
51
56
|
updated(changed: Map<string, unknown>): void;
|
|
52
57
|
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
58
|
+
* Propaga el índice del paso actual a cada elemento hijo `<moni-step>` en los slots,
|
|
59
|
+
* calculando e inyectando el estado de `index`, `completed` y `active`.
|
|
60
|
+
*
|
|
61
|
+
* **Diferimiento por microtarea (`Promise.resolve().then(...)`):**
|
|
62
|
+
* `@queryAssignedElements` de Lit se ejecuta sincrónicamente y no está disponible hasta
|
|
63
|
+
* después del primer renderizado conectado. Diferirlo a una microtarea asegura que los hijos
|
|
64
|
+
* en los slots hayan terminado su propio ciclo de vida `firstUpdated()` antes de que les escribamos
|
|
65
|
+
* el estado. Sin este diferimiento, escribir `step.active = true` durante el `updated()`
|
|
66
|
+
* del padre puede desencadenar renderizados hijos antes de que se apliquen sus estilos.
|
|
57
67
|
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
68
|
+
* **Respaldo de `querySelectorAll`:**
|
|
69
|
+
* `_steps` (de `@queryAssignedElements`) devuelve un array vacío antes del primer
|
|
70
|
+
* renderizado o cuando no hay elementos `<moni-step>` presentes en el slot. El respaldo
|
|
71
|
+
* a `querySelectorAll('moni-step')` maneja casos extremos donde se añaden pasos
|
|
72
|
+
* programáticamente sin pasar por el mecanismo de slots de Lit.
|
|
73
|
+
*
|
|
74
|
+
* **Bucle de inyección de estado:**
|
|
75
|
+
* Para cada `<moni-step>` en la posición `stepIndex`:
|
|
76
|
+
* - `stepElement.index = stepIndex` — proporciona el número de paso para su etiqueta.
|
|
77
|
+
* - `stepElement.completed = stepIndex < current` — verdadero para todos los pasos anteriores a `current`.
|
|
78
|
+
* - `stepElement.active = stepIndex === current` — verdadero solo para el paso en `current`.
|
|
60
79
|
*/
|
|
61
80
|
private _syncSteps;
|
|
62
81
|
static styles: import("lit").CSSResult[];
|
|
82
|
+
/**
|
|
83
|
+
* Renderiza el contenedor de lista ordenada (`<ol>`) que contiene los hijos `<moni-step>` en los slots.
|
|
84
|
+
*
|
|
85
|
+
* **Anatomía:**
|
|
86
|
+
* - El `<ol>` usa `list-style: none` y un diseño flex (fila o columna, basado en
|
|
87
|
+
* `orientation`) en lugar del renderizado nativo de lista ordenada, porque la
|
|
88
|
+
* visualización del número de paso es manejada por cada hijo `<moni-step>`.
|
|
89
|
+
* - La vinculación del evento `@slotchange` asegura que se llame a `_syncSteps()`
|
|
90
|
+
* cada vez que el consumidor añade o elimina elementos `<moni-step>` en tiempo de ejecución,
|
|
91
|
+
* manteniendo los estados `index`, `active` y `completed` sincronizados.
|
|
92
|
+
* - Cada `<moni-step>` en el slot está estilizado con `flex: 1` para que todos los pasos
|
|
93
|
+
* compartan el ancho disponible equitativamente (horizontal) o la altura (vertical).
|
|
94
|
+
*/
|
|
63
95
|
render(): import("lit").TemplateResult<1>;
|
|
96
|
+
/**
|
|
97
|
+
* Handler dinámico del slot.
|
|
98
|
+
* Detecta si el usuario añade o elimina pasos nativos (`<moni-step>`)
|
|
99
|
+
* desde el DOM en tiempo de ejecución, forzando una re-sincronización.
|
|
100
|
+
*/
|
|
64
101
|
private _onSlotChange;
|
|
65
102
|
}
|
|
66
103
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moni-stepper.d.ts","sourceRoot":"","sources":["../../src/components/moni-stepper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAG7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qBACa,WAAY,SAAQ,WAAW;IAE3C,WAAW,EAAE,YAAY,GAAG,UAAU,CAAgB;IACX,OAAO,SAAK;IAGvD,OAAO,CAAC,MAAM,CAAc;
|
|
1
|
+
{"version":3,"file":"moni-stepper.d.ts","sourceRoot":"","sources":["../../src/components/moni-stepper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAG7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qBACa,WAAY,SAAQ,WAAW;IAE3C,WAAW,EAAE,YAAY,GAAG,UAAU,CAAgB;IACX,OAAO,SAAK;IAGvD,OAAO,CAAC,MAAM,CAAc;IAE5B;;;;OAIG;IACM,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAU9C;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,OAAO,CAAC,UAAU;IAelB,OAAgB,MAAM,4BAwBpB;IAEF;;;;;;;;;;;;OAYG;IACM,MAAM;IAMf;;;;OAIG;IACH,OAAO,CAAC,aAAa,CAGnB;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,cAAc,EAAE,WAAW,CAAC;KAC5B;CACD;AAED,eAAe,WAAW,CAAC"}
|