Skip to content

Commit 8640816

Browse files
committed
deps: Build against Angular v19 and drop support for v18
- Build Angular packages against v19 instead of v18 - Drop Angular v18 from allowed peer dependencies - Add note on this to migration guide - Reduce linter violation for non-standalone components to warn because we still use them for all Angular renderers
1 parent b1c72e8 commit 8640816

File tree

7 files changed

+3723
-2023
lines changed

7 files changed

+3723
-2023
lines changed

MIGRATION.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Migration guide
22

3+
## Migrating to JSON Forms 3.7
4+
5+
### Angular support now targets Angular 19 and Angular 20
6+
7+
When using JSON Forms 3.7, your Angular application now needs to target Angular 19 or 20.
8+
9+
Use JSON Forms 3.6 if you need to stay on Angular 18.
10+
311
## Migrating to JSON Forms 3.6
412

513
### UI schema type changes

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
"build:examples-app": "lerna run build:examples-app && node packages/examples-app/prepare-examples-app.js"
2222
},
2323
"devDependencies": {
24-
"@angular/core": "^18.0.0",
25-
"@angular/cli": "^18.0.0",
24+
"@angular/core": "^19.0.0",
25+
"@angular/cli": "^19.0.0",
2626
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.5",
2727
"@babel/plugin-proposal-optional-chaining": "^7.16.5",
2828
"@istanbuljs/nyc-config-typescript": "^1.0.2",

packages/angular-material/.eslintrc.js

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ module.exports = {
2222
'@angular-eslint/component-class-suffix': 'off',
2323
'@angular-eslint/directive-class-suffix': 'off',
2424
'@angular-eslint/no-conflicting-lifecycle': 'warn',
25+
// Starting with Angular 19, non-standalone components produce a lint error. Reduce to warning until we migrate.
26+
'@angular-eslint/prefer-standalone': 'warn',
2527
'@typescript-eslint/no-explicit-any': 'off',
2628
// Base rule must be disabled to avoid incorrect errors
2729
'no-unused-vars': 'off',
@@ -35,19 +37,19 @@ module.exports = {
3537
],
3638
// workaround for
3739
// https://github.com/import-js/eslint-plugin-import/issues/1810:
38-
"import/no-unresolved": [
39-
"error",
40+
'import/no-unresolved': [
41+
'error',
4042
{
4143
ignore: [
42-
"@angular/cdk/.*",
43-
"@angular/core/.*",
44-
"@angular/material/.*",
45-
"@angular/platform-browser/.*",
46-
"@angular/platform-browser-dynamic/.*",
47-
"core-js/es7/.*",
48-
"zone.js/.*",
49-
]
50-
}
44+
'@angular/cdk/.*',
45+
'@angular/core/.*',
46+
'@angular/material/.*',
47+
'@angular/platform-browser/.*',
48+
'@angular/platform-browser-dynamic/.*',
49+
'core-js/es7/.*',
50+
'zone.js/.*',
51+
],
52+
},
5153
],
5254
},
5355
};

