@ajuarezso/sui-design-system 0.20.0 → 0.22.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/INDEX.md +75 -80
- package/docs/sui-accordion/README.md +171 -0
- package/docs/sui-activity-feed/README.md +155 -0
- package/docs/sui-activity-filter/README.md +100 -0
- package/docs/sui-alert/README.md +13 -0
- package/docs/sui-badge/README.md +17 -0
- package/docs/sui-banner/README.md +190 -0
- package/docs/sui-breadcrumb-item/README.md +96 -0
- package/docs/sui-breadcrumbs/README.md +122 -0
- package/docs/sui-button/README.md +36 -0
- package/docs/sui-card/README.md +168 -0
- package/docs/sui-chart-legend/README.md +140 -0
- package/docs/sui-chart-legend-dot/README.md +118 -0
- package/docs/sui-checkbox-card/README.md +150 -0
- package/docs/sui-command-menu-footer/README.md +100 -0
- package/docs/sui-command-menu-item/README.md +140 -0
- package/docs/sui-command-menu-search/README.md +105 -0
- package/docs/sui-compact-select/README.md +130 -0
- package/docs/sui-compact-select-for-input/README.md +120 -0
- package/docs/sui-content-card/README.md +147 -0
- package/docs/sui-content-label/README.md +148 -0
- package/docs/sui-counter-input/README.md +148 -0
- package/docs/sui-date-selector/README.md +98 -0
- package/docs/sui-datepicker/README.md +197 -0
- package/docs/sui-day-cell/README.md +118 -0
- package/docs/sui-day-label/README.md +81 -0
- package/docs/sui-drawer-footer/README.md +127 -0
- package/docs/sui-drawer-header/README.md +140 -0
- package/docs/sui-dropdown-caption/README.md +92 -0
- package/docs/sui-dropdown-item/README.md +163 -0
- package/docs/sui-dropdown-menu/README.md +196 -0
- package/docs/sui-dropdown-search/README.md +113 -0
- package/docs/sui-empty-state/README.md +145 -0
- package/docs/sui-file-upload/README.md +154 -0
- package/docs/sui-file-upload-card/README.md +129 -0
- package/docs/sui-filter/README.md +181 -0
- package/docs/sui-href/README.md +85 -0
- package/docs/sui-image-upload/README.md +200 -0
- package/docs/sui-image-upload-profile/README.md +145 -0
- package/docs/sui-img-retry/README.md +107 -0
- package/docs/sui-inline-input/README.md +104 -0
- package/docs/sui-inline-select/README.md +101 -0
- package/docs/sui-input/README.md +247 -0
- package/docs/sui-integration-switch/README.md +142 -0
- package/docs/sui-modal/README.md +238 -0
- package/docs/sui-modal-footer/README.md +178 -0
- package/docs/sui-modal-header/README.md +115 -0
- package/docs/sui-modal-sheet/README.md +170 -0
- package/docs/sui-notification/README.md +179 -0
- package/docs/sui-notification-footer/README.md +98 -0
- package/docs/sui-notification-tab-menu/README.md +112 -0
- package/docs/sui-otp-input/README.md +116 -0
- package/docs/sui-page-header/README.md +123 -0
- package/docs/sui-pagination/README.md +146 -0
- package/docs/sui-password-strength/README.md +99 -0
- package/docs/sui-period-range/README.md +93 -0
- package/docs/sui-popover/README.md +178 -0
- package/docs/sui-product-card/README.md +173 -0
- package/docs/sui-radio-card/README.md +160 -0
- package/docs/sui-rating/README.md +7 -6
- package/docs/sui-rich-editor/README.md +114 -0
- package/docs/sui-segmented-control/README.md +3 -0
- package/docs/sui-select/README.md +183 -0
- package/docs/sui-sidebar/README.md +217 -0
- package/docs/sui-stepper/README.md +166 -0
- package/docs/sui-store-card/README.md +147 -0
- package/docs/sui-switch-card/README.md +149 -0
- package/docs/sui-switch-label/README.md +3 -0
- package/docs/sui-tab-chips/README.md +188 -0
- package/docs/sui-tab-menu-horizontal/README.md +142 -0
- package/docs/sui-tab-menu-vertical/README.md +136 -0
- package/docs/sui-table/README.md +264 -0
- package/docs/sui-tag-input/README.md +123 -0
- package/docs/sui-textarea/README.md +160 -0
- package/docs/sui-time-picker/README.md +240 -0
- package/docs/sui-toast/README.md +190 -0
- package/docs/sui-tooltip/README.md +201 -0
- package/docs/sui-topbar/README.md +153 -0
- package/docs/sui-topbar-button/README.md +95 -0
- package/docs/sui-topbar-item/README.md +97 -0
- package/docs/sui-topbar-user/README.md +83 -0
- package/fesm2022/ajuarezso-sui-design-system.mjs +291 -246
- package/fesm2022/ajuarezso-sui-design-system.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ajuarezso-sui-design-system.d.ts +208 -50
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sui-command-menu-footer
|
|
3
|
+
selector: sui-command-menu-footer
|
|
4
|
+
resumen: Pie del buscador ⌘K (command menu) con las teclas para moverse y elegir, y un link de ayuda
|
|
5
|
+
alternativas: [sui-modal-footer (botones de un modal), sui-kbd (una tecla suelta), sui-dropdown-caption (texto de pie de un menú flotante)]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# sui-command-menu-footer
|
|
9
|
+
|
|
10
|
+
Story: [Organisms/Command Menu/Command Menu Footer](https://sui-design-system.web.app/?path=/docs/organisms-command-menu-command-menu-footer--docs)
|
|
11
|
+
|
|
12
|
+
La última de las tres piezas del command menu (ver README de `sui-command-menu-item`): dos grupos
|
|
13
|
+
de teclas (↑ ↓ «Navegar», ↵ «Seleccionar») y a la derecha un texto con un link de ayuda.
|
|
14
|
+
|
|
15
|
+
## Cuándo usarlo / cuándo no
|
|
16
|
+
|
|
17
|
+
**Úsalo** al pie de un command menu **en desktop**, para enseñar las teclas.
|
|
18
|
+
|
|
19
|
+
**No lo uses** para:
|
|
20
|
+
|
|
21
|
+
- Mobile: no hay teclado físico; las teclas no dicen nada (README de `sui-kbd`). No se pinta.
|
|
22
|
+
- Un command menu que **no** se mueve con flechas: si el pie dice «↑ ↓ Navegar», las flechas tienen
|
|
23
|
+
que funcionar. `sui-command-menu-item` no las trae; las cablea quien arma el menú.
|
|
24
|
+
- Botones de un modal: `sui-modal-footer`.
|
|
25
|
+
|
|
26
|
+
Regla corta: **command menu en desktop con flechas cableadas → footer · mobile → nada.**
|
|
27
|
+
|
|
28
|
+
## Qué variante usar
|
|
29
|
+
|
|
30
|
+
> **La guía del DS lo pone como parte opcional del command menu**: un pie para mostrar atajos de
|
|
31
|
+
> teclado o información extra. No trae do/don't. Todo lo de abajo es **propuesta, falta
|
|
32
|
+
> aprobación**, salvo lo marcado canon.
|
|
33
|
+
>
|
|
34
|
+
> Uso medido el 03-10-2026 en `master-pedidos/src/app` (misma exclusión que `sui-dropdown-menu`):
|
|
35
|
+
> **0 usos**.
|
|
36
|
+
|
|
37
|
+
No tiene variantes. Se decide el copy y si va el bloque de ayuda.
|
|
38
|
+
|
|
39
|
+
| prop | regla | fuente |
|
|
40
|
+
|---|---|---|
|
|
41
|
+
| `navigateLabel` · `selectLabel` | **Siempre en español**: «Moverte» y «Abrir» (o «Elegir»). Los defaults son `'Navigate'` y `'Select'`. | canon (CANON-SUI §5: copy en español, tuteo) |
|
|
42
|
+
| `helpText` + `helpLink` | Solo si hay adónde mandar a la persona (el WhatsApp de soporte). Si no, `[helpText]="null"` saca el bloque entero. Los defaults están en inglés. | propuesta |
|
|
43
|
+
| `helpLink` como objeto | `{ label, href, target }` dibuja un `<a>` de verdad; con `target: '_blank'` pone `rel="noopener noreferrer"` solo. | API |
|
|
44
|
+
|
|
45
|
+
## Tamaño en mobile y en web
|
|
46
|
+
|
|
47
|
+
No tiene tamaños: 48 px de alto, textos 12/16, hasta 600 px de ancho.
|
|
48
|
+
|
|
49
|
+
| uso | mobile | web | fuente |
|
|
50
|
+
|---|---|---|---|
|
|
51
|
+
| pie del command menu | no se pinta | 48 px | canon para mobile (README de `sui-kbd`: en mobile las teclas no se muestran) |
|
|
52
|
+
|
|
53
|
+
```html
|
|
54
|
+
@if (!bp.isMobile()) {
|
|
55
|
+
<sui-command-menu-footer navigateLabel="Moverte" selectLabel="Abrir" [helpText]="null" />
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## API
|
|
60
|
+
|
|
61
|
+
<!-- api:inicio -->
|
|
62
|
+
<!-- generada: no editar a mano — `npm run docs` -->
|
|
63
|
+
|
|
64
|
+
| input | tipo | default |
|
|
65
|
+
|---|---|---|
|
|
66
|
+
| `navigateLabel` | `string` | `'Navigate'` |
|
|
67
|
+
| `selectLabel` | `string` | `'Select'` |
|
|
68
|
+
| `helpText` | `string \| null` | `"Not what you're looking for? Try the"` |
|
|
69
|
+
| `helpLink` | `SuiLinkConfig \| string \| null` | `'Help Center'` |
|
|
70
|
+
|
|
71
|
+
| output | payload |
|
|
72
|
+
|---|---|
|
|
73
|
+
| `helpClicked` | `MouseEvent` |
|
|
74
|
+
<!-- api:fin -->
|
|
75
|
+
|
|
76
|
+
`helpLink` como string dibuja un botón que solo emite `helpClicked`; como `SuiLinkConfig`
|
|
77
|
+
(`{ label, href?, target?, rel? }`) dibuja un `<a>`, y un `href` interno navega dentro de la app.
|
|
78
|
+
|
|
79
|
+
## Trampas
|
|
80
|
+
|
|
81
|
+
- **Los cuatro textos vienen en inglés.** Si no se pasan, el pie dice «Navigate», «Select», «Not
|
|
82
|
+
what you're looking for? Try the» y «Help Center».
|
|
83
|
+
- **`helpText: null` saca también el link**; `helpLink: null` saca solo el link y deja el texto.
|
|
84
|
+
- **Promete flechas que nadie cablea**: ni `sui-command-menu-item` ni el modal mueven la selección
|
|
85
|
+
con ↑ ↓.
|
|
86
|
+
- Hasta 600 px el texto de ayuda se oculta (queda solo el link): pasa en un modal angosto aunque sea
|
|
87
|
+
desktop.
|
|
88
|
+
- Las teclas son íconos fijos (↑ ↓ ↵); no se pueden cambiar.
|
|
89
|
+
|
|
90
|
+
## Ejemplo
|
|
91
|
+
|
|
92
|
+
```html
|
|
93
|
+
@if (!bp.isMobile()) {
|
|
94
|
+
<sui-command-menu-footer
|
|
95
|
+
navigateLabel="Moverte"
|
|
96
|
+
selectLabel="Abrir"
|
|
97
|
+
helpText="¿No es lo que buscas? Escríbenos por"
|
|
98
|
+
[helpLink]="{ label: 'WhatsApp', href: 'https://wa.me/51931819925', target: '_blank' }" />
|
|
99
|
+
}
|
|
100
|
+
```
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sui-command-menu-item
|
|
3
|
+
selector: sui-command-menu-item
|
|
4
|
+
resumen: Fila de resultado del buscador ⌘K (command menu) que lleva a una pantalla, un pedido o una persona
|
|
5
|
+
alternativas: [sui-dropdown-item (fila de un menú de acciones anclado a un botón), sui-filter-item (fila de un panel de filtros), sui-content-card (resultado que se ve en una lista de la pantalla)]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# sui-command-menu-item
|
|
9
|
+
|
|
10
|
+
Story: [Organisms/Command Menu/Command Menu Item](https://sui-design-system.web.app/?path=/docs/organisms-command-menu-command-menu-item--docs)
|
|
11
|
+
|
|
12
|
+
**SUI no tiene un componente «command menu» entero.** Se arma con tres piezas dentro de un
|
|
13
|
+
`sui-modal`: `sui-command-menu-search` arriba, la lista de `sui-command-menu-item` en el medio
|
|
14
|
+
(con cabeceras de grupo `sui-content-divider`) y `sui-command-menu-footer` abajo. Quien lo arma pone
|
|
15
|
+
el filtrado, el teclado y el atajo ⌘K.
|
|
16
|
+
|
|
17
|
+
## Cuándo usarlo / cuándo no
|
|
18
|
+
|
|
19
|
+
**Úsalo** para los resultados de un buscador que **lleva a algún lado**: abrir un pedido, ir a una
|
|
20
|
+
pantalla del panel, abrir la ficha de un repartidor o un local. Es el patrón del super admin o del
|
|
21
|
+
panel del local **en desktop**, donde hay teclado.
|
|
22
|
+
|
|
23
|
+
**No lo uses** para:
|
|
24
|
+
|
|
25
|
+
- Acciones sobre algo concreto (editar, archivar): `sui-dropdown-item` dentro de un
|
|
26
|
+
`sui-dropdown-menu`.
|
|
27
|
+
- Elegir un valor de un formulario: `sui-select`.
|
|
28
|
+
- La lista de resultados de una pantalla de búsqueda (la del cliente buscando tiendas): ahí van las
|
|
29
|
+
cards de la pantalla, no filas de palette.
|
|
30
|
+
- Un menú en mobile: el ⌘K es un patrón de teclado.
|
|
31
|
+
|
|
32
|
+
Regla corta: **buscar y saltar → command menu · actuar sobre algo → dropdown · elegir un valor →
|
|
33
|
+
select.** La tabla completa está en el README de `sui-dropdown-menu`.
|
|
34
|
+
|
|
35
|
+
## Qué variante usar
|
|
36
|
+
|
|
37
|
+
> **La guía del DS define el command menu como el buscador que deja saltar rápido desde cualquier
|
|
38
|
+
> pantalla**, armado dentro de un diálogo, con input, lista, grupos con título, items y un pie con
|
|
39
|
+
> teclas. El item tiene dos tamaños, `small` (default) y `medium`, y el elegido se marca con fondo
|
|
40
|
+
> `bg-weak-50`. No trae do/don't. Lo demás es **propuesta, falta aprobación**.
|
|
41
|
+
>
|
|
42
|
+
> Uso medido el 03-10-2026 en `master-pedidos/src/app` (misma exclusión que `sui-dropdown-menu`):
|
|
43
|
+
> **0 usos**. Solo aparece en la vitrina `master-preview`.
|
|
44
|
+
|
|
45
|
+
### `type` — qué va a la izquierda
|
|
46
|
+
|
|
47
|
+
| type | cuándo | fuente |
|
|
48
|
+
|---|---|---|
|
|
49
|
+
| `left-icon` | Ir a una **pantalla** o una sección: «Pedidos», «Mi negocio», «Recargas». | según la guía del DS (item con ícono); el cuándo es propuesta |
|
|
50
|
+
| `avatar` | Una **persona**: repartidor, cliente, dueño de local (`avatar` con `src` o `initials`). | propuesta |
|
|
51
|
+
| `company` | Un **local**: su logo en `avatar.src`. | propuesta |
|
|
52
|
+
| `basic` (default) | Una búsqueda reciente o un resultado sin imagen («Pedido #1234»). | propuesta |
|
|
53
|
+
| `brand` | Un servicio externo con su logo (Yape, WhatsApp), proyectado en `slot="brand"`. | propuesta |
|
|
54
|
+
| `country` | No usar hoy: todo es Perú. | propuesta |
|
|
55
|
+
|
|
56
|
+
### `size` y los extras
|
|
57
|
+
|
|
58
|
+
| prop | cuándo | fuente |
|
|
59
|
+
|---|---|---|
|
|
60
|
+
| `size="small"` (default, 40) | Listas de resultados de una línea (`title` + `sublabel`). | según la guía del DS (default `small`) |
|
|
61
|
+
| `size="medium"` (64) | Cuando el resultado necesita una segunda línea (`description`) para distinguirse: «Pedido #1234» · «Juan Pérez · S/ 45.00». | según la guía del DS (existe); el cuándo es propuesta |
|
|
62
|
+
| `badge` | Un estado corto que ayuda a elegir («Pendiente», «Cerrado»). String = gris `lighter`; objeto `SuiBadgeConfig` para color. | propuesta |
|
|
63
|
+
| `shortcut` | El atajo de esa acción (`sui-kbd`). Solo web. | canon (README de `sui-kbd`: en mobile no se pinta) |
|
|
64
|
+
| `showButton` | Una flecha a la derecha cuando el resultado abre otra pantalla. | propuesta |
|
|
65
|
+
|
|
66
|
+
## Tamaño en mobile y en web
|
|
67
|
+
|
|
68
|
+
El command menu es un patrón de desktop. En mobile no hay ⌘K ni flechas; si se reusa la lista en un
|
|
69
|
+
buscador de mobile, la fila `small` mide 40 y queda debajo de los 44 del dedo.
|
|
70
|
+
|
|
71
|
+
| uso | mobile | web | fuente |
|
|
72
|
+
|---|---|---|---|
|
|
73
|
+
| resultado de una línea | `medium` (64) | `small` (40) | propuesta, falta aprobación |
|
|
74
|
+
| resultado con descripción | `medium` (64) | `medium` (64) | propuesta |
|
|
75
|
+
|
|
76
|
+
```html
|
|
77
|
+
<sui-command-menu-item [size]="bp.isMobile() ? 'medium' : 'small'" … /> <!-- bp = BreakpointsService -->
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## API
|
|
81
|
+
|
|
82
|
+
<!-- api:inicio -->
|
|
83
|
+
<!-- generada: no editar a mano — `npm run docs` -->
|
|
84
|
+
|
|
85
|
+
| input | tipo | default |
|
|
86
|
+
|---|---|---|
|
|
87
|
+
| `type` | `'basic' \| 'left-icon' \| 'avatar' \| 'brand' \| 'company' \| 'country'` | `'basic'` |
|
|
88
|
+
| `size` | `'small' \| 'medium'` | `'small'` |
|
|
89
|
+
| `title` | `string` | — (requerido) |
|
|
90
|
+
| `sublabel` | `string \| null` | `null` |
|
|
91
|
+
| `description` | `string \| null` | `null` |
|
|
92
|
+
| `icon` | `string \| null` | `null` |
|
|
93
|
+
| `avatar` | `SuiAvatarConfig \| string \| null` | `null` |
|
|
94
|
+
| `flagName` | `SuiFlagName \| null` | `null` |
|
|
95
|
+
| `badge` | `SuiBadgeConfig \| string \| null` | `null` |
|
|
96
|
+
| `shortcut` | `string \| null` | `null` |
|
|
97
|
+
| `showButton` | `boolean` | `false` |
|
|
98
|
+
|
|
99
|
+
| output | payload |
|
|
100
|
+
|---|---|
|
|
101
|
+
| `clicked` | `MouseEvent` |
|
|
102
|
+
| `buttonClicked` | `MouseEvent` |
|
|
103
|
+
<!-- api:fin -->
|
|
104
|
+
|
|
105
|
+
Slot: `[slot=brand]` (solo con `type="brand"`). `avatar` acepta un string (la URL) o
|
|
106
|
+
`SuiAvatarConfig` (`{ src?, initials?, color? }`).
|
|
107
|
+
|
|
108
|
+
## Trampas
|
|
109
|
+
|
|
110
|
+
- **`(clicked)` nunca sale.** El componente declara el output pero no lo conecta a ningún clic (el
|
|
111
|
+
host no escucha `click` y el template no llama a `onClick`; el spec no lo prueba). Escucha el
|
|
112
|
+
`(click)` nativo del host: `<sui-command-menu-item (click)="ir(r)" … />`.
|
|
113
|
+
- **Enter y Espacio no hacen nada.** Tiene `role="button"` y `tabindex="0"`, así que se enfoca con
|
|
114
|
+
Tab, pero activarlo con teclado lo tiene que cablear quien lo usa (`(keydown.enter)`).
|
|
115
|
+
- **No hay estado «elegido»** para la navegación con flechas: el fondo `weak-50` sale con hover y
|
|
116
|
+
con `:focus-visible`. Para mover la selección con ↑ ↓ hay que mover el foco entre filas.
|
|
117
|
+
- `description` solo se ve en `medium`.
|
|
118
|
+
- `showButton` pinta una flecha con `ariaLabel="Abrir"` fijo, y su clic sale por `buttonClicked`
|
|
119
|
+
(no burbujea al item).
|
|
120
|
+
- `type="left-icon"` sin `icon` en `small` cae al ícono `apps-line`; en `medium` queda el círculo vacío.
|
|
121
|
+
- Mide como máximo 600 px de ancho.
|
|
122
|
+
- El host borra el atributo `title` nativo (no aparece el tooltip gris del navegador).
|
|
123
|
+
|
|
124
|
+
## Ejemplo
|
|
125
|
+
|
|
126
|
+
```html
|
|
127
|
+
<sui-modal [(open)]="buscadorAbierto" size="large" [fullscreen]="true">
|
|
128
|
+
<sui-command-menu-search [(value)]="q" placeholder="Busca pedidos, locales o repartidores…"
|
|
129
|
+
[shortcut]="!bp.isMobile()" />
|
|
130
|
+
<sui-content-divider type="text" text="Pantallas" />
|
|
131
|
+
@for (p of pantallas(); track p.ruta) {
|
|
132
|
+
<sui-command-menu-item type="left-icon" [icon]="p.icono" [title]="p.nombre"
|
|
133
|
+
[size]="bp.isMobile() ? 'medium' : 'small'"
|
|
134
|
+
(click)="ir(p.ruta)" (keydown.enter)="ir(p.ruta)" />
|
|
135
|
+
}
|
|
136
|
+
@if (!bp.isMobile()) {
|
|
137
|
+
<sui-command-menu-footer navigateLabel="Moverte" selectLabel="Abrir" [helpText]="null" />
|
|
138
|
+
}
|
|
139
|
+
</sui-modal>
|
|
140
|
+
```
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sui-command-menu-search
|
|
3
|
+
selector: sui-command-menu-search
|
|
4
|
+
resumen: Campo de arriba del buscador ⌘K (command menu), sin caja y con borde inferior
|
|
5
|
+
alternativas: [sui-input type="search" (buscador de una pantalla), sui-dropdown-search (filtrar los items de un menú flotante)]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# sui-command-menu-search
|
|
9
|
+
|
|
10
|
+
Story: [Organisms/Command Menu/Command Menu Search](https://sui-design-system.web.app/?path=/docs/organisms-command-menu-command-menu-search--docs)
|
|
11
|
+
|
|
12
|
+
Es la primera de las tres piezas del command menu (ver README de `sui-command-menu-item`): el
|
|
13
|
+
campo, el chip ⌘K y un botón para limpiar. **No busca**: emite el texto y quien lo usa filtra.
|
|
14
|
+
|
|
15
|
+
## Cuándo usarlo / cuándo no
|
|
16
|
+
|
|
17
|
+
**Úsalo** arriba de un command menu armado dentro de un `sui-modal`: el buscador que salta a
|
|
18
|
+
pedidos, locales, repartidores o pantallas del panel en desktop.
|
|
19
|
+
|
|
20
|
+
**No lo uses** para:
|
|
21
|
+
|
|
22
|
+
- El buscador de una pantalla o de una lista a la vista: `sui-input type="search"` (ya lleva
|
|
23
|
+
`enterkeyhint="search"`, tamaños y label).
|
|
24
|
+
- Filtrar las opciones de un menú anclado a un botón: `sui-dropdown-search`.
|
|
25
|
+
- Fuera del command menu: no tiene caja, solo un borde abajo; suelto parece texto.
|
|
26
|
+
|
|
27
|
+
Regla corta: **buscar en toda la app → command-menu-search · buscar en una pantalla → sui-input
|
|
28
|
+
search · filtrar un menú → dropdown-search.**
|
|
29
|
+
|
|
30
|
+
## Qué variante usar
|
|
31
|
+
|
|
32
|
+
> **La guía del DS define el command menu como el buscador que deja saltar rápido desde cualquier
|
|
33
|
+
> pantalla**; el input es su primera parte. No dice nada del chip ni del botón de la derecha (salen
|
|
34
|
+
> del Figma del DS). Todo lo de abajo es **propuesta, falta aprobación**, salvo lo marcado canon.
|
|
35
|
+
>
|
|
36
|
+
> Uso medido el 03-10-2026 en `master-pedidos/src/app` (misma exclusión que `sui-dropdown-menu`):
|
|
37
|
+
> **0 usos**.
|
|
38
|
+
|
|
39
|
+
Los tres estados salen solos del `value`: vacío (lupa gris, placeholder gris), hover (placeholder
|
|
40
|
+
más oscuro) y con texto (lupa naranja, X para limpiar).
|
|
41
|
+
|
|
42
|
+
| prop | regla | fuente |
|
|
43
|
+
|---|---|---|
|
|
44
|
+
| `placeholder` | **Siempre**, en español y diciendo qué se busca: «Busca pedidos, locales o repartidores…». El default es `'Search or jump to'`. | canon (CANON-SUI §5: copy en español, elipsis `…`) |
|
|
45
|
+
| `shortcut` | `true` solo en web; en mobile `false` (no hay teclado físico). | canon (README de `sui-kbd`) |
|
|
46
|
+
| `button` | Déjalo en `true`: la X de limpiar ahorra borrar a mano. El ícono de info del estado vacío no hace nada. | propuesta |
|
|
47
|
+
|
|
48
|
+
## Tamaño en mobile y en web
|
|
49
|
+
|
|
50
|
+
No tiene tamaños: 48 px de alto (14 + 20 + 13 + 1 de borde), texto 14/20, hasta 600 px de ancho.
|
|
51
|
+
|
|
52
|
+
| uso | mobile | web | fuente |
|
|
53
|
+
|---|---|---|---|
|
|
54
|
+
| buscador del command menu | igual, sin chip ⌘K | igual, con chip ⌘K | canon para el chip (README de `sui-kbd`); el resto, propuesta |
|
|
55
|
+
|
|
56
|
+
```html
|
|
57
|
+
<sui-command-menu-search [(value)]="q" placeholder="Busca pedidos, locales o repartidores…"
|
|
58
|
+
[shortcut]="!bp.isMobile()" /> <!-- bp = BreakpointsService -->
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## API
|
|
62
|
+
|
|
63
|
+
<!-- api:inicio -->
|
|
64
|
+
<!-- generada: no editar a mano — `npm run docs` -->
|
|
65
|
+
|
|
66
|
+
| input | tipo | default |
|
|
67
|
+
|---|---|---|
|
|
68
|
+
| `value` | `string` | `''` |
|
|
69
|
+
| `placeholder` | `string` | `'Search or jump to'` |
|
|
70
|
+
| `shortcut` | `boolean` | `true` |
|
|
71
|
+
| `button` | `boolean` | `true` |
|
|
72
|
+
|
|
73
|
+
| output | payload |
|
|
74
|
+
|---|---|
|
|
75
|
+
| `valueChange` | `string` |
|
|
76
|
+
| `cleared` | `void` |
|
|
77
|
+
<!-- api:fin -->
|
|
78
|
+
|
|
79
|
+
`value` no es `model`, pero el par `value` + `valueChange` permite `[(value)]`. La X emite
|
|
80
|
+
`valueChange('')` y `cleared`, y devuelve el foco al campo.
|
|
81
|
+
|
|
82
|
+
## Trampas
|
|
83
|
+
|
|
84
|
+
- **Sin `[(value)]` no funciona bien.** El componente no guarda lo que se escribe: solo lo emite. Si
|
|
85
|
+
no se le devuelve el `value`, la X nunca aparece y la lupa no cambia: el estado «con texto» sale
|
|
86
|
+
del input `value`, no de lo escrito.
|
|
87
|
+
- **El chip dice ⌘K, fijo.** En Windows el atajo es Ctrl+K y el chip no cambia; tampoco hay atajo
|
|
88
|
+
real: el `keydown` global lo cablea quien arma el command menu.
|
|
89
|
+
- **iOS hace zoom al enfocarlo**: el campo está en 14 px y la regla de la app pide 16 px en los
|
|
90
|
+
inputs de mobile (CLAUDE.md, «Responsive mobile»).
|
|
91
|
+
- **El teclado no trae la lupa**: el `<input>` es `type="text"` sin `enterkeyhint="search"` (CLAUDE.md,
|
|
92
|
+
«La lupa del teclado»).
|
|
93
|
+
- **El campo no tiene nombre accesible**: solo placeholder, sin `aria-label`.
|
|
94
|
+
- No tiene `disabled`.
|
|
95
|
+
- El ícono de info del estado vacío es decorativo: no abre ayuda ni tiene `aria-label`.
|
|
96
|
+
|
|
97
|
+
## Ejemplo
|
|
98
|
+
|
|
99
|
+
```html
|
|
100
|
+
<sui-command-menu-search
|
|
101
|
+
[(value)]="q"
|
|
102
|
+
placeholder="Busca pedidos, locales o repartidores…"
|
|
103
|
+
[shortcut]="!bp.isMobile()"
|
|
104
|
+
(cleared)="resultados.set([])" />
|
|
105
|
+
```
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sui-compact-select
|
|
3
|
+
selector: sui-compact-select
|
|
4
|
+
resumen: Select chico que se ajusta al ancho de su texto, para filtros sueltos y paginación
|
|
5
|
+
alternativas: [sui-select (campo de formulario a todo el ancho, con label), sui-inline-select (dentro de una frase, sin caja), sui-compact-select-for-input (dentro de un sui-input), sui-segmented-control (2 a 4 modos a la vista)]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# sui-compact-select
|
|
9
|
+
|
|
10
|
+
Story: [Molecules/Select/Compact Select](https://sui-design-system.web.app/?path=/docs/molecules-select-compact-select--docs)
|
|
11
|
+
|
|
12
|
+
## Cuándo usarlo / cuándo no
|
|
13
|
+
|
|
14
|
+
**Úsalo** para un filtro suelto en una barra de herramientas del panel, donde el campo debe medir
|
|
15
|
+
lo que mide su texto («Todos los roles ▾», «20 por página ▾»), sin label encima.
|
|
16
|
+
|
|
17
|
+
**No lo uses** para:
|
|
18
|
+
|
|
19
|
+
- Un campo de formulario con label, hint y error: `sui-select` (este no tiene label ni hint).
|
|
20
|
+
- Algo dentro de un `sui-input` (moneda, país del teléfono): `sui-compact-select-for-input`.
|
|
21
|
+
- Un valor dentro de una frase: `sui-inline-select`.
|
|
22
|
+
- 2 a 4 modos que se ven todos (Hoy · Semana · Mes): `sui-segmented-control`.
|
|
23
|
+
|
|
24
|
+
Regla corta: **filtro suelto en una barra, ancho al texto → compact · campo con label → select.**
|
|
25
|
+
|
|
26
|
+
## Qué variante usar
|
|
27
|
+
|
|
28
|
+
> **En la guía del DS es la variante `compact` del select**, con tres ejemplos: paginación
|
|
29
|
+
> («filas por página»), país y tamaños. No dice cuándo usarla. Lo de abajo es **propuesta, falta
|
|
30
|
+
> aprobación**, salvo lo marcado.
|
|
31
|
+
>
|
|
32
|
+
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 usos**. Los filtros de las barras del
|
|
33
|
+
> panel usan `sui-select` sin label (6: `pages/customers/customers.html:38`,
|
|
34
|
+
> `pages/settings/team/team.html:66`, `pages/drivers/drivers.html:72`…), que se estira a todo el ancho.
|
|
35
|
+
|
|
36
|
+
| prop | cuándo | fuente |
|
|
37
|
+
|---|---|---|
|
|
38
|
+
| `type="basic"` (default) | Texto + flecha: «Todos los roles», «20 por página». | según la guía del DS (ejemplo de paginación) |
|
|
39
|
+
| `type="icon"` | Solo el ícono de la opción elegida, sin texto: un selector de vista en una barra muy apretada. Hoy sin caso. | según la guía del DS |
|
|
40
|
+
| `type="country"` + `flag` | No usar hoy: todo es Perú. | según la guía del DS (ejemplo «Country») |
|
|
41
|
+
| `items` | La lista: `{ value, label, sublabel?, icon?, flag?, disabled? }`. A diferencia de `sui-select`, cada opción **sí** puede llevar ícono o bandera. | API |
|
|
42
|
+
| `selected` / `selectedChange` | La opción elegida (objeto entero). O `formControlName`, nunca los dos. | API |
|
|
43
|
+
| `placeholder` | El filtro sin elegir: «Todos». Corto. | propuesta, falta aprobación |
|
|
44
|
+
| `value` / `icon` | Lo que muestra el campo cuando no hay `items` (modo «solo campo», el menú lo arma la pantalla). | API |
|
|
45
|
+
| `error` | No usar hoy: un filtro no tiene error. | — |
|
|
46
|
+
| `disabled` | Mientras carga la lista. | según la guía del DS |
|
|
47
|
+
| `clicked` | Solo si la pantalla arma su propio menú (sin `items`). | API |
|
|
48
|
+
|
|
49
|
+
**Candidatos de hoy:** los 6 filtros de barra del panel en web (arriba). En mobile siguen como
|
|
50
|
+
`sui-select` `large` a todo el ancho, porque este no pasa de 40 px.
|
|
51
|
+
|
|
52
|
+
## Tamaño en mobile y en web
|
|
53
|
+
|
|
54
|
+
Tiene los tres tamaños de la guía —`medium` (40), `small` (36), `xsmall` (32)— y **`large` (48)**,
|
|
55
|
+
extensión SUI para mobile: mide lo mismo que un `sui-button` `large` de la misma barra. En `large`
|
|
56
|
+
crece el aire (padding 12 a los lados, radio 12) y los íconos siguen en 20.
|
|
57
|
+
|
|
58
|
+
En large y xlarge el texto sube a 16 px (regla del 03-10-2026): el valor y las opciones del menú
|
|
59
|
+
van en 16/24 en `large` y el padding vertical baja para que el alto siga en 48 (trigger) y 44 (opción).
|
|
60
|
+
|
|
61
|
+
Las opciones del menú siguen al `size` como en `sui-select`: 36 hasta `medium`, **44 en `large`**, y
|
|
62
|
+
**44 en mobile (≤ 767 px) con cualquier tamaño**.
|
|
63
|
+
|
|
64
|
+
| size | alto | opción del menú (web · mobile) | fuente |
|
|
65
|
+
|---|---|---|---|
|
|
66
|
+
| `large` | 48 | 44 · 44 | canon (aprobado por el dueño, 03-10-2026), extensión SUI |
|
|
67
|
+
| `medium` (default) | 40 | 36 · 44 | según la guía del DS; 44 en mobile: canon (aprobado por el dueño, 03-10-2026) |
|
|
68
|
+
| `small` | 36 | 36 · 44 | ídem |
|
|
69
|
+
| `xsmall` | 32 | 36 · 44 | ídem |
|
|
70
|
+
|
|
71
|
+
| uso | mobile | web | fuente |
|
|
72
|
+
|---|---|---|---|
|
|
73
|
+
| filtro de una barra del panel | `large` (48), junto a botones `large` | `small` (36) | propuesta, falta aprobación |
|
|
74
|
+
| paginación al pie de una tabla | no aplica | `xsmall` (32) | según la guía del DS (ejemplo de paginación); el tamaño es propuesta |
|
|
75
|
+
|
|
76
|
+
```html
|
|
77
|
+
<sui-compact-select [size]="bp.isMobile() ? 'large' : 'small'" placeholder="Todos los roles"
|
|
78
|
+
[items]="roles" [(selected)]="rolElegido" /> <!-- bp = BreakpointsService -->
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## «No usar»: por qué no hoy y cuándo sí
|
|
82
|
+
|
|
83
|
+
| qué | por qué no hoy | cuándo sí, en un flujo nuevo |
|
|
84
|
+
|---|---|---|
|
|
85
|
+
| el componente entero (0 usos) | los filtros usan `sui-select` | filtros del panel en web, y «20 por página» si las tablas pasan a paginar |
|
|
86
|
+
| `type="country"` | todo es Perú | si se abre otro país |
|
|
87
|
+
| `type="icon"` | ninguna barra está tan apretada | un selector de vista (cuadrícula o lista) en la barra de productos |
|
|
88
|
+
| `error` | un filtro no tiene error | — |
|
|
89
|
+
|
|
90
|
+
## API
|
|
91
|
+
|
|
92
|
+
<!-- api:inicio -->
|
|
93
|
+
<!-- generada: no editar a mano — `npm run docs` -->
|
|
94
|
+
|
|
95
|
+
| input | tipo | default |
|
|
96
|
+
|---|---|---|
|
|
97
|
+
| `type` | `'basic' \| 'icon' \| 'country'` | `'basic'` |
|
|
98
|
+
| `size` | `'large' \| 'medium' \| 'small' \| 'xsmall'` | `'medium'` |
|
|
99
|
+
| `value` | `string` | `''` |
|
|
100
|
+
| `placeholder` | `string` | `''` |
|
|
101
|
+
| `icon` | `string \| null` | `null` |
|
|
102
|
+
| `flag` | `SuiFlagName \| null` | `null` |
|
|
103
|
+
| `items` | `readonly SuiCompactSelectItem<T>[]` | `[]` |
|
|
104
|
+
| `selected` · model, `[(selected)]` | `SuiCompactSelectItem<T> \| null` | `null` |
|
|
105
|
+
| `error` | `boolean` | `false` |
|
|
106
|
+
| `disabled` | `boolean` | `false` |
|
|
107
|
+
|
|
108
|
+
| output | payload |
|
|
109
|
+
|---|---|
|
|
110
|
+
| `clicked` | `Event` |
|
|
111
|
+
| `selectedChange` | `SuiCompactSelectItem<T>` |
|
|
112
|
+
<!-- api:fin -->
|
|
113
|
+
|
|
114
|
+
Implementa `ControlValueAccessor` (el valor es el `value` de la opción).
|
|
115
|
+
|
|
116
|
+
## Trampas
|
|
117
|
+
|
|
118
|
+
- **No mezclar `[(selected)]` con `formControlName`**: son dos fuentes de verdad y el formulario no
|
|
119
|
+
se entera de lo que escribe `selected`.
|
|
120
|
+
- Sin `items` no abre nada: solo emite `(clicked)`.
|
|
121
|
+
- `type="icon"` **no muestra texto**: solo el ícono de la opción elegida.
|
|
122
|
+
- El menú mide al menos 200 px aunque el campo sea más angosto.
|
|
123
|
+
- Las opciones miden 36 px en web hasta `medium`; 44 en `large` y en mobile (ver «Tamaño»).
|
|
124
|
+
|
|
125
|
+
## Ejemplo
|
|
126
|
+
|
|
127
|
+
```html
|
|
128
|
+
<sui-compact-select size="small" placeholder="Todos los roles" [items]="roles"
|
|
129
|
+
[(selected)]="rolElegido" />
|
|
130
|
+
```
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sui-compact-select-for-input
|
|
3
|
+
selector: sui-compact-select-for-input
|
|
4
|
+
resumen: Selector chico que vive DENTRO de un sui-input, para elegir moneda o código de país sin salir del campo
|
|
5
|
+
alternativas: [sui-select (el valor se elige aparte, con su propio label), sui-compact-select (filtro suelto con caja propia), sui-inline-select (dentro de una frase)]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# sui-compact-select-for-input
|
|
9
|
+
|
|
10
|
+
Story: [Molecules/Select/Compact Select For Input](https://sui-design-system.web.app/?path=/docs/molecules-select-compact-select-for-input--docs)
|
|
11
|
+
|
|
12
|
+
## Cuándo usarlo / cuándo no
|
|
13
|
+
|
|
14
|
+
**Úsalo** cuando un dato del campo depende de una elección corta que va pegada a él: la moneda de
|
|
15
|
+
un monto (`S/` o `$`) o el código de país de un teléfono. Se proyecta en el `[data-slot=start]`
|
|
16
|
+
de un `sui-input` con `[leadingControl]="true"`, que dibuja el divisor.
|
|
17
|
+
|
|
18
|
+
**No lo uses** para:
|
|
19
|
+
|
|
20
|
+
- Un select con label propio: `sui-select`.
|
|
21
|
+
- Suelto, fuera de un `sui-input`: no tiene borde ni foco propios. Para eso, `sui-compact-select`.
|
|
22
|
+
- Un prefijo fijo (`S/` siempre): eso es `prefix="S/"` del `sui-input`, no un selector.
|
|
23
|
+
|
|
24
|
+
Regla corta: **el campo cambia según una elección corta pegada a él → este · siempre igual → `prefix`.**
|
|
25
|
+
|
|
26
|
+
## Qué variante usar
|
|
27
|
+
|
|
28
|
+
> **En la guía del DS es la variante `compactForInput` del select**, con dos ejemplos: un monto
|
|
29
|
+
> con su moneda («€») y los tamaños. Y la página del input lo usa en «With Select». No dice cuándo.
|
|
30
|
+
>
|
|
31
|
+
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 usos**. Candidato: el gasto del super
|
|
32
|
+
> admin pone «Monto» (`type="number"`) y «Moneda» (PEN/USD) como dos campos separados,
|
|
33
|
+
> `pages/super-admin/master-gastos/master-gastos.html:193` y `:200`.
|
|
34
|
+
|
|
35
|
+
| prop | cuándo | fuente |
|
|
36
|
+
|---|---|---|
|
|
37
|
+
| `items` | Las opciones: `{ value, label, sublabel?, flag?, disabled? }`. | API |
|
|
38
|
+
| `selected` / `selectedChange` | La opción elegida. O `formControlName`, nunca los dos. | API |
|
|
39
|
+
| `country` (default `true`) | Con bandera (teléfono). `false` para una moneda, que no lleva bandera. | según la guía del DS (ejemplo con moneda sin bandera) |
|
|
40
|
+
| `flag` | Bandera a mostrar sin opción elegida. Hoy no aplica. | API |
|
|
41
|
+
| `value` | Texto que se ve si no hay `selected` («S/»). | API |
|
|
42
|
+
| `size` | El mismo tamaño que el `sui-input` que lo contiene, hasta `medium`. | según la guía del DS (ejemplo de tamaños) |
|
|
43
|
+
| `disabled` | Cuando el campo entero está deshabilitado. | API |
|
|
44
|
+
| `clicked` | Solo si la pantalla arma su propio menú. | API |
|
|
45
|
+
|
|
46
|
+
## Tamaño en mobile y en web
|
|
47
|
+
|
|
48
|
+
Tiene `medium` (40), `small` (36) y `xsmall` (32) de la guía, y **`large`** para el `sui-input`
|
|
49
|
+
`large` (48) de mobile (extensión SUI). Va siempre con **el mismo `size` que el input que lo
|
|
50
|
+
contiene**: el selector ocupa todo el alto interior del campo (46 · 38 · 34 · 30), así que lo que se
|
|
51
|
+
toca (y su hover) cubre el campo de arriba a abajo. Sus opciones miden 44 en `large` y en mobile
|
|
52
|
+
(≤ 767 px); 36 en el resto, como en `sui-select`.
|
|
53
|
+
|
|
54
|
+
En large y xlarge el texto sube a 16 px (regla del 03-10-2026): en `large` el valor y las opciones van
|
|
55
|
+
en 16/24, igual que el valor del `sui-input` large; el alto no cambia (46 dentro del campo, 44 la opción).
|
|
56
|
+
|
|
57
|
+
| size del input y del selector | campo | fuente |
|
|
58
|
+
|---|---|---|
|
|
59
|
+
| `large` | 48 | canon (aprobado por el dueño, 03-10-2026), extensión SUI |
|
|
60
|
+
| `medium` (default) · `small` · `xsmall` | 40 · 36 · 32 | según la guía del DS |
|
|
61
|
+
|
|
62
|
+
| uso | mobile | web | fuente |
|
|
63
|
+
|---|---|---|---|
|
|
64
|
+
| moneda dentro del monto | `sui-input` `large` + este `large` | `sui-input` `medium` + este `medium` | propuesta, falta aprobación |
|
|
65
|
+
|
|
66
|
+
Arreglo del 03-10-2026: antes el selector medía 40/36/32 y empujaba el campo a 42/38/34 (el padding
|
|
67
|
+
de la guía no descontaba el borde del input). Ahora el campo mide exacto.
|
|
68
|
+
|
|
69
|
+
## «No usar»: por qué no hoy y cuándo sí
|
|
70
|
+
|
|
71
|
+
| qué | por qué no hoy | cuándo sí, en un flujo nuevo |
|
|
72
|
+
|---|---|---|
|
|
73
|
+
| el componente entero (0 usos) | todo es en soles y con +51 | la moneda de un gasto (`master-gastos.html:193`) o teléfonos de otro país |
|
|
74
|
+
| `country` con bandera | solo hay teléfonos de Perú | repartidores o clientes con número extranjero |
|
|
75
|
+
|
|
76
|
+
## API
|
|
77
|
+
|
|
78
|
+
<!-- api:inicio -->
|
|
79
|
+
<!-- generada: no editar a mano — `npm run docs` -->
|
|
80
|
+
|
|
81
|
+
| input | tipo | default |
|
|
82
|
+
|---|---|---|
|
|
83
|
+
| `size` | `'large' \| 'medium' \| 'small' \| 'xsmall'` | `'medium'` |
|
|
84
|
+
| `value` | `string` | `''` |
|
|
85
|
+
| `country` | `boolean` | `true` |
|
|
86
|
+
| `flag` | `SuiFlagName \| null` | `null` |
|
|
87
|
+
| `items` | `readonly SuiCompactSelectForInputItem<T>[]` | `[]` |
|
|
88
|
+
| `selected` · model, `[(selected)]` | `SuiCompactSelectForInputItem<T> \| null` | `null` |
|
|
89
|
+
| `disabled` | `boolean` | `false` |
|
|
90
|
+
|
|
91
|
+
| output | payload |
|
|
92
|
+
|---|---|
|
|
93
|
+
| `clicked` | `Event` |
|
|
94
|
+
| `selectedChange` | `SuiCompactSelectForInputItem<T>` |
|
|
95
|
+
<!-- api:fin -->
|
|
96
|
+
|
|
97
|
+
Implementa `ControlValueAccessor`.
|
|
98
|
+
|
|
99
|
+
## Trampas
|
|
100
|
+
|
|
101
|
+
- **Va en `data-slot="start"`, no en `slot="prefix"`** (`slot="prefix"` no proyecta). El
|
|
102
|
+
`sui-input` necesita además `[leadingControl]="true"` (suelta el bloqueo de ícono decorativo y
|
|
103
|
+
dibuja el divisor).
|
|
104
|
+
- El `size` tiene que ser el mismo del `sui-input`: uno `large` dentro de un input `medium` lo
|
|
105
|
+
agranda.
|
|
106
|
+
- `country` arranca en `true`: para una moneda hay que apagarlo.
|
|
107
|
+
- No tiene estado de error: lo pinta el `sui-input` que lo contiene.
|
|
108
|
+
- **Riesgo en iPhone (no verificado en dispositivo):** el host escucha `touchend` y hace `blur()`.
|
|
109
|
+
En `sui-compact-select` ese mismo patrón cancelaba el clic de iOS y el menú no abría; ahí se
|
|
110
|
+
movió el clic a un div interno. Aquí sigue en el host. Probar en un iPhone antes del primer uso.
|
|
111
|
+
- No mezclar `[(selected)]` con `formControlName`.
|
|
112
|
+
|
|
113
|
+
## Ejemplo
|
|
114
|
+
|
|
115
|
+
```html
|
|
116
|
+
<sui-input label="Monto" type="amount" placeholder="0.00" [leadingControl]="true" [(value)]="monto">
|
|
117
|
+
<sui-compact-select-for-input data-slot="start" size="medium" [country]="false"
|
|
118
|
+
[items]="monedas" [(selected)]="moneda" />
|
|
119
|
+
</sui-input>
|
|
120
|
+
```
|