docs(direction): 9.16 grupo A canonizado, 9.17 el grupo B es decision de API

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
alpha-0.1-dir-prefs
dev 2 months ago
parent b73d6baf8c
commit 3c73af90a3

@ -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.

Loading…
Cancel
Save

Powered by TurnKey Linux.