Tabla de Datos y Lista Paginada para Angular | ng-hub-ui-paginable

Tabla de datos y lista paginada para Angular con paginación server-side, ordenación, filtros, selección, plantillas y variables CSS.

Visión General

Por qué los equipos buscan esta librería

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.

Instalación

npm install ng-hub-ui-paginable

Ir a

Ideal para

  • tablas de administración
  • datasets CRM
  • resultados de búsqueda
  • back offices de gestión

Sobre paginable

ng-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.

Guías de uso

Uso principal

Renderizado y paginación fundamentales de la tabla.

Ejemplos:
Uso básico de la tabla

Uso básico de la tabla

ID
Name
Email
Role
1John Doejohn@example.comAdmin
2Jane Smithjane@example.comEditor
3Bob Johnsonbob@example.comUser
4Alice Brownalice@example.comEditor

Showing 4 of 4 rows

Controles de Formulario Agnósticos

Controles de Formulario Agnósticos

ID
Name
Email
Role
Department
1John Doejohn.doe@example.comAdminIT
2Jane Smithjane.smith@example.comEditorMarketing
3Bob Johnsonbob.johnson@example.comUserSales
4Alice Brownalice.brown@example.comEditorIT
5Charlie Wilsoncharlie.wilson@example.comUserHR

Showing 5 of 8 rows

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

Paginación de la tabla

ID
Name
Department
Position
Salary
Email
1John DoeEngineeringSenior Developer85000john.doe@company.com
2Jane SmithMarketingMarketing Manager72000jane.smith@company.com
3Bob JohnsonEngineeringFrontend Developer65000bob.johnson@company.com
4Alice BrownHRHR Specialist58000alice.brown@company.com
5Charlie WilsonSalesSales Representative55000charlie.wilson@company.com

Showing 5 of 20 rows

Total employees: 20 | Current page: 1 | Page size: 5
Variables CSS de la tabla

Variables CSS de la tabla

Sunrise Theme
ID
Name
Email
Role
1John Doejohn@example.comAdmin
2Jane Smithjane@example.comEditor
3Bob Johnsonbob@example.comUser
4Alice Brownalice@example.comReviewer

Showing 4 of 4 rows

Midnight Theme
ID
Name
Email
Role
1John Doejohn@example.comAdmin
2Jane Smithjane@example.comEditor
3Bob Johnsonbob@example.comUser
4Alice Brownalice@example.comReviewer

Showing 4 of 4 rows

Gestión de datos

Ordenación, filtrado, selección y operaciones del lado del servidor.

Ejemplos:
Ordenación y filtrado básico

Ordenación y filtrado básico

ID
Name
Role
Status
4Alice BrownEditorActive
3Bob JohnsonUserPending
5Charlie WilsonUserDeleted
2Jane SmithEditorInactive
1John DoeAdminActive

Showing 5 of 5 rows

Filtrado avanzado (menús y rangos)

Filtrado avanzado (menús y rangos)

ID
Product
Price ($)
Added Date
Category
1Laptop1200Sun Oct 01 2023 00:00:00 GMT+0000 (Coordinated Universal Time)Electronics
2Mouse25Wed Nov 15 2023 00:00:00 GMT+0000 (Coordinated Universal Time)Electronics
3Keyboard75Mon Nov 20 2023 00:00:00 GMT+0000 (Coordinated Universal Time)Electronics
4Desk Lamp45Tue Dec 05 2023 00:00:00 GMT+0000 (Coordinated Universal Time)Office
5Chair250Sun Dec 10 2023 00:00:00 GMT+0000 (Coordinated Universal Time)Office

Showing 5 of 5 rows

Selección y acciones en lote

Selección y acciones en lote

ID
Name
Email
Role
1John Doejohn@example.comAdmin
2Jane Smithjane@example.comEditor
3Bob Johnsonbob@example.comUser
4Alice Brownalice@example.comEditor
5Charlie Wilsoncharlie@example.comUser

Showing 5 of 5 rows

Acciones en lote (batchActions)

Acciones en lote (batchActions)

