Skip to content

Commit 3462b4d

Browse files
Merge branch '25_2_update_angular19' of https://github.com/GoodDayForSurf/DevExtreme into 25_2_update_angular19
# Conflicts: # packages/devextreme-angular/package.json # pnpm-lock.yaml
2 parents 5a9de7d + b2e716e commit 3462b4d

File tree

1,334 files changed

+20330
-17488
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,334 files changed

+20330
-17488
lines changed

.github/workflows/demos_visual_tests.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ jobs:
190190
build-demos:
191191
runs-on: devextreme-shr2
192192
name: Build Demos Bundles
193-
timeout-minutes: 20
193+
timeout-minutes: 30
194194
needs: [check-should-run, determine-framework-tests-scope, build-devextreme]
195195
if: |
196196
always() &&
@@ -271,7 +271,7 @@ jobs:
271271
needs.determine-framework-tests-scope.outputs.framework-tests-scope != 'none' &&
272272
needs.build-devextreme.result == 'success'
273273
runs-on: devextreme-shr2
274-
timeout-minutes: 20
274+
timeout-minutes: 30
275275

276276
steps:
277277
- name: Get sources
@@ -310,17 +310,17 @@ jobs:
310310
- name: Install tgz
311311
run: pnpm add -w ./devextreme-installer.tgz ./devextreme-dist-installer.tgz ./devextreme-react-installer.tgz ./devextreme-vue-installer.tgz ./devextreme-angular-installer.tgz
312312

313-
- name: Run check TS for Vue
313+
- name: Demos - Check Vue TS
314314
working-directory: apps/demos
315315
run: pnpm run ts-check-vue
316316

317317
# - name: Run check TS for Angular
318318
# working-directory: apps/demos
319319
# run: pnpm run ts-check-ng
320320

321-
# - name: Run check TS for React
322-
# working-directory: apps/demos
323-
# run: pnpm run ts-check-react
321+
- name: Demos - Check React TS
322+
working-directory: apps/demos
323+
run: pnpm run ts-check-react
324324

325325
lint:
326326
name: Lint code base

.github/workflows/packages_publishing.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,15 @@ jobs:
9696
- name: Build artifacts package
9797
run: npx ts-node tools/scripts/make-artifacts-package
9898

