Skip to content

feat(web): implement progressive data table with robust pagination and filters#33

Merged
masmuss merged 7 commits into
mainfrom
feat/web-ticket-list-filters
Jun 13, 2026
Merged

feat(web): implement progressive data table with robust pagination and filters#33
masmuss merged 7 commits into
mainfrom
feat/web-ticket-list-filters

Conversation

@masmuss

@masmuss masmuss commented Jun 13, 2026

Copy link
Copy Markdown
Owner

This pull request introduces a new, more flexible and type-safe filtering and table management system for data tables, while maintaining backward compatibility with legacy components. The main focus is on improving filter configuration, state management, and UI extensibility for data tables. Key changes include the addition of a FilterManager utility, a new ProgressiveTable Svelte component, and several improvements to the faceted filter UI.

New Filtering and Table System

  • Introduced a comprehensive FilterManager class in filter-config.ts for type-safe filter definitions, parsing, validation, and state management, along with helper functions for creating different filter types.
  • Added new exports in index.ts for the progressive table system (ProgressiveTable, TableBuilder), toolbar components, types, and filter utilities, while retaining legacy exports for backward compatibility.
  • Implemented a new progressive-table.svelte component that supports advanced features like pagination, sorting, row selection, column visibility, and a customizable toolbar, using the new table and filter infrastructure.

Faceted Filter UI Improvements

  • Refactored data-table-faceted-filter.svelte to decouple filter state from the table column, making it controlled via selectedValues and callback props (onSelect, onclear), and updated the UI to use checkboxes for filter selection. [1] [2]
  • Improved the display of selected filter badges for better clarity and consistency in the faceted filter component.

These changes lay the groundwork for a more robust, maintainable, and extensible data table and filtering system in the application.

masmuss and others added 7 commits June 11, 2026 06:59
…d version

- DataTableFacetedFilter now pure UI component: accepts selectedValues
  Set<string>, onSelect, and onclear callbacks — no SvelteKit coupling
- tickets-table.svelte wires URL search params as source of truth via
  (Set) + toggleFilter/clearFilter/resetFilters handlers
- report.service.ts: inArray() for multi-value comma-separated filters
  (status, priority, categoryId)
- parseTicketFilters validates multi-value params, strips invalid values
- TicketFacetedFilter removed (merged into shared component)
- search + filters now wrap to next line when badges overflow
- search input has shrink-0 to prevent shrinking
- export row separated into its own row below filters
Add a comprehensive, reusable table system with URL-synced filters, search, export, and column visibility. The new system uses a configuration-driven approach that makes it easy to create complex tables across the application.

Key features:
- Configuration-driven table setup with type-safe filter definitions
- Automatic URL synchronization for filters, search, and pagination
- Modular toolbar components (SearchBar, FilterBar, ExportButton, ColumnToggle)
- Support for single-select and multi-select filters with proper UI indicators
- Generic TableBuilder component for reusable table implementations
- FilterManager for parsing and validating filter state
- State management abstraction with URL sync capabilities

Changes:
- Add table types, filter config system, and state management
- Create ProgressiveTable and TableBuilder components
- Add modular toolbar components (SearchBar, FilterBar, etc.)
- Refactor tickets table to use new system (229 → 54 lines)
- Update data-table index exports for backward compatibility

The system supports progressive enhancement from simple tables to full-featured data tables with all advanced features.
Add ticket list filter behavior and data-table toolbar enhancements, including search, filter bar, column toggle, and table configuration updates for the tickets view.

Co-Authored-By: Oz <oz-agent@warp.dev>
@masmuss masmuss merged commit 85686ff into main Jun 13, 2026
2 checks passed
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 1.1.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant