From 3820060d17fe2c2fc0da314ff33e2662f005923d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 27 Apr 2026 10:34:54 +0000 Subject: [PATCH 1/6] Initial plan From 140c41ed5563a7b9ac0c1e8c0c205ca566528782 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 27 Apr 2026 10:54:35 +0000 Subject: [PATCH 2/6] fix(igx-ts): fix lint errors in igx-ts templates Agent-Logs-Url: https://github.com/IgniteUI/igniteui-cli/sessions/7b8fd45e-3305-47f3-b5b9-d795d5dea421 Co-authored-by: Hristo313 <57346540+Hristo313@users.noreply.github.com> --- .../files/src/app/__path__/__filePrefix__.ts | 3 +-- .../files/src/app/__path__/data/financialData.ts | 4 +--- .../files/src/app/__path__/__filePrefix__.ts | 3 +-- .../files/src/app/__path__/assets/financialData.ts | 4 +--- .../generate/files/src/app/__path__/__filePrefix__.ts | 2 +- .../igx-ts/projects/_base/files/eslint.config.js | 1 + .../app/authentication/providers/facebook-provider.ts | 2 +- .../src/app/authentication/services/external-auth.ts | 2 +- .../files/src/app/authentication/services/jwt-util.ts | 4 ++-- .../src/app/authentication/services/local-storage.ts | 11 +++++++---- 10 files changed, 17 insertions(+), 19 deletions(-) diff --git a/packages/igx-templates/igx-ts/custom-templates/fintech-grid/files/src/app/__path__/__filePrefix__.ts b/packages/igx-templates/igx-ts/custom-templates/fintech-grid/files/src/app/__path__/__filePrefix__.ts index a65c2b9ec..0534e377b 100644 --- a/packages/igx-templates/igx-ts/custom-templates/fintech-grid/files/src/app/__path__/__filePrefix__.ts +++ b/packages/igx-templates/igx-ts/custom-templates/fintech-grid/files/src/app/__path__/__filePrefix__.ts @@ -498,13 +498,12 @@ export class <%=ClassName%> implements OnInit, AfterViewInit, OnDestroy { let rnd = Math.random(); rnd = Math.round(rnd * 100) / 100; const volatility = 2; - let newPrice = 0; let changePercent = 2 * volatility * rnd; if (changePercent > volatility) { changePercent -= (2 * volatility); } const changeAmount = oldPrice * (changePercent / 100); - newPrice = oldPrice + changeAmount; + let newPrice = oldPrice + changeAmount; newPrice = Math.round(newPrice * 100) / 100; const result = { Price: 0, ChangePercent: 0 }; changePercent = Math.round(changePercent * 100) / 100; diff --git a/packages/igx-templates/igx-ts/custom-templates/fintech-grid/files/src/app/__path__/data/financialData.ts b/packages/igx-templates/igx-ts/custom-templates/fintech-grid/files/src/app/__path__/data/financialData.ts index 253454a39..a8c626949 100644 --- a/packages/igx-templates/igx-ts/custom-templates/fintech-grid/files/src/app/__path__/data/financialData.ts +++ b/packages/igx-templates/igx-ts/custom-templates/fintech-grid/files/src/app/__path__/data/financialData.ts @@ -953,15 +953,13 @@ export class FinancialData { private generateNewPrice(oldPrice: number): any { const rnd = parseFloat(Math.random().toFixed(2)); const volatility = 2; - let newPrice = 0; - let changePercent = 2 * volatility * rnd; if (changePercent > volatility) { changePercent -= (2 * volatility); } const changeAmount = oldPrice * (changePercent / 100); - newPrice = oldPrice + changeAmount; + const newPrice = oldPrice + changeAmount; const result = {Price: 0, ChangePercent: 0}; result.Price = parseFloat(newPrice.toFixed(2)); diff --git a/packages/igx-templates/igx-ts/custom-templates/fintech-tree-grid/files/src/app/__path__/__filePrefix__.ts b/packages/igx-templates/igx-ts/custom-templates/fintech-tree-grid/files/src/app/__path__/__filePrefix__.ts index 4fef2b3c6..4046a449c 100644 --- a/packages/igx-templates/igx-ts/custom-templates/fintech-tree-grid/files/src/app/__path__/__filePrefix__.ts +++ b/packages/igx-templates/igx-ts/custom-templates/fintech-tree-grid/files/src/app/__path__/__filePrefix__.ts @@ -328,13 +328,12 @@ export class <%=ClassName%> implements OnInit, AfterViewInit, OnDestroy { let rnd = Math.random(); rnd = Math.round(rnd * 100) / 100; const volatility = 2; - let newPrice = 0; let changePercent = 2 * volatility * rnd; if (changePercent > volatility) { changePercent -= (2 * volatility); } const changeAmount = oldPrice * (changePercent / 100); - newPrice = oldPrice + changeAmount; + let newPrice = oldPrice + changeAmount; newPrice = Math.round(newPrice * 100) / 100; const result = {Price: 0, ChangePercent: 0}; changePercent = Math.round(changePercent * 100) / 100; diff --git a/packages/igx-templates/igx-ts/custom-templates/fintech-tree-grid/files/src/app/__path__/assets/financialData.ts b/packages/igx-templates/igx-ts/custom-templates/fintech-tree-grid/files/src/app/__path__/assets/financialData.ts index 253454a39..a8c626949 100644 --- a/packages/igx-templates/igx-ts/custom-templates/fintech-tree-grid/files/src/app/__path__/assets/financialData.ts +++ b/packages/igx-templates/igx-ts/custom-templates/fintech-tree-grid/files/src/app/__path__/assets/financialData.ts @@ -953,15 +953,13 @@ export class FinancialData { private generateNewPrice(oldPrice: number): any { const rnd = parseFloat(Math.random().toFixed(2)); const volatility = 2; - let newPrice = 0; - let changePercent = 2 * volatility * rnd; if (changePercent > volatility) { changePercent -= (2 * volatility); } const changeAmount = oldPrice * (changePercent / 100); - newPrice = oldPrice + changeAmount; + const newPrice = oldPrice + changeAmount; const result = {Price: 0, ChangePercent: 0}; result.Price = parseFloat(newPrice.toFixed(2)); diff --git a/packages/igx-templates/igx-ts/generate/files/src/app/__path__/__filePrefix__.ts b/packages/igx-templates/igx-ts/generate/files/src/app/__path__/__filePrefix__.ts index 5b7b5607c..5e09fa172 100644 --- a/packages/igx-templates/igx-ts/generate/files/src/app/__path__/__filePrefix__.ts +++ b/packages/igx-templates/igx-ts/generate/files/src/app/__path__/__filePrefix__.ts @@ -1,7 +1,7 @@ import { Component } from '@angular/core'; @Component({ - selector: "<%=filePrefix%>", + selector: "app-<%=filePrefix%>", templateUrl: './<%=filePrefix%>.html', styleUrl: './<%=filePrefix%>.scss' }) diff --git a/packages/igx-templates/igx-ts/projects/_base/files/eslint.config.js b/packages/igx-templates/igx-ts/projects/_base/files/eslint.config.js index 6e56cfeb7..0ab18c55f 100644 --- a/packages/igx-templates/igx-ts/projects/_base/files/eslint.config.js +++ b/packages/igx-templates/igx-ts/projects/_base/files/eslint.config.js @@ -34,6 +34,7 @@ module.exports = defineConfig([ // Relax rules '@typescript-eslint/no-explicit-any': 'off', '@angular-eslint/prefer-inject': 'off', + '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }], }, }, { diff --git a/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/providers/facebook-provider.ts b/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/providers/facebook-provider.ts index 51acf6d84..1c951b0a8 100644 --- a/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/providers/facebook-provider.ts +++ b/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/providers/facebook-provider.ts @@ -51,6 +51,6 @@ export class FacebookProvider implements AuthProvider { } public logout() { - FB.logout((response) => { }); + FB.logout(() => { /* no-op */ }); } } diff --git a/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/external-auth.ts b/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/external-auth.ts index 42548888e..6b18fe25e 100644 --- a/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/external-auth.ts +++ b/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/external-auth.ts @@ -25,7 +25,7 @@ export class ExternalAuth { private location = inject(Location); private localStorage = inject(LocalStorageService); - protected providers: Map = new Map(); + protected providers = new Map(); public get activeProvider(): ExternalAuthProvider { return this.localStorage.getItem('extActiveProvider') as ExternalAuthProvider; } diff --git a/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/jwt-util.ts b/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/jwt-util.ts index 095432f46..fef4830bf 100644 --- a/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/jwt-util.ts +++ b/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/jwt-util.ts @@ -36,12 +36,12 @@ export function decodeBase64Url(base64Url: string) { return decodeURIComponent(decoded.split('') .map(c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)) .join('')); - } catch (er) { + } catch { return decoded; } } -export function encodeBase64Url(input: {}) { +export function encodeBase64Url(input: object) { const encodedToURI: string = encodeURI(JSON.stringify(input)); let result = ''; for (let i = 0; i < encodedToURI.length; i++) { diff --git a/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/local-storage.ts b/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/local-storage.ts index 1859405c8..794f48f3a 100644 --- a/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/local-storage.ts +++ b/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/local-storage.ts @@ -4,11 +4,14 @@ import { inject, Injectable, PLATFORM_ID } from '@angular/core'; class LocalStorageFallback implements Storage { [name: string]: any; readonly length = 0; + // eslint-disable-next-line @typescript-eslint/no-empty-function clear(): void { } - getItem(key: string): string | null { return null; } - key(index: number): string | null { return null; } - removeItem(key: string): void { } - setItem(key: string, value: string): void { } + getItem(_key: string): string | null { return null; } + key(_index: number): string | null { return null; } + // eslint-disable-next-line @typescript-eslint/no-empty-function + removeItem(_key: string): void { } + // eslint-disable-next-line @typescript-eslint/no-empty-function + setItem(_key: string, _value: string): void { } } @Injectable({ From c7b24a29765fdbce0df962692db80e30be2a3e5a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 27 Apr 2026 11:26:47 +0000 Subject: [PATCH 3/6] fix(igx-ts): fix lint and test errors in authentication template Agent-Logs-Url: https://github.com/IgniteUI/igniteui-cli/sessions/e0f16fb9-d7fe-4d97-ae72-ce1f5d43e185 Co-authored-by: Hristo313 <57346540+Hristo313@users.noreply.github.com> --- .../igx-ts/projects/_base/files/eslint.config.js | 8 ++++++++ .../src/app/authentication/services/jwt-util.ts | 3 ++- .../src/app/authentication/services/services.spec.ts | 12 +++++------- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/packages/igx-templates/igx-ts/projects/_base/files/eslint.config.js b/packages/igx-templates/igx-ts/projects/_base/files/eslint.config.js index 0ab18c55f..90f4e0604 100644 --- a/packages/igx-templates/igx-ts/projects/_base/files/eslint.config.js +++ b/packages/igx-templates/igx-ts/projects/_base/files/eslint.config.js @@ -37,6 +37,14 @@ module.exports = defineConfig([ '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }], }, }, + { + files: ['**/*.spec.ts'], + rules: { + // Test files use empty mock methods extensively + '@typescript-eslint/no-empty-function': 'off', + '@typescript-eslint/class-literal-property-style': 'off', + }, + }, { files: ['**/*.html'], extends: [angular.configs.templateRecommended], diff --git a/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/jwt-util.ts b/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/jwt-util.ts index fef4830bf..734dd2751 100644 --- a/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/jwt-util.ts +++ b/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/jwt-util.ts @@ -41,7 +41,8 @@ export function decodeBase64Url(base64Url: string) { } } -export function encodeBase64Url(input: object) { +// eslint-disable-next-line @typescript-eslint/no-empty-object-type +export function encodeBase64Url(input: {}) { const encodedToURI: string = encodeURI(JSON.stringify(input)); let result = ''; for (let i = 0; i < encodedToURI.length; i++) { diff --git a/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/services.spec.ts b/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/services.spec.ts index 10e5e4539..cf353437b 100644 --- a/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/services.spec.ts +++ b/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/services.spec.ts @@ -526,7 +526,11 @@ describe('Services', () => { describe(`User Service`, () => { let userServ: UserStore; let localStorage: LocalStorageService; - let mockLocalStorage: any; + const mockLocalStorage = { + getItem: vi.fn(), + setItem: vi.fn(), + removeItem: vi.fn() + }; const mockUser = { exp: 111, name: 'Testy Testington', @@ -538,12 +542,6 @@ describe('Services', () => { externalToken: `mock token` }; - mockLocalStorage = { - getItem: vi.fn(), - setItem: vi.fn(), - removeItem: vi.fn() - }; - beforeEach(() => { vi.spyOn(JSON, 'parse').mockReturnValue(mockUser); vi.spyOn(mockLocalStorage, 'getItem').mockReturnValue('MOCK JSON'); From 02f193a5c3a6c6721c8f72831c18f19a17e9c084 Mon Sep 17 00:00:00 2001 From: Hristo Hristov <57346540+Hristo313@users.noreply.github.com> Date: Mon, 27 Apr 2026 14:50:14 +0300 Subject: [PATCH 4/6] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../files/src/app/authentication/providers/facebook-provider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/providers/facebook-provider.ts b/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/providers/facebook-provider.ts index 1c951b0a8..c6f781261 100644 --- a/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/providers/facebook-provider.ts +++ b/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/providers/facebook-provider.ts @@ -51,6 +51,6 @@ export class FacebookProvider implements AuthProvider { } public logout() { - FB.logout(() => { /* no-op */ }); + FB.logout(); } } From 520e6f8bede12ee08eee2431c10bef659b48aa08 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Tue, 28 Apr 2026 09:29:25 +0300 Subject: [PATCH 5/6] fix(igx-ts): fix lint config --- .../igx-templates/igx-ts/projects/_base/files/eslint.config.js | 2 +- .../files/src/app/authentication/services/local-storage.ts | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/igx-templates/igx-ts/projects/_base/files/eslint.config.js b/packages/igx-templates/igx-ts/projects/_base/files/eslint.config.js index 90f4e0604..9adfac95d 100644 --- a/packages/igx-templates/igx-ts/projects/_base/files/eslint.config.js +++ b/packages/igx-templates/igx-ts/projects/_base/files/eslint.config.js @@ -33,6 +33,7 @@ module.exports = defineConfig([ ], // Relax rules '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-empty-function': 'off', '@angular-eslint/prefer-inject': 'off', '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }], }, @@ -41,7 +42,6 @@ module.exports = defineConfig([ files: ['**/*.spec.ts'], rules: { // Test files use empty mock methods extensively - '@typescript-eslint/no-empty-function': 'off', '@typescript-eslint/class-literal-property-style': 'off', }, }, diff --git a/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/local-storage.ts b/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/local-storage.ts index 794f48f3a..c0dbbfe51 100644 --- a/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/local-storage.ts +++ b/packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/local-storage.ts @@ -4,13 +4,10 @@ import { inject, Injectable, PLATFORM_ID } from '@angular/core'; class LocalStorageFallback implements Storage { [name: string]: any; readonly length = 0; - // eslint-disable-next-line @typescript-eslint/no-empty-function clear(): void { } getItem(_key: string): string | null { return null; } key(_index: number): string | null { return null; } - // eslint-disable-next-line @typescript-eslint/no-empty-function removeItem(_key: string): void { } - // eslint-disable-next-line @typescript-eslint/no-empty-function setItem(_key: string, _value: string): void { } } From 76329aab9da1657144b5341d7fe343c0a5de1975 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Tue, 28 Apr 2026 09:32:06 +0300 Subject: [PATCH 6/6] fix(igx-ts): remove comment line --- .../igx-templates/igx-ts/projects/_base/files/eslint.config.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/igx-templates/igx-ts/projects/_base/files/eslint.config.js b/packages/igx-templates/igx-ts/projects/_base/files/eslint.config.js index 9adfac95d..14f4941af 100644 --- a/packages/igx-templates/igx-ts/projects/_base/files/eslint.config.js +++ b/packages/igx-templates/igx-ts/projects/_base/files/eslint.config.js @@ -41,7 +41,6 @@ module.exports = defineConfig([ { files: ['**/*.spec.ts'], rules: { - // Test files use empty mock methods extensively '@typescript-eslint/class-literal-property-style': 'off', }, },