Skip to content

feat(core): adds angular 20 support #123

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
May 28, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
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
71 changes: 0 additions & 71 deletions .eslintrc.json

This file was deleted.

4 changes: 3 additions & 1 deletion .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
We use latest Angular and TypeScript for our angular development. Always show examples and reference the latest version of Angular and TypeScript in your responses. If in doubt, use docs from https://angular.dev/overview
Always use latest Angular (at present 19) version and TypeScript for our angular development. Always show examples and reference the latest version of Angular in your responses. If in doubt, use docs from https://angular.dev/overview

Copy link
Preview

Copilot AI May 28, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this PR upgrades Angular to version 20, update the instruction to reflect Angular 20 to avoid confusion for future development.

Copilot uses AI. Check for mistakes.

Always use angular control flow and angular signals for Angular development. If you are not sure about the signals, use the official documentation at https://angular.dev/guide/signals

Always use Angular's [input signals](https://angular.dev/guide/components/inputs), [output signals](https://angular.dev/guide/components/outputs#), and event emitters for Angular development. If you are not sure use the official documentation at https://angular.dev/guide/components

Do not use or recommend old @Input and @Output decorators in examples
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,7 @@ its `id` attribute.

1. Build the library
```shell
nx build ng-kit
pnpm build ng-kit
```
2. If the NPM token is not configured, open `~/.npmrc` and add the following line:
```shell
Expand Down
26 changes: 26 additions & 0 deletions angular.json
Original file line number Diff line number Diff line change
Expand Up @@ -123,5 +123,31 @@
},
"cli": {
"analytics": "09d8c19e-c136-407c-a909-b3593d1ceda7"
},
"schematics": {
"@schematics/angular:component": {
"type": "component"
},
"@schematics/angular:directive": {
"type": "directive"
},
"@schematics/angular:service": {
"type": "service"
},
"@schematics/angular:guard": {
"typeSeparator": "."
},
"@schematics/angular:interceptor": {
"typeSeparator": "."
},
"@schematics/angular:module": {
"typeSeparator": "."
},
"@schematics/angular:pipe": {
"typeSeparator": "."
},
"@schematics/angular:resolver": {
"typeSeparator": "."
}
}
}
51 changes: 51 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
// @ts-check
const eslint = require('@eslint/js');
const tseslint = require('typescript-eslint');
const angular = require('angular-eslint');

module.exports = tseslint.config(
{
files: ['**/*.ts'],
extends: [eslint.configs.recommended, ...tseslint.configs.recommended, ...tseslint.configs.stylistic, ...angular.configs.tsRecommended],
processor: angular.processInlineTemplates,
rules: {
'id-blacklist': ['off'],
'@typescript-eslint/ban-ts-comment': ['off'],
'@typescript-eslint/no-explicit-any': ['off'],
'no-unsafe-optional-chaining': ['off'],
'@typescript-eslint/no-unused-vars': ['off'],
'no-mixed-spaces-and-tabs': ['off'],
'@typescript-eslint/naming-convention': [
'error',
{
selector: ['enumMember'],
format: ['UPPER_CASE'],
},
],
'@angular-eslint/component-selector': 'off',
'@angular-eslint/directive-selector': 'off',
'@angular-eslint/no-input-rename': 'off',
'max-len': [
'error',
{
code: 400,
},
],
'no-shadow': 'off',
'@typescript-eslint/no-shadow': ['error'],
'@typescript-eslint/explicit-function-return-type': ['off'],
curly: ['error', 'all'],
},
},
{
files: ['**/*.html'],
extends: [...angular.configs.templateRecommended, ...angular.configs.templateAccessibility],
rules: {
'@angular-eslint/template/label-has-associated-control': ['off'],
'@angular-eslint/template/interactive-supports-focus': ['off'],
'@angular-eslint/template/elements-content': ['off'],
'@angular-eslint/template/click-events-have-key-events': ['off'],
'@angular-eslint/prefer-on-push-component-change-detection': 'warn',
},
},
);
61 changes: 32 additions & 29 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"build": "ng build ng-kit --configuration=production",
"build:ng-kit-demo": "ng build ng-kit-demo --configuration=production",
"watch": "ng build --watch --configuration development",
"test": "ng test",
"test": "ng test --watch=false --browsers=ChromeHeadless",
"test:store": "ng test --include='**/store/*.spec.ts'",
"bundle:report": "ng build --configuration production --source-map=true && source-map-explorer dist/pres/**/*.js",
"e2e": "CI=true URL=http://localhost:4300 npx playwright test",
Expand All @@ -32,52 +32,55 @@
},
"private": false,
"dependencies": {
"@angular/animations": "^19.2.0",
"@angular/cdk": "19.2.1",
"@angular/common": "^19.2.0",
"@angular/compiler": "^19.2.0",
"@angular/core": "^19.2.0",
"@angular/forms": "^19.2.0",
"@angular/material": "19.2.1",
"@angular/platform-browser": "^19.2.0",
"@angular/platform-browser-dynamic": "^19.2.0",
"@angular/router": "^19.2.0",
"@angular/animations": "^20.0.0",
"@angular/cdk": "20.0.0",
"@angular/common": "^20.0.0",
"@angular/compiler": "^20.0.0",
"@angular/core": "^20.0.0",
"@angular/forms": "^20.0.0",
"@angular/material": "20.0.0",
"@angular/platform-browser": "^20.0.0",
"@angular/platform-browser-dynamic": "^20.0.0",
"@angular/router": "^20.0.0",
"bootstrap": "^5.3.3",
"rxjs": "~7.8.1",
"tslib": "^2.8.1",
"zone.js": "~0.15.0"
},
"devDependencies": {
"@angular-devkit/build-angular": "^19.2.0",
"@angular-devkit/core": "^19.2.0",
"@angular-devkit/schematics": "^19.2.0",
"@angular-eslint/builder": "19.2.0",
"@angular-eslint/eslint-plugin": "19.2.0",
"@angular-eslint/eslint-plugin-template": "19.2.0",
"@angular-eslint/schematics": "19.2.0",
"@angular-eslint/template-parser": "19.2.0",
"@angular/cli": "^19.2.0",
"@angular/compiler-cli": "^19.2.0",
"@angular-devkit/build-angular": "^20.0.0",
"@angular-devkit/core": "^20.0.0",
"@angular-devkit/schematics": "^20.0.0",
"@angular/cli": "^20.0.0",
"@angular/compiler-cli": "^20.0.0",
"@eslint/js": "^9.27.0",
"@playwright/test": "^1.49.1",
"@sonar/scan": "^4.3.0",
"@schematics/angular": "^19.1.1",
"@semantic-release/exec": "^6.0.3",
"@semantic-release/git": "^10.0.1",
"@semantic-release/npm": "^12.0.1",
"@types/jest": "^29.5.14",
"@sonar/scan": "^4.3.0",
"@types/jasmine": "^5.1.7",
"@types/node": "^22.10.7",
"@typescript-eslint/eslint-plugin": "^8.20.0",
"@typescript-eslint/parser": "^8.20.0",
"eslint": "^9.18.0",
"angular-eslint": "19.4.0",
"eslint": "^9.27.0",
"eslint-config-prettier": "^10.0.1",
"eslint-import-resolver-typescript": "^4.3.5",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-jsdoc": "^50.6.1",
"eslint-plugin-prefer-arrow": "^1.2.3",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"ng-packagr": "^19.1.0",
"jasmine-core": "^5.6.0",
"karma": "^6.4.4",
"karma-chrome-launcher": "^3.2.0",
"karma-coverage": "^2.2.1",
"karma-jasmine": "^5.1.0",
"karma-jasmine-html-reporter": "^2.1.0",
"ng-packagr": "^20.0.0",
"prettier": "^3.4.2",
"semantic-release": "^24.2.1",
"@semantic-release/exec": "^6.0.3",
"typescript": "~5.7.3"
"typescript": "~5.8.3",
"typescript-eslint": "8.32.0"
}
}
Loading
Loading