@ajuarezso/sui-design-system 0.23.1 → 0.24.0
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/docs/sui-banner/README.md +13 -0
- package/docs/sui-tab-chips/README.md +28 -1
- package/docs/sui-table/README.md +25 -0
- package/fesm2022/ajuarezso-sui-design-system.mjs +221 -9
- package/fesm2022/ajuarezso-sui-design-system.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ajuarezso-sui-design-system.d.ts +29 -17
|
@@ -27,6 +27,19 @@ está en modo de prueba. Va pegado arriba, a todo el ancho, y se queda mientras
|
|
|
27
27
|
Regla corta (canon, la misma del alert): **contexto → alert · toda la app → banner · efímero →
|
|
28
28
|
toast · bandeja → notification.**
|
|
29
29
|
|
|
30
|
+
## Ancho: siempre todo el de su contenedor (regla del dueño, 04-10-2026)
|
|
31
|
+
|
|
32
|
+
El banner **ocupa siempre el ancho disponible de su contenedor**, de borde a borde. No se mete
|
|
33
|
+
dentro de una columna centrada ni de una card, ni se le pone `border-radius` o márgenes laterales
|
|
34
|
+
para que «encaje» con el contenido: si se ve como un rectángulo flotando entre cards, está mal
|
|
35
|
+
puesto.
|
|
36
|
+
|
|
37
|
+
- Va **fuera** de la columna con `max-width` de la página, como primer hijo del host.
|
|
38
|
+
- Si el host tiene padding lateral (p. ej. `customer-page-base`: 32px en desktop y 16px en
|
|
39
|
+
mobile), el banner se come ese padding con margen negativo para llegar al borde.
|
|
40
|
+
- Ejemplo real: el aviso de app cerrada en la bandeja del repartidor
|
|
41
|
+
(`driver-dashboard.html`, clase `.cerrada`).
|
|
42
|
+
|
|
30
43
|
## Qué variante usar
|
|
31
44
|
|
|
32
45
|
> La guía del DS dice **para qué** es el banner, pero no cuándo va cada relleno ni cada tipo. Lo
|
|
@@ -131,6 +131,26 @@ contador mide 11 px en `small` y `medium`, y 12 px (pastilla de 20) en `large` y
|
|
|
131
131
|
<sui-tab-chips [chips]="filtros" [(value)]="filtro" [size]="bp.isMobile() ? 'xlarge' : 'medium'" />
|
|
132
132
|
```
|
|
133
133
|
|
|
134
|
+
## Pista de scroll (canon, aprobado por el dueño el 05-10-2026)
|
|
135
|
+
|
|
136
|
+
Desde la **0.24.0**. La barra de scroll está oculta, así que con chips que no entran no se notaba
|
|
137
|
+
que había más; en escritorio con mouse solo se llegaba con Shift+rueda. El componente lo avisa
|
|
138
|
+
solo:
|
|
139
|
+
|
|
140
|
+
| parte | qué hace | dónde |
|
|
141
|
+
|---|---|---|
|
|
142
|
+
| degradado | 40 px del color de fondo en el borde que tiene chips ocultos: `bg-white-0` (la página) y `bg-weak-50` cuando está pegado (`sticky`). Funciona en modo oscuro. Se va cuando ya no hay más de ese lado. | siempre |
|
|
143
|
+
| flechas | botón redondo de 32 px con `arrow-left-s-line` / `arrow-right-s-line`, centrado en la fila. Desplaza ~80 % del ancho visible con scroll suave (sin animación con `prefers-reduced-motion`). | solo con mouse o trackpad (`hover: hover` y `pointer: fine`) |
|
|
144
|
+
|
|
145
|
+
- En táctil no hay flechas: se desliza con el dedo y el degradado basta.
|
|
146
|
+
- No cambia `autoScroll`: el chip elegido se sigue centrando, y la pista se actualiza con ese
|
|
147
|
+
scroll.
|
|
148
|
+
- Las flechas tienen `aria-label` («Ver más a la derecha» / «Ver más a la izquierda») y
|
|
149
|
+
`tabindex="-1"`: los chips ya se recorren con ← →.
|
|
150
|
+
- El estado sale del `scroll` del propio `<nav>` y de un `ResizeObserver`; sin listeners
|
|
151
|
+
globales. Es la misma implementación de `sui-table` (`core/pista-de-scroll`).
|
|
152
|
+
- `[pistaDeScroll]="false"` la apaga (default prendida). Hoy no hay un caso para apagarla.
|
|
153
|
+
|
|
134
154
|
## «No usar»: por qué no hoy y cuándo sí
|
|
135
155
|
|
|
136
156
|
| qué | por qué no hoy | cuándo sí, en un flujo nuevo |
|
|
@@ -151,6 +171,7 @@ contador mide 11 px en `small` y `medium`, y 12 px (pastilla de 20) en `large` y
|
|
|
151
171
|
| `sticky` | `boolean` | `false` |
|
|
152
172
|
| `size` | `'small' \| 'medium' \| 'large' \| 'xlarge'` | `'medium'` |
|
|
153
173
|
| `autoScroll` | `boolean` | `true` |
|
|
174
|
+
| `pistaDeScroll` | `boolean` | `true` |
|
|
154
175
|
|
|
155
176
|
Outputs: ninguno.
|
|
156
177
|
<!-- api:fin -->
|
|
@@ -161,7 +182,7 @@ interface SuiTabChipItem {
|
|
|
161
182
|
label: string;
|
|
162
183
|
count?: number; // 0 o undefined no se dibuja
|
|
163
184
|
}
|
|
164
|
-
type SuiTabChipsSize = 'small' | 'medium' | 'large';
|
|
185
|
+
type SuiTabChipsSize = 'small' | 'medium' | 'large' | 'xlarge';
|
|
165
186
|
```
|
|
166
187
|
|
|
167
188
|
## Trampas
|
|
@@ -182,6 +203,12 @@ type SuiTabChipsSize = 'small' | 'medium' | 'large';
|
|
|
182
203
|
- **No tiene padding lateral propio**: lo pone la pantalla. Sí trae 12 px arriba y abajo.
|
|
183
204
|
- **`sticky` cambia el host a `display: contents`**: las clases que le pongas al host dejan de
|
|
184
205
|
pintar caja (márgenes, anchos). Pon el estilo en un contenedor.
|
|
206
|
+
- **Desde la 0.24.0 el `<nav class="sui-tab-chips">` va dentro de `<sui-pista-de-scroll>`**, y en
|
|
207
|
+
modo `sticky` el que se pega es ese contenedor (no el nav). Los estilos de página que pisan
|
|
208
|
+
`.sui-tab-chips` (padding) siguen funcionando: el nav conserva la clase y sigue siendo el que
|
|
209
|
+
scrollea.
|
|
210
|
+
- **El degradado asume fondo blanco** (`bg-white-0`) fuera del modo pegado. Sobre un fondo gris se
|
|
211
|
+
ve una mancha: pisa `--sui-pista-de-scroll-fondo` en un contenedor con el token del fondo real.
|
|
185
212
|
- **Pegado, el fondo es `bg-weak-50`**: sobre una página blanca se nota la franja gris.
|
|
186
213
|
Con `sticky` el sentinel agrega 16 px arriba.
|
|
187
214
|
- **`count` en 0 no se dibuja**: no sirve para decir «0 pendientes».
|
package/docs/sui-table/README.md
CHANGED
|
@@ -140,6 +140,28 @@ solo en Android**: pone `touch-action: pan-x` por JS para que el scroll horizont
|
|
|
140
140
|
y mueve él mismo la página con el gesto vertical (con inercia). En iOS no hace nada: WebKit delega
|
|
141
141
|
el vertical solo. Por eso la página **no** agrega `touch-action` ni un wrapper con `overflow-x`.
|
|
142
142
|
|
|
143
|
+
## Pista de scroll (canon, aprobado por el dueño el 05-10-2026)
|
|
144
|
+
|
|
145
|
+
Desde la **0.24.0**. Cuando la tabla scrollea en horizontal (≤ 767 px, o con una columna `sticky`)
|
|
146
|
+
la barra está oculta: en el teléfono se ve 1 de 5 columnas y parece completa. La tabla lo avisa
|
|
147
|
+
sola, sin nada en la página:
|
|
148
|
+
|
|
149
|
+
| parte | qué hace | dónde |
|
|
150
|
+
|---|---|---|
|
|
151
|
+
| degradado | 40 px del color de fondo de la tabla (`bg-white-0`, oscuro en modo oscuro) en el borde que tiene columnas ocultas. Se va cuando ya no hay más de ese lado. | siempre |
|
|
152
|
+
| flechas | botón redondo de 28 px con `arrow-left-s-line` / `arrow-right-s-line`, **a la altura de la cabecera** (en una tabla larga el centro queda fuera de la pantalla). Desplaza ~80 % del ancho visible con scroll suave (sin animación con `prefers-reduced-motion`). | solo con mouse o trackpad (`hover: hover` y `pointer: fine`) |
|
|
153
|
+
|
|
154
|
+
- En táctil no hay flechas: se desliza con el dedo y el degradado basta.
|
|
155
|
+
- **Con una columna `sticky` no hay pista a la izquierda**: la columna pegada ya avisa, y el
|
|
156
|
+
degradado o la flecha se pintarían encima de ella. La derecha sí.
|
|
157
|
+
- En escritorio sin `sticky` el contenedor es `overflow: hidden` (recorta, no scrollea): ahí no
|
|
158
|
+
hay pista aunque algo desborde. Ver Trampas.
|
|
159
|
+
- Las flechas tienen `aria-label` («Ver más a la derecha» / «Ver más a la izquierda») y
|
|
160
|
+
`tabindex="-1"`: no son una parada de teclado.
|
|
161
|
+
- El estado sale del `scroll` del propio contenedor y de un `ResizeObserver`; sin listeners
|
|
162
|
+
globales. Es la misma implementación de `sui-tab-chips` (`core/pista-de-scroll`).
|
|
163
|
+
- `[pistaDeScroll]="false"` la apaga (default prendida). Hoy no hay un caso para apagarla.
|
|
164
|
+
|
|
143
165
|
## «No usar»: por qué no hoy y cuándo sí
|
|
144
166
|
|
|
145
167
|
| qué | por qué no hoy | cuándo sí, en un flujo nuevo |
|
|
@@ -167,6 +189,7 @@ el vertical solo. Por eso la página **no** agrega `touch-action` ni un wrapper
|
|
|
167
189
|
| `striped` | `boolean` | `false` |
|
|
168
190
|
| `selectable` | `boolean` | `false` |
|
|
169
191
|
| `rowKey` | `keyof T \| ((row: T) => any)` | `undefined` |
|
|
192
|
+
| `pistaDeScroll` | `boolean` | `true` |
|
|
170
193
|
| `selectedRows` · model, `[(selectedRows)]` | `Set<any>` | `new Set()` |
|
|
171
194
|
| `sortKey` · model, `[(sortKey)]` | `string \| null` | `null` |
|
|
172
195
|
| `sortDir` · model, `[(sortDir)]` | `'asc' \| 'desc' \| null` | `null` |
|
|
@@ -230,6 +253,8 @@ trabajo de la página.
|
|
|
230
253
|
- La fila esqueleto son siempre 5, sin importar el tamaño de página.
|
|
231
254
|
- No le pongas `touch-action` ni `overflow-x` desde la página: el componente ya maneja el gesto en
|
|
232
255
|
Android y lo romperías.
|
|
256
|
+
- **El degradado de la pista es `bg-white-0`**, el fondo de la propia tabla. Si la tabla vive
|
|
257
|
+
sobre otro fondo (no es el caso hoy), se pisa `--sui-pista-de-scroll-fondo` en un contenedor.
|
|
233
258
|
|
|
234
259
|
## Ejemplo
|
|
235
260
|
|