Skip to content

Commit edbd117

Browse files
Update to Angular 20 (#32401)
1 parent 934d02f commit edbd117

15 files changed

Lines changed: 2611 additions & 2540 deletions

File tree

packages/devextreme-angular/package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020
"author": "Developer Express Inc.",
2121
"license": "MIT",
2222
"peerDependencies": {
23-
"@angular/common": ">=19.0.0",
24-
"@angular/core": ">=19.0.0",
25-
"@angular/forms": ">=19.0.0",
23+
"@angular/common": ">=20.0.0",
24+
"@angular/core": ">=20.0.0",
25+
"@angular/forms": ">=20.0.0",
2626
"devextreme": "workspace:*"
2727
},
2828
"devDependencies": {
@@ -40,8 +40,8 @@
4040
"@eslint/eslintrc": "catalog:",
4141
"@eslint-stylistic/metadata": "catalog:",
4242
"@stylistic/eslint-plugin": "catalog:",
43-
"@types/jasmine": "2.8.24",
44-
"@types/node": "20.11.17",
43+
"@types/jasmine": "~6.0.0",
44+
"@types/node": "~20.19.0",
4545
"@typescript-eslint/eslint-plugin": "catalog:",
4646
"@typescript-eslint/parser": "catalog:",
4747
"@webcomponents/custom-elements": "1.6.0",
@@ -65,7 +65,7 @@
6565
"reflect-metadata": "0.1.13",
6666
"stream-browserify": "3.0.0",
6767
"style-loader": "3.3.4",
68-
"tslib": "2.6.3",
68+
"tslib": "2.8.1",
6969
"typescript": "catalog:angular",
7070
"webpack": "5.105.4",
7171
"yargs": "17.7.2",

packages/devextreme-angular/src/common/data/custom-store/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export {
1+
export type {
22
GroupItem,
33
isGroupItemsArray,
44
isItemsArray,

packages/devextreme-angular/src/core/integration.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,15 @@ import eventsEngine from 'devextreme/common/core/events/core/events_engine';
1212
const outsideZoneEvents = ['mousemove', 'mouseover', 'mouseout'];
1313
const insideZoneEvents = ['mouseup', 'click', 'mousedown', 'transitionend', 'wheel'];
1414

15-
let originalAdd;
16-
let callbacks = [];
17-
let readyCallbackAdd = function (callback) {
15+
type ReadyCallback = () => void;
16+
type ReadyCallbackAdd = (callback: ReadyCallback) => void;
17+
interface ReadyCallbackAddContext {
18+
callBase: ReadyCallbackAdd;
19+
}
20+
21+
let originalAdd: ReadyCallbackAdd;
22+
let callbacks: ReadyCallback[] = [];
23+
let readyCallbackAdd = function (this: ReadyCallbackAddContext, callback: ReadyCallback) {
1824
if (!originalAdd) {
1925
originalAdd = this.callBase.bind(this);
2026
}
@@ -36,7 +42,7 @@ let doInjections = (document: any, ngZone: NgZone, xhrFactory: XhrFactory) => {
3642
domAdapter.inject({
3743
_document: document,
3844

39-
listen(...args) {
45+
listen(this: { callBase: (...args: any[]) => any }, ...args) {
4046
const eventName = args[1];
4147
if (outsideZoneEvents.includes(eventName)) {
4248
return ngZone.runOutsideAngular(() => this.callBase.apply(this, args));

packages/devextreme-angular/src/core/iterable-differ-helper.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export class IterableDifferHelper {
3434
if (value && Array.isArray(value)) {
3535
if (!this._propertyDiffers[prop]) {
3636
try {
37-
this._propertyDiffers[prop] = this._differs.find(value).create(null);
37+
this._propertyDiffers[prop] = this._differs.find(value).create(undefined);
3838
return true;
3939
// eslint-disable-next-line @typescript-eslint/no-unused-vars
4040
} catch (e) { }

packages/devextreme-angular/src/core/nested-option.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,14 +220,17 @@ export interface IOptionWithTemplate extends BaseNestedOption {
220220
template: any;
221221
}
222222

223-
const triggerShownEvent = function (element) {
224-
const changeHandlers = [];
223+
const triggerShownEvent = function (element: Element) {
224+
const changeHandlers: Element[] = [];
225225

226226
if (!render(element).hasClass(VISIBILITY_CHANGE_SELECTOR)) {
227227
changeHandlers.push(element);
228228
}
229229

230-
changeHandlers.push.apply(changeHandlers, element.querySelectorAll(`.${VISIBILITY_CHANGE_SELECTOR}`));
230+
const nestedHandlers = Array.prototype.slice.call(
231+
element.querySelectorAll(`.${VISIBILITY_CHANGE_SELECTOR}`),
232+
) as Element[];
233+
changeHandlers.push(...nestedHandlers);
231234

232235
for (let i = 0; i < changeHandlers.length; i++) {
233236
triggerHandler(changeHandlers[i], 'dxshown');

packages/devextreme-angular/src/core/watcher-helper.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export class WatcherHelper {
5959
return value;
6060
}
6161

62-
private _checkObjectsFields(checkingFromObject: object, checkingToObject: object) {
62+
private _checkObjectsFields(checkingFromObject: Record<string, any>, checkingToObject: Record<string, any>) {
6363
for (const field in checkingFromObject) {
6464
const oldValue = this._toComparable(checkingFromObject[field]);
6565
const newValue = this._toComparable(checkingToObject[field]);
@@ -72,6 +72,7 @@ export class WatcherHelper {
7272
return true;
7373
}
7474
}
75+
return false;
7576
}
7677

7778
checkWatchers() {

packages/devextreme-angular/src/index.ts

Lines changed: 265 additions & 1 deletion
Large diffs are not rendered by default.

packages/devextreme-angular/tests/src/server/ssr-ajax.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,10 @@ describe('Universal', () => {
6262
});
6363
// spec
6464
it('should set state and remove data from the state when the request is repeated', () => {
65-
const platformId = TestBed.get(PLATFORM_ID);
65+
const platformId = TestBed.inject(PLATFORM_ID);
6666
if (isPlatformServer(platformId)) {
6767
sendRequest.apply(mockSendRequest, [{ url: 'someurl' }]);
68-
const transferState: TransferState = TestBed.get(TransferState);
68+
const transferState: TransferState = TestBed.inject(TransferState);
6969
const key = makeStateKey('0urlsomeurl');
7070

7171
expect(transferState.hasKey(key)).toBe(true);
@@ -74,11 +74,11 @@ describe('Universal', () => {
7474
});
7575

7676
it('should generate complex key', () => {
77-
const platformId = TestBed.get(PLATFORM_ID);
77+
const platformId = TestBed.inject(PLATFORM_ID);
7878
if (isPlatformServer(platformId)) {
7979
sendRequest.apply(mockSendRequest, [{ url: 'someurl', data: { filter: { name: 'test' }, select: ['name'] } }]);
8080
const key = makeStateKey('0urlsomeurldatafilternametestselect0name');
81-
const transferState: TransferState = TestBed.get(TransferState);
81+
const transferState: TransferState = TestBed.inject(TransferState);
8282

8383
expect(transferState.hasKey(key)).toBe(true);
8484
}

packages/devextreme-angular/tests/src/server/ssr-is-platform-server.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,12 @@ describe('Universal', () => {
5050
template: '<dx-data-grid></dx-data-grid>',
5151
},
5252
});
53-
const platformID = TestBed.get(PLATFORM_ID);
53+
const platformID = TestBed.inject(PLATFORM_ID);
5454
if (isPlatformServer(platformID)) {
5555
const fixture = TestBed.createComponent(TestContainerComponent);
5656
fixture.detectChanges();
5757

58-
const transferState: TransferState = TestBed.get(TransferState);
58+
const transferState: TransferState = TestBed.inject(TransferState);
5959

6060
expect(transferState.hasKey(getServerStateKey())).toBe(true);
6161
expect(transferState.get(getServerStateKey(), null as any)).toEqual(true);
@@ -70,7 +70,7 @@ describe('Universal', () => {
7070
});
7171

7272
const fixture = TestBed.createComponent(TestContainerComponent);
73-
const transferState: TransferState = TestBed.get(TransferState);
73+
const transferState: TransferState = TestBed.inject(TransferState);
7474

7575
transferState.set(getServerStateKey(), true as any);
7676

packages/devextreme-angular/tests/src/ui/data-grid.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -591,7 +591,7 @@ describe('DxDataGrid slow tests', () => {
591591

592592
fixture.detectChanges();
593593

594-
for (let i = 0; i < 100; i++) {
594+
for (let i = 0; i < 500; i++) {
595595
document.body.click();
596596
fixture.detectChanges();
597597
}
@@ -600,7 +600,7 @@ describe('DxDataGrid slow tests', () => {
600600

601601
const memoryBefore = await (performance as any).measureUserAgentSpecificMemory();
602602

603-
for (let i = 0; i < 100; i++) {
603+
for (let i = 0; i < 500; i++) {
604604
document.body.click();
605605
fixture.detectChanges();
606606
}
@@ -610,6 +610,6 @@ describe('DxDataGrid slow tests', () => {
610610
const memoryAfter = await (performance as any).measureUserAgentSpecificMemory();
611611
const memoryDiff = Math.round((memoryAfter.bytes - memoryBefore.bytes) / 1024);
612612

613-
expect(memoryDiff).toBeLessThan(40);
613+
expect(memoryDiff).toBeLessThan(100);
614614
});
615615
});

0 commit comments

Comments
 (0)