Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
3c70df0
fix: allow partial overrides of CSS classes (#151)
spike-rabbit Feb 27, 2025
0c7c2fa
refactor: use interface for row properties that may be set by the dat…
spike-rabbit Mar 2, 2025
6522163
fix: allow partial overrides of messages (#152)
spike-rabbit Mar 10, 2025
724a6ae
refactor: only export symbols that are meant to be exported
spike-rabbit Feb 26, 2025
bd5eca0
refactor: simplify column directive converting (#154)
spike-rabbit Mar 10, 2025
156fb64
refactor: always use type event (#158)
spike-rabbit Mar 10, 2025
0edece6
refactor: remove useless cleanup (#164)
spike-rabbit Mar 13, 2025
9463109
fix: only run disabled check on rows
spike-rabbit Mar 11, 2025
325d819
refactor: enable `strictFunctionTypes` (#165)
spike-rabbit Mar 17, 2025
477d7cf
fix: add missing type to comparator (#167)
spike-rabbit Mar 17, 2025
90aa038
refactor: add dedicated type for `SelectEvent` (#168)
spike-rabbit Mar 18, 2025
1369f60
remove non-existent offsetX input
MarkColeman1 Jun 26, 2025
fc84e35
docs: use HttpClient (#166)
spike-rabbit Mar 18, 2025
c36a3e3
fix import
MarkColeman1 Jun 26, 2025
0785d95
docs: add missing type for sorting (#172)
spike-rabbit Mar 24, 2025
e0704b3
docs: add missing type for server paging (#169)
spike-rabbit Mar 24, 2025
a2f03e1
docs: fix typing of cell class (#175)
spike-rabbit Mar 24, 2025
198bf17
refactor: simplify column in group iteration (#180)
spike-rabbit Mar 24, 2025
37356eb
refactor: add missing internal types (#178)
spike-rabbit Mar 24, 2025
5f85e66
refactor: disable type check around detail height (#179)
spike-rabbit Mar 24, 2025
ca19c39
refactor: adjust the type of rowClass as it is never called with grou…
spike-rabbit Mar 24, 2025
d4ee067
feat: add type for context menu event (#174)
spike-rabbit Mar 24, 2025
adfc368
refactor: simplify total width calculation (#177)
spike-rabbit Mar 24, 2025
a4cf1a8
docs: add missing type for functions (#170)
spike-rabbit Mar 24, 2025
50f1a97
feat: add type for details toggle event (#173)
spike-rabbit Mar 24, 2025
af02196
docs: add missing type for updateValue functions (#171)
spike-rabbit Mar 24, 2025
b19ce8e
test: clean up test code (#127)
spike-rabbit Mar 25, 2025
5c09e89
refactor: always use the same event type for reorder columns (#186)
spike-rabbit Mar 25, 2025
fd8d654
refactor: remove unused code in long-press directive (#182)
spike-rabbit Mar 25, 2025
6aded15
refactor: introduce new `TableColumnInternal` interface to remove int…
spike-rabbit Mar 25, 2025
4633019
update column type in math.ts to fix build
MarkColeman1 Jun 26, 2025
9c7f1ed
add type cast in math.spec.ts
MarkColeman1 Jun 26, 2025
c9ea5bc
refactor: move header styles to the component (#187)
spike-rabbit Mar 25, 2025
2088dbb
refactor: remove implicit this in the throttle decorator (#189)
spike-rabbit Mar 25, 2025
d93574c
refactor: remove implicit this from tree grouping (#188)
spike-rabbit Mar 25, 2025
72c3311
refactor: avoid redundant value lookup in map (#191)
spike-rabbit Mar 25, 2025
87b6c55
refactor: reflect in type that messages and cssClasses configs are al…
spike-rabbit Mar 25, 2025
5a5ccfa
build: remove browserlist (#194)
spike-rabbit Mar 25, 2025
14ac2a3
refactor: move footer styles to a component level (#198)
spike-rabbit Mar 25, 2025
3267f3c
refactor: replace useless subject (#195)
spike-rabbit Mar 25, 2025
9b4e59b
docs: migrate examples to standalone (#197)
spike-rabbit Mar 26, 2025
db448ff
docs: bootstrap application in a standalone way (#200)
spike-rabbit Mar 26, 2025
b1db41b
fix import in main.ts
MarkColeman1 Jun 26, 2025
1ec7119
refactor: add undefined to types were needed
spike-rabbit Mar 26, 2025
21f8435
refactor: remove unused vendor prefixes (#193)
spike-rabbit Mar 26, 2025
df999e4
docs: lazy load examples (#201)
spike-rabbit Mar 26, 2025
fb050df
refactor: remove column resize directive
chintankavathia Nov 13, 2024
2243bdc
test: unit tests for header cell
chintankavathia Mar 11, 2025
64be85b
fix: apply even/odd classes correctly when rows are grouped (#111)
spike-rabbit Mar 27, 2025
ce7dbd8
refactor: deprecate `PageEvent.limit` (#196)
spike-rabbit Mar 27, 2025
adf9d69
refactor: move body styles to component level (#202)
spike-rabbit Mar 27, 2025
ae0ad7c
refactor: simplify tree construction (#205)
spike-rabbit Mar 27, 2025
94fa8a8
refactor: move fixed-header styles to component level (#203)
spike-rabbit Mar 27, 2025
4df53b0
refactor: make column resize handling typesafe (#204)
spike-rabbit Mar 27, 2025
49a8cba
refactor: remove duplicate template code
chintankavathia Feb 28, 2025
3ed71c9
refactor: remove custom test matchers
chintankavathia Mar 28, 2025
ebeb57d
update lint rules
MarkColeman1 Jun 26, 2025
51e77ad
fix: remove unwanted space below the rows (#214)
spike-rabbit Mar 30, 2025
40ac6a0
refactor: move horizontal scroll styles to respective components (#211)
spike-rabbit Mar 31, 2025
9215e69
refactor: ensure that rows are always defined internally (#192)
spike-rabbit Mar 31, 2025
7a82386
refactor: tree level should start from 0
chintankavathia Mar 28, 2025
bab00e2
refactor: remove unused styles (#217)
spike-rabbit Mar 31, 2025
29cafb3
refactor: move fixed-row styles to respective components (#218)
spike-rabbit Apr 2, 2025
dc2b6ba
refactor: don't render wrapper if col group columns are empty
chintankavathia Apr 9, 2025
8f35d45
refactor: remove explicit standalone flags (#222)
chintankavathia May 27, 2025
233c6a3
refactor: move display related styles to respective components (#221)
spike-rabbit May 27, 2025
9959fc4
feat: add touch support for reorderable and resizable features (#181)
ColinFrick May 28, 2025
59b834f
feat: include pager aria labels in text messages
delbertooo May 21, 2025
db1b749
fix: introduce a default value for rows
delbertooo Jun 4, 2025
6927390
refactor: remove unnecessary checks
delbertooo Jun 6, 2025
881add3
refactor: move selection component into the body component (#213)
spike-rabbit Jun 10, 2025
55588df
perf: only calculate render offset once for all rows (#210)
spike-rabbit Jun 10, 2025
f2f2cc1
refactor: calculate actual index based on index offset (#212)
spike-rabbit Jun 10, 2025
436b197
refactor: add missing Row type for TRow (#234)
spike-rabbit Jun 11, 2025
c82c33d
refactor: add missing null and declaration (#237)
spike-rabbit Jun 11, 2025
d251668
refactor: merge contexts into one object to avoid type issues (#235)
spike-rabbit Jun 11, 2025
df8379e
refactor: drop useless group signal (#236)
spike-rabbit Jun 11, 2025
4a30874
fix: prevent errors with row-specific ghost in combination with group…
spike-rabbit Jun 13, 2025
ebd9afe
refactor: move ghost loading out of cells (#239)
spike-rabbit Jun 16, 2025
659ecd5
refactor: remove unused internal event (#206)
spike-rabbit Jun 16, 2025
3939475
refactor: drop useless stable sort code (#244)
spike-rabbit Jun 16, 2025
4a4f644
refactor: allow undefined on internal prop (#243)
spike-rabbit Jun 16, 2025
9bea63b
refactor: split activation event (#245)
spike-rabbit Jun 17, 2025
02dcc7d
Refactor/fine tune api (#246)
spike-rabbit Jun 17, 2025
610986f
feat: include sorts in page event (#248)
spike-rabbit Jun 17, 2025
f5cb3ea
Refactor/enable strict null checks (#247)
spike-rabbit Jun 17, 2025
2708451
refactor: drop unused inputs of footer directive (#249)
spike-rabbit Jun 17, 2025
38800ac
refactor: remove unused ghost loading input internally (#251)
spike-rabbit Jun 18, 2025
3408754
Refactor/enable strict init checks (#250)
spike-rabbit Jun 18, 2025
3bf8f4a
refactor: move cell styles into respective components (#254)
spike-rabbit Jun 20, 2025
59b1f48
refactor: move or replace `[hidden]` style to drop in from global sty…
spike-rabbit Jun 22, 2025
952670b
refactor: move scroll-vertical style to the body component (#258)
spike-rabbit Jun 22, 2025
3ac908e
refactor: remove general `box-sizing: border-box` (#256)
spike-rabbit Jun 22, 2025
4a4155c
feat: introduce a new `providedNgxDatatableConfig` for a standalone w…
spike-rabbit Jun 22, 2025
86c21d2
refactor: all header pinned columns should be flex (#253)
spike-rabbit Jun 22, 2025
b89b221
refactor: base internal row length on rowCount property (#261)
spike-rabbit Jun 24, 2025
d3ddab3
refactor: enable view encapsulation on root component
spike-rabbit Jun 24, 2025
28a7470
fix: fix keyboard interaction for cell selection mode
Killusions Jun 24, 2025
23ab901
refactor: migrate to input signals
ColinFrick Jun 24, 2025
11ddc36
upgrade angular cli to v20
MarkColeman1 Jun 26, 2025
71ecabb
upgrade node and yarn
MarkColeman1 Jun 26, 2025
b331976
upgraded angular packages to v20
MarkColeman1 Jun 26, 2025
9b25059
upgraded the rest of the angular packages and removed support for ang…
MarkColeman1 Jun 26, 2025
59534d9
fix linting errors
MarkColeman1 Jun 26, 2025
68eb9b8
remove all occurrences of standalone from component decorators
MarkColeman1 Jun 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 0 additions & 12 deletions .browserslistrc

This file was deleted.

7 changes: 1 addition & 6 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,7 @@ module.exports = {
rules: {
'@angular-eslint/no-attribute-decorator': 'error',
'@angular-eslint/no-forward-ref': 'error',
'@angular-eslint/no-host-metadata-property': [
'error',
{
'allowStatic': true
}
],
'@angular-eslint/no-host-metadata-property': 'off',
'brace-style': 'off',
'no-bitwise': 'off',
'comma-dangle': 'off',
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/test_and_deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 20.17.0
node-version: 22.16.0

- name: Enable Corepack
run: corepack enable

- name: Install Yarn
run: corepack prepare yarn@4.5.1 --activate
run: corepack prepare yarn@4.9.2 --activate

- name: Install dependencies
run: yarn install --immutable
Expand Down
18 changes: 17 additions & 1 deletion docs/api/table/inputs.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,23 @@ Static messages in the table you can override for localization.
totalMessage: 'total',

// Footer selected message
selectedMessage: 'selected'
selectedMessage: 'selected',

// Pager screen reader message for the first page button
ariaFirstPageMessage: 'go to first page',

// Pager screen reader message for the previous page button
ariaPreviousPageMessage: 'go to previous page',

// Pager screen reader message for the n-th page button.
// It will be rendered as: `{{ariaPageNMessage}} {{n}}`.
ariaPageNMessage: 'page',

// Pager screen reader message for the next page button
ariaNextPageMessage: 'go to next page',

// Pager screen reader message for the last page button
ariaLastPageMessage: 'go to last page'
}
```

Expand Down
11 changes: 0 additions & 11 deletions docs/api/table/outputs.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,6 @@ A cell or row was focused via keyboard or mouse click.
}
```

### `detailToggle`

Row detail row was toggled.

```
{
rows
currentIndex
}
```

### `page`

The table was paged either triggered by the pager or the body scroll.
Expand Down
50 changes: 25 additions & 25 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,31 +31,31 @@
},
"private": true,
"dependencies": {
"@angular/animations": "^19.1.4",
"@angular/cdk": "^18.2.14",
"@angular/common": "^19.1.4",
"@angular/compiler": "^19.1.4",
"@angular/core": "^19.1.4",
"@angular/forms": "^19.1.4",
"@angular/platform-browser": "^19.1.4",
"@angular/platform-browser-dynamic": "^19.1.4",
"@angular/router": "^19.1.4",
"@angular/animations": "^20.0.5",
"@angular/cdk": "^20.0.4",
"@angular/common": "^20.0.5",
"@angular/compiler": "^20.0.5",
"@angular/core": "^20.0.5",
"@angular/forms": "^20.0.5",
"@angular/platform-browser": "^20.0.5",
"@angular/platform-browser-dynamic": "^20.0.5",
"@angular/router": "^20.0.5",
"rxjs": "~7.8.1",
"tslib": "~2.4.0",
"zone.js": "~0.15.0"
},
"devDependencies": {
"@angular-devkit/build-angular": "^19.1.4",
"@angular-devkit/core": "^19.1.4",
"@angular-devkit/schematics": "^19.1.4",
"@angular-eslint/builder": "^18.0.0",
"@angular-eslint/eslint-plugin": "^18.0.0",
"@angular-eslint/eslint-plugin-template": "^18.0.0",
"@angular-eslint/schematics": "^18.0.0",
"@angular-eslint/template-parser": "^18.0.0",
"@angular/cli": "^19.1.6",
"@angular/compiler-cli": "^19.1.4",
"@angular/language-service": "^19.1.4",
"@angular-devkit/build-angular": "^20.0.4",
"@angular-devkit/core": "^20.0.4",
"@angular-devkit/schematics": "^20.0.4",
"@angular-eslint/builder": "^20.1.1",
"@angular-eslint/eslint-plugin": "^20.1.1",
"@angular-eslint/eslint-plugin-template": "^20.1.1",
"@angular-eslint/schematics": "^20.1.1",
"@angular-eslint/template-parser": "^20.1.1",
"@angular/cli": "^20.0.4",
"@angular/compiler-cli": "^20.0.5",
"@angular/language-service": "^20.0.5",
"@swimlane/eslint-config": "^2.0.0",
"@swimlane/prettier-config-swimlane": "^3.0.2",
"@types/jasmine": "4.3.0",
Expand Down Expand Up @@ -87,24 +87,24 @@
"karma-coverage-istanbul-reporter": "^3.0.3",
"karma-jasmine": "5.1.0",
"karma-jasmine-html-reporter": "2.0.0",
"ng-packagr": "^19.0.0",
"ng-packagr": "^20.0.1",
"npm-run-all": "^4.1.5",
"prettier": "2.7.1",
"pretty-quick": "3.1.3",
"protractor": "~7.0.0",
"sass": "^1.77.6",
"scss-bundle": "^3.1.1",
"ts-node": "10.9.1",
"typescript": "5.7.3"
"typescript": "5.8.3"
},
"husky": {
"hooks": {
"pre-commit": "pretty-quick --staged"
}
},
"volta": {
"node": "20.14.0",
"yarn": "4.5.1"
"node": "22.16.0",
"yarn": "4.9.2"
},
"packageManager": "yarn@4.5.1"
"packageManager": "yarn@4.9.2"
}
6 changes: 3 additions & 3 deletions projects/swimlane/ngx-datatable/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
"version": "21.1.0",
"description": "ngx-datatable is an Angular table grid component for presenting large and complex data.",
"peerDependencies": {
"@angular/common": "17.x || 18.x || 19.x",
"@angular/core": "17.x || 18.x || 19.x",
"@angular/platform-browser": "17.x || 18.x || 19.x",
"@angular/common": "18.x || 19.x || 20.x",
"@angular/core": "18.x || 19.x || 20.x",
"@angular/platform-browser": "18.x || 19.x || 20.x",
"rxjs": "7.x"
},
"dependencies": {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
@use '../shared';

:host {
@include shared.cell-styles();
}

:host-context(ngx-datatable.fixed-row) :host {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
Original file line number Diff line number Diff line change
@@ -1,43 +1,24 @@
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';

import { numericIndexGetter } from '../../utils/column-prop-getters';
import { setColumnDefaults } from '../../utils/column-helper';
import { TableColumn } from '../../types/table-column.type';
import { toInternalColumn } from '../../utils/column-helper';
import { DataTableBodyCellComponent } from './body-cell.component';

describe('DataTableBodyCellComponent', () => {
let fixture: ComponentFixture<DataTableBodyCellComponent>;
let component: DataTableBodyCellComponent;

// provide our implementations or mocks to the dependency injector
beforeEach(() => {
TestBed.configureTestingModule({
imports: [DataTableBodyCellComponent]
});
});

beforeEach(waitForAsync(() => {
TestBed.compileComponents().then(() => {
fixture = TestBed.createComponent(DataTableBodyCellComponent);
component = fixture.componentInstance;
});
fixture = TestBed.createComponent(DataTableBodyCellComponent);
component = fixture.componentInstance;
}));

describe('fixture', () => {
it('should have a component instance', () => {
expect(component).toBeTruthy();
});
});

describe('prop tests', () => {
// verify there wasn't a mistake where the falsey 0 value
// resulted in a code path for missing column prop
it('should get value from zero-index prop', () => {
component.row = ['Hello'];
const columns: TableColumn[] = [{ name: 'First Column', prop: 0 }];
// users should never set columns on DataTableBodyCellComponent directly
// setColumnDefaults will be run on columns before they are set on BodyCellComponent
setColumnDefaults(columns);
const columns = toInternalColumn([{ name: 'First Column', prop: 0 }]);
expect(columns[0].$$valueGetter).toBe(numericIndexGetter);

component.column = columns[0];
Expand Down
Loading