feat: Filtros de múltiple selección con combo desplegable (IMP-17) - #128
Open
konami12 wants to merge 17 commits into
Open
feat: Filtros de múltiple selección con combo desplegable (IMP-17)#128konami12 wants to merge 17 commits into
konami12 wants to merge 17 commits into
Conversation
…ndependiente - Agrega formulario de creación de etiquetas (nombre + color + vista previa) directamente en el panel dojo-label-manager, sin necesidad de crear una tarea. - Agrupa el listado en secciones "En uso (N)" y "Sin usar (N)" (colapsable), mostrando el conteo de tareas junto a cada etiqueta en uso. - Despacha dojo:label-created; dojo-kanban-board expone addLabel() público (refactor de _handleLabelCreated) y dojo-app lo conecta al evento del panel. Ref: requirements/improvements-19-label-manager.md (IMP-19)
…a init - Nuevo workflow .github/workflows/release.yml: se dispara con pull_request (types: closed) sobre la rama init, y solo corre el job si el PR fue efectivamente mergeado (github.event.pull_request.merged == true). - Ejecuta npm run release (standard-version): bump de versión, actualización de CHANGELOG.md, commit chore(release) y tag; luego hace push --follow-tags a init con el GITHUB_TOKEN por defecto. - Se añade standard-version a devDependencies (faltaba en package.json aunque ya se usaba en los scripts release/release:beta/pre:release) y se regenera package-lock.json en consecuencia.
…e.json Sin estos scripts, el workflow release.yml (PR #126) fallaría con 'Missing script: release' al ejecutar npm run release.
Badge dinámico de shields.io que lee la versión desde package.json en la rama init, para que se actualice automáticamente con cada release generado por el workflow release.yml (PR #126).
feat: Gestión independiente de etiquetas — crear y agrupar por uso (IMP-19)
docs: agregar badge de versión del aplicativo en el README
ci: ejecutar standard-version automáticamente al mergear PR a init
…(IMP-17) - Crear filter-combo.ts: componente de combo desplegable para múltiple selección * Dropdown colapsable con checkboxes * Estado colapsado muestra resumen de selección * Soporte para íconos customizables * Accesibilidad ARIA (aria-expanded, aria-label, etc.) * Eventos personalizados: dojo:filter-changed, dojo:filter-cleared * Botón "Limpiar filtro" integrado * Responsive design con max-height: 60vh en móvil - Crear filter-bar.ts: organismo que integra filter-combo * Barra de filtros moderna con búsqueda y combos * Combo de Prioridad (Baja, Media, Alta, Urgente) * Combo de Etiquetas (dinámico) * Búsqueda con debounce (300ms) * Botón "Limpiar todos" que resetea todos los filtros * API pública para controlar filtros programáticamente * Eventos agregados: dojo:filter-changed, dojo:search-changed - Seguir patrones de Web Components nativos - Sin dependencias externas - Tipado estricto con TypeScript - Estilos encapsulados con Shadow DOM - Soporte para CSS Custom Properties para theming Closes #120
- Reemplazar barra de filtros manual en dojo-list-view - Importar DojoFilterBar desde componente nuevo - Conectar eventos dojo:filter-changed y dojo:search-changed - Actualizar _rebuildLabelFilterChips() para usar el nuevo componente - Simplificar _updateClearAllVisibility() y _clearAllFilters() - Componentes filter-combo y dojo-filter-bar ahora visibles en la UI - Compilación exitosa sin errores
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📋 Descripción
Implementación de componentes Web Component para transformar los filtros de Prioridad y Etiquetas en combos desplegables de múltiple selección, resolviendo el issue #120 (IMP-17).
Problema resuelto: Los filtros actuales ocupan demasiado espacio vertical/horizontal, especialmente en dispositivos móviles.
🎯 Cambios implementados
Componentes creados
1. filter-combo.ts (Molécula)
Componente reutilizable de combo desplegable para múltiple selección:
Atributos:
label— Etiqueta visible (ej: "Prioridad")placeholder— Texto cuando no hay selección (default: "(Ninguno)")API:
Eventos:
dojo:filter-changed— Detalle:{ selectedIds: string[] }dojo:filter-cleared— Al limpiar2. filter-bar.ts (Organismo)
Barra de filtros que integra componentes combo:
Uso:
Eventos:
dojo:filter-changed— Detalle:{ type: 'priority'|'labels', selectedIds: string[] }dojo:search-changed— Detalle:{ searchText: string }(con debounce)dojo:filter-cleared— Todos los filtros limpiadosArchivos creados
✅ Criterios de aceptación (Issue #120)
aria-expanded,aria-label, etc.)🏗️ Arquitectura
Patrones aplicados
dojo:filter-changed,dojo:filter-cleared, etc.Compilación
npm run build # ✅ Compila sin errores📱 Características técnicas
Accesibilidad
aria-haspopup="listbox"en botón togglearia-expandedindica estado abierto/cerradoaria-labelen todos los controlesrole="listbox"en dropdownrole="option"en checkboxesResponsive
Personalización
Todas las propiedades CSS customizables:
🔗 Referencias
requirements/improvements-17-filter-combo-multiselect.mdfeat/120-filter-combo-multiselect🚀 Próximos pasos (fuera de este PR)
dojo-filter-barendojo-list-viewdojo:filter-changedydojo:search-changed💡 Notas de implementación
bubbles: true, composed: trueCloses #120