ID
Name
Email
Status
1John Doejohn.doe@example.comActive
2Jane Smithjane.smith@example.comActive
3Bob Johnsonbob.johnson@example.comInactive
4Alice Brownalice.brown@example.comActive
5Charlie Wilsoncharlie.wilson@example.comInactive

Showing 5 of 5 rows

Operaciones del lado del servidor

Operaciones del lado del servidor

ID
Name
Email
Role
Status
1John Doeuser1@example.comAdminActive
2Jane Smithuser2@example.comEditorInactive
3Bob Johnsonuser3@example.comUserPending
4Alice Brownuser4@example.comModeratorActive
5Charlie Wilsonuser5@example.comAdminInactive
6Diana Martinezuser6@example.comEditorPending
7Edward Tayloruser7@example.comUserActive
8Fiona Andersonuser8@example.comModeratorInactive
9George Leeuser9@example.comAdminPending
10Hannah Whiteuser10@example.comEditorActive

Showing 10 of 50 rows

Server Request Info:
  • Page: 1
  • Search: None
  • Sort: None (None)
  • Total Items: 50

Funcionalidades avanzadas

Filas expandibles, plantillas personalizadas, disposición responsive y estilo dinámico.

Ejemplos:
Filas expandibles y columnas sticky

Filas expandibles y columnas sticky

ID
Name
Role
Email
Actions
1John DoeAdminjohn@example.com
2Jane SmithEditorjane@example.com
3Bob JohnsonUserbob@example.com
4Alice BrownEditoralice@example.com

Showing 4 of 4 rows

Múltiples columnas fijas

Múltiples columnas fijas

Scroll horizontally. Two columns pin to the left (ID + Full Name) and two to the right (Salary + Status) — each offset by the width of its sticky neighbours, so they never overlap.
ID
Full Name
Email Address
Department
Position
Office Location
Salary
Status
1John Doejohn.doe@example.comEngineeringSenior DeveloperNew York$120,000Active
2Jane Smithjane.smith@example.comMarketingMarketing ManagerLos Angeles$95,000Active
3Bob Johnsonbob.johnson@example.comSalesSales RepresentativeChicago$75,000On leave
4Alice Brownalice.brown@example.comEngineeringTechnical LeadSan Francisco$140,000Active
5Charlie Wilsoncharlie.wilson@example.comHRHR SpecialistBoston$65,000Active

Showing 5 of 5 rows

Cabecera y divisor tematizables

Cabecera y divisor tematizables

Invoice
Client
Amount
Status
INV-1001Acme Corp$3,200Paid
INV-1002Globex$1,750Pending
INV-1003Initech$980Paid
INV-1004Umbrella$5,410Overdue

Showing 4 of 4 rows

Cabecera fija al hacer scroll

Cabecera fija al hacer scroll

Scroll vertically. Both tables cap the body at 280px and keep the header pinned — the first via [stickyHeader] inside a plain scroll div, the second via the built-in options.scrollable frame.
With [stickyHeader] (any scroll container)
ID
Name
Department
Location
Status
1Employee 1EngineeringNew YorkOn leave
2Employee 2MarketingLondonActive
3Employee 3SalesBerlinActive
4Employee 4HRTokyoActive
5Employee 5EngineeringNew YorkActive
6Employee 6MarketingLondonOn leave
7Employee 7SalesBerlinActive
8Employee 8HRTokyoActive
9Employee 9EngineeringNew YorkActive
10Employee 10MarketingLondonActive

Showing 10 of 40 rows

With options.scrollable (built-in frame)
ID
Name
Department
Location
Status
1Employee 1EngineeringNew YorkOn leave
2Employee 2MarketingLondonActive
3Employee 3SalesBerlinActive
4Employee 4HRTokyoActive
5Employee 5EngineeringNew YorkActive
6Employee 6MarketingLondonOn leave
7Employee 7SalesBerlinActive
8Employee 8HRTokyoActive
9Employee 9EngineeringNew YorkActive
10Employee 10MarketingLondonActive

Showing 10 of 40 rows

Re-tematización oscura por selector de tag

Re-tematización oscura por selector de tag

Re-themed by a bare hub-table tag selector — no!important.
ID
Name
Email
Role
1John Doejohn@example.comAdmin
2Jane Smithjane@example.comEditor
3Bob Johnsonbob@example.comUser
4Alice Brownalice@example.comReviewer
Iconos de expansor personalizables

