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.
4.3 KiB
4.3 KiB
search-field — ficha de auditoría (RE-AUDITADA 2026-07-07, profundidad piloto)
- Familia: fields (input de texto especializado) · Método: solo análisis; evidencia por dimensión · demos fuera
- Capas leídas: morfo completo (8 partes verificadas) · soma types completo · provider dirigido (debounce :38-116) · wrapper eidos leído · pack sema ✓ existe
- Máquina: PASS con
R-1.3· tests ✓ · README ×2 ✓
Dimensiones (evidencia leída)
| # | Dimensión | Estado | Evidencia |
|---|---|---|---|
| 1 | Composición | ✓ | Partes compositivas (Icon/Input/LoadingIndicator/ClearTrigger); Input bloquea passthrough de value/onchange vía Without (types :105-108) — el provider posee el valor |
| 2 | Naming | ✓ con heterogeneidad de tipado | value/onValueChange ✓; onSubmit: (value)=>void y onClear: ()=>void en crudo mientras onValueChange usa OnChangeFn (types :43-47) — tipado de callbacks heterogéneo → fila en _naming; debounceMs (sufijo-unidad, :74); clearOnEscape (:50) |
| 3 | Coherencia semántica | ✓ mejor que el trío | commit-submit + commit-reset (morfo :14-34) — buscar Y limpiar suenan; nota: target=provider mientras el trío targetea input (convención de target a unificar, menor) |
| 4 | API | ✓ ejemplar | Doble camino documentado con razón (live vs formal, types :29-32); debounce con semántica precisa (valor síncrono, callback diferido, flush en clear/submit, :68-74); interacción aria-label↔Field.Label documentada (:82-86) |
| 5 | Tokens | ✓ con dup | height-{k} duplicada (SYS-6); resto canónico |
| 6 | Sema | ✓ | expression: 'pack' + pack existente — submit/reset con carácter |
| 7 | Animaciones | ✓ | Sin keyframes; LoadingIndicator = spinner del sistema |
| 8 | Contrato morfo | 2 hallazgos | F-1: apg: combobox (:9) pero NO hay popup/listbox (8 partes verificadas) — el patrón real es role=searchbox (:73); cita APG errónea. F-2: LoadingIndicator con aria-hidden='true' Y aria-live='polite' juntos (:113-116) — se anulan (un nodo hidden no anuncia); elegir uno. Flags focused/empty/loading en provider (:49-51) ✓ superficie de estado rica. Escape condicional DECLARADO en morfo (when: prop-truthy clearOnEscape, :95-99) ✓ elegante |
| 9 | A11y | ✓ con F-2 | aria-label vía translationRef con fallback (:82-84 — mecanismo i18n en el contrato ✓); aria-invalid condicional |
| 10 | Theming | hallazgo R-1.3 | data-readonly declarado (:46,:77) SIN estilo — contrato visual incompleto (máquina); focus outline puro → SYS-5 |
| 11 | Composición interna | ✓ | Participa de Field.Provider (OR-merge documentado, types :26-27, :52) |
| 12 | Estados | ✓ | disabled/readonly/required/invalid + focused/empty/loading proyectados |
| 13 | Runtime | ✓ ejemplar | Debounce vía TimerHandle de uix.timers con clave namespaced soma:search-field:{id}:debounce (provider :71,:115-116) + cancel al desmontar (regla A6 citada, :107-109) — el patrón de disciplina que la dimensión pide |
| 14 | Docs+tests | ✓ | README ×2, suite ✓ |
| 15 | i18n | ✓ | texts morfo (label + clear); translationRef en aria |
Hallazgos y propuestas
| ID | Hallazgo | Propuesta |
|---|---|---|
| F-1 | Cita APG errónea (combobox sin popup) | Cambiar a la referencia correcta (searchbox no tiene patrón APG propio → usar la regla "sin patrón + razón" que saldrá de SYS para media-player/drag-drop) |
| F-2 | aria-hidden + aria-live juntos en LoadingIndicator — se anulan |
Decidir la intención: si debe ANUNCIAR "buscando…", quitar aria-hidden y dar texto sr-only; si es decorativo, quitar aria-live |
| F-3 | readonly sin estilo (R-1.3) | Tratamiento único de familia (composición Field, SYS-6) |
| F-4 | Tipado de callbacks heterogéneo (OnChangeFn vs crudo) | Normalizar en el veredicto de _naming (propuesta: OnChangeFn para todo callback de dato; crudo solo para señales sin payload) |
| F-5 | height-{k} duplicada |
SYS-6 |
Escalan al sistema
_naming (tipado de callbacks + debounceMs + target-de-evento provider-vs-input) · SYS-5 · SYS-6 · regla APG-sin-patrón (con media-player/drag-drop).
Veredictos
(pendiente — checkpoint post-barrido)