@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
|
@@ -14,26 +14,26 @@ 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 Badge
|
|
17
|
+
* Componente Material Design 3 Badge.
|
|
18
18
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
19
|
+
* Los badges son pequeños descriptores de estado anclados a un elemento padre, usados para
|
|
20
|
+
* transmitir información suplementaria como un conteo de notificaciones, estado
|
|
21
|
+
* en línea, o indicador de selección.
|
|
22
22
|
*
|
|
23
|
-
* **
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
23
|
+
* **Contrato de posicionamiento:**
|
|
24
|
+
* El badge usa `position: absolute` y se ancla al elemento padre.
|
|
25
|
+
* En `connectedCallback`, si el `position` computado del padre es `'static'`,
|
|
26
|
+
* el badge automáticamente establece `parent.style.position = 'relative'`.
|
|
27
|
+
* Los consumidores no necesitan añadir manualmente `position: relative` al padre.
|
|
28
28
|
*
|
|
29
|
-
* **
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
29
|
+
* **Modelo de renderizado:**
|
|
30
|
+
* El `:host` se muestra como `contents`, haciéndolo transparente para el layout.
|
|
31
|
+
* Solo el span interior `.badge` se renderiza visualmente. Esto permite que el badge
|
|
32
|
+
* se inserte dentro de cualquier elemento sin afectar su flujo de layout.
|
|
33
33
|
*
|
|
34
34
|
* @example
|
|
35
35
|
* ```html
|
|
36
|
-
* <!--
|
|
36
|
+
* <!-- Badge de notificación en un botón -->
|
|
37
37
|
* <div style="position: relative; display: inline-flex;">
|
|
38
38
|
* <moni-button icon="notifications" variant="text"></moni-button>
|
|
39
39
|
* <moni-badge value="5"></moni-badge>
|
|
@@ -42,98 +42,96 @@ import { MoniElement, sharedStyles } from './_base/index.js';
|
|
|
42
42
|
*
|
|
43
43
|
* @example
|
|
44
44
|
* ```html
|
|
45
|
-
* <!--
|
|
45
|
+
* <!-- Badge de punto en línea para estado -->
|
|
46
46
|
* <moni-badge shape="min" color="primary" inline></moni-badge>
|
|
47
|
-
*
|
|
47
|
+
* Conectado
|
|
48
48
|
* ```
|
|
49
49
|
*
|
|
50
|
-
* @csspart badge -
|
|
51
|
-
* `color`,
|
|
50
|
+
* @csspart badge - El elemento `<span>` del badge. Sobrescribe `background-color`,
|
|
51
|
+
* `color`, o `border-radius` para personalizar la apariencia.
|
|
52
52
|
*/
|
|
53
53
|
let MoniBadge = class MoniBadge extends MoniElement {
|
|
54
54
|
constructor() {
|
|
55
55
|
super(...arguments);
|
|
56
56
|
/**
|
|
57
|
-
*
|
|
57
|
+
* Contenido de texto de la etiqueta del badge.
|
|
58
58
|
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
59
|
+
* También acepta contenido en el slot — el slot por defecto dentro del span del badge
|
|
60
|
+
* usa este valor cuando no hay hijos proporcionados en el slot.
|
|
61
|
+
* Usa un string vacío con `shape="min"` para renderizar un badge de solo punto.
|
|
62
62
|
*
|
|
63
63
|
* @default ''
|
|
64
64
|
*/
|
|
65
65
|
this.value = '';
|
|
66
66
|
/**
|
|
67
|
-
*
|
|
67
|
+
* Posición de anclaje relativa a los bordes del elemento padre.
|
|
68
68
|
*
|
|
69
|
-
*
|
|
70
|
-
* - `''` (
|
|
71
|
-
* - `'top'` —
|
|
72
|
-
* - `'bottom'` —
|
|
73
|
-
* - `'left'` —
|
|
74
|
-
* - `'right'` —
|
|
75
|
-
* - `'none'` —
|
|
69
|
+
* Usa `inset: 50% auto auto 50%` como base y ajusta la traslación:
|
|
70
|
+
* - `''` (por defecto) — esquina superior derecha (translate: 0, -100%).
|
|
71
|
+
* - `'top'` — igual que por defecto, alias explícito.
|
|
72
|
+
* - `'bottom'` — esquina inferior derecha (translate: 0, 0).
|
|
73
|
+
* - `'left'` — esquina superior izquierda (translate: -100%, -100%).
|
|
74
|
+
* - `'right'` — esquina superior derecha (translate: 0, -100%).
|
|
75
|
+
* - `'none'` — deshabilita el posicionamiento absoluto; ver también el atributo `inline`.
|
|
76
76
|
*
|
|
77
77
|
* @default ''
|
|
78
78
|
*/
|
|
79
79
|
this.position = '';
|
|
80
80
|
/**
|
|
81
|
-
*
|
|
81
|
+
* Forma del contenedor del badge.
|
|
82
82
|
*
|
|
83
|
-
* - `''` (
|
|
84
|
-
* - `'circle'` — Alias
|
|
85
|
-
*
|
|
86
|
-
* - `'square'` —
|
|
87
|
-
* - `'min'` —
|
|
88
|
-
*
|
|
83
|
+
* - `''` (por defecto) — Forma de píldora redondeada (border-radius: 1rem).
|
|
84
|
+
* - `'circle'` — Alias para píldora; el badge siempre es circular cuando el
|
|
85
|
+
* contenido es un solo carácter o está ausente.
|
|
86
|
+
* - `'square'` — Sin border-radius (badge angular).
|
|
87
|
+
* - `'min'` — Solo punto; el contenido se oculta mediante `display: none` y la
|
|
88
|
+
* forma se recorta a un círculo pequeño mediante `clip-path`.
|
|
89
89
|
*
|
|
90
90
|
* @default ''
|
|
91
91
|
*/
|
|
92
92
|
this.shape = '';
|
|
93
93
|
/**
|
|
94
|
-
*
|
|
94
|
+
* Rol de color semántico del badge.
|
|
95
95
|
*
|
|
96
|
-
*
|
|
97
|
-
* - `'error'` (
|
|
98
|
-
* - `'primary'` —
|
|
99
|
-
* - `'secondary'` —
|
|
100
|
-
* - `'tertiary'` —
|
|
96
|
+
* Se asigna a los roles de la paleta de colores M3:
|
|
97
|
+
* - `'error'` (por defecto) — Rojo; estándar para conteos de notificaciones y alertas.
|
|
98
|
+
* - `'primary'` — Color primario de la marca; para estados activos o de selección.
|
|
99
|
+
* - `'secondary'` — Acento secundario; para indicadores suplementarios.
|
|
100
|
+
* - `'tertiary'` — Acento terciario; para badges decorativos o informativos.
|
|
101
101
|
*
|
|
102
102
|
* @default 'error'
|
|
103
103
|
*/
|
|
104
104
|
this.color = 'error';
|
|
105
105
|
/**
|
|
106
|
-
*
|
|
107
|
-
* `position: relative`)
|
|
106
|
+
* Cuando es `true`, el badge se renderiza en línea (restablece `position: absolute` a
|
|
107
|
+
* `position: relative`) en lugar de anclarse al padre.
|
|
108
108
|
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
109
|
+
* Equivalente a la clase `.badge.none` de BeerCSS. Úsalo para indicadores de estado en línea
|
|
110
|
+
* que fluyen dentro de texto o contenedores flex.
|
|
111
111
|
*
|
|
112
112
|
* @default false
|
|
113
113
|
*/
|
|
114
114
|
this.inline = false;
|
|
115
115
|
/**
|
|
116
|
-
*
|
|
117
|
-
* -
|
|
118
|
-
* -
|
|
116
|
+
* Cuando está presente, renderiza el badge con un estilo delineado:
|
|
117
|
+
* - El fondo se convierte en `--surface` (igual que el fondo de la página).
|
|
118
|
+
* - El borde y el color del texto usan el token de color de la paleta (ej. `--error`).
|
|
119
119
|
*
|
|
120
|
-
*
|
|
120
|
+
* Equivalente a la clase `.badge.border` de BeerCSS.
|
|
121
121
|
*
|
|
122
122
|
* @default false
|
|
123
123
|
*/
|
|
124
124
|
this.border = false;
|
|
125
125
|
}
|
|
126
126
|
/**
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
* consumers to remember to add `position: relative` to the parent themselves.
|
|
127
|
+
* Hook de ciclo de vida de Lit.
|
|
128
|
+
* Mutación imperativa del DOM padre para garantizar el sistema de anclaje (CSS Position).
|
|
129
|
+
* Un badge por defecto usa position: absolute. Si su contenedor padre es estático,
|
|
130
|
+
* el badge "escaparía" hasta el body. Esto detecta el computed style y fuerza
|
|
131
|
+
* un contexto de apilamiento relativo para encapsularlo.
|
|
133
132
|
*/
|
|
134
133
|
connectedCallback() {
|
|
135
134
|
super.connectedCallback();
|
|
136
|
-
// Ensure the badge's absolutely-positioned anchor point is correct.
|
|
137
135
|
const parent = this.parentElement;
|
|
138
136
|
if (parent) {
|
|
139
137
|
const computed = getComputedStyle(parent);
|
|
@@ -213,16 +211,16 @@ let MoniBadge = class MoniBadge extends MoniElement {
|
|
|
213
211
|
`
|
|
214
212
|
]; }
|
|
215
213
|
/**
|
|
216
|
-
*
|
|
214
|
+
* Renderiza el span del badge con la lista de clases computada.
|
|
217
215
|
*
|
|
218
|
-
*
|
|
219
|
-
* - `'badge'` —
|
|
220
|
-
* - `this.position` —
|
|
221
|
-
* - `this.shape` —
|
|
222
|
-
* - `'none'` —
|
|
216
|
+
* Composición de clases:
|
|
217
|
+
* - `'badge'` — siempre presente (estilos base).
|
|
218
|
+
* - `this.position` — clase de variante de posición (ej. `'bottom'`, `'left'`).
|
|
219
|
+
* - `this.shape` — clase de variante de forma (ej. `'min'`, `'square'`).
|
|
220
|
+
* - `'none'` — se añade cuando `inline=true` para restablecer el posicionamiento absoluto.
|
|
223
221
|
*
|
|
224
|
-
*
|
|
225
|
-
*
|
|
222
|
+
* Los valores falsos se filtran para que no aparezcan espacios extra en el string de clases.
|
|
223
|
+
* El slot por defecto usa el nodo de texto del atributo `value` como respaldo.
|
|
226
224
|
*/
|
|
227
225
|
render() {
|
|
228
226
|
const classes = [
|
|
@@ -6,37 +6,37 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { MoniElement } from './_base/index.js';
|
|
8
8
|
/**
|
|
9
|
-
* Material Design 3 Bottom Sheet
|
|
9
|
+
* Componente Material Design 3 Bottom Sheet.
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* Los bottom sheets son superficies ancladas a la parte inferior de la pantalla que
|
|
12
|
+
* complementan la vista principal. Muestran contenido complementario, acciones
|
|
13
|
+
* contextuales, o flujos de tareas sin ocultar por completo el contenido principal.
|
|
14
14
|
*
|
|
15
|
-
* **
|
|
15
|
+
* **Referencia de la especificación M3:** `m3-docs/components/sheets-bottom/specs.md`
|
|
16
16
|
*
|
|
17
|
-
* **
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* `modal=true` (
|
|
17
|
+
* **Nota de implementación — elemento nativo `<dialog>`:**
|
|
18
|
+
* Al igual que `<moni-dialog>`, este componente envuelve el elemento nativo `<dialog>`.
|
|
19
|
+
* La propiedad `open` controla `dialog.showModal()` / `dialog.close()`. Cuando
|
|
20
|
+
* `modal=true` (por defecto), se renderiza automáticamente un fondo `::backdrop`.
|
|
21
21
|
*
|
|
22
|
-
* **
|
|
23
|
-
*
|
|
24
|
-
* `document.body`
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
22
|
+
* **Teletransportación (montaje a nivel del body):**
|
|
23
|
+
* Cuando `positioning="body"` (por defecto), el componente se mueve a
|
|
24
|
+
* `document.body` en `connectedCallback` para que el diálogo inferior fijo se renderice
|
|
25
|
+
* por encima de todos los contextos de apilamiento. En `disconnectedCallback`, se mueve de nuevo
|
|
26
|
+
* a su posición original en el DOM. Esto evita el recorte por un ancestro con `overflow: hidden`
|
|
27
|
+
* o `transform`.
|
|
28
28
|
*
|
|
29
|
-
* **
|
|
30
|
-
* - `small` —
|
|
31
|
-
* - `medium` —
|
|
32
|
-
* - `large` —
|
|
33
|
-
* - `auto` —
|
|
29
|
+
* **Tamaños:**
|
|
30
|
+
* - `small` — Hoja compacta; adecuada para menús de acciones simples.
|
|
31
|
+
* - `medium` — Altura estándar (por defecto).
|
|
32
|
+
* - `large` — Altura expandida (`expandedHeight` controla el block-size máximo).
|
|
33
|
+
* - `auto` — Altura impulsada por el contenido.
|
|
34
34
|
*
|
|
35
35
|
* @example
|
|
36
36
|
* ```html
|
|
37
|
-
* <moni-bottom-sheet title="
|
|
38
|
-
* <moni-list-item icon="share">
|
|
39
|
-
* <moni-list-item icon="mail">
|
|
37
|
+
* <moni-bottom-sheet title="Compartir">
|
|
38
|
+
* <moni-list-item icon="share">Copiar enlace</moni-list-item>
|
|
39
|
+
* <moni-list-item icon="mail">Enviar por correo</moni-list-item>
|
|
40
40
|
* </moni-bottom-sheet>
|
|
41
41
|
*
|
|
42
42
|
* <script>
|
|
@@ -44,92 +44,92 @@ import { MoniElement } from './_base/index.js';
|
|
|
44
44
|
* </script>
|
|
45
45
|
* ```
|
|
46
46
|
*
|
|
47
|
-
* @slot default -
|
|
48
|
-
* @slot handle -
|
|
49
|
-
* @slot footer -
|
|
47
|
+
* @slot default - El contenido principal del bottom sheet.
|
|
48
|
+
* @slot handle - El área del asa de arrastre en la parte superior.
|
|
49
|
+
* @slot footer - Botones de acción en la parte inferior de la hoja.
|
|
50
50
|
*
|
|
51
|
-
* @csspart dialog -
|
|
52
|
-
* @csspart header -
|
|
53
|
-
* @csspart body -
|
|
54
|
-
* @csspart footer -
|
|
51
|
+
* @csspart dialog - El elemento nativo `<dialog>`.
|
|
52
|
+
* @csspart header - El contenedor del encabezado con el título y el botón de cierre.
|
|
53
|
+
* @csspart body - El área de contenido principal desplazable (scrollable).
|
|
54
|
+
* @csspart footer - El área de los botones de acción en el pie.
|
|
55
55
|
*/
|
|
56
56
|
export declare class MoniBottomSheet extends MoniElement {
|
|
57
57
|
/**
|
|
58
|
-
*
|
|
58
|
+
* Controla el estado abierto/cerrado del bottom sheet.
|
|
59
59
|
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
60
|
+
* Cuando se establece en `true`, llama a `dialog.showModal()` o `dialog.show()`
|
|
61
|
+
* dependiendo de la propiedad `modal`. Cuando se establece en `false`, llama a `dialog.close()`.
|
|
62
62
|
*
|
|
63
63
|
* @default false
|
|
64
64
|
*/
|
|
65
65
|
open: boolean;
|
|
66
66
|
/**
|
|
67
|
-
*
|
|
67
|
+
* Variante de altura del contenedor de la hoja.
|
|
68
68
|
*
|
|
69
|
-
* - `'small'` —
|
|
70
|
-
* - `'medium'` —
|
|
71
|
-
* - `'large'` —
|
|
72
|
-
* - `'auto'` —
|
|
69
|
+
* - `'small'` — Compacta; adecuada para confirmaciones rápidas.
|
|
70
|
+
* - `'medium'` — Altura estándar (por defecto).
|
|
71
|
+
* - `'large'` — Llena el `expandedHeight` de la ventana gráfica.
|
|
72
|
+
* - `'auto'` — Depende del contenido; la altura se adapta al contenido en el slot.
|
|
73
73
|
*
|
|
74
74
|
* @default 'medium'
|
|
75
75
|
*/
|
|
76
76
|
size: 'small' | 'medium' | 'large' | 'auto';
|
|
77
77
|
/**
|
|
78
|
-
*
|
|
79
|
-
* scrim.
|
|
78
|
+
* Cuando es `true` (por defecto), la hoja se abre como un diálogo modal con un
|
|
79
|
+
* fondo translúcido (scrim). Cuando es `false`, se abre como una superposición no modal sin scrim.
|
|
80
80
|
*
|
|
81
81
|
* @default true
|
|
82
82
|
*/
|
|
83
83
|
modal: boolean;
|
|
84
84
|
/**
|
|
85
|
-
*
|
|
85
|
+
* Texto de encabezado mostrado en el área del encabezado de la hoja.
|
|
86
86
|
*
|
|
87
87
|
* @default ''
|
|
88
88
|
*/
|
|
89
89
|
title: string;
|
|
90
90
|
/**
|
|
91
|
-
*
|
|
91
|
+
* Controla cómo se posiciona la hoja en el documento.
|
|
92
92
|
*
|
|
93
|
-
* - `'body'` (
|
|
94
|
-
*
|
|
95
|
-
* - `'fixed'` —
|
|
96
|
-
* - `'absolute'` —
|
|
97
|
-
* - `'static'` —
|
|
93
|
+
* - `'body'` (por defecto) — Teletransporta el elemento a `document.body` para que
|
|
94
|
+
* la superposición fija se renderice por encima de todos los contextos de apilamiento.
|
|
95
|
+
* - `'fixed'` — Posicionamiento fijo dentro de su subárbol DOM actual.
|
|
96
|
+
* - `'absolute'` — Absoluto dentro del ancestro posicionado más cercano.
|
|
97
|
+
* - `'static'` — Flujo estático (rara vez necesario; solo para pruebas).
|
|
98
98
|
*
|
|
99
99
|
* @default 'fixed'
|
|
100
100
|
*/
|
|
101
101
|
positioning: 'body' | 'fixed' | 'absolute' | 'static';
|
|
102
102
|
/**
|
|
103
|
-
*
|
|
103
|
+
* Block-size (altura) máximo de la hoja cuando `size="large"`.
|
|
104
104
|
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
105
|
+
* Acepta cualquier valor válido de `max-block-size` en CSS (ej. `'85%'`, `'600px'`).
|
|
106
|
+
* Por defecto es `'85%'` que es el máximo recomendado por M3 para bottom sheets
|
|
107
|
+
* en pantallas compactas.
|
|
108
108
|
*
|
|
109
109
|
* @default '85%'
|
|
110
110
|
*/
|
|
111
111
|
expandedHeight: string;
|
|
112
112
|
/**
|
|
113
|
-
*
|
|
113
|
+
* Restricción opcional de inline-size (ancho) máximo para la hoja.
|
|
114
114
|
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
* modal
|
|
115
|
+
* Cuando se establece (ej. `'640px'`), la hoja no excederá este ancho incluso en
|
|
116
|
+
* pantallas anchas. Útil para puntos de interrupción de tableta/escritorio donde se prefiere
|
|
117
|
+
* un modal centrado en lugar de una hoja de ancho completo.
|
|
118
118
|
*
|
|
119
|
-
* @default '' (
|
|
119
|
+
* @default '' (sin restricción)
|
|
120
120
|
*/
|
|
121
121
|
maxWidth: string;
|
|
122
122
|
/**
|
|
123
|
-
*
|
|
124
|
-
*
|
|
123
|
+
* Nodo padre original antes de la teletransportación a `document.body`.
|
|
124
|
+
* Utilizado para restaurar la posición DOM del elemento en `disconnectedCallback`.
|
|
125
125
|
*/
|
|
126
126
|
private _originalParent;
|
|
127
127
|
/**
|
|
128
|
-
*
|
|
129
|
-
*
|
|
128
|
+
* Hermano siguiente original antes de la teletransportación a `document.body`.
|
|
129
|
+
* Utilizado junto con `_originalParent` para restaurar la posición exacta en el DOM.
|
|
130
130
|
*/
|
|
131
131
|
private _originalSibling;
|
|
132
|
-
/**
|
|
132
|
+
/** Referencia directa al elemento nativo `<dialog>`. */
|
|
133
133
|
private _dialog;
|
|
134
134
|
private _isDragging;
|
|
135
135
|
private _startY;
|
|
@@ -137,15 +137,83 @@ export declare class MoniBottomSheet extends MoniElement {
|
|
|
137
137
|
private _sheetHeight;
|
|
138
138
|
private _defaultHeight;
|
|
139
139
|
private _justDragged;
|
|
140
|
+
private _skipRequestClose;
|
|
141
|
+
willUpdate(changed: Map<string, unknown>): void;
|
|
142
|
+
private _animateAndClose;
|
|
143
|
+
/**
|
|
144
|
+
* Calcula la altura máxima permitida en píxeles basándose en la propiedad `expandedHeight`.
|
|
145
|
+
* Útil para la lógica de arrastre donde necesitamos valores numéricos absolutos (px) en
|
|
146
|
+
* lugar de porcentajes o unidades de viewport, asegurando que el bottom-sheet no exceda
|
|
147
|
+
* el tamaño permitido en pantalla.
|
|
148
|
+
*/
|
|
140
149
|
private _getMaxHeightPx;
|
|
150
|
+
/**
|
|
151
|
+
* Inicia el proceso de arrastre (drag) cuando el usuario presiona sobre el `handle` o el `header`.
|
|
152
|
+
* Captura el puntero para asegurar que los eventos de movimiento se sigan recibiendo incluso si
|
|
153
|
+
* el cursor se sale de los límites físicos del elemento.
|
|
154
|
+
*/
|
|
141
155
|
private _onPointerDown;
|
|
156
|
+
/**
|
|
157
|
+
* Maneja el movimiento del puntero mientras se arrastra el componente.
|
|
158
|
+
* Interpola la altura o la transformación Y dependiendo de si se está expandiendo o colapsando,
|
|
159
|
+
* y de su estado actual (expandido o normal).
|
|
160
|
+
*/
|
|
142
161
|
private _onPointerMove;
|
|
162
|
+
/**
|
|
163
|
+
* Finaliza la interacción de arrastre, evaluando si el bottom-sheet debe
|
|
164
|
+
* expandirse, regresar a su estado original o cerrarse completamente según la
|
|
165
|
+
* inercia o la distancia arrastrada.
|
|
166
|
+
*/
|
|
143
167
|
private _onPointerUp;
|
|
168
|
+
/**
|
|
169
|
+
* Aborta limpiamente la interacción de arrastre (Pointer Cancel).
|
|
170
|
+
* Se dispara cuando el SO interrumpe el touch (ej: entrada de una llamada)
|
|
171
|
+
* o si el navegador toma el control para un scroll nativo imprevisto.
|
|
172
|
+
*/
|
|
144
173
|
private _onPointerCancel;
|
|
174
|
+
/**
|
|
175
|
+
* Handler de clicks en la superficie del modal (Backdrop).
|
|
176
|
+
* Si el clic cae exactamente en el fondo (`this._dialog`) y no en el contenedor de
|
|
177
|
+
* contenido interno (`this._sheetContent`), y si el sheet acaba de ser arrastrado
|
|
178
|
+
* sin soltar, ignora el click. De lo contrario, cierra fluidamente el modal deslizando hacia abajo.
|
|
179
|
+
*/
|
|
145
180
|
private _onDialogClick;
|
|
181
|
+
/**
|
|
182
|
+
* Hook del ciclo de vida reactivo (Lit).
|
|
183
|
+
* Gestiona inyecciones de variables CSS dinámicas para anchos y alturas máximas.
|
|
184
|
+
*
|
|
185
|
+
* Fundamental: Resuelve problemas de `z-index` y `overflow: hidden` en ancestros
|
|
186
|
+
* mediante el Portal Pattern (moviendo físicamente el DOM element al `document.body`)
|
|
187
|
+
* si `positioning === 'body'` cuando se abre, y devolviéndolo a su DOM originario al cerrar.
|
|
188
|
+
*/
|
|
146
189
|
updated(changed: Map<string, unknown>): void;
|
|
190
|
+
/**
|
|
191
|
+
* Limpieza (Garbage Collection).
|
|
192
|
+
* Si el Bottom Sheet fue destruido mientras estaba inyectado en el `document.body`
|
|
193
|
+
* (Portal Pattern), lo retorna a su padre original para evitar orfandad de nodos.
|
|
194
|
+
*/
|
|
147
195
|
disconnectedCallback(): void;
|
|
148
196
|
static styles: import("lit").CSSResult[];
|
|
197
|
+
/**
|
|
198
|
+
* Renders the native `<dialog>` element that serves as the bottom sheet container.
|
|
199
|
+
*
|
|
200
|
+
* **Why `<dialog>` instead of `<div>`?**
|
|
201
|
+
* Using the native `<dialog>` element provides:
|
|
202
|
+
* - Built-in focus trapping via the `open` attribute (browser handles `inert`).
|
|
203
|
+
* - The `::backdrop` pseudo-element for the translucent overlay (styled via CSS).
|
|
204
|
+
* - Screen reader accessibility (`role="dialog"` / `aria-modal`) for free.
|
|
205
|
+
*
|
|
206
|
+
* **Positioning class mapping:**
|
|
207
|
+
* `posClass` maps `positioning='body'` to `'fixed'` (the CSS class name), while
|
|
208
|
+
* other positioning values pass through unchanged. `'body'` positioning anchors
|
|
209
|
+
* the sheet to the viewport; `'parent'` keeps it within the nearest `position: relative` ancestor.
|
|
210
|
+
*
|
|
211
|
+
* **Touch-to-dismiss via pointer events:**
|
|
212
|
+
* `@pointerdown`, `@pointermove`, and `@pointerup` on the `<dialog>` element
|
|
213
|
+
* power the swipe-down-to-dismiss gesture. `_onPointerDown` records the start Y;
|
|
214
|
+
* `_onPointerMove` applies a CSS `translateY` to provide live drag feedback;
|
|
215
|
+
* `_onPointerUp` determines if the drag exceeded the dismiss threshold.
|
|
216
|
+
*/
|
|
149
217
|
render(): import("lit").TemplateResult<1>;
|
|
150
218
|
}
|
|
151
219
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moni-bottom-sheet.d.ts","sourceRoot":"","sources":["../../src/components/moni-bottom-sheet.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"moni-bottom-sheet.d.ts","sourceRoot":"","sources":["../../src/components/moni-bottom-sheet.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAG7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,qBACa,eAAgB,SAAQ,WAAW;IAC/C;;;;;;;OAOG;IACyC,IAAI,UAAS;IAEzD;;;;;;;;;OASG;IAEH,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAY;IAEvD;;;;;OAKG;IACyC,KAAK,UAAQ;IAEzD;;;;OAIG;IAC0B,KAAK,SAAM;IAExC;;;;;;;;;;OAUG;IAEH,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAW;IAEhE;;;;;;;;OAQG;IAEH,cAAc,SAAS;IAEvB;;;;;;;;OAQG;IAEH,QAAQ,SAAM;IAEd;;;OAGG;IACH,OAAO,CAAC,eAAe,CAAqB;IAE5C;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAqB;IAE7C,wDAAwD;IACvC,OAAO,CAAC,OAAO,CAAqB;IACrD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,iBAAiB,CAAS;IAEzB,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;YAiBnC,gBAAgB;IA8B9B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAcvB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAqBtB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAmCtB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAmEpB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAYtB;;;;;;;OAOG;IACM,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAmC9C;;;;OAIG;IACM,oBAAoB;IAO7B,OAAgB,MAAM,4BAyHpB;IAEF;;;;;;;;;;;;;;;;;;;OAmBG;IACM,MAAM;CAsBf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,mBAAmB,EAAE,eAAe,CAAC;KACrC;CACD;AAED,eAAe,eAAe,CAAC"}
|