Repository navigation
v1.0.0-beta.0
Pre-releaseMajor Changes
-
14f4c4dThanks @Psvensso! - Types: the editing options are now a discriminated union. BREAKING for TypeScript consumers who passed an editing callback withouteditMode,onEditCommitBatchoutsideeditMode: "batch", oreditModewithoutgetRowId— all previously broken at runtime, now compile errors. -
3f5269cThanks @Psvensso! - Fuzzy quick search by default:TMDataGrid.Searchnow forgives typos and skipped characters, and while it is the only thing narrowing the grid the rows order by match quality.quickSearchMode: "contains"restores the old substring matching; an explicitglobalFilterFnoverrides both. Adds@tanstack/match-sorter-utilsas a dependency. -
9f83cbcThanks @Psvensso! - Persisted payloads gain a version stamp and are realigned against the current column set on restore. BREAKING: layouts stored by 0.x builds carry no stamp and are dropped once — users start from the default layout after upgrading. -
b2f3207Thanks @Psvensso! - The 1.0 wave opens. Beta releases may break API between versions; every break is named in its changeset. First changes: persisted layouts written by 0.x are dropped once (the payload gains a version field).
Minor Changes
-
6f1b4dbThanks @Psvensso! - Adding and deleting rows:edit.addRow()opens a sticky entry block of editors under the header,edit.deleteRowreports immediately or marks for batch;newRowDefaults,onRowAdd,onRowDelete, andsubmitAllbatches carryingadded/deleted. -
5bcde97Thanks @Psvensso! - Batch editing: drafts accumulate untiledit.submitAll(),TMDataGrid.EditActionstoolbar chrome, optionalonEditCommitBatchfor one save call covering every dirty row. -
7a8c056Thanks @Psvensso! -betweenfilter operator fornumberanddatecolumns — an inclusive[min, max]pair, either end open when empty; the panel renders a From/To pair.meta.defaultFilterOperatorpicks the operator a fresh filter starts with. New labels:filterFrom,filterTo,operators.between. -
4b1985fThanks @Psvensso! -onCellClick,onCellDoubleClickandonCellContextMenuonTMDataGrid.Table—{ cell, row, column, event }, composing with selection, editing and the context menu rather than replacing them. -
abaa3dcThanks @Psvensso! - Cell editing (editMode: "cell"): one TanStack Form per editing row, built-in editors per column type,meta.validate/rowValidatorswith Standard Schema support,meta.editorfor a custom editor, keyboard entry andonEditCommit. Adds@tanstack/react-formas a peer dependency. -
b39eeceThanks @Psvensso! -@jielga/tmdatagrid/styles.layer.css: the stylesheet wrapped in@layer tmdatagrid, for consumers who state their cascade order. -
ce9a3f8Thanks @Psvensso! - Editing modescellConfirm(✓/✕ beside the input, drafts survive blur) androw(generated edit lane pinned right, whole-row commit, cross-fieldrowValidatorserrors on the Save). -
c8acb31Thanks @Psvensso! -meta.editortakes a component, rendered as JSX so hooks are legal inside it. It receives the live TanStack Form field alongside the table context (TMDataGridEditorComponent,TMDataGridEditorArgs); define one at module scope so its identity is stable across renders. -
da28796Thanks @Psvensso! - Empty states:renderEmptyStateonTMDataGrid.Tablereplaces the built-in empty messages, withhasActiveFiltersdistinguishing filtered-empty from truly-empty. A grid with no data and no filters now sayslabels.noRows("No rows to show") instead of claiming filters matched nothing. -
9984dcdThanks @Psvensso! - Custom filter controls:meta.filterControlreplaces the filter panel's value slot with a component receiving the value-onlyTMDataGridFilterControlArgscontract — it reads the operator, writes the bare value, and the grid composes the stored filter. Four built-ins ship as named exports (DgRangeSliderFilter,DgDateRangeFilter,DgAutocompleteFilter,DgTriStateFilter), plusTMDataGridFilterValueInput, the default control, for fallbacks. New label:filterAll. -
992b7c1Thanks @Psvensso! - Match highlighting:enableMatchHighlightingmarks the matched text in default-rendered cells while a contains-family filter or the quick search is active. Contiguous occurrences only — a fuzzy typo-match shows no highlight — and columns with their owncellrenderer opt out by existing. Colour via--dg-match-highlight-bg. -
2f105bfThanks @Psvensso! - Per-row styling onTMDataGrid.Table:rowClassNameandrowStyle(value or function of the row), andstriped— stripes computed from view position so virtualization cannot shift them. Row colours go through--row-bg, keeping hover, selection and pinned cells intact. -
59d63abThanks @Psvensso! -resetSettings()on the api resets visibility, order, widths, pinning and grouping to a clean first visit; the columns panel's Reset button becomes "Reset layout" and calls it, scope stated in its tooltip. -
a5a0dafThanks @Psvensso! -enableRowNumbers: a generated row-number gutter, outermost left — numbers the current view, continues across pages, leaves group rows unnumbered, never exports. -
64eece3Thanks @Psvensso! - Row pinning:enableRowPinning(boolean or per-row predicate) letsrow.pin("top" | "bottom" | false)hold rows in sticky edge blocks — top under the header, bottom above the summary row — outside the scrolling order. Pinned rows survive filtering and paging, stale pinned ids are skipped rather than thrown on, and group rows never pin. -
db99330Thanks @Psvensso! -TMDataGrid.Table'srowStyleaccepts CSS custom properties, and the type behind it is exported asTMDataGridRowStyle. Setting--row-bgis the documented way to colour a row, but the prop was typed as plainCSSProperties, so the documented usage did not compile. -
9d15d5eThanks @Psvensso! - Scroll edges: a scroll-driven shadow under the sticky header while rows are beneath it (--dg-header-shadow-color), andonScrollToTop/Bottom/Left/RightonTMDataGrid.Table, firing once per edge arrival. -
#13
64f48cdThanks @Psvensso! -scrollToRow({ rowId, align })on the api returned byuseTMDataGrid. The grid is always virtualized, so a row far down the list has no element to scroll to — this moves the virtualizer instead. Answersfalsewhen the row is not in the current view (filtered out, on another page, or an unknown id) and scrolls nothing; a pinned row answerstruewithout scrolling. -
#13
f48a8ccThanks @Psvensso! - A published testing contract, so a suite is written against structure rather than translatedaria-labels. Every named piece of the grid carriesdata-dg-part— the chrome, panels, generated lanes and editors — narrowed bydata-row-id/data-column-idwhere a part repeats.data-testidandidon<TMDataGrid>andaria-labelonTMDataGrid.Tablename a grid when a page holds several. Body cells always carrydata-row-id, headers now carrydata-column-id, and the grid publishesaria-busyanddata-dg-row-countfor tests to wait on. New Testing docs page covers the parts, the roles and Playwright.
Patch Changes
-
#13
573bea5Thanks @Psvensso! - Center the empty/loading state in the visible scrollport, not the full column-track width, so it stays centered under horizontal scroll. -
#13
184b1e8Thanks @Psvensso! - Getting started docs: add installation (peer deps, beta pin note, MantineProvider) and import from the package name. The demo site now opens on it as a front page. -
6c7b71cThanks @Psvensso! - Docs:rowSelectionMode/highlightSelectedRowscorrected to the shippedselectionMode(four modes) andshowSelectedBackground.