You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte-kit-vice/docs/audit/components/editable.md

43 lines
3.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# editable — ficha de auditoría (RE-AUDITADA 2026-07-07, profundidad piloto)
- **Familia**: fields (texto in-place preview↔edit) · **Método**: solo análisis; evidencia por dimensión · demos fuera
- **Capas leídas**: [morfo](../../../src/uix/morfo/components/editable.ts) completo (1-110+) · [soma types](../../../src/uix/soma/components/editable/types.ts) completo · provider dirigido (autoResize :30,:374-377) · pack ✓
- **Máquina**: PASS limpio · tests ✓ (con 1 error de tipos en la línea base de `check` — `data-editing` indexado, a absorber en fixes) · README ×2 ✓
## Dimensiones (evidencia leída)
| # | Dimensión | Estado | Evidencia |
|---|---|---|---|
| 1 | Composición | ✓ | Area/Control/Preview/Input/EditTrigger(+Submit/Cancel) compositivos |
| 2 | Naming | **4 datos de censo** | **`defaultValue`** (types :16-21 — PRIMER uncontrolled-initial del catálogo, doc React-style "read once at mount") → ¿canon o redundante con `$bindable(inicial)`? · par `onValueChange` (cambia el comprometido) + `onValueCommit` (cada commit) :60-63 — distinción sutil que el resto no hace · **`onValueRevert: () => void`** crudo SIN payload (:64-65 — encaja la regla "crudo solo señal sin dato" ✓) · `editing/onEditingChange` par bindable ✓ |
| 3 | Coherencia semántica | ✓ | `shift-enter-mode` (shift, sin intent — cambio de contexto ✓) · `commit-save` affirm · `commit-cancel` **neutral** (commit exige intent por política de familia; neutral es correcto — verificado contra la doctrina) |
| 4 | API | ✓ rica | `activationMode: focus\|click\|dblclick\|none` + `submitMode: enter\|blur\|both\|none` (:32-49); `selectOnFocus`; hidden-input por `name` (:26-27) |
| 5 | Tokens | ✓ | Recipe canónico |
| 6 | Sema | ✓ | Pack ✓ (enter/save/cancel con carácter) |
| 7 | Animaciones | ✓ | Sin keyframes |
| 8 | Contrato morfo | ✓ | Preview `role='textbox'` en div (patrón Chakra/Ark del valor-como-textbox-readonly, :102-110); `data-editing/empty/placeholder-shown` flags; aria-required/invalid condicionales |
| 9 | A11y | ✓ | Activación por foco accesible por defecto; triggers con textos |
| 10 | Theming | ✓ | Focus o5 → censo SYS-5; state-hover preview ✓ tier neutro |
| 11 | Composición interna | verificar | Como tags-input: sin mención de OR-merge con Field en types → verificación dirigida (pass SYS-6) |
| 12 | Estados | ✓ con gap menor | editing/empty/disabled/readonly/invalid ✓; **F-1**: `maxLength` (:54-55) SIN señal de overflow (0 hits) — textarea tiene el contrato `signal-warn-count-overflow` untilFix para lo mismo |
| 13 | Runtime | ✓ **por diseño** | `autoResize` dimensiona por `ch` desde el valor + `min-width: 2ch` (provider :374-377) — **cero medición de DOM** (evita la clase de reflow de textarea F-1 por construcción); el contraste correcto: ch para una línea, medición-diferida para multilínea |
| 14 | Docs+tests | ✓ | README ×2, suite ✓ (+ el error de tipos baseline a absorber) |
| 15 | i18n | ✓ | texts morfo |
## Hallazgos y propuestas
| ID | Hallazgo | Propuesta |
|---|---|---|
| **F-1** | `maxLength` sin contrato de overflow (asimetría con textarea) | Adoptar `signal-warn-count-overflow` del hermano (untilFix + persistent-trace) o documentar por qué no aplica al in-place |
| **F-2** | `defaultValue` — patrón uncontrolled único en el catálogo | Veredicto _naming: ¿se canoniza (y entonces quién más lo necesita) o se poda (el `$bindable(inicial)` de Svelte 5 cubre el caso)? |
| **F-3** | Error de tipos preexistente en su suite (baseline check) | Fix trivial en fase de fixes |
| **F-4** | Participación Field sin documentar | Verificación dirigida (con tags-input) |
## Escalan al sistema
_naming (defaultValue · el par Change/Commit · Revert crudo ✓ como regla) · patrón "ch-sizing vs medición-diferida" como doctrina de autoResize (exportable).
## Veredictos
*(pendiente — checkpoint post-barrido)*

Powered by TurnKey Linux.