packages/angular-material/package.json

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,14 @@
6464
]
6565
},
6666
"peerDependencies": {
67-
"@angular/animations": "^18.0.0 || ^19.0.0 || ^20.0.0",
68-
"@angular/cdk": "^18.0.0 || ^19.0.0 || ^20.0.0",
69-
"@angular/common": "^18.0.0 || ^19.0.0 || ^20.0.0",
70-
"@angular/core": "^18.0.0 || ^19.0.0 || ^20.0.0",
71-
"@angular/forms": "^18.0.0 || ^19.0.0 || ^20.0.0",
72-
"@angular/material": "^18.0.0 || ^19.0.0 || ^20.0.0",
73-
"@angular/platform-browser": "^18.0.0 || ^19.0.0 || ^20.0.0",
74-
"@angular/router": "^18.0.0 || ^19.0.0 || ^20.0.0",
67+
"@angular/animations": "^19.0.0 || ^20.0.0",
68+
"@angular/cdk": "^19.0.0 || ^20.0.0",
69+
"@angular/common": "^19.0.0 || ^20.0.0",
70+
"@angular/core": "^19.0.0 || ^20.0.0",
71+
"@angular/forms": "^19.0.0 || ^20.0.0",
72+
"@angular/material": "^19.0.0 || ^20.0.0",
73+
"@angular/platform-browser": "^19.0.0 || ^20.0.0",
74+
"@angular/router": "^19.0.0 || ^20.0.0",
7575
"@jsonforms/angular": "3.7.0-alpha.2",
7676
"@jsonforms/core": "3.7.0-alpha.2",
7777
"dayjs": "^1.11.10",
@@ -82,29 +82,29 @@
8282
"lodash": "^4.17.21"
8383
},
8484
"devDependencies": {
85-
"@angular-devkit/build-angular": "^18.0.0",
86-
"@angular-devkit/core": "^18.0.0",
87-
"@angular-eslint/eslint-plugin": "^18.0.0",
88-
"@angular-eslint/eslint-plugin-template": "^18.0.0",
89-
"@angular-eslint/schematics": "^18.0.0",
90-
"@angular-eslint/template-parser": "^18.0.0",
91-
"@angular/animations": "^18.0.0",
92-
"@angular/cdk": "^18.0.0",
93-
"@angular/common": "^18.0.0",
94-
"@angular/compiler": "^18.0.0",
95-
"@angular/compiler-cli": "^18.0.0",
96-
"@angular/core": "^18.0.0",
97-
"@angular/forms": "^18.0.0",
98-
"@angular/material": "^18.0.0",
99-
"@angular/platform-browser": "^18.0.0",
100-
"@angular/platform-browser-dynamic": "^18.0.0",
101-
"@angular/router": "^18.0.0",
85+
"@angular-devkit/build-angular": "^19.0.0",
86+
"@angular-devkit/core": "^19.0.0",
87+
"@angular-eslint/eslint-plugin": "^19.0.0",
88+
"@angular-eslint/eslint-plugin-template": "^19.0.0",
89+
"@angular-eslint/schematics": "^19.0.0",
90+
"@angular-eslint/template-parser": "^19.0.0",
91+
"@angular/animations": "^19.0.0",
92+
"@angular/cdk": "^19.0.0",
93+
"@angular/common": "^19.0.0",
94+
"@angular/compiler": "^19.0.0",
95+
"@angular/compiler-cli": "^19.0.0",
96+
"@angular/core": "^19.0.0",
97+
"@angular/forms": "^19.0.0",
98+
"@angular/material": "^19.0.0",
99+
"@angular/platform-browser": "^19.0.0",
100+
"@angular/platform-browser-dynamic": "^19.0.0",
101+
"@angular/router": "^19.0.0",
102102
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.5",
103103
"@babel/plugin-proposal-optional-chaining": "^7.16.5",
104104
"@jsonforms/angular": "workspace:*",
105105
"@jsonforms/core": "workspace:*",
106106
"@jsonforms/examples": "workspace:*",
107-
"@ngtools/webpack": "^18.0.0",
107+
"@ngtools/webpack": "^19.0.0",
108108
"@types/jasmine": "~3.8.0",
109109
"@types/lodash": "4.14.149",
110110
"@types/node": "^22.13.8",
@@ -128,7 +128,7 @@
128128
"karma-jasmine-html-reporter": "^1.7.0",
129129
"karma-sourcemap-loader": "^0.3.8",
130130
"karma-webpack": "^5.0.0",
131-
"ng-packagr": "^18.0.0",
131+
"ng-packagr": "^19.0.0",
132132
"null-loader": "^0.1.1",
133133
"nyc": "^15.1.0",
134134
"prettier": "^2.8.4",
@@ -141,6 +141,6 @@
141141
"typescript": "~5.5.0",
142142
"webpack": "^5.78.0",
143143
"yargs": "^17.7.2",
144-
"zone.js": "~0.14.10"
144+
"zone.js": "~0.15.0"
145145
}
146146
}

packages/angular/.eslintrc.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ module.exports = {
2222
'@angular-eslint/component-class-suffix': 'off',
2323
'@angular-eslint/directive-class-suffix': 'off',
2424
'@angular-eslint/no-conflicting-lifecycle': 'warn',
25+
// Starting with Angular 19, non-standalone components produce a lint error. Reduce to warning until we migrate.
26+
'@angular-eslint/prefer-standalone': 'warn',
2527
'@typescript-eslint/no-explicit-any': 'off',
2628
// Base rule must be disabled to avoid incorrect errors
2729
'no-unused-vars': 'off',

packages/angular/package.json

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -71,20 +71,20 @@
7171
"lodash": "^4.17.21"
7272
},
7373
"peerDependencies": {
74-
"@angular/core": "^18.0.0 || ^19.0.0 || ^20.0.0",
75-
"@angular/forms": "^18.0.0 || ^19.0.0 || ^20.0.0",
74+
"@angular/core": "^19.0.0 || ^20.0.0",
75+
"@angular/forms": "^19.0.0 || ^20.0.0",
7676
"@jsonforms/core": "3.7.0-alpha.2",
7777
"rxjs": "^6.6.0 || ^7.4.0"
7878
},
7979
"devDependencies": {
80-
"@angular-eslint/eslint-plugin": "^18.0.0",
81-
"@angular-eslint/eslint-plugin-template": "^18.0.0",
82-
"@angular-eslint/schematics": "^18.0.0",
83-
"@angular-eslint/template-parser": "^18.0.0",
84-
"@angular/compiler": "^18.0.0",
85-
"@angular/compiler-cli": "^18.0.0",
86-
"@angular/core": "^18.0.0",
87-
"@angular/forms": "^18.0.0",
80+
"@angular-eslint/eslint-plugin": "^19.0.0",
81+
"@angular-eslint/eslint-plugin-template": "^19.0.0",
82+
"@angular-eslint/schematics": "^19.0.0",
83+
"@angular-eslint/template-parser": "^19.0.0",
84+
"@angular/compiler": "^19.0.0",
85+
"@angular/compiler-cli": "^19.0.0",
86+
"@angular/core": "^19.0.0",
87+
"@angular/forms": "^19.0.0",
8888
"@jsonforms/core": "workspace:*",
8989
"@typescript-eslint/eslint-plugin": "^5.54.1",
9090
"@typescript-eslint/parser": "^5.54.1",
@@ -94,7 +94,7 @@
9494
"eslint-config-prettier": "^8.7.0",
9595
"eslint-plugin-import": "^2.27.5",
9696
"eslint-plugin-prettier": "^4.2.1",
97-
"ng-packagr": "^18.0.0",
97+
"ng-packagr": "^19.0.0",
9898
"nyc": "^15.1.0",
9999
"prettier": "^2.8.4",
100100
"rimraf": "^3.0.2",

0 commit comments

Comments
 (0)