@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,42 +6,41 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { MoniElement } from './_base/index.js';
|
|
8
8
|
/**
|
|
9
|
-
* Material Design 3 Select Option
|
|
9
|
+
* Componente Material Design 3 Select Option (Opción de Selección).
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
* `<moni-select
|
|
11
|
+
* Un elemento individual seleccionable diseñado para colocarse dentro de un
|
|
12
|
+
* menú desplegable `<moni-select>`.
|
|
13
13
|
*
|
|
14
|
-
* **
|
|
15
|
-
*
|
|
16
|
-
* `<moni-menu-item>`.
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
14
|
+
* **Interacción y diseño (layout):**
|
|
15
|
+
* Las opciones se renderizan como elementos `<li>` accesibles estilizados de forma idéntica a
|
|
16
|
+
* `<moni-menu-item>`. Cuando se insertan en un `<moni-select>`, el componente
|
|
17
|
+
* padre extrae sus atributos `value`, `label` y `group` para construir
|
|
18
|
+
* su modelo de datos interno y maneja la lógica de selección real, la navegación
|
|
19
|
+
* por teclado y el renderizado dentro del popup desplegable.
|
|
20
20
|
*
|
|
21
|
-
* **
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
21
|
+
* **Agrupación:**
|
|
22
|
+
* Las opciones se pueden clasificar en subcategorías proporcionando un atributo
|
|
23
|
+
* `group`. El `<moni-select>` padre usa esto para generar automáticamente
|
|
24
|
+
* encabezados de grupo (`<moni-select-group>`) en la lista desplegable.
|
|
25
25
|
*
|
|
26
26
|
* @example
|
|
27
27
|
* ```html
|
|
28
|
-
* <moni-select label="
|
|
29
|
-
* <!--
|
|
28
|
+
* <moni-select label="Framework favorito">
|
|
29
|
+
* <!-- Opción estándar -->
|
|
30
30
|
* <moni-select-option value="lit">Lit Element</moni-select-option>
|
|
31
31
|
*
|
|
32
|
-
* <!--
|
|
33
|
-
* <moni-select-option value="react" disabled>React (
|
|
32
|
+
* <!-- Opción deshabilitada -->
|
|
33
|
+
* <moni-select-option value="react" disabled>React (no permitido)</moni-select-option>
|
|
34
34
|
*
|
|
35
|
-
* <!--
|
|
36
|
-
* <moni-select-option value="vue" group="
|
|
35
|
+
* <!-- Opción agrupada -->
|
|
36
|
+
* <moni-select-option value="vue" group="Otros">Vue.js</moni-select-option>
|
|
37
37
|
* </moni-select>
|
|
38
38
|
* ```
|
|
39
39
|
*
|
|
40
|
-
* @slot default -
|
|
41
|
-
*
|
|
42
|
-
* `textContent`.
|
|
40
|
+
* @slot default - La etiqueta de texto para la opción. Si se omite el atributo `label`,
|
|
41
|
+
* el `<moni-select>` padre leerá el `textContent` de esta ranura (slot).
|
|
43
42
|
*
|
|
44
|
-
* @csspart item -
|
|
43
|
+
* @csspart item - El elemento `<li>` exterior.
|
|
45
44
|
*/
|
|
46
45
|
export declare class MoniSelectOption extends MoniElement {
|
|
47
46
|
value: string;
|
|
@@ -50,6 +49,14 @@ export declare class MoniSelectOption extends MoniElement {
|
|
|
50
49
|
selected: boolean;
|
|
51
50
|
disabled: boolean;
|
|
52
51
|
static styles: import("lit").CSSResult[];
|
|
52
|
+
/**
|
|
53
|
+
* Renderiza la fila de la opción como un elemento de lista accesible con `role="option"`.
|
|
54
|
+
*
|
|
55
|
+
* `aria-selected=${this.selected}` permite a los lectores de pantalla anunciar el estado
|
|
56
|
+
* de selección actual cuando el usuario navega por el cuadro de lista con las teclas de flecha.
|
|
57
|
+
* Cuando `selected=true`, se renderiza un icono de marca de verificación principal (leading checkmark) a través de `<moni-icon name="check">`
|
|
58
|
+
* en lugar del slot del icono principal, según la especificación de opciones de Select de M3.
|
|
59
|
+
*/
|
|
53
60
|
render(): import("lit").TemplateResult<1>;
|
|
54
61
|
}
|
|
55
62
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moni-select-option.d.ts","sourceRoot":"","sources":["../../src/components/moni-select-option.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D
|
|
1
|
+
{"version":3,"file":"moni-select-option.d.ts","sourceRoot":"","sources":["../../src/components/moni-select-option.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBACa,gBAAiB,SAAQ,WAAW;IACnB,KAAK,SAAM;IACX,KAAK,SAAM;IACX,KAAK,SAAM;IACI,QAAQ,UAAS;IACjB,QAAQ,UAAS;IAE7D,OAAgB,MAAM,4BA4CpB;IAEF;;;;;;;OAOG;IACM,MAAM;CAQf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,oBAAoB,EAAE,gBAAgB,CAAC;KACvC;CACD;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -14,42 +14,41 @@ 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 Select Option
|
|
17
|
+
* Componente Material Design 3 Select Option (Opción de Selección).
|
|
18
18
|
*
|
|
19
|
-
*
|
|
20
|
-
* `<moni-select
|
|
19
|
+
* Un elemento individual seleccionable diseñado para colocarse dentro de un
|
|
20
|
+
* menú desplegable `<moni-select>`.
|
|
21
21
|
*
|
|
22
|
-
* **
|
|
23
|
-
*
|
|
24
|
-
* `<moni-menu-item>`.
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
22
|
+
* **Interacción y diseño (layout):**
|
|
23
|
+
* Las opciones se renderizan como elementos `<li>` accesibles estilizados de forma idéntica a
|
|
24
|
+
* `<moni-menu-item>`. Cuando se insertan en un `<moni-select>`, el componente
|
|
25
|
+
* padre extrae sus atributos `value`, `label` y `group` para construir
|
|
26
|
+
* su modelo de datos interno y maneja la lógica de selección real, la navegación
|
|
27
|
+
* por teclado y el renderizado dentro del popup desplegable.
|
|
28
28
|
*
|
|
29
|
-
* **
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
29
|
+
* **Agrupación:**
|
|
30
|
+
* Las opciones se pueden clasificar en subcategorías proporcionando un atributo
|
|
31
|
+
* `group`. El `<moni-select>` padre usa esto para generar automáticamente
|
|
32
|
+
* encabezados de grupo (`<moni-select-group>`) en la lista desplegable.
|
|
33
33
|
*
|
|
34
34
|
* @example
|
|
35
35
|
* ```html
|
|
36
|
-
* <moni-select label="
|
|
37
|
-
* <!--
|
|
36
|
+
* <moni-select label="Framework favorito">
|
|
37
|
+
* <!-- Opción estándar -->
|
|
38
38
|
* <moni-select-option value="lit">Lit Element</moni-select-option>
|
|
39
39
|
*
|
|
40
|
-
* <!--
|
|
41
|
-
* <moni-select-option value="react" disabled>React (
|
|
40
|
+
* <!-- Opción deshabilitada -->
|
|
41
|
+
* <moni-select-option value="react" disabled>React (no permitido)</moni-select-option>
|
|
42
42
|
*
|
|
43
|
-
* <!--
|
|
44
|
-
* <moni-select-option value="vue" group="
|
|
43
|
+
* <!-- Opción agrupada -->
|
|
44
|
+
* <moni-select-option value="vue" group="Otros">Vue.js</moni-select-option>
|
|
45
45
|
* </moni-select>
|
|
46
46
|
* ```
|
|
47
47
|
*
|
|
48
|
-
* @slot default -
|
|
49
|
-
*
|
|
50
|
-
* `textContent`.
|
|
48
|
+
* @slot default - La etiqueta de texto para la opción. Si se omite el atributo `label`,
|
|
49
|
+
* el `<moni-select>` padre leerá el `textContent` de esta ranura (slot).
|
|
51
50
|
*
|
|
52
|
-
* @csspart item -
|
|
51
|
+
* @csspart item - El elemento `<li>` exterior.
|
|
53
52
|
*/
|
|
54
53
|
let MoniSelectOption = class MoniSelectOption extends MoniElement {
|
|
55
54
|
constructor() {
|
|
@@ -105,6 +104,14 @@ let MoniSelectOption = class MoniSelectOption extends MoniElement {
|
|
|
105
104
|
}
|
|
106
105
|
`
|
|
107
106
|
]; }
|
|
107
|
+
/**
|
|
108
|
+
* Renderiza la fila de la opción como un elemento de lista accesible con `role="option"`.
|
|
109
|
+
*
|
|
110
|
+
* `aria-selected=${this.selected}` permite a los lectores de pantalla anunciar el estado
|
|
111
|
+
* de selección actual cuando el usuario navega por el cuadro de lista con las teclas de flecha.
|
|
112
|
+
* Cuando `selected=true`, se renderiza un icono de marca de verificación principal (leading checkmark) a través de `<moni-icon name="check">`
|
|
113
|
+
* en lugar del slot del icono principal, según la especificación de opciones de Select de M3.
|
|
114
|
+
*/
|
|
108
115
|
render() {
|
|
109
116
|
return html `<li
|
|
110
117
|
part="option"
|
|
@@ -9,79 +9,173 @@ import './moni-icon.js';
|
|
|
9
9
|
import './moni-progress.js';
|
|
10
10
|
import './moni-select-option.js';
|
|
11
11
|
/**
|
|
12
|
-
* Material Design 3 Select (
|
|
12
|
+
* Componente Material Design 3 Select (Menú Desplegable).
|
|
13
13
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* M3
|
|
14
|
+
* Un menú desplegable select personalizado completo con capacidad de búsqueda, grupos de opciones,
|
|
15
|
+
* navegación por teclado, animación y un modo de cajón/hoja (drawer/sheet) móvil opcional.
|
|
16
|
+
* Reemplaza el elemento nativo `<select>` con una alternativa completamente estilizada y accesible
|
|
17
|
+
* que cumple con M3.
|
|
18
18
|
*
|
|
19
|
-
* **
|
|
19
|
+
* **Referencia a la especificación M3:** `m3-docs/components/menus/specs.md` (menús desplegables)
|
|
20
20
|
*
|
|
21
|
-
* **
|
|
22
|
-
* - Filled
|
|
23
|
-
* -
|
|
24
|
-
* -
|
|
25
|
-
* -
|
|
26
|
-
* -
|
|
27
|
-
*
|
|
28
|
-
* -
|
|
29
|
-
* -
|
|
30
|
-
* -
|
|
21
|
+
* **Resumen de características:**
|
|
22
|
+
* - Variantes Filled y Outlined que coinciden con los estilos de campo de texto de M3.
|
|
23
|
+
* - Etiqueta flotante (floating label) con la animación estándar de etiqueta flotante de estilos de campo.
|
|
24
|
+
* - Modo de búsqueda: el atributo `searchable` agrega un campo de entrada de filtro en línea.
|
|
25
|
+
* - Grupos de opciones: elementos `<moni-select-group>` en el slot para opciones jerárquicas.
|
|
26
|
+
* - Cajón móvil: el atributo `drawer` abre las opciones en un `<moni-bottom-sheet>`
|
|
27
|
+
* en lugar de un popup desplegable, ideal para interfaces táctiles (touch UIs).
|
|
28
|
+
* - Navegación por teclado: Teclas de flecha, Enter, Escape y Tab según combobox de ARIA.
|
|
29
|
+
* - Estado de carga: `loading` muestra un progreso circular indeterminado.
|
|
30
|
+
* - Soporte multi-valor: `multiple` permite selección múltiple.
|
|
31
31
|
*
|
|
32
|
-
* **
|
|
33
|
-
*
|
|
34
|
-
* 1. **
|
|
35
|
-
* 2.
|
|
32
|
+
* **Fuentes de opciones:**
|
|
33
|
+
* Las opciones se pueden proporcionar de dos maneras:
|
|
34
|
+
* 1. **Elementos `<moni-select-option>` en la ranura (slot)** (por defecto, recomendado para SSR).
|
|
35
|
+
* 2. **Propiedad `options`** — un array de `DropdownNode[]` para un control completamente programático.
|
|
36
36
|
*
|
|
37
|
-
* **Value binding:**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* `'change'
|
|
37
|
+
* **Vinculación de valores (Value binding):**
|
|
38
|
+
* La propiedad `value` contiene la cadena de valor de la opción actualmente seleccionada.
|
|
39
|
+
* Para selección múltiple, `values` contiene `string[]`. Al cambiar, se dispara un
|
|
40
|
+
* evento compuesto `'moni-change'`.
|
|
41
41
|
*
|
|
42
|
-
* @fires change -
|
|
43
|
-
*
|
|
42
|
+
* @fires moni-change - Burbujea y está compuesto. Se dispara cuando el valor seleccionado cambia.
|
|
43
|
+
* Lee `element.value` (o `element.values` para `multiple`).
|
|
44
44
|
*
|
|
45
45
|
* @example
|
|
46
46
|
* ```html
|
|
47
|
-
* <moni-select label="
|
|
48
|
-
* <moni-select-option value="us">
|
|
49
|
-
* <moni-select-option value="gb">
|
|
50
|
-
* <moni-select-option value="de">
|
|
47
|
+
* <moni-select label="País" name="country" variant="outlined">
|
|
48
|
+
* <moni-select-option value="us">Estados Unidos</moni-select-option>
|
|
49
|
+
* <moni-select-option value="gb">Reino Unido</moni-select-option>
|
|
50
|
+
* <moni-select-option value="de">Alemania</moni-select-option>
|
|
51
51
|
* </moni-select>
|
|
52
52
|
*
|
|
53
|
-
* <!--
|
|
54
|
-
* <moni-select label="
|
|
53
|
+
* <!-- Select con búsqueda -->
|
|
54
|
+
* <moni-select label="Idioma" searchable>
|
|
55
55
|
* <moni-select-option value="ts">TypeScript</moni-select-option>
|
|
56
56
|
* <moni-select-option value="py">Python</moni-select-option>
|
|
57
57
|
* </moni-select>
|
|
58
58
|
* ```
|
|
59
59
|
*
|
|
60
|
-
* @slot default - `<moni-select-option>`
|
|
60
|
+
* @slot default - Hijos `<moni-select-option>` o `<moni-select-group>`.
|
|
61
61
|
*
|
|
62
|
-
* @csspart field -
|
|
63
|
-
* @csspart dropdown -
|
|
62
|
+
* @csspart field - El contenedor div exterior `.field`.
|
|
63
|
+
* @csspart dropdown - El contenedor flotante de la lista de opciones.
|
|
64
64
|
*/
|
|
65
65
|
export declare class MoniSelect extends MoniElement {
|
|
66
|
+
static formAssociated: boolean;
|
|
67
|
+
private _internals;
|
|
68
|
+
constructor();
|
|
69
|
+
/**
|
|
70
|
+
* Nombre del campo select, usado para el envío del formulario.
|
|
71
|
+
* @type {string}
|
|
72
|
+
*/
|
|
66
73
|
name: string;
|
|
74
|
+
/**
|
|
75
|
+
* Texto de la etiqueta flotante.
|
|
76
|
+
* @type {string}
|
|
77
|
+
*/
|
|
67
78
|
label: string;
|
|
79
|
+
/**
|
|
80
|
+
* Variante visual del campo select.
|
|
81
|
+
* @type {'filled' | 'outlined'}
|
|
82
|
+
* @default 'filled'
|
|
83
|
+
*/
|
|
68
84
|
variant: 'filled' | 'outlined';
|
|
85
|
+
/**
|
|
86
|
+
* Define las dimensiones del campo select.
|
|
87
|
+
* @type {'small' | 'medium' | 'large' | 'extra'}
|
|
88
|
+
* @default 'medium'
|
|
89
|
+
*/
|
|
69
90
|
size: 'small' | 'medium' | 'large' | 'extra';
|
|
91
|
+
/**
|
|
92
|
+
* Forma (radio de borde) del campo.
|
|
93
|
+
* @type {'round' | 'square' | 'no-round'}
|
|
94
|
+
* @default 'no-round'
|
|
95
|
+
*/
|
|
70
96
|
shape: 'round' | 'square' | 'no-round';
|
|
97
|
+
/**
|
|
98
|
+
* Deshabilita el campo select.
|
|
99
|
+
* @type {boolean}
|
|
100
|
+
*/
|
|
71
101
|
disabled: boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Si es verdadero, muestra un indicador de carga (progreso lineal).
|
|
104
|
+
* @type {boolean}
|
|
105
|
+
*/
|
|
72
106
|
loading: boolean;
|
|
107
|
+
/**
|
|
108
|
+
* Texto de ayuda mostrado debajo del campo.
|
|
109
|
+
* @type {string}
|
|
110
|
+
*/
|
|
73
111
|
helper: string;
|
|
112
|
+
/**
|
|
113
|
+
* Texto de error mostrado debajo del campo cuando `error` es true.
|
|
114
|
+
* Reemplaza al texto de ayuda.
|
|
115
|
+
* @type {string}
|
|
116
|
+
*/
|
|
74
117
|
errorText: string;
|
|
118
|
+
/**
|
|
119
|
+
* Si es verdadero, establece el campo en un estado de error.
|
|
120
|
+
* @type {boolean}
|
|
121
|
+
*/
|
|
75
122
|
error: boolean;
|
|
123
|
+
/**
|
|
124
|
+
* El valor actual del select.
|
|
125
|
+
* @type {string}
|
|
126
|
+
*/
|
|
76
127
|
value: string;
|
|
128
|
+
/**
|
|
129
|
+
* Nombre del icono principal (leading icon, Material Symbols).
|
|
130
|
+
* @type {string}
|
|
131
|
+
*/
|
|
77
132
|
icon: string;
|
|
133
|
+
/**
|
|
134
|
+
* Nombre del icono final (trailing icon, Material Symbols) que indica el estado del menú desplegable.
|
|
135
|
+
* @type {string}
|
|
136
|
+
* @default 'arrow_drop_down'
|
|
137
|
+
*/
|
|
78
138
|
trailingIcon: string;
|
|
139
|
+
/**
|
|
140
|
+
* Habilita un campo de búsqueda en la parte superior del menú desplegable para filtrar opciones.
|
|
141
|
+
* @type {boolean}
|
|
142
|
+
*/
|
|
79
143
|
searchable: boolean;
|
|
144
|
+
/**
|
|
145
|
+
* Muestra un botón de limpieza cuando se selecciona un valor para restablecer fácilmente el campo.
|
|
146
|
+
* @type {boolean}
|
|
147
|
+
*/
|
|
80
148
|
clearable: boolean;
|
|
149
|
+
/**
|
|
150
|
+
* Renderiza las opciones como una hoja inferior (bottom sheet, ideal para dispositivos móviles) en lugar de un menú desplegable.
|
|
151
|
+
* @type {boolean}
|
|
152
|
+
*/
|
|
81
153
|
sheet: boolean;
|
|
154
|
+
/**
|
|
155
|
+
* Texto de marcador de posición (placeholder) mostrado cuando no hay ningún valor seleccionado.
|
|
156
|
+
* @type {string}
|
|
157
|
+
*/
|
|
82
158
|
placeholder: string;
|
|
159
|
+
/**
|
|
160
|
+
* Estrategia de posicionamiento para el menú desplegable.
|
|
161
|
+
* @type {'absolute' | 'fixed'}
|
|
162
|
+
* @default 'absolute'
|
|
163
|
+
*/
|
|
83
164
|
positioning: 'absolute' | 'fixed';
|
|
165
|
+
/**
|
|
166
|
+
* Ubicación preferida del menú desplegable con respecto al disparador (trigger).
|
|
167
|
+
* @type {'top' | 'bottom' | 'left' | 'right' | 'auto'}
|
|
168
|
+
* @default 'auto'
|
|
169
|
+
*/
|
|
84
170
|
placement: 'top' | 'bottom' | 'left' | 'right' | 'auto';
|
|
171
|
+
/**
|
|
172
|
+
* Restricción de ancho del menú desplegable.
|
|
173
|
+
* - `'trigger'`: Coincide con el ancho del campo de entrada.
|
|
174
|
+
* - `'auto'`: Coincide con el ancho del contenido del menú desplegable.
|
|
175
|
+
* - O cualquier valor CSS de ancho válido (ej. '200px').
|
|
176
|
+
* @type {string}
|
|
177
|
+
* @default 'trigger'
|
|
178
|
+
*/
|
|
85
179
|
dropdownWidth: string;
|
|
86
180
|
private _open;
|
|
87
181
|
private _searchQuery;
|
|
@@ -94,34 +188,205 @@ export declare class MoniSelect extends MoniElement {
|
|
|
94
188
|
private _slot;
|
|
95
189
|
private _input;
|
|
96
190
|
static styles: import("lit").CSSResult[];
|
|
191
|
+
/**
|
|
192
|
+
* Hook del ciclo de vida (Lit).
|
|
193
|
+
* Vincula event listeners globales necesarios para la lógica del dropdown.
|
|
194
|
+
* Se usa `capture: true` en el evento de scroll para poder reaccionar
|
|
195
|
+
* al desplazamiento de cualquier contenedor padre y reposicionar el menú a tiempo.
|
|
196
|
+
*/
|
|
97
197
|
connectedCallback(): void;
|
|
198
|
+
/**
|
|
199
|
+
* Hook del ciclo de vida (Lit).
|
|
200
|
+
* Desmonta rigurosamente todos los listeners globales para prevenir memory leaks
|
|
201
|
+
* o llamadas accidentales cuando el select ya fue destruido del DOM.
|
|
202
|
+
*/
|
|
98
203
|
disconnectedCallback(): void;
|
|
204
|
+
/**
|
|
205
|
+
* Hook de actualización reactiva (Lit).
|
|
206
|
+
* Verifica si alguna propiedad relacionada con el tamaño del contenido (como la búsqueda,
|
|
207
|
+
* la ruta de anidación o el estado abierto) ha cambiado, para forzar un recálculo
|
|
208
|
+
* de la altura animada del contenedor `drilldown-wrapper`.
|
|
209
|
+
*/
|
|
99
210
|
updated(changedProperties: Map<string | number | symbol, unknown>): void;
|
|
211
|
+
/**
|
|
212
|
+
* Lógica de animación de altura (Height Animation).
|
|
213
|
+
* Cuando se navega entre categorías anidadas (`_drilldownPath`), las listas hijas pueden
|
|
214
|
+
* tener diferentes tamaños. Este método lee el `scrollHeight` del panel activo y lo aplica
|
|
215
|
+
* imperativamente al `wrapper` para disparar una transición CSS suave en la altura del dropdown.
|
|
216
|
+
*/
|
|
100
217
|
private _updateWrapperHeight;
|
|
218
|
+
/**
|
|
219
|
+
* Cierra el Dropdown cuando el usuario hace clic fuera de las dimensiones del componente.
|
|
220
|
+
* Utiliza `e.composedPath()` para poder atravesar barreras de Shadow DOM si el select
|
|
221
|
+
* está dentro de un contenedor web-component externo.
|
|
222
|
+
*/
|
|
101
223
|
private _handleOutsideClick;
|
|
224
|
+
/**
|
|
225
|
+
* Motor de Cálculo de Colisiones de la Interfaz (Collision Detection).
|
|
226
|
+
*
|
|
227
|
+
* @logic
|
|
228
|
+
* 1. Calcula las coordenadas espaciales (`getBoundingClientRect`) del select base.
|
|
229
|
+
* 2. Compara el espacio disponible (`spaceAbove`, `spaceBelow`, `spaceRight`, `spaceLeft`)
|
|
230
|
+
* respecto al viewport (`window.innerHeight`, `window.innerWidth`).
|
|
231
|
+
* 3. Si el dropdown no cabe en la posición preferida (`placement`), revierte lógicamente
|
|
232
|
+
* la posición (ej: si `bottom` desborda, lo abre hacia `top`).
|
|
233
|
+
* 4. Actualiza `_actualPlacement` con la dirección segura calculada.
|
|
234
|
+
*/
|
|
102
235
|
private _determineActualPlacement;
|
|
236
|
+
/**
|
|
237
|
+
* Handler de Scroll global.
|
|
238
|
+
* Fuerza un recálculo de la posición y dimensiones del dropdown si el usuario
|
|
239
|
+
* hace scroll en la página mientras el select permanece abierto.
|
|
240
|
+
*/
|
|
103
241
|
private _handleScroll;
|
|
242
|
+
/**
|
|
243
|
+
* Handler de Resize global.
|
|
244
|
+
* Asegura que el popover del select no quede fuera del viewport cuando
|
|
245
|
+
* se cambia el tamaño de la ventana o se rota la pantalla en dispositivos móviles.
|
|
246
|
+
*/
|
|
104
247
|
private _handleResize;
|
|
248
|
+
/**
|
|
249
|
+
* Aplica las coordenadas y dimensiones absolutas o fijas al menú desplegable.
|
|
250
|
+
* Este método es fundamental cuando `positioning === 'fixed'`, ya que el dropdown
|
|
251
|
+
* se saca del flujo normal del documento para evitar `overflow: hidden` de los padres.
|
|
252
|
+
* Mapea el `width` para coincidir opcionalmente con el gatillo (`dropdownWidth="trigger"`).
|
|
253
|
+
*/
|
|
105
254
|
private _updateMenuPosition;
|
|
255
|
+
/**
|
|
256
|
+
* Devuelve un string de estilos inline para el menú desplegable.
|
|
257
|
+
* Si la posición es `fixed` (calculada dinámicamente para evadir overflow),
|
|
258
|
+
* retorna el bloque de coordenadas generado por `_updateMenuPosition`.
|
|
259
|
+
* Si no, asigna anchos basados en la propiedad `dropdownWidth` (auto, trigger, custom).
|
|
260
|
+
*/
|
|
106
261
|
private _getMenuStyle;
|
|
262
|
+
/**
|
|
263
|
+
* Parseador del Shadow DOM (Slot Change Handler).
|
|
264
|
+
*
|
|
265
|
+
* @logic
|
|
266
|
+
* 1. Cuando los hijos proyectados cambian (ej. se agregan nuevos `<option>`),
|
|
267
|
+
* lee iterativamente todos los nodos del Light DOM.
|
|
268
|
+
* 2. Si encuentra `<optgroup>` o `<moni-select-option group="A/B">`, construye dinámicamente
|
|
269
|
+
* un árbol estructural de `GroupNode` anidados.
|
|
270
|
+
* 3. Si encuentra opciones, las inyecta en el grupo correspondiente del árbol.
|
|
271
|
+
* 4. Almacena el árbol resultante en `_parsedOptions` para que el componente
|
|
272
|
+
* pueda renderizar sus propios submenús nativos independientemente del markup inicial.
|
|
273
|
+
*/
|
|
107
274
|
private _onSlotChange;
|
|
275
|
+
/**
|
|
276
|
+
* Alterna el estado de apertura/cierre del dropdown, previniendo
|
|
277
|
+
* la acción si el componente está deshabilitado.
|
|
278
|
+
*/
|
|
108
279
|
private _toggleDropdown;
|
|
280
|
+
/**
|
|
281
|
+
* Manejador de clics en el campo de texto (Trigger).
|
|
282
|
+
* Si el componente es `searchable` (permite escribir para buscar), un clic
|
|
283
|
+
* sólo abrirá el menú (no lo cerrará si ya estaba abierto, para permitir al usuario seguir escribiendo).
|
|
284
|
+
*/
|
|
109
285
|
private _onInputClick;
|
|
286
|
+
/**
|
|
287
|
+
* Despliega el menú del select y coordina la accesibilidad, posicionamiento y foco inicial.
|
|
288
|
+
*/
|
|
110
289
|
private _openDropdown;
|
|
290
|
+
/**
|
|
291
|
+
* Cierra el dropdown y purga la consulta de búsqueda (`_searchQuery`)
|
|
292
|
+
* para que la próxima vez que se abra, la lista muestre todas las opciones por defecto.
|
|
293
|
+
*/
|
|
111
294
|
private _closeDropdown;
|
|
112
295
|
private _findOptionByValue;
|
|
296
|
+
/**
|
|
297
|
+
* Evento de input (tecleo) en la barra de búsqueda.
|
|
298
|
+
*
|
|
299
|
+
* @logic
|
|
300
|
+
* 1. Actualiza `_searchQuery` y fuerza la apertura del dropdown.
|
|
301
|
+
* 2. Si es `clearable` y el usuario borró todo, emite eventos vacíos.
|
|
302
|
+
* 3. Busca coincidencias exactas en el texto. Si el usuario teclea exactamente el
|
|
303
|
+
* label de una opción existente, la selecciona automáticamente (auto-completado nativo).
|
|
304
|
+
*/
|
|
113
305
|
private _onSearchInput;
|
|
306
|
+
/**
|
|
307
|
+
* Confirma la selección de una opción específica.
|
|
308
|
+
* Actualiza el valor (estado reactivo), cierra el dropdown y despacha los eventos
|
|
309
|
+
* estándar HTML `input` y `change` para integrarse fluidamente con formularios nativos o frameworks.
|
|
310
|
+
*/
|
|
114
311
|
private _selectOption;
|
|
312
|
+
/**
|
|
313
|
+
* Maneja el Hover sobre categorías en modo Desktop (Submenús emergentes).
|
|
314
|
+
* Detecta dinámicamente si el submenú se saldrá del lado derecho de la pantalla.
|
|
315
|
+
* Si es así, altera las clases de CSS (`open-left` vs `open-right`) para que
|
|
316
|
+
* el menú flote en la dirección opuesta, evitando desbordamientos de viewport (Overflow prevention).
|
|
317
|
+
*/
|
|
115
318
|
private _onSubmenuMouseEnter;
|
|
319
|
+
/**
|
|
320
|
+
* Gestiona la navegación completa por teclado siguiendo el patrón WAI-ARIA Combobox.
|
|
321
|
+
* Soporta flechas direccionales, selección (Enter), y cierre (Escape).
|
|
322
|
+
*/
|
|
116
323
|
private _onKeyDown;
|
|
324
|
+
/**
|
|
325
|
+
* Asegura que el elemento resaltado por teclado sea visible dentro del contenedor scrolleable.
|
|
326
|
+
*/
|
|
117
327
|
private _scrollToActive;
|
|
328
|
+
/**
|
|
329
|
+
* Aplana el árbol jerárquico recursivo de <moni-select-group> a un array unidimensional de opciones puras.
|
|
330
|
+
* Esencial para que la búsqueda por texto funcione globalmente ignorando las categorías.
|
|
331
|
+
*/
|
|
118
332
|
private _getFlatOptions;
|
|
119
333
|
private _getFilteredOptions;
|
|
120
334
|
private _getVisibleOptions;
|
|
335
|
+
/**
|
|
336
|
+
* Motor de Renderizado: Lista Raíz (Modo Móvil / Drilldown).
|
|
337
|
+
*
|
|
338
|
+
* Renderiza las opciones iniciales y los grupos base de la categoría actual (`_drilldownPath`).
|
|
339
|
+
* Asigna clases dinámicas (`selected`, `active-nav`) para la retroalimentación visual
|
|
340
|
+
* del teclado y el valor actualmente seleccionado.
|
|
341
|
+
*/
|
|
121
342
|
private _renderRootList;
|
|
343
|
+
/**
|
|
344
|
+
* Motor de Renderizado: Subcategorías (Modo Móvil / Drilldown).
|
|
345
|
+
*
|
|
346
|
+
* A diferencia de desktop (donde los submenús flotan a los lados), en dispositivos
|
|
347
|
+
* móviles o espacios constreñidos, el menú transiciona in-situ. Este método renderiza
|
|
348
|
+
* el header del grupo activo, un botón de "Regresar" (Arrow Back) y las opciones hijas.
|
|
349
|
+
*/
|
|
122
350
|
private _renderSubcategoryList;
|
|
123
351
|
private _renderDesktopNode;
|
|
352
|
+
/**
|
|
353
|
+
* Orquestador principal de renderizado de la lista de opciones.
|
|
354
|
+
*
|
|
355
|
+
* Si el usuario introdujo texto (`_searchQuery`), renderiza los resultados filtrados.
|
|
356
|
+
* Si la lista original está vacía, muestra un mensaje amigable (Empty State).
|
|
357
|
+
* Determina condicionalmente si usar el modo plano/Drilldown (Móviles) o
|
|
358
|
+
* el modo Desktop con submenús flotantes (`_renderDesktopNode`).
|
|
359
|
+
*/
|
|
124
360
|
private _renderOptionsList;
|
|
361
|
+
/**
|
|
362
|
+
* Ensambla el Shadow DOM del campo select, coordinando dos modos de interfaz de usuario distintos.
|
|
363
|
+
*
|
|
364
|
+
* **Resolución del valor a mostrar (Display value):**
|
|
365
|
+
* El contenido de texto visible en el input está determinado por prioridad:
|
|
366
|
+
* 1. Mientras el menú desplegable está abierto Y `searchable=true` Y NO es modo sheet:
|
|
367
|
+
* muestra `_searchQuery` (el texto del filtro en vivo que el usuario está escribiendo).
|
|
368
|
+
* 2. De lo contrario: muestra `selectedOpt.label` (la etiqueta de la opción actualmente
|
|
369
|
+
* seleccionada) o vuelve a la cadena vacía.
|
|
370
|
+
*
|
|
371
|
+
* **Dos rutas de renderizado:**
|
|
372
|
+
* - **Modo Sheet (`sheet=true`):** Renderiza un `<moni-bottom-sheet>` como un
|
|
373
|
+
* cajón (drawer) superpuesto a pantalla completa, ideal para IU táctiles móviles. La lista de opciones
|
|
374
|
+
* se renderiza dentro de la hoja en lugar del menú desplegable.
|
|
375
|
+
* - **Modo desplegable (por defecto):** Renderiza un `.dropdown-menu` flotante que
|
|
376
|
+
* se abre debajo o arriba del campo. La cadena `_menuStyle` (calculada por
|
|
377
|
+
* `_computeMenuStyle()`) inyecta los `top`, `left`, `width`, y
|
|
378
|
+
* sobreescrituras `position: fixed` correctas para contenedores con scroll (scroll-contained) y parents con overflow cortado (overflow-clipping).
|
|
379
|
+
*
|
|
380
|
+
* **Patrón combobox ARIA:**
|
|
381
|
+
* El input de texto lleva `role="combobox"`, `aria-haspopup="listbox"` y
|
|
382
|
+
* `aria-expanded` para satisfacer los requisitos del combobox WCAG 2.1 para lectores de pantalla.
|
|
383
|
+
* `aria-activedescendant` se establece al ID de la opción actualmente enfocada por teclado
|
|
384
|
+
* para habilitar el movimiento del cursor virtual sin gestión del foco.
|
|
385
|
+
*
|
|
386
|
+
* **Composición de `fieldClasses`:**
|
|
387
|
+
* Sigue la convención de nomenclatura de clases de estilos de campo de BeerCSS. `prefix` se agrega
|
|
388
|
+
* cuando `icon` está establecido (para desplazar el relleno -padding- inline-start del input de texto para el icono).
|
|
389
|
+
*/
|
|
125
390
|
render(): import("lit").TemplateResult<1>;
|
|
126
391
|
}
|
|
127
392
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moni-select.d.ts","sourceRoot":"","sources":["../../src/components/moni-select.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,WAAW,EAA6B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"moni-select.d.ts","sourceRoot":"","sources":["../../src/components/moni-select.ts"],"names":[],"mappings":"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"}
|