99-
- uses: actions/upload-artifact@v4
99+
- name: Upload SBOM artifact
100+
uses: actions/upload-artifact@v4
101+
with:
102+
name: sbom
103+
path: packages/sbom/dist
104+
retention-days: 7
105+
106+
- name: Upload packages
107+
uses: actions/upload-artifact@v4
100108
with:
101109
name: packages
102110
path: artifacts/npm/*.tgz

apps/angular/angular.json

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,22 @@
1111
"schematics": {},
1212
"architect": {
1313
"build": {
14-
"builder": "@angular-devkit/build-angular:browser",
14+
"builder": "@angular-devkit/build-angular:application",
1515
"options": {
16-
"outputPath": "dist/sandbox",
16+
"outputPath": {
17+
"base": "dist/sandbox"
18+
},
1719
"index": "src/index.html",
18-
"main": "src/main.ts",
19-
"polyfills": "src/polyfills.ts",
20+
"polyfills": [
21+
"src/polyfills.ts"
22+
],
2023
"tsConfig": "src/tsconfig.app.json",
2124
"styles": [
2225
"node_modules/devextreme/dist/css/dx.common.css",
2326
"node_modules/devextreme/dist/css/dx.light.css"
2427
],
25-
"scripts": []
28+
"scripts": [],
29+
"browser": "src/main.ts"
2630
},
2731
"configurations": {
2832
"production": {
@@ -38,8 +42,6 @@
3842
"namedChunks": false,
3943
"aot": true,
4044
"extractLicenses": true,
41-
"vendorChunk": false,
42-
"buildOptimizer": true,
4345
"budgets": [
4446
{
4547
"type": "initial",
@@ -54,23 +56,21 @@
5456
"sourceMap": true,
5557
"namedChunks": false,
5658
"aot": true,
57-
"extractLicenses": true,
58-
"vendorChunk": false,
59-
"buildOptimizer": false
59+
"extractLicenses": true
6060
}
6161
}
6262
},
6363
"serve": {
6464
"builder": "@angular-devkit/build-angular:dev-server",
6565
"options": {
66-
"browserTarget": "sandbox:build"
66+
"buildTarget": "sandbox:build"
6767
},
6868
"configurations": {
6969
"production": {
70-
"browserTarget": "sandbox:build:production"
70+
"buildTarget": "sandbox:build:production"
7171
},
7272
"dev": {
73-
"browserTarget": "sandbox:build:dev"
73+
"buildTarget": "sandbox:build:dev"
7474
}
7575
}
7676
},

apps/angular/package.json

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,31 +6,29 @@
66
"author": "Developer Express Inc.",
77
"license": "MIT",
88
"dependencies": {
9-
"@angular/animations": "17.3.12",
10-
"@angular/common": "17.3.12",
11-
"@angular/compiler": "17.3.12",
12-
"@angular/compiler-cli": "17.3.12",
13-
"@angular/core": "17.3.12",
14-
"@angular/forms": "17.3.12",
15-
"@angular/platform-browser": "17.3.12",
16-
"@angular/platform-browser-dynamic": "17.3.12",
17-
"@angular/router": "17.3.12",
9+
"@angular/animations": "19.2.15",
10+
"@angular/common": "19.2.15",
11+
"@angular/compiler": "19.2.15",
12+
"@angular/compiler-cli": "19.2.15",
13+
"@angular/core": "19.2.15",
14+
"@angular/forms": "19.2.15",
15+
"@angular/platform-browser": "19.2.15",
16+
"@angular/platform-browser-dynamic": "19.2.15",
17+
"@angular/router": "19.2.17",
1818
"core-js": "^2.6.12",
1919
"devextreme": "workspace:*",
2020
"devextreme-angular": "workspace:*",
21-
"rxjs": "7.8.1",
2221
"tslib": "^2.6.1",
23-
"zone.js": "0.14.10"
22+
"zone.js": "0.15.1"
2423
},
2524
"devDependencies": {
26-
"@angular-devkit/build-angular": "17.3.11",
27-
"@angular/cli": "17.3.11",
28-
"@angular/language-service": "17.3.12",
25+
"@angular-devkit/build-angular": "19.2.19",
26+
"@angular/cli": "19.2.18",
2927
"@types/jasmine": "5.1.4",
3028
"@types/node": "20.11.17",
3129
"cross-env": "7.0.3",
3230
"ts-node": "10.9.2",
33-
"typescript": "5.4.5"
31+
"typescript": "5.8.3"
3432
},
3533
"scripts": {
3634
"ng": "ng",

apps/angular/src/app/app.component.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
/* tslint:disable:component-selector */
2-
32
import {
43
Component,
54
OnInit,
@@ -95,7 +94,8 @@ import ArrayStore from 'devextreme/data/array_store';
9594
CustomerService,
9695
AppointmentService,
9796
OwnerService
98-
]
97+
],
98+
standalone: false
9999
})
100100
export class AppComponent implements OnInit, AfterViewInit {
101101
@ViewChild(DxPopoverComponent) popover: DxPopoverComponent;

apps/angular/src/app/app.module.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { BrowserModule } from '@angular/platform-browser';
33
import { ReactiveFormsModule } from '@angular/forms';
44
import { AppComponent } from './app.component';
55

6-
76
import { DevExtremeModule } from 'devextreme-angular';
87

98
@NgModule({

apps/angular/tsconfig.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,11 @@
55
"outDir": "./dist/out-tsc",
66
"sourceMap": true,
77
"declaration": false,
8-
"module": "es2015",
8+
"module": "ES2022",
99
"moduleResolution": "node",
1010
"emitDecoratorMetadata": true,
1111
"experimentalDecorators": true,
1212
"importHelpers": true,
13-
"target": "es5",
1413
"typeRoots": [
1514
"node_modules/@types"
1615
],
Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
import { NgModule, Component, enableProdMode } from '@angular/core';
2-
import { BrowserModule } from '@angular/platform-browser';
3-
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
4-
1+
import { Component, enableProdMode, provideZoneChangeDetection } from '@angular/core';
2+
import { bootstrapApplication } from '@angular/platform-browser';
53
import {
64
DxAccordionModule, DxCheckBoxModule, DxSliderModule, DxTagBoxModule,
75
} from 'devextreme-angular';
@@ -24,6 +22,12 @@ if (window && window.config?.packageConfigPaths) {
2422
styleUrls: [`.${modulePrefix}/app.component.css`],
2523
providers: [Service],
2624
preserveWhitespaces: true,
25+
imports: [
26+
DxAccordionModule,
27+
DxCheckBoxModule,
28+
DxSliderModule,
29+
DxTagBoxModule,
30+
],
2731
})
2832
export class AppComponent {
2933
companies: Company[];
@@ -33,17 +37,8 @@ export class AppComponent {
3337
}
3438
}
3539

36-
@NgModule({
37-
imports: [
38-
BrowserModule,
39-
DxAccordionModule,
40-
DxCheckBoxModule,
41-
DxSliderModule,
42-
DxTagBoxModule,
40+
bootstrapApplication(AppComponent, {
41+
providers: [
42+
provideZoneChangeDetection({ eventCoalescing: true, runCoalescing: true }),
4343
],
44-
declarations: [AppComponent],
45-
bootstrap: [AppComponent],
46-
})
47-
export class AppModule { }
48-
49-
platformBrowserDynamic().bootstrapModule(AppModule);
44+
});

apps/demos/Demos/Accordion/Overview/React/App.tsx

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,22 @@ import CheckBox, { type CheckBoxTypes } from 'devextreme-react/check-box';
44
import TagBox, { type TagBoxTypes } from 'devextreme-react/tag-box';
55
import Slider, { Tooltip, Label, type SliderTypes } from 'devextreme-react/slider';
66

7-
import service from './data.ts';
7+
import { companies } from './data.ts';
8+
import type { Company } from './types.ts';
89
import CustomTitle from './CustomTitle.tsx';
910
import CustomItem from './CustomItem.tsx';
1011

1112
const companyLabel = { 'aria-label': 'Company' };
12-
const companies = service.getCompanies();
1313

1414
const App = () => {
15-
const [selectedItems, setSelectedItems] = useState([companies[0]]);
16-
const [multiple, setMultiple] = useState(false);
17-
const [collapsible, setCollapsible] = useState(false);
18-
const [animationDuration, setAnimationDuration] = useState(300);
15+
const [selectedItems, setSelectedItems] = useState<Company[]>([companies[0]]);
16+
const [multiple, setMultiple] = useState<boolean>(false);
17+
const [collapsible, setCollapsible] = useState<boolean>(false);
18+
const [animationDuration, setAnimationDuration] = useState<number>(300);
1919

20-
const selectionChanged = useCallback((e: AccordionTypes.SelectionChangedEvent) => {
20+
const selectionChanged = useCallback((e: AccordionTypes.SelectionChangedEvent): void => {
2121
let newItems = [...selectedItems];
22-
e.removedItems.forEach((item) => {
22+
e.removedItems.forEach((item: Company): void => {
2323
const index = newItems.indexOf(item);
2424
if (index >= 0) {
2525
newItems.splice(index, 1);
@@ -31,21 +31,21 @@ const App = () => {
3131
setSelectedItems(newItems);
3232
}, [selectedItems, setSelectedItems]);
3333

34-
const selectedItemsChanged = useCallback((e: TagBoxTypes.ValueChangedEvent) => {
34+
const selectedItemsChanged = useCallback((e: TagBoxTypes.ValueChangedEvent): void => {
3535
setSelectedItems(e.value);
36-
}, [setSelectedItems]);
36+
}, []);
3737

38-
const multipleChanged = useCallback((e: CheckBoxTypes.ValueChangedEvent) => {
38+
const multipleChanged = useCallback((e: CheckBoxTypes.ValueChangedEvent): void => {
3939
setMultiple(e.value);
40-
}, [setMultiple]);
40+
}, []);
4141

42-
const collapsibleChanged = useCallback((e: CheckBoxTypes.ValueChangedEvent) => {
42+
const collapsibleChanged = useCallback((e: CheckBoxTypes.ValueChangedEvent): void => {
4343
setCollapsible(e.value);
44-
}, [setCollapsible]);
44+
}, []);
4545

46-
const animationDurationChanged = useCallback((e: SliderTypes.ValueChangedEvent) => {
46+
const animationDurationChanged = useCallback((e: SliderTypes.ValueChangedEvent): void => {
4747
setAnimationDuration(e.value);
48-
}, [setAnimationDuration]);
48+
}, []);
4949

5050
return (
5151
<div id="accordion">

apps/demos/Demos/Accordion/Overview/React/CustomItem.tsx

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,39 @@
11
import React from 'react';
2+
import type { Company } from './types.ts';
3+
4+
export default function CustomItem(company: Company) {
5+
const {
6+
Address,
7+
City,
8+
State,
9+
Zipcode,
10+
Phone,
11+
Fax,
12+
Website,
13+
} = company;
214

3-
export default function CustomItem(data) {
415
return (
516
<div>
617
<div>
718
<p>
8-
<b>{data.City} </b>
9-
(<span>{data.State}</span>)
19+
<b>{City} </b>
20+
(<span>{State}</span>)
1021
</p>
1122
<p>
12-
<span>{data.Zipcode} </span>
13-
<span>{data.Address}</span>
23+
<span>{Zipcode} </span>
24+
<span>{Address}</span>
1425
</p>
1526
</div>
1627
<div>
1728
<p>
18-
Phone: <b>{data.Phone}</b>
29+
Phone: <b>{Phone}</b>
1930
</p>
2031
<p>
21-
Fax: <b>{data.Fax}</b>
32+
Fax: <b>{Fax}</b>
2233
</p>
2334
<p>
24-
Website: <a href={data.Website} target="_blank">
25-
{data.Website}
35+
Website: <a href={Website} target="_blank">
36+
{Website}
2637
</a>
2738
</p>
2839
</div>

0 commit comments

Comments
 (0)