Marta Ruiz
Product Designer
Email: marta.ruiz@example.com
Phone: +34 600 111 222
Tabla de datos y lista paginada para Angular con paginación server-side, ordenación, filtros, selección, plantillas y variables CSS.
Usa esta librería de tabla de datos y lista paginada para Angular cuando necesites operaciones server-side, selección, filtros y renderizado reutilizable de listas sin reconstruir la lógica de tablas en cada proyecto.
npm install ng-hub-ui-paginableng-hub-ui-paginable está orientada a equipos Angular que construyen paneles de administración, resultados de búsqueda, pantallas CRM y back offices de gestión. Combina una capa reutilizable de tabla y lista con las operaciones que más importan en producción: paginación, filtros, ordenación, selección y plantillas personalizadas.
Renderizado y paginación fundamentales de la tabla.
Uso básico de la tabla
ID | Name | Email | Role |
|---|---|---|---|
| 1 | John Doe | john@example.com | Admin |
| 2 | Jane Smith | jane@example.com | Editor |
| 3 | Bob Johnson | bob@example.com | User |
| 4 | Alice Brown | alice@example.com | Editor |
Controles de Formulario Agnósticos
ID | Name | Email | Role | Department |
|---|---|---|---|---|
| 1 | John Doe | john.doe@example.com | Admin | IT |
| 2 | Jane Smith | jane.smith@example.com | Editor | Marketing |
| 3 | Bob Johnson | bob.johnson@example.com | User | Sales |
| 4 | Alice Brown | alice.brown@example.com | Editor | IT |
| 5 | Charlie Wilson | charlie.wilson@example.com | User | HR |
Search and rows-per-page are rendered by ng-hub-ui-forms (hub-input / hub-select). Remove the provider and they fall back to native controls.
Paginación de la tabla
ID | Name | Department | Position | Salary | Email |
|---|---|---|---|---|---|
| 1 | John Doe | Engineering | Senior Developer | 85000 | john.doe@company.com |
| 2 | Jane Smith | Marketing | Marketing Manager | 72000 | jane.smith@company.com |
| 3 | Bob Johnson | Engineering | Frontend Developer | 65000 | bob.johnson@company.com |
| 4 | Alice Brown | HR | HR Specialist | 58000 | alice.brown@company.com |
| 5 | Charlie Wilson | Sales | Sales Representative | 55000 | charlie.wilson@company.com |
Variables CSS de la tabla
ID | Name | Email | Role |
|---|---|---|---|
| 1 | John Doe | john@example.com | Admin |
| 2 | Jane Smith | jane@example.com | Editor |
| 3 | Bob Johnson | bob@example.com | User |
| 4 | Alice Brown | alice@example.com | Reviewer |
ID | Name | Email | Role |
|---|---|---|---|
| 1 | John Doe | john@example.com | Admin |
| 2 | Jane Smith | jane@example.com | Editor |
| 3 | Bob Johnson | bob@example.com | User |
| 4 | Alice Brown | alice@example.com | Reviewer |
Ordenación, filtrado, selección y operaciones del lado del servidor.
Ordenación y filtrado básico
ID | Name | Role | Status |
|---|---|---|---|
| 4 | Alice Brown | Editor | Active |
| 3 | Bob Johnson | User | Pending |
| 5 | Charlie Wilson | User | Deleted |
| 2 | Jane Smith | Editor | Inactive |
| 1 | John Doe | Admin | Active |
Filtrado avanzado (menús y rangos)
ID | Product | Price ($) | Added Date | Category |
|---|---|---|---|---|
| 1 | Laptop | 1200 | Sun Oct 01 2023 00:00:00 GMT+0000 (Coordinated Universal Time) | Electronics |
| 2 | Mouse | 25 | Wed Nov 15 2023 00:00:00 GMT+0000 (Coordinated Universal Time) | Electronics |
| 3 | Keyboard | 75 | Mon Nov 20 2023 00:00:00 GMT+0000 (Coordinated Universal Time) | Electronics |
| 4 | Desk Lamp | 45 | Tue Dec 05 2023 00:00:00 GMT+0000 (Coordinated Universal Time) | Office |
| 5 | Chair | 250 | Sun Dec 10 2023 00:00:00 GMT+0000 (Coordinated Universal Time) | Office |
Selección y acciones en lote
ID | Name | Email | Role | |
|---|---|---|---|---|
| 1 | John Doe | john@example.com | Admin | |
| 2 | Jane Smith | jane@example.com | Editor | |
| 3 | Bob Johnson | bob@example.com | User | |
| 4 | Alice Brown | alice@example.com | Editor | |
| 5 | Charlie Wilson | charlie@example.com | User |
Acciones en lote (batchActions)
ID | Name | Email | Status | |
|---|---|---|---|---|
| 1 | John Doe | john.doe@example.com | Active | |
| 2 | Jane Smith | jane.smith@example.com | Active | |
| 3 | Bob Johnson | bob.johnson@example.com | Inactive | |
| 4 | Alice Brown | alice.brown@example.com | Active | |
| 5 | Charlie Wilson | charlie.wilson@example.com | Inactive |
Operaciones del lado del servidor
ID | Name | Email | Role | Status |
|---|---|---|---|---|
| 1 | John Doe | user1@example.com | Admin | Active |
| 2 | Jane Smith | user2@example.com | Editor | Inactive |
| 3 | Bob Johnson | user3@example.com | User | Pending |
| 4 | Alice Brown | user4@example.com | Moderator | Active |
| 5 | Charlie Wilson | user5@example.com | Admin | Inactive |
| 6 | Diana Martinez | user6@example.com | Editor | Pending |
| 7 | Edward Taylor | user7@example.com | User | Active |
| 8 | Fiona Anderson | user8@example.com | Moderator | Inactive |
| 9 | George Lee | user9@example.com | Admin | Pending |
| 10 | Hannah White | user10@example.com | Editor | Active |
Filas expandibles, plantillas personalizadas, disposición responsive y estilo dinámico.
Filas expandibles y columnas sticky
ID | Name | Role | Email | Actions | |
|---|---|---|---|---|---|
| 1 | John Doe | Admin | john@example.com | ||
| 2 | Jane Smith | Editor | jane@example.com | ||
| 3 | Bob Johnson | User | bob@example.com | ||
| 4 | Alice Brown | Editor | alice@example.com |
Múltiples columnas fijas
ID | Full Name | Email Address | Department | Position | Office Location | Salary | Status |
|---|---|---|---|---|---|---|---|
| 1 | John Doe | john.doe@example.com | Engineering | Senior Developer | New York | $120,000 | Active |
| 2 | Jane Smith | jane.smith@example.com | Marketing | Marketing Manager | Los Angeles | $95,000 | Active |
| 3 | Bob Johnson | bob.johnson@example.com | Sales | Sales Representative | Chicago | $75,000 | On leave |
| 4 | Alice Brown | alice.brown@example.com | Engineering | Technical Lead | San Francisco | $140,000 | Active |
| 5 | Charlie Wilson | charlie.wilson@example.com | HR | HR Specialist | Boston | $65,000 | Active |
Cabecera y divisor tematizables
Invoice | Client | Amount | Status |
|---|---|---|---|
| INV-1001 | Acme Corp | $3,200 | Paid |
| INV-1002 | Globex | $1,750 | Pending |
| INV-1003 | Initech | $980 | Paid |
| INV-1004 | Umbrella | $5,410 | Overdue |
Cabecera fija al hacer scroll
[stickyHeader] inside a plain scroll div, the second via the built-in options.scrollable frame. [stickyHeader] (any scroll container)ID | Name | Department | Location | Status |
|---|---|---|---|---|
| 1 | Employee 1 | Engineering | New York | On leave |
| 2 | Employee 2 | Marketing | London | Active |
| 3 | Employee 3 | Sales | Berlin | Active |
| 4 | Employee 4 | HR | Tokyo | Active |
| 5 | Employee 5 | Engineering | New York | Active |
| 6 | Employee 6 | Marketing | London | On leave |
| 7 | Employee 7 | Sales | Berlin | Active |
| 8 | Employee 8 | HR | Tokyo | Active |
| 9 | Employee 9 | Engineering | New York | Active |
| 10 | Employee 10 | Marketing | London | Active |
options.scrollable (built-in frame)ID | Name | Department | Location | Status |
|---|---|---|---|---|
| 1 | Employee 1 | Engineering | New York | On leave |
| 2 | Employee 2 | Marketing | London | Active |
| 3 | Employee 3 | Sales | Berlin | Active |
| 4 | Employee 4 | HR | Tokyo | Active |
| 5 | Employee 5 | Engineering | New York | Active |
| 6 | Employee 6 | Marketing | London | On leave |
| 7 | Employee 7 | Sales | Berlin | Active |
| 8 | Employee 8 | HR | Tokyo | Active |
| 9 | Employee 9 | Engineering | New York | Active |
| 10 | Employee 10 | Marketing | London | Active |
Re-tematización oscura por selector de tag
hub-table tag selector — no!important. ID | Name | Email | Role |
|---|---|---|---|
| 1 | John Doe | john@example.com | Admin |
| 2 | Jane Smith | jane@example.com | Editor |
| 3 | Bob Johnson | bob@example.com | User |
| 4 | Alice Brown | alice@example.com | Reviewer |
Iconos de expansor personalizables
--hub-table-icon-caret-up / --hub-table-icon-caret-down. Product | SKU | Price | Stock | |
|---|---|---|---|---|
| Wireless Mouse | WM-100 | $24.99 | 132 | |
| Mechanical Keyboard | MK-220 | $89.00 | 47 | |
| USB-C Hub | UH-330 | $39.50 | 88 |
Set de iconos personalizado
--hub-table-icon-* variable. Theming en una llamada (mixins)
Code | Name | Owner | |
|---|---|---|---|
| A-01 | Alpha | Ada | |
| B-02 | Bravo | Alan | |
| C-03 | Charlie | Grace |
Personalización con plantillas
ID | Name | Role | Status |
|---|---|---|---|
| 1 | John Doe | Admin | Active |
| 2 | Jane Smith | Editor | Active |
| 3 | Bob Johnson | User | Inactive |
Layout responsive y estados
ID | Name | Role |
|---|---|---|
| 1 | John Doe | Admin |
| 2 | Jane Smith | Editor |
Componentes de estado por defecto
ID | Name | Role |
|---|---|---|
| 1 | John Doe | Admin |
| 2 | Jane Smith | Editor |
| 3 | Bob Johnson | User |
Estilos de fila dinámicos (rowClass)
ID | Name | Email | Role | Status |
|---|---|---|---|---|
| 1 | John Doe | john.doe@example.com | Admin | active |
| 2 | Jane Smith | jane.smith@example.com | Editor | inactive |
| 3 | Bob Johnson | bob.johnson@example.com | User | pending |
| 4 | Alice Brown | alice.brown@example.com | Editor | active |
| 5 | Charlie Wilson | charlie.wilson@example.com | User | deleted |
Selección maestro-detalle (rowClass)
Order | Customer | Total | Status |
|---|---|---|---|
| 1001 | Ada Lovelace | $1,240.00 | Paid |
| 1002 | Alan Turing | $890.50 | Pending |
| 1003 | Grace Hopper | $2,415.00 | Paid |
| 1004 | Katherine Johnson | $540.75 | Refunded |
| 1005 | Edsger Dijkstra | $1,975.20 | Paid |
Click a row to open its detail — the active row shows the tint + accent bar.
Select an order to see its detail.
Internacionalización (i18n)
ID | Name | Email | Role |
|---|---|---|---|
| 1 | John Doe | john@example.com | Admin |
| 2 | Jane Smith | jane@example.com | Editor |
| 3 | Bob Johnson | bob@example.com | User |
| 4 | Alice Brown | alice@example.com | Moderator |
| 5 | Charlie Wilson | charlie@example.com | Admin |
| 6 | Diana Martinez | diana@example.com | Editor |
| 7 | Edward Taylor | edward@example.com | User |
| 8 | Fiona Anderson | fiona@example.com | Moderator |
| 9 | George Lee | george@example.com | Admin |
| 10 | Hannah White | hannah@example.com | Editor |
| 11 | Ivan Clark | ivan@example.com | User |
| 12 | Julia Scott | julia@example.com | Moderator |
RTL Layout (right-to-left)
ID | Name | Email | Role | |
|---|---|---|---|---|
| 1 | John Doe | john@example.com | Admin | |
| 2 | Jane Smith | jane@example.com | Editor | |
| 3 | Bob Johnson | bob@example.com | User | |
| 4 | Alice Brown | alice@example.com | Reviewer |
Orden de la barra inferior (variables CSS)
ID | Name | Role |
|---|---|---|
| 1 | John Doe | Admin |
| 2 | Jane Smith | Editor |
| 3 | Bob Johnson | User |
Vistas de lista flexibles con las mismas capacidades potentes de paginación y selección.
Lista paginable y seleccionable
Lista conectada (timeline)
Lista seleccionable
pointer cursor; tick the checkbox to select. Variables CSS de la lista
hub-list-theme() mixinLista en tarjetas
Product Designer
Email: marta.ruiz@example.com
Phone: +34 600 111 222
Frontend Engineer
Email: carlos.vega@example.com
Phone: +34 600 333 444
Engineering Manager
Email: lucia.moreno@example.com
Phone: +34 600 555 666
QA Lead
Email: pablo.serra@example.com
Phone: +34 600 777 888
Listas anidadas
Estados de carga, error y vacío de la lista
fixed: Table: `[stickyHeader]` now pins the header inside a consumer’s OWN scroll container. The built-in container no longer traps the sticky header (new `--hub-table-container-overflow`, flipped to `visible` when `[stickyHeader]` is set), so a `max-height`/`overflow:auto` box you own keeps the header pinned.
fixed: Table: row/cell background is re-themeable by a plain `hub-table { --hub-table-bg: … }` tag selector (dark mode). The surface tokens are no longer declared on `:host` (which out-ranked the tag rule); each consumption site reads them as `var(--hub-table-bg, <default>)`, so a consumer’s tag rule reaches the cells with NO `!important`, and the sticky header stays opaque via the same fallback.
added: Table: optional selected-row accent bar — `--hub-table-selected-bar-width` (default `0`, no visual change) and `--hub-table-selected-bar-color`. With the `hub-table__row--selected` tint it gives the master-detail “active row” look (tint + leading bar) entirely through tokens and `[rowClass]`. RTL-aware.
added: Table: `[stickyHeader]` input pins the header while the body scrolls, decoupled from the built-in scroll frame — it works inside any consumer `max-height`/`overflow:auto` container. Overridable via `--hub-table-head-position` (default `sticky`).
added: Table: themeable header typography and padding — `--hub-table-head-font-size`, `--hub-table-head-font-weight`, `--hub-table-head-padding-x`, `--hub-table-head-padding-y` (surface/text already existed as `--hub-table-head-bg`/`--hub-table-head-color`). All default to existing values (no visual change).
changed: Table: the selected-row tint now also applies to a consumer-set `hub-table__row--selected` class, so a product can drive the selected look from its own state via `[rowClass]` instead of repainting the row.
added: Table: themeable header, row divider and scroll/sticky-header slots — `--hub-table-head-bg`/`--hub-table-head-color`, `--hub-table-row-divider-color`, and `--hub-table-container-max-block-size`/`--hub-table-head-sticky-top` (a fixed-height scroll body with `options.scrollable` now engages a sticky header). All default to existing values (no visual change).
added: Table: overridable row-expander caret icons via `--hub-table-icon-caret-up`/`--hub-table-icon-caret-down` (same var indirection as the sort icons).
added: List: opt-in item connector (timeline/pipeline) via the `connected` input, themed with `--hub-list-connector-color`/`-width`/`-style`/`-offset`. Default-off, list display only.
fixed: List (cards): long labels no longer overflow their card/grid track — `.hub-list__label` gets `min-width: 0` and wraps unbreakable tokens in cards mode.
added: Table: automatic client-side pagination. With a plain array in `[data]`, `paginate` true and no `totalItems`, the table searches, filters, sorts and slices the data entirely in memory and computes the total itself.
added: App-wide input defaults via `providePaginable({ defaults })` (`PaginableDefaults`): `paginate`, `perPage`, `perPageOptions`, `paginationPosition`, `paginationInfo`, `searchable`, `debounce`. Instance inputs still win; unset keys keep each component default.
changed: Table: the `paginate` input is now functional (previously inert) — it gates the client-side mode. Passing a `PaginationState` or setting `[totalItems]` keeps server mode. Set `[paginate]="false"` to render a full array unpaginated.
added: Agnostic form-controls integration: the table’s search input and rows-per-page select can be rendered by an external library via `provideHubPaginableFormControls()` and the `HUB_PAGINABLE_FORM_CONTROLS` token, with native `<input>` / `<select>` as the zero-dependency fallback.
added: Table: new `[loadingComponent]`, `[errorComponent]` and `[noResultsComponent]` inputs accept a `PaginableStateDefault` (eager component, lazy loader, or descriptor with input factory).
added: List: same `[loadingComponent]`, `[errorComponent]` and `[noResultsComponent]` inputs added to `hub-list`.
added: `providePaginable({ states })` — global app-level defaults for loading, error and no-results states shared across every paginable component.
added: `PaginableStateOutlet` internal outlet renders the resolved state component with the injected context inputs.
added: `PaginableLoadingDirective` (`loadingTpt`) and `PaginableErrorDirective` (`errorTpt`) exported for per-instance template-based state overrides.
changed: List: the BEM block now lives on the host element and the <ul> becomes .hub-list__items; backgrounds are controlled via --hub-list-bg (host) and --hub-list-item-bg (items).
added: List: new --hub-list-gap, --hub-list-items-bg and --hub-list-item-bg CSS variables.
fixed: The list card variables (--hub-list-cards-*) and --hub-paginator-font-size were documented but never applied; they now take effect. CSS variables reference fully synced (EN/ES).
removed: Breaking: renamed list --hub-list-container-* variables and removed the non-functional table --hub-table-breakpoint-* variables.
added: Initial release of unified Paginable library (merging Table and List)
changed: Renamed from ng-hub-ui-table to ng-hub-ui-paginable
added: Added support for Paginable List view
added: New CSS tokens for cell vertical alignment and icons
changed: Overlay utilities now live in ng-hub-ui-utils for shared dropdown support
fixed: Menu filter match mode labels and null match mode translations
added: Expandable rows functionality
added: Advanced filtering with custom filter templates
changed: Enhanced responsive design with mobile-optimized layout
added: Multi-column sorting with visual indicators
added: Column-specific filtering capabilities
added: Server-side pagination support
changed: Better accessibility with ARIA support
changed: Updated API for better type safety
added: Responsive table design for mobile devices
added: Row selection with checkboxes
changed: Performance optimizations for large tables
added: Basic pagination functionality
added: Column sorting capabilities
fixed: Table header alignment issues
added: Initial table component release
added: Basic data display with configurable headers
added: TypeScript support with strict typing