Iconos de expansor personalizables

Expand a row. The expander uses custom plus / minus glyphs via --hub-table-icon-caret-up / --hub-table-icon-caret-down.
Product
SKU
Price
Stock
Wireless MouseWM-100$24.99132
Mechanical KeyboardMK-220$89.0047
USB-C HubUH-330$39.5088

Showing 3 of 3 rows

Set de iconos personalizado

Set de iconos personalizado

Search, sort and expand to see the swapped glyphs. Every icon is a --hub-table-icon-* variable.
Name
Role
Team
Ada LovelaceEngineerCore
Alan TuringResearcherLabs
Grace HopperArchitectPlatform
Katherine JohnsonAnalystData

Showing 4 of 4 rows

Theming en una llamada (mixins)

Theming en una llamada (mixins)

Code
Name
Owner
A-01AlphaAda
B-02BravoAlan
C-03CharlieGrace

Showing 3 of 3 rows

Personalización con plantillas

Personalización con plantillas

ID
Name
Role
Status
1John Doe Admin
Active
2Jane Smith Editor
Active
3Bob Johnson User
Inactive

Showing 3 of 3 rows

Layout responsive y estados

Layout responsive y estados

ID
Name
Role
1John DoeAdmin
2Jane SmithEditor

Showing 2 of 2 rows

Componentes de estado por defecto

Componentes de estado por defecto

ID
Name
Role
1John DoeAdmin
2Jane SmithEditor
3Bob JohnsonUser

Showing 3 of 3 rows

Estilos de fila dinámicos (rowClass)

Estilos de fila dinámicos (rowClass)

ID
Name
Email
Role
Status
1John Doejohn.doe@example.comAdminactive
2Jane Smithjane.smith@example.comEditorinactive
3Bob Johnsonbob.johnson@example.comUserpending
4Alice Brownalice.brown@example.comEditoractive
5Charlie Wilsoncharlie.wilson@example.comUserdeleted

Showing 5 of 5 rows

Selección maestro-detalle (rowClass)

Selección maestro-detalle (rowClass)

Order
Customer
Total
Status
1001Ada Lovelace$1,240.00Paid
1002Alan Turing$890.50Pending
1003Grace Hopper$2,415.00Paid
1004Katherine Johnson$540.75Refunded
1005Edsger Dijkstra$1,975.20Paid

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)

Internacionalización (i18n)

ID
Name
Email
Role
1John Doejohn@example.comAdmin
2Jane Smithjane@example.comEditor
3Bob Johnsonbob@example.comUser
4Alice Brownalice@example.comModerator
5Charlie Wilsoncharlie@example.comAdmin
6Diana Martinezdiana@example.comEditor
7Edward Tayloredward@example.comUser
8Fiona Andersonfiona@example.comModerator
9George Leegeorge@example.comAdmin
10Hannah Whitehannah@example.comEditor
11Ivan Clarkivan@example.comUser
12Julia Scottjulia@example.comModerator

Showing 12 of 12 rows

RTL Layout (right-to-left)

RTL Layout (right-to-left)

ID
Name
Email
Role
1John Doejohn@example.comAdmin
2Jane Smithjane@example.comEditor
3Bob Johnsonbob@example.comUser
4Alice Brownalice@example.comReviewer

Showing 4 of 4 rows


  • Start the project kickoff
  • Prepare requirements document
  • Review API contract
  • Plan deployment checklist

Showing 4 of 4 rows

Orden de la barra inferior (variables CSS)

Orden de la barra inferior (variables CSS)

Table bottom bar ordering
ID
Name
Role
1John DoeAdmin
2Jane SmithEditor
3Bob JohnsonUser

Showing 3 of 3 rows


List bottom bar ordering
  • Task A
  • Task B

Showing 2 of 3 rows

Componentes de lista

Vistas de lista flexibles con las mismas capacidades potentes de paginación y selección.

Ejemplos:
Lista paginable y seleccionable

