Skip to content

feat(core): add a composable ion-table presentation primitive #31496

Description

@hemanth004

Prerequisites

Describe the Feature Request

Add a lightweight ion-table component for presenting native HTML tables with Ionic's cross-platform styling and responsive behavior.

This is intentionally a presentation primitive, not a full data-grid product.

Describe the Use Case

Applications that show reports, admin data, catalogs, and audit records repeatedly rebuild the same table shell: horizontal scrolling on small screens, consistent Ionic theming, loading and empty states, and accessible table presentation.

Advanced table libraries solve sorting, filtering, pagination, virtualization, and data management, but they are often heavy or framework-specific for teams that only need a well-integrated responsive table surface.

Describe Preferred Solution

Add an ion-table core component that preserves native <table> semantics and works across Ionic's supported integrations. The initial API could provide:

  • Responsive horizontal scrolling for wide tables
  • Ionic mode-aware styling and CSS custom properties/parts
  • Accessible defaults without changing native table semantics
  • Loading and empty-state slots
  • Support for captions, native table sections, and arbitrary cell content

The component should not own data fetching, sorting, pagination, virtualization, or a row/column data model. Those concerns can remain with application code or specialized libraries such as AG Grid.

Describe Alternatives

The earlier requests #28557 and #25679 discussed a full data-table/data-grid component and were closed as not planned. This proposal is deliberately narrower and focuses on a reusable presentation primitive rather than competing with AG Grid or framework-specific table libraries.

Related Code

Example usage:

<ion-table>
  <table>
    <caption>Team members</caption>
    <thead>
      <tr><th scope="col">Name</th><th scope="col">Status</th></tr>
    </thead>
    <tbody>
      <tr><th scope="row">Ada Lovelace</th><td>Active</td></tr>
    </tbody>
  </table>
</ion-table>

Additional Information

This is intended as a smaller, incremental alternative to a full data table. If the team agrees with the direction, I would be happy to contribute an initial implementation and focused tests.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions