Upgrading to Angular 20:

Replaced checked in package-lock.json by regenerated one.
Ran ng update @angular/core@20 @angular/cli@20
Ran npm install @angular-builders/jest@^20.0.0 @fortawesome/angular-fontawesome@^3.0.0 @swimlane/ngx-graph@^11
Ran npm install ngx-mat-select-search@^8.0.2.
Ran ng update @angular/material@20.
Updated all eslint and typescript to the latest versions.
Removed @angular-devkit/schematics.
Updated fontawesome.
Updated rxjs and tslib.
Moved required node version from 16 to 20.
Updated jest-preset-angular.
Set preserveWhitespaces to false.
Corrected two type declarations in two typescript files to make ng serve run without errors.
Removed unused angular-devkit/schematics from view-user.component.ts .
Updated list of supported browsers.
Upgraded prettier.
Ran prettier . --write the first time.
Ran prettier . --write the second time.
Ran ng generate @angular/core:inject with defaults, excepted a handful of files.
Fixed remaining eslint problems.
Added dist directory to ignores in eslint.config.js.
Let prettier fix formatting, almost everything is just line breaks.
Made htmlhint ignore @if and @for Angular constructs.
Updated node version in Github workflow to 22.12.0 (build.yml).
Updated .env.ts.
Updated Angular datetime format strings from YYYY-MM-DD to yyyy-MM-dd.
Merged changes from dev into angular20 branch.
This commit is contained in:
Felix van Hove
2025-12-08 11:01:01 +01:00
parent f1b4ec2cf2
commit 7fd1486c08
1516 changed files with 39367 additions and 36037 deletions
@@ -4,19 +4,18 @@
<mat-menu class="mifosx-theme-picker-menu" #themeMenu="matMenu" x-position="before">
<mat-grid-list cols="2">
<mat-grid-tile *ngFor="let theme of themes">
<div mat-menu-item (click)="installTheme(theme)">
<div class="mifosx-theme-picker-swatch">
<fa-icon
class="mifosx-theme-chosen-icon"
*ngIf="currentTheme.href === theme.href"
icon="check-circle"
size="lg"
></fa-icon>
<div class="mifosx-theme-picker-primary" [style.background]="theme.primary"></div>
<div class="mifosx-theme-picker-accent" [style.background]="theme.accent"></div>
@for (theme of themes; track theme) {
<mat-grid-tile>
<div mat-menu-item (click)="installTheme(theme)">
<div class="mifosx-theme-picker-swatch">
@if (currentTheme.href === theme.href) {
<fa-icon class="mifosx-theme-chosen-icon" icon="check-circle" size="lg"></fa-icon>
}
<div class="mifosx-theme-picker-primary" [style.background]="theme.primary"></div>
<div class="mifosx-theme-picker-accent" [style.background]="theme.accent"></div>
</div>
</div>
</div>
</mat-grid-tile>
</mat-grid-tile>
}
</mat-grid-list>
</mat-menu>
@@ -1,5 +1,5 @@
/** Angular Imports */
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
import { Component, OnInit, ViewEncapsulation, inject } from '@angular/core';
/** Custom Model */
import { Theme } from './theme.model';
@@ -36,6 +36,8 @@ import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module';
]
})
export class ThemePickerComponent implements OnInit {
themeStorageService = inject(ThemeStorageService);
/** Default theme for the application. */
currentTheme: Theme = {
href: 'denim-yellowgreen.css',
@@ -79,11 +81,6 @@ export class ThemePickerComponent implements OnInit {
}
];
/**
* @param {ThemeStorageService} themeStorageService Theme Storage Service.
*/
constructor(public themeStorageService: ThemeStorageService) {}
/**
* Initializes the theme for the application.
*/
@@ -1,4 +1,4 @@
import { Injectable, EventEmitter } from '@angular/core';
import { Injectable, EventEmitter, inject } from '@angular/core';
import { Theme } from './theme.model';
import { ThemeManagerService } from './theme-manager.service';
@@ -6,10 +6,12 @@ import { ThemeManagerService } from './theme-manager.service';
providedIn: 'root'
})
export class ThemeStorageService {
themeManagerService = inject(ThemeManagerService);
private themeStorageKey = 'mifosXTheme';
onThemeUpdate: EventEmitter<Theme>;
constructor(public themeManagerService: ThemeManagerService) {
constructor() {
this.onThemeUpdate = new EventEmitter<Theme>();
}