Skip to content

Releases: jbetancur/react-data-table-component

v8.8.0

Choose a tag to compare

@github-actions github-actions released this 22 Jul 00:58

New features

  • filterType: 'datetime' — filter to a specific date and time via a datetime-local input; Equals matches the exact instant. → Filtering (#1362)
  • filterType: 'time' — filter by time of day across all dates; supports seconds and Between windows that wrap past midnight. → Filtering

Bug fixes

  • Client-side filtering now runs before pagination, so filters match across all pages instead of just the current one. → Filtering (#1364)
  • A filterable column with no explicit id now filters instead of silently doing nothing. → Filtering (#1363)
  • A custom filterFunction now runs for value-less operators, not only when a value is entered. → Filtering (#1366)
  • The date filter's Equals no longer skips by a day for timestamped cells in non-UTC timezones. → Filtering
  • animateRows: fixed sort animation breaking across a sort cycle, not animating under fixedHeader, entrance animations being skipped with a numeric keyField, stale styles from an interrupted animation, and the expander close animation being cut short or leaking a timer. Sort movement is also smoother. → Animations (#1368)
  • The loading skeleton shimmer and the default spinner now stop under prefers-reduced-motion: reduce.

Full changelog: https://reactdatatable.com/docs/changelog

v8.7.1

Choose a tag to compare

@github-actions github-actions released this 21 Jul 21:34

Bug fixes

  • Faster cell rendering on large tables: non-editable cells now skip editing state entirely and share hoisted style objects, and rows inside a fixed-header scroll container use content-visibility: auto so off-screen rows skip layout and paint. → Performance (#1360)
  • Applying a column filter that matched no rows hid the table head along with the rows, leaving no way to clear the filter. The head now stays visible while any column filter is active. → Filtering (#1359)
  • A column filter with only its second condition filled was silently ignored; it now applies on its own, and an empty first condition no longer force-matches every row under OR logic. → Filtering
  • A between filter with one empty bound filtered out every row; the empty side is now unbounded (lower-only acts as ≥, upper-only as ≤) for both number and date columns. → Filtering
  • Hiding a column via the context menu now clears that column's active filter, which otherwise kept filtering rows with no visible way to clear it. → Context menu
  • Pressing Escape while typing in a filter input now closes the filter panel, and closing via Escape, Apply, or Clear returns focus to the filter icon. → Filtering

Full changelog: https://reactdatatable.com/docs/changelog

v8.7.0

Choose a tag to compare

@github-actions github-actions released this 18 Jul 23:41

New features

  • ctx.error for custom editors — the custom editor render context now includes the current validation error (string | null), so custom editors can style their own invalid state when validate rejects a commit. → Inline editing (#1355)
  • ctx.inputRef for custom editors — attach it as the ref of your focusable element to get auto-focus when the editor opens and refocus after a rejected commit, matching the built-in editors. → Inline editing (#1355)

Full changelog: https://reactdatatable.com/docs/changelog

v8.6.2

Choose a tag to compare

@github-actions github-actions released this 14 Jul 23:10

Bug fixes

  • A numeric pixel value for TableColumn.hide (e.g. hide: 480) was a no-op — the column stayed visible at every width. Numeric breakpoints stopped working in the v8 refactor; the type now accepts only Media ('sm' | 'md' | 'lg') to match. For a custom breakpoint, track viewport width yourself and toggle the column's omit prop instead. → Mobile (#1346)
  • Fixed highlightOnHover not showing when a row's background color was set via customStyles.rows.style, since the inline style was winning over the hover class. → Styling (#1351)

Full changelog: https://reactdatatable.com/docs/changelog

v8.6.1

Choose a tag to compare

@github-actions github-actions released this 12 Jul 12:02

Bug fixes

  • A custom progressComponent could not be shown on the initial load — the skeleton rows always won. New progressSkeleton prop (default true) lets you set it to false to show your progressComponent on initial load instead. → Loading state

Full changelog: https://reactdatatable.com/docs/changelog

v8.6.0

Choose a tag to compare

@github-actions github-actions released this 12 Jul 02:20

New features

  • Context menu — new contextMenu prop adds a menu to header cells and rows, opened by right-click, a kebab (⋮) button, or both. The header menu ships built-in actions (sort ascending/descending, clear sort, pin left/right, unpin, hide column, reset); row menus render consumer-supplied actions via contextMenuActions.row, and every selection fires onContextMenuAction. Fully keyboard-accessible (role="menu", arrow keys, Escape with focus return), RTL-aware, and localizable via localization.contextMenu (all bundled locales translated). → Context menu (#1342)
  • bigint and Date selectorsPrimitive now includes bigint and Date, so selectors can return them directly for display and built-in sorting. bigint renders as its decimal string and Date as a locale string. → Columns

Bug fixes

  • Selectors that return null or undefined (e.g. a missing field) now sort to the end in both directions instead of landing in an arbitrary position. → Sorting
  • Pagination now sizes its layout from its own container instead of the window, fixing squeezed/overlapping controls in narrow containers and mobile viewports. → Pagination
  • Fixed a pagination SSR hydration mismatch that made React re-render the table client-side on wide viewports.
  • Skeleton loading rows now stretch to the full table width instead of fixed cell widths. → Loading state
  • Widened the column resize handle and fixed the neighboring header cell stealing half its grab area; the hover indicator is now centered on the column separator, including under RTL. → Resizable columns

Full changelog: https://reactdatatable.com/docs/changelog

v8.5.2

Choose a tag to compare

@github-actions github-actions released this 11 Jul 01:48

Bug fixes

  • Column resize and reorder (including column groups) now work on touch devices. Resize handles respond to touch drags; reorder uses a short press-and-hold to grab a header so a normal swipe still scrolls the table. → Column reordering

  • Fixed the native sort icon animating (fading and spinning) as it disappeared when a column returned to the unsorted state; it now clears immediately. → Sorting

  • Fixed column filter menus on touch devices: the menu no longer flickers open/closed when tapping the filter icon, and filter icons on the leftmost/rightmost columns now open reliably with the panel clamped on-screen. → Filtering

Full changelog: https://reactdatatable.com/docs/changelog

v8.5.1

Choose a tag to compare

@github-actions github-actions released this 10 Jul 01:27

Bug fixes

  • Fixed RTL support across resizing, pinning, and separators: resize handles sit on the correct edge and widen as in LTR, pinned columns stick to logical edges with mirrored shadows, the pinned horizontal scrollbar accounts for RTL scroll coordinates, and column/group-header separators plus small chrome (filter dot, select arrows, pagination chevron) mirror correctly. Applies to direction={Direction.RTL} and inherited dir="rtl". → RTL support
  • Fixed row and table backgrounds cutting off at the initial container width when the table scrolls horizontally, leaving scrolled-into columns unpainted. → Theming
  • Fixed fixedHeader with responsive={false} not creating a scroll container, letting rows spill over content below the table. fixedHeader now always creates one.
  • Fixed the pinned-columns scrollbar failing to appear or going stale when content width changed without a container resize (async rows, resizing or toggling columns), and when columns were pinned with responsive={false}. → Column pinning
  • Fixed resize handles being clipped for right-pinned columns and the last column, which cut their hit areas down to a sliver. → Resizable columns
  • Fixed pin-band separators: replaced the blurred edge shadow with a crisp boundary line (--rdt-color-pin-border, replacing --rdt-color-pin-shadow), and closed missing separators and broken row dividers around the right pin band. → Column pinning
  • Fixed open column-filter panels floating detached from their column on scroll; they now close on scroll and window resize.

Full changelog: https://reactdatatable.com/docs/changelog

v8.5.0

Choose a tag to compare

@github-actions github-actions released this 09 Jul 01:20

New features

  • Keyboard cell navigation — new cellNavigation prop turns the table into a WAI-ARIA grid (role="grid"/"gridcell", single Tab stop, roving tabindex). Arrow keys move between cells, including the header row, selection checkboxes, and expander buttons; Home/End and Ctrl+Home/Ctrl+End jump to row and grid edges; Enter/F2 open a cell's editor and Escape cancels it; Enter/Space sort from a header. → Keyboard navigation (#1332)
  • More headless hooksuseCellNavigation (the same logic behind cellNavigation, usable on your own markup) and useColumnResize (drag-to-resize) are now exported. Column pinning gets three new pure-function exports — getPinnedOffsets, getPinnedTotalWidths, getPinnedCellMeta — since pinning has no state to own beyond column.pinned on your own columns. → Headless hooks

Bug fixes

  • Fixed inline-edit refocus resolving by DOM id, which could steal focus into a different DataTable instance on the same page when two tables shared column ids and row keys.

Full changelog: https://reactdatatable.com/docs/changelog

v8.4.3

Choose a tag to compare

@github-actions github-actions released this 06 Jul 02:00

Bug fixes

  • Fixed a table-level sortFunction not being called when a column's sort was cycled to the "not sorted" state, which broke patterns like pinning rows to the top regardless of sort. → Row pinning

Full changelog: https://reactdatatable.com/docs/changelog