@ajuarezso/sui-design-system 0.24.1 → 0.25.1
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-accordion/README.md +85 -11
- package/docs/sui-activity-feed/README.md +65 -11
- package/docs/sui-activity-filter/README.md +54 -5
- package/docs/sui-alert/README.md +54 -0
- package/docs/sui-app-store-badge/README.md +64 -10
- package/docs/sui-avatar/README.md +92 -29
- package/docs/sui-avatar-group/README.md +75 -9
- package/docs/sui-badge/README.md +85 -17
- package/docs/sui-banner/README.md +85 -20
- package/docs/sui-brand-logo/README.md +95 -31
- package/docs/sui-breadcrumb-item/README.md +54 -3
- package/docs/sui-breadcrumbs/README.md +54 -6
- package/docs/sui-button/README.md +76 -12
- package/docs/sui-button-group/README.md +91 -23
- package/docs/sui-button-group-item/README.md +81 -14
- package/docs/sui-card/README.md +105 -18
- package/docs/sui-chart-legend/README.md +63 -10
- package/docs/sui-chart-legend-dot/README.md +59 -10
- package/docs/sui-checkbox/README.md +109 -29
- package/docs/sui-checkbox-card/README.md +70 -14
- package/docs/sui-checkbox-label/README.md +92 -26
- package/docs/sui-circular-progress-bar/README.md +80 -19
- package/docs/sui-color-dot/README.md +72 -12
- package/docs/sui-color-picker/README.md +71 -13
- package/docs/sui-command-menu-footer/README.md +50 -1
- package/docs/sui-command-menu-item/README.md +74 -14
- package/docs/sui-command-menu-search/README.md +58 -3
- package/docs/sui-compact-avatar-group/README.md +73 -13
- package/docs/sui-compact-button/README.md +123 -34
- package/docs/sui-compact-select/README.md +61 -7
- package/docs/sui-compact-select-for-input/README.md +70 -6
- package/docs/sui-content-card/README.md +75 -14
- package/docs/sui-content-divider/README.md +67 -16
- package/docs/sui-content-label/README.md +99 -20
- package/docs/sui-counter-input/README.md +102 -18
- package/docs/sui-date-selector/README.md +69 -11
- package/docs/sui-datepicker/README.md +85 -18
- package/docs/sui-day-cell/README.md +75 -17
- package/docs/sui-day-label/README.md +56 -7
- package/docs/sui-divider/README.md +64 -9
- package/docs/sui-drawer-footer/README.md +63 -2
- package/docs/sui-drawer-header/README.md +69 -12
- package/docs/sui-dropdown-caption/README.md +58 -6
- package/docs/sui-dropdown-item/README.md +75 -9
- package/docs/sui-dropdown-menu/README.md +83 -14
- package/docs/sui-dropdown-search/README.md +60 -4
- package/docs/sui-emoji/README.md +94 -30
- package/docs/sui-empty-state/README.md +71 -7
- package/docs/sui-fancy-button/README.md +74 -14
- package/docs/sui-file-icon/README.md +70 -12
- package/docs/sui-file-upload/README.md +77 -17
- package/docs/sui-file-upload-card/README.md +64 -12
- package/docs/sui-filter/README.md +83 -14
- package/docs/sui-flag/README.md +73 -8
- package/docs/sui-form-hint/README.md +56 -7
- package/docs/sui-form-label/README.md +57 -5
- package/docs/sui-href/README.md +47 -0
- package/docs/sui-icon/README.md +86 -18
- package/docs/sui-image-upload/README.md +90 -22
- package/docs/sui-image-upload-profile/README.md +70 -11
- package/docs/sui-img-retry/README.md +50 -1
- package/docs/sui-inline-input/README.md +67 -9
- package/docs/sui-inline-select/README.md +62 -2
- package/docs/sui-input/README.md +90 -27
- package/docs/sui-integration-switch/README.md +84 -17
- package/docs/sui-kbd/README.md +73 -9
- package/docs/sui-key-icon/README.md +85 -23
- package/docs/sui-link-button/README.md +96 -27
- package/docs/sui-logo/README.md +93 -22
- package/docs/sui-modal/README.md +72 -13
- package/docs/sui-modal-footer/README.md +86 -12
- package/docs/sui-modal-header/README.md +57 -1
- package/docs/sui-modal-sheet/README.md +74 -12
- package/docs/sui-notification/README.md +81 -11
- package/docs/sui-notification-footer/README.md +55 -5
- package/docs/sui-notification-tab-menu/README.md +61 -5
- package/docs/sui-otp-input/README.md +70 -9
- package/docs/sui-page-header/README.md +89 -19
- package/docs/sui-pagination/README.md +73 -13
- package/docs/sui-password-strength/README.md +50 -1
- package/docs/sui-payment-icon/README.md +80 -18
- package/docs/sui-period-range/README.md +70 -11
- package/docs/sui-popover/README.md +81 -15
- package/docs/sui-product-card/README.md +89 -21
- package/docs/sui-progress-bar/README.md +82 -15
- package/docs/sui-progress-bar-label/README.md +79 -18
- package/docs/sui-radio/README.md +84 -7
- package/docs/sui-radio-card/README.md +70 -16
- package/docs/sui-radio-label/README.md +89 -22
- package/docs/sui-rating/README.md +101 -31
- package/docs/sui-rich-editor/README.md +47 -2
- package/docs/sui-segmented-control/README.md +90 -21
- package/docs/sui-select/README.md +80 -11
- package/docs/sui-sidebar/README.md +71 -16
- package/docs/sui-slider/README.md +75 -8
- package/docs/sui-social-button/README.md +71 -11
- package/docs/sui-status-badge/README.md +75 -14
- package/docs/sui-stepper/README.md +75 -18
- package/docs/sui-store-card/README.md +85 -22
- package/docs/sui-switch/README.md +82 -11
- package/docs/sui-switch-card/README.md +80 -16
- package/docs/sui-switch-label/README.md +91 -14
- package/docs/sui-tab-chips/README.md +93 -21
- package/docs/sui-tab-menu-horizontal/README.md +68 -7
- package/docs/sui-tab-menu-vertical/README.md +64 -11
- package/docs/sui-table/README.md +77 -16
- package/docs/sui-tag/README.md +86 -12
- package/docs/sui-tag-input/README.md +77 -13
- package/docs/sui-textarea/README.md +84 -17
- package/docs/sui-time-picker/README.md +96 -33
- package/docs/sui-toast/README.md +81 -20
- package/docs/sui-tooltip/README.md +80 -22
- package/docs/sui-topbar/README.md +64 -10
- package/docs/sui-topbar-button/README.md +61 -7
- package/docs/sui-topbar-item/README.md +68 -7
- package/docs/sui-topbar-user/README.md +61 -5
- package/fesm2022/ajuarezso-sui-design-system.mjs +15 -10
- package/fesm2022/ajuarezso-sui-design-system.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ajuarezso-sui-design-system.d.ts +7 -3
|
@@ -36,9 +36,9 @@ o con peso → radio-card · muchas → select.**
|
|
|
36
36
|
> motivos («Spam», «Acoso», «Infringe las reglas»); el «avanzado» suma (Sublabel), badge «NEW»,
|
|
37
37
|
> descripción, Link Button y la versión con el círculo a la derecha.
|
|
38
38
|
>
|
|
39
|
-
> Uso medido el 03-10-2026 en `master-pedidos/src/app` (misma exclusión que `sui-badge`)
|
|
40
|
-
> **
|
|
41
|
-
> (ver abajo a qué componente va).
|
|
39
|
+
> Uso medido el 03-10-2026 en `master-pedidos/src/app` (misma exclusión que `sui-badge`), revisado
|
|
40
|
+
> el 06-10-2026: **2 usos**, las franjas horarias del checkout (con `flip`) y los distritos de
|
|
41
|
+
> «Trabaja con nosotros». Más **1 radio nativo** de motivos (ver abajo a qué componente va).
|
|
42
42
|
|
|
43
43
|
### Las piezas
|
|
44
44
|
|
|
@@ -47,22 +47,26 @@ o con peso → radio-card · muchas → select.**
|
|
|
47
47
|
| `value` | Siempre (es obligatorio). Lo que lee el `sui-radio-group`. | API |
|
|
48
48
|
| `label` | Siempre. La opción en pocas palabras («Dirección no encontrada», «12:00 — 12:30 p. m.»). | según la guía del DS (pieza) |
|
|
49
49
|
| `sublabel` | Precisión corta entre paréntesis: «(recomendado)». | según la guía del DS |
|
|
50
|
-
| `description` | Una frase de qué pasa si se elige. Sube el label a peso medio. Si casi todas las opciones la necesitan, probablemente es `sui-radio-card`. | según la guía del DS (pieza); el «cuándo» es
|
|
51
|
-
| `badge` | Solo novedad. Con string sale naranja `light`: pasa el objeto. | según la guía del DS (pieza «NEW»); el color es
|
|
50
|
+
| `description` | Una frase de qué pasa si se elige. Sube el label a peso medio. Si casi todas las opciones la necesitan, probablemente es `sui-radio-card`. | según la guía del DS (pieza); el «cuándo» es canon (aprobado por el dueño, 05-10-2026, bloque B4) |
|
|
51
|
+
| `badge` | Solo novedad. Con string sale naranja `light`: pasa el objeto. | según la guía del DS (pieza «NEW»); el color es canon (aprobado por el dueño, 05-10-2026, bloque B3) |
|
|
52
52
|
| `link` | «Ver detalle» que no elige la opción. Solo se ve con `description`. | según la guía del DS |
|
|
53
53
|
| `flip` | Círculo a la derecha en listas de opciones tipo hoja (sheet) y de ajustes, donde el texto es lo que se lee y el círculo es el indicador, como las franjas del checkout. En formularios, a la izquierda. | canon (aprobado por el dueño, 03-10-2026) |
|
|
54
54
|
| `disabled` | La opción existe pero no aplica (franja ya llena). | según la guía del DS |
|
|
55
|
-
| `size` | `medium` (default, Figma): círculo 20, label 14/20. `large`: círculo 24, label 16/24. `xlarge`: círculo 28, label 16/24. En large y xlarge el sublabel y la descripción se quedan en 12/16 (canon, dueño 04-10-2026); el badge sin `size` propio sube a `medium` / `large` y el link a `medium`. Se usa con `[size]="bp.controlSize()"`. | `medium`: según la guía del DS · `large` / `xlarge`: canon (aprobado por el dueño, 03-10-2026), extensión SUI |
|
|
55
|
+
| `size` | `medium` (default, Figma): círculo 20, label 14/20. `large`: círculo 24, label 16/24. `xlarge`: círculo 28, label 16/24. En large y xlarge el sublabel y la descripción se quedan en 12/16 (canon, dueño 04-10-2026); el badge sin `size` propio sube a `medium` / `large` y el link a `medium`. `2xlarge`: círculo 28 con la fila a 44 (su uso por dispositivo está pendiente, ver D16). Se usa con `[size]="bp.controlSize()"`. | `medium`: según la guía del DS · `large` / `xlarge`: canon (aprobado por el dueño, 03-10-2026), extensión SUI |
|
|
56
56
|
|
|
57
57
|
**Usos de hoy:**
|
|
58
58
|
|
|
59
|
-
- **1 radio nativo de motivos:** `pages/driver/driver-order-detail/driver-order-detail.html:
|
|
59
|
+
- **1 radio nativo de motivos:** `pages/driver/driver-order-detail/driver-order-detail.html:874`
|
|
60
60
|
(motivos de cancelación del repartidor). Por la pantalla hermana va a `sui-radio-card
|
|
61
61
|
type="basic"` como `pages/orders/orders.html:567`, no a este componente.
|
|
62
|
-
-
|
|
63
|
-
`
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
- `pages/customer/checkout/checkout.html:474` controla la selección con `[checked]` +
|
|
63
|
+
`(selected)` por fila, sin `sui-radio-group`. Funciona porque el padre fija el estado, pero no se
|
|
64
|
+
enchufa a un formulario. Va con `bp.isMobile() ? '2xlarge' : 'medium'`: en la computadora baja a
|
|
65
|
+
`medium`, que D16 ya no usa (va `large`, dueño 06-10-2026). El `2xlarge` del teléfono está
|
|
66
|
+
pendiente (ver D16).
|
|
67
|
+
- `pages/customer/trabaja/trabaja.html:150` va con `bp.isMobile() ? 'xlarge' : 'large'`, que es lo
|
|
68
|
+
mismo que `bp.controlSize()`: cumple la fila de D16. Sin descripción la fila mide 28 en el
|
|
69
|
+
teléfono, no 44; si pasa a `2xlarge` está pendiente (ver D16).
|
|
66
70
|
|
|
67
71
|
## Tamaño en mobile y en web
|
|
68
72
|
|
|
@@ -74,12 +78,12 @@ dueño, 28-09-2026).
|
|
|
74
78
|
|
|
75
79
|
| uso | mobile | web | fuente |
|
|
76
80
|
|---|---|---|---|
|
|
77
|
-
| opciones de un formulario o una hoja (franjas horarias, método de entrega) | `
|
|
78
|
-
| lista densa de desktop | — | `
|
|
79
|
-
| opciones con mucho contexto cada una | `sui-radio-card` con `bp.controlSize()` | `sui-radio-card` con `bp.controlSize()` |
|
|
81
|
+
| opciones de un formulario o una hoja (franjas horarias, método de entrega) | `xlarge` (círculo 28, label 16/24; sin descripción la fila mide 28, no 44: `2xlarge` pendiente, ver D16) | `large` (círculo 24, label 16/24) | D16 (fila de checkbox, radio y switch; dueño 06-10-2026) |
|
|
82
|
+
| lista densa de desktop | — | `large` (círculo 24): no baja a `medium` | D16, dueño 06-10-2026 |
|
|
83
|
+
| opciones con mucho contexto cada una | `sui-radio-card` con `bp.controlSize()` | `sui-radio-card` con `bp.controlSize()` | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
|
|
80
84
|
|
|
81
85
|
```html
|
|
82
|
-
<sui-radio-label value="recojo" [size]="bp.
|
|
86
|
+
<sui-radio-label value="recojo" [size]="bp.controlSize()" label="Recojo en tienda" />
|
|
83
87
|
```
|
|
84
88
|
|
|
85
89
|
| size | círculo | label | sublabel / descripción | alto de la fila sin descripción |
|
|
@@ -89,21 +93,42 @@ dueño, 28-09-2026).
|
|
|
89
93
|
| `xlarge` | 28 | 16/24 | 12/16 | 28 |
|
|
90
94
|
| `2xlarge` | 28 | 16/24 | 12/16 | **44** (`min-height`) |
|
|
91
95
|
|
|
92
|
-
`2xlarge` (canon
|
|
93
|
-
pero la fila mide 44 como mínimo con todo centrado en vertical, y el
|
|
94
|
-
(regla del 03-10). Con descripción la fila ya pasa de 44 y vuelve a
|
|
96
|
+
`2xlarge` (canon, dueño 04-10-2026: piso táctil 44 en el teléfono) tiene el mismo círculo de 28 y
|
|
97
|
+
el mismo label que `xlarge`, pero la fila mide 44 como mínimo con todo centrado en vertical, y el
|
|
98
|
+
texto secundario se queda en 12 (regla del 03-10). Con descripción la fila ya pasa de 44 y vuelve a
|
|
99
|
+
alinearse arriba. Si reemplaza a `xlarge` en el celular y la tablet está **pendiente** (ver D16).
|
|
95
100
|
|
|
96
101
|
Toda la fila se toca (el host recibe el click). Con `xlarge` el contenido baja 2 px para que la
|
|
97
102
|
línea del label (24) quede centrada con el círculo (28).
|
|
98
103
|
|
|
99
|
-
Sin descripción, la fila en `xlarge` mide 28 px (lo que mide el círculo):
|
|
100
|
-
`2xlarge
|
|
104
|
+
Sin descripción, la fila en `xlarge` mide 28 px (lo que mide el círculo):
|
|
105
|
+
`2xlarge` la lleva a 44 (pendiente, ver D16). Con descripción llega sola: 2 + 24 (label) + 4 + 16 (descripción) = 46 px
|
|
101
106
|
en `xlarge` y en `2xlarge`.
|
|
102
107
|
|
|
103
108
|
**Regla de tamaños aplicada (canon, dueño 04-10-2026):** en `large` y `xlarge` el label sube a
|
|
104
109
|
16/24 y el sublabel y la descripción se quedan en 12/16, igual que `sui-switch-label`. Antes subían
|
|
105
110
|
a 14/20. El badge y el link siguen creciendo con el size.
|
|
106
111
|
|
|
112
|
+
### Por dispositivo (D16)
|
|
113
|
+
|
|
114
|
+
| dispositivo | size | nota |
|
|
115
|
+
|---|---|---|
|
|
116
|
+
| celular chico (< 380) | `xlarge` | círculo de 28 |
|
|
117
|
+
| celular (380–767) | `xlarge` | |
|
|
118
|
+
| tablet táctil (`pointer: coarse`) | `xlarge` | `bp.controlSize()` mira solo el ancho: un iPad de 768 o más recibe `large` hasta que el helper mire el puntero |
|
|
119
|
+
| computadora (`pointer: fine`) | `large` | un paso menos que el celular; no baja a `medium` (D16, dueño 06-10-2026) |
|
|
120
|
+
|
|
121
|
+
Ultrawide: igual que la computadora (`large`).
|
|
122
|
+
|
|
123
|
+
En master-pedidos: `[size]="bp.controlSize()"` (`xlarge` hasta 767 px, `large` desde ahí). La
|
|
124
|
+
expresión exacta de D16, con la tablet, es `bp.tactil() ? 'xlarge' : 'large'`.
|
|
125
|
+
|
|
126
|
+
**Pendiente: `2xlarge` en el celular y la tablet.** Sin descripción, `xlarge` deja la fila en 28 px,
|
|
127
|
+
por debajo del piso de 44. El dueño aprobó `2xlarge` el 04-10-2026 justo para eso (fila de 44), pero
|
|
128
|
+
la fila de D16 dice `xlarge` para toda la familia y ningún helper devuelve `2xlarge`. Falta que el
|
|
129
|
+
dueño decida si en este componente el celular y la tablet pasan a `2xlarge` (y que D16 y
|
|
130
|
+
`bp.controlSize()` lo recojan). Mientras no lo decida, manda la fila de D16: `xlarge`.
|
|
131
|
+
|
|
107
132
|
## «No usar»: por qué no hoy y cuándo sí
|
|
108
133
|
|
|
109
134
|
| qué | por qué no hoy | cuándo sí, en un flujo nuevo |
|
|
@@ -140,7 +165,8 @@ a 14/20. El badge y el link siguen creciendo con el size.
|
|
|
140
165
|
- **No implementa `ControlValueAccessor`.** El formulario se engancha al `sui-radio-group`, no a
|
|
141
166
|
cada opción. Sin grupo, se maneja con `[(checked)]`.
|
|
142
167
|
- **`size` arranca en `medium`** (círculo de 20 px): sin `[size]="bp.controlSize()"` choca con la
|
|
143
|
-
regla de controles grandes (dueño, 28-09-2026)
|
|
168
|
+
regla de controles grandes (dueño, 28-09-2026) y con D16. Aun con `xlarge`, la fila sin
|
|
169
|
+
descripción queda en 28: si pasa a `2xlarge` está pendiente (ver D16).
|
|
144
170
|
- **Tocar una opción ya elegida no la desmarca** (bien, es un radio). Tocar el link tampoco la elige.
|
|
145
171
|
- **`link` solo se dibuja con `description`.**
|
|
146
172
|
- El `sui-radio` de adentro no recibe clics (`pointer-events: none`): no le pongas handlers.
|
|
@@ -151,12 +177,53 @@ a 14/20. El badge y el link siguen creciendo con el size.
|
|
|
151
177
|
- El badge con string sale naranja; en `sui-radio-card` el default es azul.
|
|
152
178
|
- `flip` usa CSS `order`: el orden para lector de pantalla no cambia.
|
|
153
179
|
|
|
180
|
+
## Bien y mal
|
|
181
|
+
|
|
182
|
+
Sin size
|
|
183
|
+
|
|
184
|
+
```html
|
|
185
|
+
<!-- ❌ mal: sin size queda en medium, círculo de 20 en el teléfono y en la computadora -->
|
|
186
|
+
<sui-radio-label [value]="d" [label]="d" />
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
```html
|
|
190
|
+
<!-- ✅ bien -->
|
|
191
|
+
<sui-radio-label [size]="bp.controlSize()" [value]="d" [label]="d" />
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Franjas horarias en la computadora
|
|
195
|
+
|
|
196
|
+
```html
|
|
197
|
+
<!-- ❌ mal: medium en la computadora; D16 no baja de large (pages/customer/checkout/checkout.html:474) -->
|
|
198
|
+
<sui-radio-label [size]="bp.isMobile() ? '2xlarge' : 'medium'" [value]="'' + f.inicioMs"
|
|
199
|
+
[label]="etiquetaFranja(f)" [flip]="true" [disabled]="!f.disponible" />
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
```html
|
|
203
|
+
<!-- ✅ bien (si el teléfono pasa a 2xlarge está pendiente, ver D16) -->
|
|
204
|
+
<sui-radio-label [size]="bp.controlSize()" [value]="'' + f.inicioMs"
|
|
205
|
+
[label]="etiquetaFranja(f)" [flip]="true" [disabled]="!f.disponible" />
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Link sin descripción
|
|
209
|
+
|
|
210
|
+
```html
|
|
211
|
+
<!-- ❌ mal: link solo se dibuja con description; «Ver precios» no aparece -->
|
|
212
|
+
<sui-radio-label value="pro" label="Plan Pro" [link]="{ label: 'Ver precios', href: '/precios' }" />
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
```html
|
|
216
|
+
<!-- ✅ bien -->
|
|
217
|
+
<sui-radio-label [size]="bp.controlSize()" value="pro" label="Plan Pro"
|
|
218
|
+
description="Facturación mensual." [link]="{ label: 'Ver precios', href: '/precios' }" />
|
|
219
|
+
```
|
|
220
|
+
|
|
154
221
|
## Ejemplo
|
|
155
222
|
|
|
156
223
|
```html
|
|
157
224
|
<sui-radio-group [(ngModel)]="motivo" class="lista-vertical">
|
|
158
225
|
@for (m of motivos; track m) {
|
|
159
|
-
<sui-radio-label [value]="m" [label]="m" />
|
|
226
|
+
<sui-radio-label [size]="bp.controlSize()" [value]="m" [label]="m" />
|
|
160
227
|
}
|
|
161
228
|
</sui-radio-group>
|
|
162
229
|
```
|
|
@@ -35,8 +35,8 @@ lista cargada, que viene con tope. La fórmula depende de `n`: otro denominador
|
|
|
35
35
|
> el suyo («cada sistema de calificación se comporta distinto»). Los ejemplos son: nota con
|
|
36
36
|
> reseñas («4.5 ∙ 5.2K Ratings · 18 reviews»), celdas, barra de estrellas, barra de corazones,
|
|
37
37
|
> barra de emojis, barra de números del 1 al 5 y barra con área de texto. No trae tamaños, ni
|
|
38
|
-
> do/don't. Lo marcado «según la guía del DS» es que el ejemplo existe; el cuándo
|
|
39
|
-
>
|
|
38
|
+
> do/don't. Lo marcado «según la guía del DS» es que el ejemplo existe; el cuándo está
|
|
39
|
+
> aprobado donde dice «canon»; lo que sigue en propuesta espera decisión.
|
|
40
40
|
>
|
|
41
41
|
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: **23 ratings en 13 pantallas**, sin
|
|
42
42
|
> contar prototipos ni vitrinas (`master-preview`, `master-prototipos`, `mockup-sheets-*`,
|
|
@@ -50,7 +50,7 @@ lista cargada, que viene con tope. La fórmula depende de `n`: otro denominador
|
|
|
50
50
|
| appearance | cuándo | ejemplo real | fuente |
|
|
51
51
|
|---|---|---|---|
|
|
52
52
|
| `inline` (default), `readonly` | **Mostrar** una nota: la fila de estrellas pelada. | `components/ratings-detail/ratings-detail.html:31` (la nota del local) | según la guía del DS (ejemplo «Rating Review») |
|
|
53
|
-
| `inline`, interactivo | Pedir la nota en grande: en el teléfono con `size="2xlarge"` (estrellas de 32 en botones de 44 × 44);
|
|
53
|
+
| `inline`, interactivo | Pedir la nota en grande: en el teléfono y la tablet con `size="2xlarge"` (estrellas de 32 en botones de 44 × 44); en la computadora, `medium`. | `pages/customer/rate-order/rate-order.html:95` y `:169` (hoy `2xlarge` / `xlarge`, cortado con `bp.isMobile()`) | teléfono: canon (dueño, 04-10-2026): piso táctil 44 · computadora: D16, dueño 05-10-2026 (antes `xlarge`) · el «cuándo inline vs bar» sigue como propuesta |
|
|
54
54
|
| `bar` | **Pedir** una nota en el celular: con `size="2xlarge"` las celdas miden 64 × 44 (36 en los demás sizes). | `components/rate-entity-card/rate-entity-card.html:40` | según la guía del DS (ejemplo «Rating Bar») |
|
|
55
55
|
| `cell` | **No usar** hoy (ver abajo). | — | según la guía del DS (ejemplo «Rating Cell») |
|
|
56
56
|
| `bar-area` | **No usar** hoy (ver abajo). | — | según la guía del DS (ejemplo «Rating Bar With Textarea») |
|
|
@@ -59,8 +59,8 @@ lista cargada, que viene con tope. La fórmula depende de `n`: otro denominador
|
|
|
59
59
|
|
|
60
60
|
| type | cuándo | fuente |
|
|
61
61
|
|---|---|---|
|
|
62
|
-
| `star` (default) | La nota de un pedido, un local, un repartidor o un cliente: la que entra al promedio. | según la guía del DS (ejemplo) ·
|
|
63
|
-
| `emoji` | Cómo le fue a la persona con la app o con un proceso (no entra a la nota de nadie). Solo en `bar`. Hoy: `components/rate-entity-card/rate-entity-card.html:38`. | según la guía del DS (ejemplo «Single Selectable») ·
|
|
62
|
+
| `star` (default) | La nota de un pedido, un local, un repartidor o un cliente: la que entra al promedio. | según la guía del DS (ejemplo) · canon (aprobado por el dueño, 05-10-2026, bloque B2) (cuándo) |
|
|
63
|
+
| `emoji` | Cómo le fue a la persona con la app o con un proceso (no entra a la nota de nadie). Solo en `bar`. Hoy: `components/rate-entity-card/rate-entity-card.html:38`. | según la guía del DS (ejemplo «Single Selectable») · canon (aprobado por el dueño, 05-10-2026, bloque B2) (cuándo) |
|
|
64
64
|
| `heart` | **No usar** como nota (ver abajo). | según la guía del DS (ejemplo «Rating Bar Heart») |
|
|
65
65
|
| `number` | **No usar** hoy (ver abajo). Solo en `bar`. | según la guía del DS (ejemplo de 1 a 5) |
|
|
66
66
|
|
|
@@ -68,29 +68,29 @@ lista cargada, que viene con tope. La fórmula depende de `n`: otro denominador
|
|
|
68
68
|
|
|
69
69
|
| size | px | cuándo | fuente |
|
|
70
70
|
|---|---|---|---|
|
|
71
|
-
| `small` | 16 |
|
|
72
|
-
| `medium` (default) | 20 |
|
|
73
|
-
| `large` | 24 |
|
|
71
|
+
| `small` | 16 | **No se usa**: es chico. Las filas y listas de la computadora (cada reseña, tablas, historial) van en `medium`. | D16, dueño 05-10-2026 (antes «web: filas y listas», propuesta) |
|
|
72
|
+
| `medium` (default) | 20 | Computadora, tablet y celular chico: filas, listas, perfil, ficha y detalle. | D16, dueño 05-10-2026 |
|
|
73
|
+
| `large` | 24 | Celular (380–767): filas, listas, perfil y ficha (un paso más que la computadora). Computadora: la nota grande de un resumen, la card de una calificación enviada. | celular: D16, dueño 05-10-2026 · resumen en la computadora: propuesta, falta aprobación |
|
|
74
74
|
| `xlarge` | 28 | Extensión SUI. Mobile: la nota grande de un resumen. | propuesta, falta aprobación |
|
|
75
75
|
|
|
76
76
|
### El resto de las propiedades
|
|
77
77
|
|
|
78
78
|
| propiedad | valor | cuándo | fuente |
|
|
79
79
|
|---|---|---|---|
|
|
80
|
-
| `readonly` | `true` | **Todo rating que muestra una nota.** Sin él se puede tocar y cambiar. |
|
|
80
|
+
| `readonly` | `true` | **Todo rating que muestra una nota.** Sin él se puede tocar y cambiar. | canon (aprobado por el dueño, 05-10-2026, bloque B8) |
|
|
81
81
|
| `halfStep` | `true` | Obligatorio si el valor es un **promedio** (sin él, 4,5 se pinta como 4). Una nota individual es entera y no lo necesita. Solo funciona en `inline` + `readonly`. | según la guía del DS (muestra 4.5) |
|
|
82
|
-
| `value` | `0` | Solo dentro del botón que invita a calificar, junto al texto «Calificar» (`pages/customer/order-history/order-history.html:352`). Suelto, cinco estrellas vacías se leen como «0 estrellas». |
|
|
83
|
-
| `max` | `5` (default) | Siempre 5 en notas: la fórmula de la nota asume 5. |
|
|
84
|
-
| `max` | otro | Solo con `type="number"` (encuesta de 1 a 10). |
|
|
85
|
-
| `alignment` | `inline` (default) | Solo los íconos; el número y el conteo los escribe la pantalla. |
|
|
86
|
-
| `alignment` | `horizontal` | Junto con `reviewLink`. |
|
|
87
|
-
| `alignment` | `vertical` | **No usar** (ver abajo). |
|
|
82
|
+
| `value` | `0` | Solo dentro del botón que invita a calificar, junto al texto «Calificar» (`pages/customer/order-history/order-history.html:352`). Suelto, cinco estrellas vacías se leen como «0 estrellas». | canon (aprobado por el dueño, 05-10-2026, bloque B8) |
|
|
83
|
+
| `max` | `5` (default) | Siempre 5 en notas: la fórmula de la nota asume 5. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
84
|
+
| `max` | otro | Solo con `type="number"` (encuesta de 1 a 10). | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
85
|
+
| `alignment` | `inline` (default) | Solo los íconos; el número y el conteo los escribe la pantalla. | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
|
|
86
|
+
| `alignment` | `horizontal` | Junto con `reviewLink`. | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
|
|
87
|
+
| `alignment` | `vertical` | **No usar** (ver abajo). | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
|
|
88
88
|
| `reviewLink` | `{ label, href? }` | Link «Ver 128 reseñas» que abre la hoja de reseñas. Hoy sin usos. | según la guía del DS («18 reviews») |
|
|
89
89
|
| `showValue` | `true` | **No usar** (ver abajo). | propuesta, falta aprobación |
|
|
90
|
-
| `reviewCount` | número | **No usar** (ver abajo). |
|
|
91
|
-
| `emojis` | lista | Dejar el default (cinco caras, de triste a feliz). Cambiarlo rompe la lectura de la escala. |
|
|
92
|
-
| `ariaLabel` | texto | Decir qué se califica: «Califica al repartidor», «Nota del local». El default es «Calificación». |
|
|
93
|
-
| `reason` / `reasonPlaceholder` / `reasonRows` | — | Solo en `bar-area`. El placeholder por defecto es «Cuéntanos por qué» (03-10-2026). |
|
|
90
|
+
| `reviewCount` | número | **No usar** (ver abajo). | canon (aprobado por el dueño, 05-10-2026, bloque B6) |
|
|
91
|
+
| `emojis` | lista | Dejar el default (cinco caras, de triste a feliz). Cambiarlo rompe la lectura de la escala. | canon (aprobado por el dueño, 05-10-2026, bloque B9) |
|
|
92
|
+
| `ariaLabel` | texto | Decir qué se califica: «Califica al repartidor», «Nota del local». El default es «Calificación». | canon (aprobado por el dueño, 05-10-2026, bloque B5) |
|
|
93
|
+
| `reason` / `reasonPlaceholder` / `reasonRows` | — | Solo en `bar-area`. El placeholder por defecto es «Cuéntanos por qué» (03-10-2026). | según el código |
|
|
94
94
|
|
|
95
95
|
**Usos de hoy que rompen la regla:**
|
|
96
96
|
|
|
@@ -98,8 +98,8 @@ lista cargada, que viene con tope. La fórmula depende de `n`: otro denominador
|
|
|
98
98
|
`pages/super-admin/master-users/master-user-sheet.html:142`.
|
|
99
99
|
- **1 rating usado como ícono** (`type="heart"` con `max=1` para los favoritos):
|
|
100
100
|
`components/ratings-detail/ratings-detail.html:45`. Va `sui-icon name="heart-3-fill"`.
|
|
101
|
-
- **A discutir, 2 `inline` interactivos de 28 px** como input:
|
|
102
|
-
`pages/customer/rate-order/rate-order.html:
|
|
101
|
+
- **A discutir, 2 `inline` interactivos de 28 px en la computadora** (en el teléfono ya van en `2xlarge`) como input:
|
|
102
|
+
`pages/customer/rate-order/rate-order.html:95` y `:169`. Alternativa: `appearance="bar"`.
|
|
103
103
|
|
|
104
104
|
## No usar: por qué no hoy y cuándo sí
|
|
105
105
|
|
|
@@ -115,17 +115,21 @@ lista cargada, que viene con tope. La fórmula depende de `n`: otro denominador
|
|
|
115
115
|
|
|
116
116
|
## Tamaño en mobile y en web
|
|
117
117
|
|
|
118
|
-
Criterio de la app: **
|
|
119
|
-
(
|
|
120
|
-
|
|
121
|
-
|
|
118
|
+
Criterio de la app: **D16, tamaño por dispositivo** (canon, dueño, 05-10-2026), que reemplaza al
|
|
119
|
+
«tamaño por plataforma» del 03-10-2026 (mobile grande, web chico). La columna «mobile» es el celular de
|
|
120
|
+
380 px o más y, en lo que se toca, también la tablet (`pointer: coarse`). La columna «web» es la
|
|
121
|
+
computadora (`pointer: fine`) y, en lo que no se toca, también la tablet. En el celular chico
|
|
122
|
+
(< 380 px) va `medium` a la vista, sin achicar el área de 44 de lo que se toca. **Nada en `small` ni
|
|
123
|
+
`xsmall`**, salvo lo que el componente solo tiene en chico. En la app, `bp.isMobile()` mira solo el
|
|
124
|
+
ancho (≤ 767 px); `bp.celular()` (380–767) y `bp.tactil()` (celular o pantalla táctil) ya miran los
|
|
125
|
+
380 px y el puntero: son las dos señales que usa este componente (ver «Por dispositivo (D16)»).
|
|
122
126
|
|
|
123
127
|
| uso | mobile | web | fuente |
|
|
124
128
|
|---|---|---|---|
|
|
125
|
-
| Mostrar en una fila o lista | `
|
|
126
|
-
| Mostrar en perfil o ficha | `large` (24) | `medium` (20) |
|
|
129
|
+
| Mostrar en una fila o lista | `large` (24) | `medium` (20) | D16, dueño 05-10-2026 (antes `medium` / `small`) |
|
|
130
|
+
| Mostrar en perfil o ficha | `large` (24) | `medium` (20) | D16, dueño 05-10-2026 |
|
|
127
131
|
| La nota grande de un resumen | `xlarge` (28) | `large` (24) | propuesta, falta aprobación |
|
|
128
|
-
| Pedir una nota | `2xlarge`: `inline` (estrellas de 32 en botones de 44 × 44) o `bar` (celdas de 64 × 44) | `bar` (64 × 36), o `inline` `
|
|
132
|
+
| Pedir una nota | `2xlarge`: `inline` (estrellas de 32 en botones de 44 × 44) o `bar` (celdas de 64 × 44) | `bar` (64 × 36), o `inline` `medium` con mouse | canon (dueño, 04-10-2026): piso táctil 44 en el teléfono · web: D16, dueño 05-10-2026 (lo que se toca va `medium` en la computadora; antes `large`, propuesta) |
|
|
129
133
|
|
|
130
134
|
```ts
|
|
131
135
|
readonly bp = inject(BreakpointsService); // master-pedidos: src/app/services/breakpoints.service.ts
|
|
@@ -133,7 +137,7 @@ readonly bp = inject(BreakpointsService); // master-pedidos: src/app/services/br
|
|
|
133
137
|
|
|
134
138
|
```html
|
|
135
139
|
<sui-rating [value]="local.rating" [readonly]="true" [halfStep]="true"
|
|
136
|
-
[size]="bp.
|
|
140
|
+
[size]="bp.celular() ? 'large' : 'medium'" ariaLabel="Nota del local" />
|
|
137
141
|
```
|
|
138
142
|
|
|
139
143
|
En `bar` el `size` no cuenta salvo `2xlarge` (celda de 44 de alto en vez de 36; íconos fijos de 20
|
|
@@ -154,6 +158,28 @@ nota de solo lectura sigue `medium`/`large`.
|
|
|
154
158
|
(el botón es el ícono, sin padding) y `2xlarge` 44 px (32 + 6 + 6); `bar` 36 px (8 + 20 + 8 de cada
|
|
155
159
|
celda) y en `2xlarge` 44 (12 + 20 + 12); `cell` 58 px (12 + 32 + 12 de padding y 2 de borde).
|
|
156
160
|
|
|
161
|
+
### Por dispositivo (D16)
|
|
162
|
+
|
|
163
|
+
`rating` no está en la tabla por componente de D16 (dueño, 05-10-2026), así que va por la regla
|
|
164
|
+
general y tiene **dos filas según el modo**: mostrar una nota (`readonly`) es «lo que no se toca» y
|
|
165
|
+
pedirla es «lo que se toca».
|
|
166
|
+
|
|
167
|
+
| dispositivo | size | nota |
|
|
168
|
+
|---|---|---|
|
|
169
|
+
| celular chico (< 380 px) | mostrar `medium` · pedir `2xlarge` | D16 pide `medium` con área de 44 para pedir, pero solo `2xlarge` llega a 44: hasta que el DS estire el área (nota ¹ de D16), se queda el grande |
|
|
170
|
+
| celular (380–767 px) | mostrar `large` · pedir `2xlarge` | mostrar sube un paso (P1 b); pedir: `inline` 44 × 44 o `bar` 64 × 44 |
|
|
171
|
+
| tablet táctil (`pointer: coarse`) | mostrar `medium` · pedir `2xlarge` | se pide con el dedo: mismo piso de 44 que el celular |
|
|
172
|
+
| computadora (`pointer: fine`) | mostrar `medium` · pedir `medium` | en `bar` el `size` no cuenta salvo `2xlarge` (celdas de 36) |
|
|
173
|
+
|
|
174
|
+
Ultrawide (≥ 1920 px): igual que la computadora. `small` no se usa en ningún dispositivo. La nota
|
|
175
|
+
grande de un resumen va un paso arriba de esta tabla (`large` en la computadora, `xlarge` en el
|
|
176
|
+
celular), y eso sigue en propuesta.
|
|
177
|
+
|
|
178
|
+
En master-pedidos, sin helper propio:
|
|
179
|
+
|
|
180
|
+
- mostrar: `[size]="bp.celular() ? 'large' : 'medium'"` (resumen, en propuesta: `bp.celular() ? 'xlarge' : 'large'`)
|
|
181
|
+
- pedir: `[size]="bp.tactil() ? '2xlarge' : 'medium'"`
|
|
182
|
+
|
|
157
183
|
## API
|
|
158
184
|
|
|
159
185
|
<!-- api:inicio -->
|
|
@@ -206,13 +232,57 @@ Implementa `ControlValueAccessor` sobre `value` (sirve con `formControlName`). `
|
|
|
206
232
|
nativo), Home/End van a 1 y al máximo, sin vuelta. Cada flecha elige y emite `valueChange`. Si
|
|
207
233
|
la pantalla ya escribe la nota al lado, ponle `aria-hidden="true"` para que no se lea dos veces.
|
|
208
234
|
|
|
235
|
+
## Bien y mal
|
|
236
|
+
|
|
237
|
+
Lo favorito no es una nota
|
|
238
|
+
|
|
239
|
+
```html
|
|
240
|
+
<!-- ❌ mal: un rating de un corazón como ícono (components/ratings-detail/ratings-detail.html:45) -->
|
|
241
|
+
<sui-rating type="heart" appearance="inline" [readonly]="true" [value]="1" [max]="1" />
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
```html
|
|
245
|
+
<!-- ✅ bien: ícono del mismo tamaño que las estrellas de al lado -->
|
|
246
|
+
<sui-icon name="heart-3-fill" [size]="bp.celular() ? 28 : 24" aria-hidden="true" />
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
La nota grande de un resumen
|
|
250
|
+
|
|
251
|
+
```html
|
|
252
|
+
<!-- ❌ mal: tamaños invertidos, más chico en el celular (components/ratings-detail/ratings-detail.html:34) -->
|
|
253
|
+
<sui-rating [value]="average()" [readonly]="true" [halfStep]="true"
|
|
254
|
+
[size]="bp.isMobile() ? 'large' : 'xlarge'" />
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
```html
|
|
258
|
+
<!-- ✅ bien: regla general de lo que no se toca, un paso más grande en el celular.
|
|
259
|
+
El paso extra del resumen (`xlarge` / `large`) sigue en propuesta, falta aprobación -->
|
|
260
|
+
<sui-rating [value]="average()" [readonly]="true" [halfStep]="true"
|
|
261
|
+
[size]="bp.celular() ? 'large' : 'medium'" />
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
La nota en una fila o lista
|
|
265
|
+
|
|
266
|
+
```html
|
|
267
|
+
<!-- ❌ mal: `small` fijo, 16 px también en el celular (pages/drivers/drivers.html:160, pages/customer/order-tracking/order-tracking.html:407) -->
|
|
268
|
+
<sui-rating type="star" size="small" [value]="driver.rating" [readonly]="true" [halfStep]="true" />
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
```html
|
|
272
|
+
<!-- ✅ bien -->
|
|
273
|
+
<sui-rating type="star" [size]="bp.celular() ? 'large' : 'medium'"
|
|
274
|
+
[value]="driver.rating" [readonly]="true" [halfStep]="true" />
|
|
275
|
+
```
|
|
276
|
+
|
|
209
277
|
## Ejemplo
|
|
210
278
|
|
|
211
279
|
```html
|
|
212
280
|
<!-- Mostrar la nota del local (promedio, desde el agregado) -->
|
|
213
281
|
<span class="nota">{{ notaTexto }}</span>
|
|
214
|
-
<sui-rating [value]="local.rating" [readonly]="true" [halfStep]="true"
|
|
282
|
+
<sui-rating [value]="local.rating" [readonly]="true" [halfStep]="true"
|
|
283
|
+
[size]="bp.celular() ? 'large' : 'medium'" aria-hidden="true" />
|
|
215
284
|
|
|
216
285
|
<!-- Pedir la nota al repartidor -->
|
|
217
|
-
<sui-rating appearance="bar" type="star" [
|
|
286
|
+
<sui-rating appearance="bar" type="star" [size]="bp.tactil() ? '2xlarge' : 'medium'"
|
|
287
|
+
[(value)]="nota" ariaLabel="Califica al repartidor" />
|
|
218
288
|
```
|
|
@@ -25,14 +25,14 @@ Regla corta: **hoy, siempre `sui-textarea`.**
|
|
|
25
25
|
## Qué variante usar
|
|
26
26
|
|
|
27
27
|
> **La guía del DS no tiene página para este componente.** Viene del Figma («Rich Editor»), donde
|
|
28
|
-
> solo está la barra de formato.
|
|
28
|
+
> solo está la barra de formato. Las reglas marcadas **canon** están aprobadas; lo que sigue en **propuesta** espera decisión.
|
|
29
29
|
>
|
|
30
30
|
> Uso medido el 03-10-2026 en `master-pedidos/src/app`: **0 usos**.
|
|
31
31
|
|
|
32
32
|
| prop / evento | cuándo | fuente |
|
|
33
33
|
|---|---|---|
|
|
34
34
|
| `layout="full"` (default) | Título, tamaño, B I U S, alineación, comentario, enlace, mención. | API |
|
|
35
|
-
| `layout="formatting"` | Solo B I U S y alineación: lo único que el editor aplica solo. |
|
|
35
|
+
| `layout="formatting"` | Solo B I U S y alineación: lo único que el editor aplica solo. | canon (aprobado por el dueño, 05-10-2026, bloque B2) |
|
|
36
36
|
| `layout="compact"` | Solo título y tamaño (los dos son avisos a la pantalla, no formato real). | — |
|
|
37
37
|
| `layout="social"` | Comentario, enlace, mención (también avisos). | — |
|
|
38
38
|
| `showMore` | El botón ⋮ al final. Apagarlo si no hay más acciones. | API |
|
|
@@ -47,6 +47,12 @@ Regla corta: **hoy, siempre `sui-textarea`.**
|
|
|
47
47
|
**No tiene `size`.** Los botones de la barra son de 28 px: **no tiene tamaño suficiente para
|
|
48
48
|
mobile**. Si alguna vez se usa, que sea en el panel web.
|
|
49
49
|
|
|
50
|
+
### Por dispositivo (D16)
|
|
51
|
+
|
|
52
|
+
No aplica: no tiene input `size` y la barra mide 28 px en todos los dispositivos, así que no llega a
|
|
53
|
+
los 44 de D16 (dueño, 05-10-2026) en el celular ni en la tablet táctil. Solo en la computadora
|
|
54
|
+
(`pointer: fine`); en master-pedidos no hay nada que bindear.
|
|
55
|
+
|
|
50
56
|
## «No usar»: por qué no hoy y cuándo sí
|
|
51
57
|
|
|
52
58
|
| qué | por qué no hoy | cuándo sí, en un flujo nuevo |
|
|
@@ -106,6 +112,45 @@ Sub-componente: `sui-rich-editor-item` (cada botón de la barra).
|
|
|
106
112
|
- Por default muestra solo la barra: sin `[editable]="true"` no hay dónde escribir.
|
|
107
113
|
- El label de tamaño por default es técnico («14px»); el de título ya está en español («Título», 04-10-2026).
|
|
108
114
|
|
|
115
|
+
## Bien y mal
|
|
116
|
+
|
|
117
|
+
Una descripción o una nota
|
|
118
|
+
|
|
119
|
+
```html
|
|
120
|
+
<!-- ❌ mal: el texto se guarda y se muestra plano; la barra sobra y en el teléfono no se toca -->
|
|
121
|
+
<sui-rich-editor [editable]="true" placeholder="Describe el producto…" [(value)]="descripcion" />
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
```html
|
|
125
|
+
<!-- ✅ bien -->
|
|
126
|
+
<sui-textarea [size]="bp.sizeControl()" label="Descripción" [rows]="4"
|
|
127
|
+
placeholder="Describe el producto…" [(value)]="descripcion" />
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
La barra entera esperando que todo funcione
|
|
131
|
+
|
|
132
|
+
```html
|
|
133
|
+
<!-- ❌ mal: título, tamaño, enlace, comentario y mención solo emiten (action); nadie los resuelve -->
|
|
134
|
+
<sui-rich-editor [editable]="true" [(value)]="html" />
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
```html
|
|
138
|
+
<!-- ✅ bien: solo lo que el editor aplica solo -->
|
|
139
|
+
<sui-rich-editor layout="formatting" [showMore]="false" [editable]="true" [(value)]="html" />
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Un editor sin dónde escribir
|
|
143
|
+
|
|
144
|
+
```html
|
|
145
|
+
<!-- ❌ mal: sin [editable]="true" solo se dibuja la barra -->
|
|
146
|
+
<sui-rich-editor layout="formatting" placeholder="Escribe la respuesta…" [(value)]="html" />
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
```html
|
|
150
|
+
<!-- ✅ bien -->
|
|
151
|
+
<sui-rich-editor layout="formatting" [editable]="true" placeholder="Escribe la respuesta…" [(value)]="html" />
|
|
152
|
+
```
|
|
153
|
+
|
|
109
154
|
## Ejemplo
|
|
110
155
|
|
|
111
156
|
```html
|