Lista paginable y seleccionable

  • J
    John Doe
    john@example.com
  • J
    Jane Smith
    jane@example.com
  • B
    Bob Johnson
    bob@example.com
  • A
    Alice Brown
    alice@example.com
  • C
    Charlie Wilson
    charlie@example.com
  • D
    Diana Prince
    diana@example.com
  • E
    Evan Brooks
    evan@example.com
  • F
    Fiona Green
    fiona@example.com

Showing 8 of 8 rows

Selected: 0 items
Lista conectada (timeline)

Lista conectada (timeline)

  • 09:00
    Order placed
    Payment confirmed
  • 11:20
    Processing
    Picked from warehouse
  • 14:05
    Shipped
    Handed to courier
  • Out for delivery
    Estimated today
Lista seleccionable

Lista seleccionable

Hover a row. Selectable items show a pointer cursor; tick the checkbox to select.
  • EngAda Lovelace
  • ResearchAlan Turing
  • ArchGrace Hopper
  • DataKatherine Johnson
Selected: 0
Variables CSS de la lista

Variables CSS de la lista

Forest Theme
  • John DoeProduct Manager
  • Jane SmithEngineer
  • Bob JohnsonDesigner

Showing 3 of 5 rows

Dusk Theme
  • John DoeProduct Manager
  • Jane SmithEngineer
  • Bob JohnsonDesigner

Showing 3 of 5 rows

Ocean Theme — one-call hub-list-theme() mixin
  • John DoeProduct Manager
  • Jane SmithEngineer
  • Bob JohnsonDesigner

Showing 3 of 5 rows

Lista en tarjetas

Lista en tarjetas

  • MR

    Marta Ruiz

    Product Designer

    Available

    Email: marta.ruiz@example.com

    Phone: +34 600 111 222

  • CV

    Carlos Vega

    Frontend Engineer

    Busy

    Email: carlos.vega@example.com

    Phone: +34 600 333 444

  • LM

    Lucia Moreno

    Engineering Manager

    Available

    Email: lucia.moreno@example.com

    Phone: +34 600 555 666

  • PS

    Pablo Serra

    QA Lead

    Offline

    Email: pablo.serra@example.com

    Phone: +34 600 777 888

Listas anidadas

Listas anidadas

Tree list
  • Documents
    • Reports
      • Q1-2026.pdf
      • Q2-2026.pdf
    • Invoices
  • Media
    • Photos
    • Videos
  • Readme.txt
Cards with nested items
  • Documents
    • Reports
      • Q1-2026.pdf
      • Q2-2026.pdf
    • Invoices
  • Media
    • Photos
    • Videos
  • Readme.txt
Estados de carga, error y vacío de la lista

Estados de carga, error y vacío de la lista

  • John Doe
    john.doe@example.com
  • Jane Smith
    jane.smith@example.com
  • Bob Johnson
    bob.johnson@example.com

Características clave

Cambios recientes

Version 22.6.0 - 7/7/26, 12:00 AM

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.

Version 22.5.0 - 7/7/26, 12:00 AM

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.

Version 22.4.0 - 7/5/26, 12:00 AM

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.

Version 22.3.0 - 6/29/26, 12:00 AM

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.

Version 22.2.0 - 6/29/26, 12:00 AM

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.

Version 22.1.0 - 6/23/26, 12:00 AM

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.

Version 22.0.0 - 6/17/26, 12:00 AM

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.

Version 20.0.0 - 1/20/24, 12:00 AM

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

Version 19.10.2 - 12/23/25, 12:00 AM

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

Version 2.1.0 - 3/15/24, 12:00 AM

added: Expandable rows functionality

added: Advanced filtering with custom filter templates

changed: Enhanced responsive design with mobile-optimized layout

Version 2.0.0 - 2/20/24, 12:00 AM

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

Version 1.2.0 - 1/10/24, 12:00 AM

added: Responsive table design for mobile devices

added: Row selection with checkboxes

changed: Performance optimizations for large tables

Version 1.1.0 - 12/5/23, 12:00 AM

added: Basic pagination functionality

added: Column sorting capabilities

fixed: Table header alignment issues

Version 1.0.0 - 11/1/23, 12:00 AM

added: Initial table component release

added: Basic data display with configurable headers

added: TypeScript support with strict typing