26.0.0 (2026-03-17)
- always maintain proportional column sizes (d69957c), closes #617
- detect tree changes after
treeActionemit (6645fb0) - do not announce non‑draggable headers as clickable (55f6021), closes #583
- gracefully ignore non-sortable rows when sorting (b6dfdcf), closes #578 #611
- only use trackByProp on row level with strict type (9bdf3f2)
- sync header and body horizontal scroll via direct DOM scrollLeft (54a4132)
-
DatatableComponent.trackByPropinput now enforce strict type check as key of row.Before:
// Even though name is not a valid prop on rows it is allowed to be used with
trackByProp.<ngx-datatable trackByProp="'name'" [rows]="[{id: 1}, {id: 2}]" >After: Typescript would give compilation error as name is not known property in rows.
-
Renamed SCSS variables:
$disable-row-text-colorto$datatable-disable-row-text-color$datatble-ghost-cell-animation-durationto$datatable-ghost-cell-animation-duration
This only affects the material and bootstrap theme.
-
Angular 21+ is required. Follow the Angular update guide to update your app: https://angular.dev/update-guide?v=19.0-20.0;;
25.0.0 (2025-12-02)
- convert
selectedto signal model with two-way binding (85ed2ae) - convert
sortsto signal model with two-way binding (e2f4928) - update to Angular 20 (327e91b)
- always apply
role="row"on summary row (59f9b09) - column
compareFnshould not use sort direction (208ac4a) - use actual buttons in pager (8ad98e9)
- use existing row and cell class styles on ghost rows (a2cfbdd)
-
The table no longer calls
TableColumn.compareFnwith the sort direction. The table already applies the proper direction. This change only removes the parameter, the sorting itself remains unchanged.Any usages of the direction in custom
compareFnmust be removed. Implementations which use this property can always return the value fordirection='desc', to achieve the same result as before. -
Angular 20+ is required. Follow the Angular update guide to update your app: https://angular.dev/update-guide?v=19.0-20.0;
-
The pager component now uses buttons instead of anchors. We did this change to properly reflect the nature of those buttons, which have never been anchors in terms of behavior.
This change affects custom themes. Please adjust them accordingly:
// Before .datatable-pager li a { // styling } // After .datatable-pager .page-button { // Override default button styles border: 0; background none; // previous styling }
-
The selected input no longer mutates the original array passed to the component. Applications that rely on the array being updated in place must switch to two-way binding with [(selected)] to maintain reactivity.
-
Ghost loader rows will now always use the existing
datatable-body-rowanddatatable-body-cellclasses for styling.This change ensures consistent styling between regular rows and ghost loader rows, improving visual consistency across the table. Previously, ghost loaders did not always apply these row styles, which caused ghost rows to not have the correct height, cell padding, and bottom border.
To override or customize ghost loader styles, use the
ghost-elementandghost-cellclasses. -
Several fields and methods are removed from the public API. Those fields were never intended to be exposed.
-
Previously, the
groupedRowsinput was updated by the datatable, whengroupRowsBywas used. This behavior was dropped.groupedRowswill only contain application provided values. The table calculates internal the actualgroupedRowswithout exposing them. -
@siemens/ngx-datatableno longer contains anindex.scssandindex.css. Those files were empty, and its usages can be removed without further changes. -
Migration to Angular signal inputs/outputs.
All components now use Angular’s
input(),model(), andoutput()functions instead of the@Input/@Outputdecorators. Consider the following implications for your code:Template bindings: No changes required! Continue using [inputName] and (outputName) in templates as before.
Programmatic access: Use template binding whenever possible. If not possible, understand that setting input values programmatically is only possible for model() inputs. Reading input values programmatically also requires adjustments for the signal API:
class Component { @ViewChild(DatatableComponent) private datatableComponent!: DatatableComponent; myFunction(): void { // Before const value = this.datatableComponent.rows; // After const value = this.datatableComponent.rows(); } }
If programmatically subscribing to outputs is needed, read the following guide: https://angular.dev/guide/components/outputs#subscribing-to-outputs-programmatically
-
The
DatatableComponent.sortoutput is deprecated; use (sortsChange) or two-way binding instead.Before:
<ngx-datatable [sorts]="mySorts" (sort)="onSort($event)"></ngx-datatable>
After:
<ngx-datatable [sorts]="mySorts" (sortsChange)="onSort({sorts: $event})"></ngx-datatable> <!-- or --> <ngx-datatable [(sorts)]="mySorts"></ngx-datatable>
-
The
DatatableComponent.selectoutput is deprecated; use (selectedChange) or two-way binding instead .Before:
<ngx-datatable [selected]="mySelection" (select)="onSelect($event)"></ngx-datatable>
After:
<ngx-datatable [(selected)]="mySelection" (selectedChange)="onSelect({selected: $event})"></ngx-datatable> <!-- or --> <ngx-datatable [(selected)]="mySelection"></ngx-datatable>
24.3.3 (2025-10-31)
- always call
<ngx-datatable-row-detail [rowHeight]="function">with correct index (4076829)
24.3.2 (2025-10-24)
headerHeight="auto"should be supported (a22f149), closes #473- support parallel usage of grouping and details (a4fabd7), closes #147
24.3.1 (2025-10-17)
- Revert "feat(columns): support hidden columns" (de31669)
- show the correct number of pages when using row grouping (7d1141c)
24.3.0 (2025-09-29)
- columns: support hidden columns (ea5a410)
- column-pinning: hide vertical divider if no horizontal scroll (556e964)
- sort: sort on grouped header column throws errors (dd86662)
24.2.0 (2025-08-21)
- support custom classes for tree toggle icons (117d24e)
- pagination: allow space/enter event to paginate (714c5c0), closes #373
- rows are not interactive when using disableRowCheck with grouped rows (c689f09)
24.1.0 (2025-07-16)
- avoid duplicate row identity warnings (8f32d43)
- make pager accessible with keyboard (de21d1b), closes #339
- no error on undefined limit (12522dd), closes #349
- optimize
DraggableDirectivewithrequestAnimationFramefor smoother updates (5dd8628)
24.0.0 (2025-07-02)
- add aria-labels to row selection checkboxes (ae8c946)
- support using string values in previous enum locations (9033187)
- add treeToggleTemplate property in toInternalColumn method to make custom tree template work (97e8529)
- calculate correct column width in flex mode after resize (f6d6cf9), closes #155
- never render a resize handle after the last column (51e3daf)
- prevent column reordering between frozen and non-frozen columns (9c38292), closes #145
-
All constants that replaced the previous enums should no longer be used. Use the plain string value instead.
Example:
// Before @Component({template: `<ngx-datatable [columnMode]="ColumnMode.Force" />`}) class MyComponent { ColumnMode = ColumnMode; } // After @Component({template: `<ngx-datatable [columnMode]="'force'" />`}) class MyComponent { }
- All output properties are now readonly and cannot be reassigned.
See our release announcement.
No changes since 23.0.0-rc.2.
See 23.0.0-rc.0, 23.0.0-rc.1, and 23.0.0-rc.2
for all changes since the last stable release.
- Fix: fix keyboard interaction for cell selection mode
-
Feature: introduce a new
providedNgxDatatableConfigfor a standalone way to configure the datatable (#259) -
Breaking: Previously the datatable applied
box-sizing: border-boxto all its elements. This is no longer the case. Custom themes that depend on this must set this behavior manually, using:*, *:before, *:after { box-sizing: border-box; }
- Feature: include sorts in page event (#248)
- Feature: include pager aria labels in text messages
- Feature: add touch support for reorderable and resizable features (#181)
- Feature: update project to Angular 19
- Feature: add type for details toggle event (#173)
- Feature: add type for context menu event (#174)
- Feature: configurable defaultColumnWidth
- Feature: introduce proper types for public API (#49)
- Fix: prevent errors with row-specific ghost in combination with grouping, selection and trees (#241)
- Fix: introduce a default value for rows
- Fix: remove unwanted space below the rows (#214)
- Fix: apply even/odd classes correctly when rows are grouped (#111)
- Fix: add missing type to comparator (#167)
- Fix: only run disabled check on rows
- Fix: allow partial overrides of messages (#152)
- Fix: allow partial overrides of CSS classes (#151)
- Fix: add missing space before headerClass (#138)
- Fix: do not bind content as
innerHTMLby default (#126) - Fix: update group checkbox state on child row selection state change
- Fix: horizontal scroll
- Fix: partial values for messages and cssClasses
- Fix: hide rows when ghostLoading with no virtualization
- Fix: calculate column widths only when table is visible
- Fix: add missing type for header and cell style classes
- Fix: resetting table with empty array
- Fix: align TableColumn directive and interface types
- Fix: improve
ActivateEvent - Fix: type cell context
- Fix: improve types for row grouping
- Fix:
datatable-scrollerwidth should update on recalculate (#79) - Breaking: All inputs except
templateofDatatableFooterDirectivehave been dropped from the footer directive. Those were unused. Remove any usages without replacement. - Breaking: Angular v19 or higher is required.
- Breaking: The datatable no longer accepts
undefinedas a value of thecountinput. - Breaking: The datatable body no longer has spacing below the last row. If needed for whatever reason, this must be added manually. Workarounds removing this extra space must be dropped.
- Breaking: Previously
CellContext.rowIndexwas astringif the row was inside a group. NowCellContext.rowIndexis always a number. Either containing the index of the row or if the row is inside a group, the index of the group. To access the index value of a row within a group, use the newCellContext.rowInGroupIndex. - Breaking: Removed
ResizeableDirective. This directive was intended for internal use to handle column resizing, which is now managed directly in theDataTableHeaderCellComponent. - Breaking: The row detail context (
RowDetailContext) no longer containsdisableRow$?: Observable<boolean>. Use the newdisabled: booleanvalue instead. - Breaking: The cell context (
CellContext) no longer containsdisableRow$?: Observable<boolean>. Use the newdisabled: booleanvalue instead. - Breaking:
disableRowCheckwill only be called with actual rows. Although documented otherwise, in the case of groups, thedisableRowCheckwas only called for groups instead of each row inside that group. This allows disabling single rows inside a group and not only entire groups. To update the disabled state of a row just update the row itself instead of using the previousdisableRow$subject. - Breaking: Removed several symbols from the public API that were intended to be internal.
- Breaking: Removed polyfill for
elementsFromPointsinceelementsFromPointis now supported by all major browsers. - Breaking: Previously, cell values were bound using
innerHTML. With this change they are now bound using normal data binding. This means that any html markup will no longer be rendered. To restore the previous behavior setbindAsUnsafeHtmlon columns where needed. We decided to change this behavior, as bindinginnerHTMLcan lead to HTML injection. Especially in table content which are often untrusted user generated content. - Breaking: Header cell names are now bound using data binding instead of
innerHTML. Use aheaderTemplateto provide custom html markup. - Breaking: Changed
Keysenum to usekeyvalue instead ofkeyCode.keyCodeis deprecated fromKeyBoardEventand should be replaced withkey. - Breaking: Vendor prefixes are no longer applied for css
transform. The related helpers are removed from the public api. - Breaking: Change signature from
onBodyPage({ offset }: any): voidtoonBodyPage(offset: number): void. - Breaking: Almost every public API has now proper types. While this should in theory not affect applications it will now fail compilation if the APIs were used in an incorrect manner.
- Fix: recalculate only if row differs (#73)
- Fix: tree grouping breaks if rows are assigned statically (#77)
- Feature: support removing sort on column (#64)
- Feature: support row group checkbox (#62)
- Fix: correct expanding all row groups (#60)
- Fix: support changing row group height (#61)
- Fix: correct table width on empty table (#63)
- Feature: support row wrapper for adding custom directives, like CDK Drag and Drop
- Fix: horizontal scroll on grouped rows had infinite width
- Fix: support sorting with grouped rows
- Fix: remove right spacing on fixed column when no vertical scroll is needed
- Fix: keep horizontal scrolling in empty tables, if columns do not fit on screen
- Fix: support grouped row selection
- Fix: support tabbing over header cells
-
Fix: prefer un-prefixed style attributes over prefixed one
Fixes an issue on Firefox 126 (released May 2024), which no longer support
-moz-transformbuttransform. But when we get style attributes from an element,-moz-transformis still available, which makes ourtestStylefails. So to resolve this issue, we want to use un-prefixed attribute if available.
-
Fix: revert add types for table rows
We introduced a breaking change, as
undefinedwas not allowed as row input any more. Reverting the change and will re-introduce as the typing later.
- Feature: add types for table rows
- Fix: move footer outside of aria role table
- Fix: emit page objects when changing page offset
- Feature: support keyboard shortcuts for all rows selection
- Fix: adjust for overflow when scaling columns in flex mode
- Fix: allow row disabling through side effects
- Feature: upgrade project to Angular 17
- Breaking Change: update to Angular 17
- Feature: upgrade project to Angular 15
- Feature: add
cssClasses,headerHeight,footerHeightandrowHeightto global configuration
- Fix: emit missing
dragleavedrag-and-drop event
- Feature: add row drag and drop capability
- Fix: remove ghost placeholder cells after data load
- Feature: allow support to mark complete row as disable
- Fix: increase style compilation budget
- Fix: correct dynamic vertical scrolling
- Feature: Add on-demand vertical scrolling support
- Fix: add missing aria-label to tree icons
- Fix: only show ghost loading indicator when active
- Fix: add ghost loading indicator support
- Fix: scroll bar re-draw issue and enabled DOM virtualization
- Fix: loading indicator memory leak
- Fix: redraw issue with virtual scrolling while dragging scrollbar
- Feature: decouple checkboxable and headerCheckboxable from SelectionType.checkbox
- Feature: update to Angular 13 and ivy
- Chore: switch from TSLint/Prettier to ESLint
- Feature: support custom loading indicator
- Fix: prevent internal sorting if
externalSortingis set - Breaking:
emptyCustomContentinput no longer required/supported
- Feature: support custom content for empty table
- Fix: tabindex on datatable body
- Fix: orderable directive
- Fix: column resizing cases
- Fix: refresh virtual grid after scroll
- Fix: clearTimeout/_destroySubscription race
- Fix: CSP script-src 'self'
- Fix: emit page event on page size change for virtual paging
- Breaking: Update to angular 12
- Breaking: fork into
@siemensscope
- Breaking: Update to angular 11
- Breaking: Update to angular 10
- Feature: Add sorting: unset icon
- Chore: explicitly only suppot ng9
- Chore: Patch release to override 16.1.0
- Fix: [selectAllRowsOnPage] is broken. (swimlane#1809)
- Fix: Bug when using cellClass as string. (swimlane#1817)
- Fix: Docs. (swimlane#1812, swimlane#1837, swimlane#1845, swimlane#1854)
- Fix: redraw after recalculate (swimlane#1816)
- Fix: undefined row index for rows in groups (swimlane#1857)
- Chore: Add pretty-quick as a precommit hook using husky (swimlane#1841)
- Chore: Bump dependecies (swimlane#1858, swimlane#1862, swimlane#1859)
- Bug: Fix disappearing rows with vertical scrollbar, virtual scrolling & rowdetail auto height (swimlane#1799)
- Bug: Fix memory leak due to created element not cleaned up (swimlane#1792)
- Bug: do not collapse row details when row updated (swimlane#1778)
- Bug: Remove barrel files because ng-packagr doesn't work well with them
- Bug: Include styles, assets and themes in release
- Breaking: the release files are not under the
/releasefolder any more. Also, paths tothemesandassetshave changed. If you are importing any assets or styles from the release folder, you would need to update the paths. - Chore: Migrates the project to angular-cli, making it compatible with Ivy (swimlane#1738)
- Feature: Implements global module config via forRoot (swimlane#1688)
- Feature: Colors of material style can be modified by target application (swimlane#1651)
- Bug: Fixes Exception in scoller component destroy (swimlane#1685)
- Bug: Fixes issue 1686: column resizing issue in force columns mode (no horizontal scroll) when container get smaller (swimlane#1687)
- Docs: Updates demo pages (swimlane#1738)
- Fix: Fixes issue where footer pagination does not work when virtual scrolling is enabled (swimlane#1704)
- Fix: Fixes issue where using conditional templates would not render them (swimlane#1701)
- Breaking: Upgrade to angular 8 (swimlane#1697)
- Fix: Module not found: Error: Can't resolve '.' (swimlane#1646)
- Fix: trackByProp can't work. (swimlane#1622)
- Breaking: Upgrade to angular 7
- Fix: Fix compile error when using TemplateTypeCheck set to true (swimlane#1520)
- Feature: Added support for tree grid (swimlane#1273)
- Fix: Improve virtualization as a flag (swimlane#1297)
- Fix: Fix issue when count is undefined swimlane#838 (swimlane#1499)
- Fix: Fix usage withing prerendered SPA (swimlane#1438)
- Fix: Run scroll event listeners inside angular zone (swimlane#1375)
- Breaking: Fixes several issues related to the summary row feature (swimlane#1418)
- Fix: DataTableColumnDirective Input Binding Changes (swimlane#1384)
- Fix: angular version (swimlane#1420)
- Fix: issues when running npm run build --prod (swimlane#1410)
- Breaking: Upgraded to Angular 6 (swimlane#1400)
- Feat: Added reorderable input (swimlane#1261)
- Fix: Fixed rowHeight type in body component (swimlane#1295)
- Fix: Fixed row selection for bootstrap theme (swimlane#1357)
- Fix: Reflect minWidh & maxWidth props to body cell (swimlane#1361)
- Feat: Added summary row (swimlane#1233)
- Fix: Fixed issue wi th misaligned body content (swimlane#1326)
- Fix: Fixed Default Sort Behavior Of Table With Custom Templates (swimlane#1308)
- Chore: Fixed link in column api docs (swimlane#1343)
- Chore: Fixed typo in docs (swimlane#1342)
- Feat: Add resize handler for non-resizable columns (swimlane#1225)
- Fix: Pager Component Accessibility (swimlane#1259)
- Fix: Fix missing row with virtualization and scrollbarV (swimlane#1235)
- Fix: Fall back to view mode when select field value doesn't change (swimlane#1241)
- Fix: Fix virtual-paging (swimlane#1229)
- Fix: Fix column scaling on resize (swimlane#1236)
- Fix: Propagate sortDir changes to template (swimlane#1243)
- Fix: Add setStylesByGroup() in set column prop (swimlane#1244)
- Fix: Fix error w/ rows undefined on init
- Bug: Ignore rxjs/operators
- Feat: Ability to disable virtualization (swimlane#1191)
- Feat: Universal Support (swimlane#1178)
- Compat: Fix Angular 4.x Compat
- Bug: Fix column templates not updating with loops/ifs
- Bug: Fix sorting on cross browser
- Chore: Switch to lettable operators
- Bug: Angular SSR Event Undefined (swimlane#1144)
- Bug: Fix total undefined (swimlane#1140)
- Bug: Fix race case with rows
- Perf: Better performance on scrolling y and x
- Feature: Select All on Current Page (swimlane#1132)
- Bug: Don't show empty on loading (swimlane#1139)
- Bug: Fix Angular5 Aot Issue
- Bug: Fix Vendor Prefix Error
- Bug: Angular 5 bugs
- Chore: Upgrade to Angular5
- Feature: Ability to filter checkable rows (swimlane#1056)
- Feature: Allow sorting based on whole row (swimlane#1074)
- Bug: Fix protractor events (swimlane#1081)
- Bug: Fix misalignment on smaller screens (swimlane#1081)
- Feature: Bootstrap theme
- Bug: Fix CSS for row grouping (swimlane#1053)
- Bug: Fix group row values (swimlane#1034)
- Bug: Fix cell overflow w/ fluid height (swimlane#1030)
- Bug: Fix for column sort (swimlane#1018)
- Bug: Strip HTML for null values (swimlane#966)
- Bug: Update context in cell header (swimlane#935)
- Bug: Add bounds to offset (swimlane#978)
- Bug: Make selection apply to all rows (swimlane#974)
- Bug: Fix checkbox not being shown (swimlane#956)
- Bug: Fix IE displaying null (swimlane#967)
- Bug: Fix emptry string is row is null (swimlane#951)
- Bug: Recalculate limit properly (swimlane#963)
- Bug: Detail Row Broken
- Feature: Row Grouping
- Feature: Row Hover Event
- Bug: Columns are no longer mutated!
- Bug: Fixes for Angular v5!
- Bug: Fix expand all row detail not working (swimlane#917)
- Chore: Remove useless jsdoc comments
- Style: Material styles closer to spec
- Bug: Non-sortable header showing pointer cursor
- Perf: Changed everything internal to OnPush
- Perf: Fixed header cell outlet cd
- Bug: Fixed sort mutating original rows
- Perf: Better performance in cells
- Enhancement: Add
rowIndexto row-detail template - Bug: Add
index.cssback to build
- Bug: Fix old references to
$$indexand$$expanded - Bug: Add
$$indexin cell templates asrowIndex - Bug: Fix MouseEvent undefined in JIT (swimlane#893)
- BREAKING:
$$expandedis no longer on row of detail templates, uselet-expandedto get pop now - Feature: Always center activated page on pager
- Bug: Remove row mutations of
$$indexand$$expanded - Bug: Pagination broken on large number of rows
- Bug: Strip HTML from title tags (swimlane#892)
- Bug: More Universal Rendering Fixes (swimlane#795)
- Chore: Build optimizations from new webpack version
- Feature: Unviseral Rendering (swimlane#764)
- Enhancement: Add header context menu event
- Bug: Fix sort blowing up when undefined and adding new sort
- Bug: Fix multi-selection key with Mac
- Enhancement: Add more context to cells (swimlane#720)
- Enhancement: Export Pager component (swimlane#735)
- Bug: Header checkbox when row selection is changed (swimlane#659)
- Bug: When rowClass() returns a string, the class is not properly added (swimlane#710)
- Bug: Rename icons so don't conflict with other libs (swimlane#729)
- BREAKING: Fixes for external pagination fixes. Index calculation change being last page =
0 + pageSize(swimlane#714, swimlane#138, swimlane#391) - Feature: Server-side virtual scrolling pagination
- Demos: Deep linking of demo pages
- Bug: Fix footer styles
- Feature: Footer Templates
- Feature: Dark Theme
- Bug: Fix memory leak (swimlane#702)
- Bug: Don't add column header title attribute when custom template provided (swimlane#643)
- Bug: Only apply pointer to header text (swimlane#682)
- Bug: Fix prop field name with dots (swimlane#596)
- Bug: Virtual scroll + dynamic height in cell detail not working right (swimlane#703)
- Bug: Fix dynamic row height not working right if using server-side pagination
- Chore: Implement
noImplicitAny(swimlane#671)
- Breaking: Removed
cssClassfrom columns in favor of explicit - Feature: Added explicit
headerClassandcellClass - Feature: Add ability to have callback for those class getters
- Bug: Fix checkbox select all not updating ui correctly
- Bug: Fix resize handle drag triggering long press
- Bug: Fix dragging trigging column sorting
- Bug: Fix column re-ordering not working on FF
- Feature: Dynamic row heights for virtual scrolling
- Bug: Do not use
documentfor universal support (swimlane#668)
- Bug: Fix missing type
- Feature: Allow for dynamic Detail Row heights (swimlane#653)
- Feature: Numeric prop support via support array rows (swimlane#494)
- Perf: Optimize sort code by caching valueGetter and compareFn outside loop.
- Perf: Set ValueGetter on
TableColumn.$$valueGetter - Bug: Alter setColumnDefaults to work with numeric prop values.
- Perf: Fix memory leaks with templates (swimlane#464)
- Bug: Fix row detail expanded and then collapsed not showing anything until scroll
- Bug: Fix title not set on cell template (swimlane#629)
- Chore: Update to official Angular4
- Chore: Misc build dep updates
- BREAKING: Update to Angular4!
- Feature: Row classes (swimlane#571), (swimlane#348)
- Bug: Show first page after sorting (swimlane#553)
- Bug: When reordering and skipping a column, the column gets duplicated (swimlane#497), (swimlane#562), (swimlane#563)
- Chore: Upgrade misc deps and lint fixes
NOTE: If you need support for ~Angular2, use version 6.x.
- Bug: Perform sort when sort icon is clicked (swimlane#536)
- Bug: Fix resize handle overlaped by label (swimlane#521)
- Chore: Fix relative imports for rollup (swimlane#542)
- Chore: Linting
- Bug: Revert swimlane#516 causing server-side paging issue (swimlane#543)
- Bug: Fix AoT builds with SCSS (swimlane#534)
- Bug: Fix offset incorrect when filtering (swimlane#516)
- Bug: Fix mouse press subscription cleanups (swimlane#522)
- Bug: Fix header cell wrapper empty span (swimlane#504)
- Bug: Fix selected count undefined in footer template (swimlane#537)
- Bug: Fix orderable unsubscribe listeners (swimlane#538)
- Chore: Update Angular and ZoneJS
- Bug: Fix default sort (swimlane#475)
- Bug: Fix tree-shaking issue (swimlane#511)
- Feature: Add selected count in footer (swimlane#508)
- Bug: Fix drag/drop/long-press (swimlane#506)
- Bug: Fix row widths not set correctly (swimlane#510)
- Perf: Better mouseup handling (swimlane#507)
- Chore: Bump Depedencies
- Bug: Move scss to release dir (swimlane#459)
- Bug: Fix CSS not working with AoT (swimlane#459)
- Chore: Fix ExtractText plugin causing build issue
- Chore: Upgrade Angular 2.4.5
- BREAKING: Renamed
datatablecss class tongx-datatable - BREAKING: Embedded core css file with Angular
styleUrls - Enhancement: Allow sorting from inline templates (swimlane#431)
- Enhancement: Fix re-ordering columns throwing errors (swimlane#438)
- Enhancement: Add nice drag indicator to material theme
- Chore: Update Depedencies
- BREAKING: Re-worked all inputs, methods and outputs of row detail to its own container
- Enhancement: Implement Finder/Explorer shift selection behavior
- Bug: Fix reverse selection de-selecting first index in reverse
- Bug: Fix row detail not rendering
- Enhancement: Ability to add CSS Classes on Header/Column
- Bug: Fix CPU Perf on Resort (swimlane#409)
- Chore: Upgrade to Angular ^2.4.3
- Chore: Correct RxJS Imports
- Feature: Adding multi-click selection
- Bug: Use tracking fn vs inline (swimlane#388)
- Bug: Fix AoT header issue (swimlane#389)
- Bug: Fix
reorderablenot being honored (swimlane#387) - Bug: Fix multi-select CTRL not working (swimlane#381)
- Chore: Upgrade Angular to ^2.4.1
- Docs: Multi-select
- BREAKING!!!! - Renamed project from
angular2-datatabletongx-datatableand updated components from<swui-datatable>to<ngx-datatable>
- BREAKING: Removed
shiftMultioption, its not useful and creates odd scenarios - Bug: Permanently high CPU utilization after sorting (swimlane#359)
- Bug: Fix checkbox showing in header if defined but not using checkbox select
- Bug: Fix AoT errors (swimlane#370)
- Bug: Fix build not outputing AoT files in correct directory
- Bug: Fix checkbox selection not working w/ shift key
- Chore: Upgrade Angular/Webpack
- Bug: Fix header checkbox mutating selection array
- Bug: Fix default selections and don't mutate selection arrow now
- Bug: Fix AoT by reverting TypeScript upgrade until CLI is updated
- Bug: Fix AoT private props (swimlane#352)
- Bug: Added null chk to selection getter (swimlane#340)
- Bug: multiShift not working after first page (swimlane#294)
- Chore: Update Angular to 2.3.0
- Chore: Update TypeScript to 2.1.x
- Chore: Update RxJS to 5.0.0-rc.4
- Chore: Update ZoneJS to 0.7.2
- Demo: Add templates for Webpack plugin for Google Analytics
- Bug: Fix footer not updating when all removes removed
- Bug: Fix Add/Remove items in array not updating (swimlane#255)
- Bug: Fix sizing method being debounced on view inits rather than just window resize.
- Bug: Fix memory leak with visibility observer
- Feature: Checkbox selection mode
- Enhancement: Selection mode auto added to host class for easier styling
- Style: Remove row active/select state when in cell mode of material theme
- Bug: Force fill column mode w/ scrollbarH false allowing bleed when resized
- Perf: Faster render time by adding css class via host
- Perf: Debounce window resize calcs
- BREAKING: Rename from
datatabletoswui-datatable(swimlane#320) - BREAKING: Redo how row-detail/cell/header templates are described in markup (swimlane#304)
- BREAKING: Change Detection switched back to normal
- Enhancement: Row Context Menu Event
rowContextmenu(swimlane#331) - Bug: Set default value for selected (swimlane#314)
- Bug: Fix widths being int vs float (swimlane#309)
- Bug: Fix column resize not setting widths to the right (swimlane#308)
- Bug: Fix row object mutations (swimlane#255)
- Bug: Async Problem when using @Input (swimlane#253)
- Bug: Sort doesn't work on the first click (swimlane#254)
- Bug: Pagination "skip to last page" is not selected after click (swimlane#324)
- Bug: ngFor Not working in the datatable-row-detail-template (swimlane#274)
- Chore: Resolve all implicit
anys (swimlane#330) - Chore: Bump Angular to latest
2.2.4
- Enhancement: Add RxJS Support
- Chore: Fix builds on windows
- Bug: Column headers not re-ordering (swimlane#238)
- Bug: Datatable doesn't sort data correctly when data changed (swimlane#284)
- BREAKING:
comparatornow is a normal sort function arguments ofpropA, propB.
- Bug: Custom comparator should return new array (swimlane#286)
- Bug: Init selection to empty array (swimlane#285)
- Enhancement:
externalSortinginput for simpler server-sorting usage (swimlane#281) - Enhancement: Add
trackByPropfor change detection with mutation of row data - Bug: Row height variable access protection (swimlane#280)
- Chore: Upgrade to Angular 2.2.0
- Demo: Inline editing updates
- Demo: Live data refresh demo
- Breaking: Remove
refreshmethod per recommendation by @robwormald
- Bug: Ignore next page when already at last (swimlane#223)
- Chore: Redid Webpack Config to be clean
- Chore: TESTS! TRAVIS BUILDS! COVERAGE REPORTING!
- Enhancement: Added
refreshAPI for updating table (swimlane#255) - Bug: Fix intersection observer type errors (swimlane#268)
- Bug: Fix force column width distribution overriding new resize (swimlane#245)
- Enhancement:
selectCheckfn to prevent selection - Bug: Fix columns leaking event handlers
- Bug: Fix column toggling errors (swimlane#245)
- Bug: Fix AoT Metadata not creating
- Bug: Fix columns loosing templates on resize (swimlane#252)
- Bug: Fix pager not having right pages when hidden by default
- Bug: Fix expressive column width as attribute with standard column distribution
- Bug: Fix body columns not readjusting after window resize (swimlane#251)
- Enhancement: Refactor
emptyMessageandtotalMessagetomessagesobject - Enhancement: Huge perf improvement for tables hidden by default
- Feature: NGC Complation
- Bug: Null value in deepValueGetter (swimlane#243)
- Chore: Update Depedencies
- Feature: Cell Selection and Keyboard Navigation
- Feature:
activationevents - Enhancement:
OnPushall the things! - Enhancement: Add
totalMessageoption for localization - Enhancement: Demo Page
- Enhancement: Page Count Formatted
- Enhancement: Automatically format column
propwhen nonamepassed - Enhancement: Add ability to pass false to
comparatorfor sort handling via event - Bug: Window resize not updating rows in virtual scrolling
- Chore: Switch to SemVer
- BREAKING:
TableOptionshas been removed and options areInputon component now - BREAKING:
TableColumnclass has been removed, just pass normal objects - BREAKING: Event names has been renamed using Angular2 standards
- BREAKING: Components have been renamed to Angular2 standards
- BREAKING: Removed
StateService
- Bug: Return empty string on undefined deep values (swimlane#232)
- Bug: Fix force fill alog (swimlane#218)
- Enhancement: Support for other icon types (swimlane#235)
- Enhancement: Add ability to identify rows for proper selection (swimlane#154)
- Enhancement: Add ability to define css icon classes for pager / header
- Chore: Uprade to Angular 2.1.1
- Chore: Polish on new build
- Chore: New build process
- Bug: Fix detail row bug (swimlane#212)
- Bug: Fix
$$expandedundefined with server paging (swimlane#210)
- Chore: Upgrade to Angular 2.1.0 (swimlane#202)
- Chore: Removed engine restrictions (swimlane#195)
- Bug: windows builds with node-sass (swimlane#207)
- Bug: resizing not closing correctly (swimlane#196)
- Bug: Fix height paging (swimlane#208)
- Enhancement: Improve Active CSS (swimlane#204)
- Enhancement: Add Empty Message (swimlane#194)
- Enhancement: Add deep value getter to sortRows function (swimlane#181)
- Enhancement: Sort Classes are applied to body cells (swimlane#166)
- Enhancement: AoT Compatibility (swimlane#199)
- Feature: Row Detail (swimlane#201)
- Column resize sometimes gives weird behaviour on mouse resize/click (swimlane#155)
- Fix order of setters in DataTable ngOnChanges (swimlane#179)
- Remove document event listener subscription leak in draggable & resizeable
- Fix
setScrollTopundefined error (swimlane#182)
- Fix
namebeingundefinedintroduced in 0.9.0 release
- Export component references for external consumption (swimlane#176)
- Fix accidental breaking change of renaming
HeaderCellcolumn property tomodel. See commit. - Ensure minWidth and maxWidth values are specified saved as numbers (swimlane#167)
- Add row double click option (swimlane#168)
- Added the ability to define header templates expressively
Breaking Change! Renamed
templatetocellTemplatein column options
- Removed swimlane#142 in favor of style height
- Fixed issue with height + scrollbarV not sizing right
- Fix limit not applied (swimlane#133)
- Fix sort not resetting to top of page (swimlane#136)
- Added option validation
- Huge perf bumps (swimlane#149)
- Build fixes
- Removed template wrapper in favor of native template outlet
- Upgrade Angular 2.0.1 & ZoneJS
- Angular Code Style Compliance (swimlane#147)
- Fix initial load of rows jumbled (swimlane#156)
- Update row/options setting to ngOnChanges (swimlane#151)
- Fix column height not set correctly (swimlane#144)
- Virtual Scrolling Emits Paging (swimlane#130)
- Update to Angular 2.0.0!
- Fix horizontal header issue (swimlane#129)
- Fixed Multiple Tables on Same Page (swimlane#103)
- Fix TS Helpers not being included in release (swimlane#107)
- Update
onPageAPI to reflect docs (swimlane#116)
- Upgrade to Angular2 RC7