|
|
|
|
@ -1277,3 +1277,43 @@ Ninguno de los 11 es un defecto de comportamiento hoy. Son dos decisiones
|
|
|
|
|
pendientes: (a) mover la cadena al wrapper en los 4 del grupo A —refactor
|
|
|
|
|
mecánico, y de paso cierra la divergencia latente de 2—, y (b) si los 7 del
|
|
|
|
|
grupo B deben exponer `dir`, que es superficie pública.
|
|
|
|
|
|
|
|
|
|
### 9.16 · Grupo A canonizado — la cadena baja al wrapper (4/11)
|
|
|
|
|
|
|
|
|
|
Commit `b73d6baf8`. `css-field` · `listbox` · `navigation-menu` ·
|
|
|
|
|
`number-field` pasaban la prop CRUDA y duplicaban la cadena en el provider.
|
|
|
|
|
Dos de ellos lo documentaban como desviación consciente («Unlike the other
|
|
|
|
|
components…»), lo que confirma que fue deliberado y se quedó sin reconciliar.
|
|
|
|
|
|
|
|
|
|
**Funcionalmente eran equivalentes hoy** —verificado que `number-field` y el
|
|
|
|
|
canónico `scroll-area` estampan lo mismo con el toggle en `auto`— pero había
|
|
|
|
|
una divergencia **latente y real** en dos: `css-field` y `number-field`
|
|
|
|
|
estampaban el valor RESUELTO. Con un esquema de prefs sin dimensión de
|
|
|
|
|
dirección, `getDir()` devuelve `undefined`: los canónicos omiten el atributo y
|
|
|
|
|
esos dos estampaban `'ltr'`. Es **el defecto que `013ceac57` corrigió en 33
|
|
|
|
|
componentes, superviviente en 2**.
|
|
|
|
|
|
|
|
|
|
Tres tests se apoyaban en el mecanismo viejo (el harness devolvía dirección por
|
|
|
|
|
`prefs.getDir()` y esperaban verla en el provider). Actualizados al contrato:
|
|
|
|
|
sin afirmación el atributo se OMITE, con ella se estampa.
|
|
|
|
|
|
|
|
|
|
Verificado en Chrome en las tres posiciones del toggle. `check` 74, 25/25.
|
|
|
|
|
|
|
|
|
|
### 9.17 · Grupo B — NO es otro mecanismo, es otra decisión de API
|
|
|
|
|
|
|
|
|
|
`drawer` · `float-panel` · `grid-list` · `tag-group` · `tree-grid` ·
|
|
|
|
|
`virtual-grid` · `virtual-list` leen `soma.prefs.getDir()` directamente
|
|
|
|
|
**porque no exponen prop `dir`**. Conviene separarlo del grupo A: no usan un
|
|
|
|
|
mecanismo distinto, usan **el mismo con el primer eslabón ausente**, que es
|
|
|
|
|
exactamente lo que el contrato prescribe cuando no hay prop.
|
|
|
|
|
|
|
|
|
|
Así que la pregunta no es «¿cómo resuelven?» sino **«¿deberían aceptar `dir`?»**
|
|
|
|
|
— superficie pública, no implementación. A favor: 42 componentes ya la aceptan
|
|
|
|
|
y un consumidor no puede fijar la dirección de estos 7 subárboles. En contra:
|
|
|
|
|
añadir una prop a un `virtual-list` o un `tag-group` sólo tiene sentido si
|
|
|
|
|
alguien va a fijar la dirección de ESE subárbol contra la de la página, que es
|
|
|
|
|
un caso raro.
|
|
|
|
|
|
|
|
|
|
Pendiente de criterio. Si se hace, el patrón es mecánico y ya está probado en
|
|
|
|
|
§9.16: `dir?: Direction` en types + `activeDir(() => dir, soma)` en el wrapper
|
|
|
|
|
+ `?? 'ltr'` en el provider.
|
|
|
|
|
|