diff --git a/angular-standalone/base/.eslintrc.json b/angular-standalone/base/.eslintrc.json deleted file mode 100644 index 9d48db47b..000000000 --- a/angular-standalone/base/.eslintrc.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "root": true, - "ignorePatterns": ["projects/**/*"], - "overrides": [ - { - "files": ["*.ts"], - "parserOptions": { - "project": ["tsconfig.json"], - "createDefaultProgram": true - }, - "extends": [ - "plugin:@angular-eslint/recommended", - "plugin:@angular-eslint/template/process-inline-templates" - ], - "rules": { - "@angular-eslint/component-class-suffix": [ - "error", - { - "suffixes": ["Page", "Component"] - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "app", - "style": "kebab-case" - } - ], - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "app", - "style": "camelCase" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@angular-eslint/template/recommended"], - "rules": {} - } - ] -} diff --git a/angular-standalone/base/angular.json b/angular-standalone/base/angular.json index 9b72354a6..0887ebf91 100644 --- a/angular-standalone/base/angular.json +++ b/angular-standalone/base/angular.json @@ -35,7 +35,10 @@ "output": "assets" } ], - "styles": ["src/global.scss", "src/theme/variables.scss"], + "styles": [ + "src/global.scss", + "src/theme/variables.scss" + ], "scripts": [], "browser": "src/main.ts" }, @@ -109,7 +112,10 @@ "output": "assets" } ], - "styles": ["src/global.scss", "src/theme/variables.scss"], + "styles": [ + "src/global.scss", + "src/theme/variables.scss" + ], "scripts": [] }, "configurations": { @@ -122,14 +128,20 @@ "lint": { "builder": "@angular-eslint/builder:lint", "options": { - "lintFilePatterns": ["src/**/*.ts", "src/**/*.html"] + "lintFilePatterns": [ + "src/**/*.ts", + "src/**/*.html" + ] } } } } }, "cli": { - "schematicCollections": ["@ionic/angular-toolkit"] + "schematicCollections": [ + "angular-eslint", + "@ionic/angular-toolkit" + ] }, "schematics": { "@ionic/angular-toolkit:component": { @@ -137,12 +149,6 @@ }, "@ionic/angular-toolkit:page": { "styleext": "scss" - }, - "@angular-eslint/schematics:application": { - "setParserOptionsProject": true - }, - "@angular-eslint/schematics:library": { - "setParserOptionsProject": true } } } diff --git a/angular-standalone/base/eslint.config.js b/angular-standalone/base/eslint.config.js new file mode 100644 index 000000000..d801d240a --- /dev/null +++ b/angular-standalone/base/eslint.config.js @@ -0,0 +1,48 @@ +// @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, + ...angular.configs.tsRecommended, + ], + processor: angular.processInlineTemplates, + rules: { + "@angular-eslint/component-class-suffix": [ + "error", + { + "suffixes": ["Page", "Component"] + } + ], + "@angular-eslint/directive-selector": [ + "error", + { + type: "attribute", + prefix: "app", + style: "camelCase", + }, + ], + "@angular-eslint/component-selector": [ + "error", + { + type: "element", + prefix: "app", + style: "kebab-case", + }, + ], + }, + }, + { + files: ["**/*.html"], + extends: [ + ...angular.configs.templateRecommended, + ...angular.configs.templateAccessibility, + ], + rules: {}, + } +); diff --git a/angular-standalone/base/package.json b/angular-standalone/base/package.json index 4d000929c..b8a8d2c3f 100644 --- a/angular-standalone/base/package.json +++ b/angular-standalone/base/package.json @@ -29,22 +29,13 @@ }, "devDependencies": { "@angular-devkit/build-angular": "^19.0.0", - "@angular-eslint/builder": "^19.0.0", - "@angular-eslint/eslint-plugin": "^19.0.0", - "@angular-eslint/eslint-plugin-template": "^19.0.0", - "@angular-eslint/schematics": "^19.0.0", - "@angular-eslint/template-parser": "^19.0.0", "@angular/cli": "^19.0.0", "@angular/compiler-cli": "^19.0.0", "@angular/language-service": "^19.0.0", "@ionic/angular-toolkit": "^12.0.0", "@types/jasmine": "~5.1.0", - "@typescript-eslint/eslint-plugin": "^8.18.0", - "@typescript-eslint/parser": "^8.18.0", - "eslint": "^9.16.0", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jsdoc": "^48.2.1", - "eslint-plugin-prefer-arrow": "1.2.2", + "angular-eslint": "19.1.0", + "eslint": "^9.20.0", "jasmine-core": "~5.1.0", "jasmine-spec-reporter": "~5.0.0", "karma": "~6.4.0", @@ -52,6 +43,7 @@ "karma-coverage": "~2.2.0", "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", - "typescript": "~5.6.3" + "typescript": "~5.6.3", + "typescript-eslint": "8.23.0" } -} +} \ No newline at end of file diff --git a/angular-standalone/base/src/zone-flags.ts b/angular-standalone/base/src/zone-flags.ts index c84245fd3..f5453edef 100644 --- a/angular-standalone/base/src/zone-flags.ts +++ b/angular-standalone/base/src/zone-flags.ts @@ -2,5 +2,5 @@ * Prevents Angular change detection from * running with certain Web Component callbacks */ -// eslint-disable-next-line no-underscore-dangle +// eslint-disable-next-line @typescript-eslint/no-explicit-any (window as any).__Zone_disable_customElements = true; diff --git a/angular-standalone/official/list/src/app/home/home.page.ts b/angular-standalone/official/list/src/app/home/home.page.ts index 9aa2ddb19..e913ffda9 100644 --- a/angular-standalone/official/list/src/app/home/home.page.ts +++ b/angular-standalone/official/list/src/app/home/home.page.ts @@ -1,6 +1,6 @@ import { Component, inject } from '@angular/core'; -import { RefresherCustomEvent, IonHeader, IonToolbar, IonTitle, IonContent, IonRefresher, IonRefresherContent, IonList } from '@ionic/angular/standalone'; +import { IonHeader, IonToolbar, IonTitle, IonContent, IonRefresher, IonRefresherContent, IonList } from '@ionic/angular/standalone'; import { MessageComponent } from '../message/message.component'; import { DataService, Message } from '../services/data.service'; @@ -15,9 +15,9 @@ export class HomePage { private data = inject(DataService); constructor() {} - refresh(ev: any) { + refresh(ev: CustomEvent) { setTimeout(() => { - (ev as RefresherCustomEvent).detail.complete(); + (ev.target as HTMLIonRefresherElement).complete(); }, 3000); }