Upgrade angular from 18 to 19.

This commit is contained in:
Florian THIERRY
2025-12-30 17:18:50 +01:00
parent f3ca55bff0
commit bee8129c0b
25 changed files with 4526 additions and 3837 deletions

View File

@@ -30,7 +30,8 @@
"index": "src/index.html", "index": "src/index.html",
"browser": "src/main.ts", "browser": "src/main.ts",
"polyfills": [ "polyfills": [
"zone.js" "zone.js",
"@angular/localize/init"
], ],
"tsConfig": "tsconfig.app.json", "tsConfig": "tsconfig.app.json",
"inlineStyleLanguage": "scss", "inlineStyleLanguage": "scss",

File diff suppressed because it is too large Load Diff

View File

@@ -17,25 +17,25 @@
}, },
"private": true, "private": true,
"dependencies": { "dependencies": {
"@angular/animations": "^18.2.5", "@angular/animations": "^19.2.17",
"@angular/cdk": "^18.2.5", "@angular/cdk": "^18.2.5",
"@angular/common": "^18.2.5", "@angular/common": "^19.2.17",
"@angular/compiler": "^18.2.5", "@angular/compiler": "^19.2.17",
"@angular/core": "^18.2.5", "@angular/core": "^19.2.17",
"@angular/forms": "^18.2.5", "@angular/forms": "^19.2.17",
"@angular/material": "^18.2.5", "@angular/material": "^18.2.5",
"@angular/platform-browser": "^18.2.5", "@angular/platform-browser": "^19.2.17",
"@angular/platform-browser-dynamic": "^18.2.5", "@angular/platform-browser-dynamic": "^19.2.17",
"@angular/router": "^18.2.5", "@angular/router": "^19.2.17",
"rxjs": "~7.8.0", "rxjs": "~7.8.0",
"tslib": "^2.3.0", "tslib": "^2.3.0",
"zone.js": "~0.14.10" "zone.js": "~0.15.1"
}, },
"devDependencies": { "devDependencies": {
"@angular-devkit/build-angular": "^18.2.5", "@angular-devkit/build-angular": "^19.2.19",
"@angular/cli": "^18.2.5", "@angular/cli": "^19.2.19",
"@angular/compiler-cli": "^18.2.5", "@angular/compiler-cli": "^19.2.17",
"@angular/localize": "^18.2.5", "@angular/localize": "^19.2.17",
"@types/jasmine": "~5.1.0", "@types/jasmine": "~5.1.0",
"jasmine-core": "~5.1.0", "jasmine-core": "~5.1.0",
"karma": "~6.4.0", "karma": "~6.4.0",

View File

@@ -5,16 +5,15 @@ import { HeaderComponent } from './components/header/header.component';
import { FooterComponent } from './components/footer/footer.component'; import { FooterComponent } from './components/footer/footer.component';
@Component({ @Component({
selector: 'app-root', selector: 'app-root',
standalone: true, imports: [
imports: [ CommonModule,
CommonModule, RouterOutlet,
RouterOutlet, HeaderComponent,
HeaderComponent, FooterComponent
FooterComponent ],
], templateUrl: './app.component.html',
templateUrl: './app.component.html', styleUrl: './app.component.scss'
styleUrl: './app.component.scss'
}) })
export class AppComponent { export class AppComponent {
title = 'codiki-ng'; title = 'codiki-ng';

View File

@@ -1,4 +1,4 @@
import { APP_INITIALIZER, ApplicationConfig } from '@angular/core'; import { ApplicationConfig, inject, provideAppInitializer } from '@angular/core';
import { provideRouter, withRouterConfig } from '@angular/router'; import { provideRouter, withRouterConfig } from '@angular/router';
import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
@@ -19,11 +19,9 @@ export const appConfig: ApplicationConfig = {
provideAnimationsAsync(), provideAnimationsAsync(),
provideHttpClient(withInterceptorsFromDi()), provideHttpClient(withInterceptorsFromDi()),
{ provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true }, { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },
{ provideAppInitializer(() => {
provide: APP_INITIALIZER, const initializerFn = ((authenticationService: AuthenticationService) => () => authenticationService.startAuthenticationCheckingProcess())(inject(AuthenticationService));
useFactory: (authenticationService: AuthenticationService) => () => authenticationService.startAuthenticationCheckingProcess(), return initializerFn();
deps: [AuthenticationService], })
multi: true
}
] ]
}; };

View File

@@ -9,7 +9,6 @@ export interface ConfirmationDialogData {
@Component({ @Component({
selector: 'app-confirmation-dialog', selector: 'app-confirmation-dialog',
standalone: true,
templateUrl: './confirmation-dialog.component.html', templateUrl: './confirmation-dialog.component.html',
styleUrl: './confirmation-dialog.component.scss', styleUrl: './confirmation-dialog.component.scss',
imports: [MatRippleModule] imports: [MatRippleModule]

View File

@@ -4,11 +4,10 @@ import { MatTooltipModule } from '@angular/material/tooltip';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
@Component({ @Component({
selector: 'app-footer', selector: 'app-footer',
standalone: true, imports: [MatIconModule, MatTooltipModule, RouterModule],
imports: [MatIconModule, MatTooltipModule, RouterModule], templateUrl: './footer.component.html',
templateUrl: './footer.component.html', styleUrl: './footer.component.scss'
styleUrl: './footer.component.scss'
}) })
export class FooterComponent { export class FooterComponent {

View File

@@ -12,22 +12,21 @@ import { PublicationsSearchBarComponent } from '../publications-search-bar/publi
import { SideMenuComponent } from '../side-menu/side-menu.component'; import { SideMenuComponent } from '../side-menu/side-menu.component';
@Component({ @Component({
selector: 'app-header', selector: 'app-header',
standalone: true, imports: [
imports: [ CommonModule,
CommonModule, MatButtonModule,
MatButtonModule, MatIconModule,
MatIconModule, MatMenuModule,
MatMenuModule, MatRippleModule,
MatRippleModule, MatTooltipModule,
MatTooltipModule, PublicationsSearchBarComponent,
PublicationsSearchBarComponent, ReactiveFormsModule,
ReactiveFormsModule, RouterModule,
RouterModule, SideMenuComponent,
SideMenuComponent, ],
], templateUrl: './header.component.html',
templateUrl: './header.component.html', styleUrl: './header.component.scss'
styleUrl: './header.component.scss',
}) })
export class HeaderComponent { export class HeaderComponent {
private authenticationService = inject(AuthenticationService); private authenticationService = inject(AuthenticationService);

View File

@@ -86,7 +86,6 @@ export const PROGRAMMING_LANGUAGES: ProgramingLanguage[] = [
@Component({ @Component({
selector: 'app-code-block-dialog', selector: 'app-code-block-dialog',
standalone: true,
templateUrl: './code-block-dialog.component.html', templateUrl: './code-block-dialog.component.html',
styleUrl: './code-block-dialog.component.scss', styleUrl: './code-block-dialog.component.scss',
imports: [ imports: [

View File

@@ -10,15 +10,14 @@ import { MatTooltip } from "@angular/material/tooltip";
@Component({ @Component({
selector: 'app-picture-selection', selector: 'app-picture-selection',
standalone: true,
templateUrl: './picture-selection-dialog.component.html', templateUrl: './picture-selection-dialog.component.html',
styleUrl: './picture-selection-dialog.component.scss', styleUrl: './picture-selection-dialog.component.scss',
imports: [ imports: [
MatIcon, MatIcon,
MatRippleModule, MatRippleModule,
MatProgressSpinnerModule, MatProgressSpinnerModule,
MatTooltip MatTooltip
], ]
}) })
export class PictureSelectionDialog implements OnInit { export class PictureSelectionDialog implements OnInit {
private readonly pictureRestService = inject(PictureRestService); private readonly pictureRestService = inject(PictureRestService);

View File

@@ -19,7 +19,6 @@ import { MatRippleModule } from "@angular/material/core";
@Component({ @Component({
selector: 'app-publication-edition', selector: 'app-publication-edition',
standalone: true,
templateUrl: './publication-edition.component.html', templateUrl: './publication-edition.component.html',
styleUrl: './publication-edition.component.scss', styleUrl: './publication-edition.component.scss',
imports: [ imports: [

View File

@@ -7,7 +7,6 @@ import { MatTooltipModule } from "@angular/material/tooltip";
@Component({ @Component({
selector: 'app-publication-list', selector: 'app-publication-list',
standalone: true,
templateUrl: './publication-list.component.html', templateUrl: './publication-list.component.html',
styleUrl: './publication-list.component.scss', styleUrl: './publication-list.component.scss',
imports: [CommonModule, RouterModule, MatTooltipModule] imports: [CommonModule, RouterModule, MatTooltipModule]

View File

@@ -9,7 +9,6 @@ import { Router } from "@angular/router";
selector: 'app-publications-search-bar', selector: 'app-publications-search-bar',
templateUrl: './publications-search-bar.component.html', templateUrl: './publications-search-bar.component.html',
styleUrl: './publications-search-bar.component.scss', styleUrl: './publications-search-bar.component.scss',
standalone: true,
imports: [ imports: [
MatIconModule, MatIconModule,
MatRippleModule, MatRippleModule,

View File

@@ -6,15 +6,14 @@ import { Observable } from "rxjs";
import { RouterModule } from "@angular/router"; import { RouterModule } from "@angular/router";
@Component({ @Component({
selector: 'app-categories-menu', selector: 'app-categories-menu',
standalone: true, templateUrl: './categories-menu.component.html',
templateUrl: './categories-menu.component.html', imports: [
imports: [ CommonModule,
CommonModule, RouterModule,
RouterModule, MatIconModule
MatIconModule ],
], styleUrl: './categories-menu.component.scss'
styleUrl: './categories-menu.component.scss'
}) })
export class CategoriesMenuComponent implements OnInit { export class CategoriesMenuComponent implements OnInit {
private sideMenuService = inject(SideMenuService); private sideMenuService = inject(SideMenuService);

View File

@@ -6,17 +6,16 @@ import { CategoriesMenuComponent } from './categories-menu/categories-menu.compo
import { MatRippleModule } from '@angular/material/core'; import { MatRippleModule } from '@angular/material/core';
@Component({ @Component({
selector: 'app-side-menu', selector: 'app-side-menu',
standalone: true, templateUrl: './side-menu.component.html',
templateUrl: './side-menu.component.html', styleUrl: './side-menu.component.scss',
styleUrl: './side-menu.component.scss', imports: [
imports: [ CategoriesMenuComponent,
CategoriesMenuComponent, MatIconModule,
MatIconModule, MatRippleModule,
MatRippleModule, MatTooltipModule,
MatTooltipModule, RouterModule
RouterModule ]
]
}) })
export class SideMenuComponent { export class SideMenuComponent {
isOpenned: boolean = false; isOpenned: boolean = false;

View File

@@ -5,7 +5,6 @@ import { MatProgressSpinnerModule } from "@angular/material/progress-spinner";
@Component({ @Component({
selector: 'app-submit-button', selector: 'app-submit-button',
standalone: true,
templateUrl: 'submit-button.component.html', templateUrl: 'submit-button.component.html',
styleUrl: 'submit-button.component.scss', styleUrl: 'submit-button.component.scss',
imports: [ imports: [

View File

@@ -4,11 +4,10 @@ import { AuthenticationService } from '../../core/service/authentication.service
import { Router } from '@angular/router'; import { Router } from '@angular/router';
@Component({ @Component({
selector: 'app-disconnection', selector: 'app-disconnection',
standalone: true, imports: [MatProgressSpinnerModule],
imports: [MatProgressSpinnerModule], templateUrl: './disconnection.component.html',
templateUrl: './disconnection.component.html', styleUrl: './disconnection.component.scss'
styleUrl: './disconnection.component.scss'
}) })
export class DisconnectionComponent implements OnInit { export class DisconnectionComponent implements OnInit {
private authenticationService = inject(AuthenticationService); private authenticationService = inject(AuthenticationService);

View File

@@ -7,16 +7,15 @@ import { HomeService } from './home.service';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
@Component({ @Component({
selector: 'app-home', selector: 'app-home',
standalone: true, imports: [
imports: [ CommonModule,
CommonModule, MatProgressSpinnerModule,
MatProgressSpinnerModule, PublicationListComponent
PublicationListComponent ],
], templateUrl: './home.component.html',
templateUrl: './home.component.html', styleUrl: './home.component.scss',
styleUrl: './home.component.scss', providers: [HomeService]
providers: [HomeService]
}) })
export class HomeComponent implements OnInit { export class HomeComponent implements OnInit {
private homeService = inject(HomeService); private homeService = inject(HomeService);

View File

@@ -9,18 +9,17 @@ import { SubmitButtonComponent } from "../../components/submit-button/submit-but
import { MatRippleModule } from '@angular/material/core'; import { MatRippleModule } from '@angular/material/core';
@Component({ @Component({
selector: 'app-login', selector: 'app-login',
standalone: true, templateUrl: './login.component.html',
templateUrl: './login.component.html', styleUrl: './login.component.scss',
styleUrl: './login.component.scss', imports: [
imports: [ MatIconModule,
MatIconModule, MatRippleModule,
MatRippleModule, ReactiveFormsModule,
ReactiveFormsModule, RouterModule,
RouterModule, SubmitButtonComponent
SubmitButtonComponent ],
], providers: [LoginService, MatSnackBarModule]
providers: [LoginService, MatSnackBarModule]
}) })
export class LoginComponent implements OnInit, OnDestroy { export class LoginComponent implements OnInit, OnDestroy {
private loginService = inject(LoginService); private loginService = inject(LoginService);

View File

@@ -12,7 +12,6 @@ import { MatRippleModule } from "@angular/material/core";
@Component({ @Component({
selector: 'app-my-component', selector: 'app-my-component',
standalone: true,
templateUrl: './my-publications.component.html', templateUrl: './my-publications.component.html',
styleUrl: './my-publications.component.scss', styleUrl: './my-publications.component.scss',
imports: [ imports: [

View File

@@ -11,7 +11,6 @@ import { CommonModule } from "@angular/common";
@Component({ @Component({
selector: 'app-publication-creation', selector: 'app-publication-creation',
standalone: true,
templateUrl: './publication-creation.component.html', templateUrl: './publication-creation.component.html',
styleUrl: './publication-creation.component.scss', styleUrl: './publication-creation.component.scss',
imports: [ imports: [

View File

@@ -17,23 +17,22 @@ import { PublicationRestService } from '../../core/rest-services/publications/pu
import { PictureSelectionDialog } from '../../components/publication-edition/picture-selection-dialog/picture-selection-dialog.component'; import { PictureSelectionDialog } from '../../components/publication-edition/picture-selection-dialog/picture-selection-dialog.component';
@Component({ @Component({
selector: 'app-publication-update', selector: 'app-publication-update',
standalone: true, imports: [
imports: [ CommonModule,
CommonModule, MatDialogModule,
MatDialogModule, MatIconModule,
MatIconModule, MatInputModule,
MatInputModule, MatProgressSpinnerModule,
MatProgressSpinnerModule, MatTabsModule,
MatTabsModule, MatTooltipModule,
MatTooltipModule, PictureSelectionDialog,
PictureSelectionDialog, ReactiveFormsModule,
ReactiveFormsModule, SubmitButtonComponent,
SubmitButtonComponent, PublicationEditionComponent
PublicationEditionComponent ],
], templateUrl: './publication-update.component.html',
templateUrl: './publication-update.component.html', styleUrl: './publication-update.component.scss'
styleUrl: './publication-update.component.scss',
}) })
export class PublicationUpdateComponent implements OnInit, OnDestroy { export class PublicationUpdateComponent implements OnInit, OnDestroy {
private readonly publicationRestService = inject(PublicationRestService); private readonly publicationRestService = inject(PublicationRestService);

View File

@@ -16,18 +16,17 @@ import { AuthenticationService } from '../../core/service/authentication.service
declare let Prism: any; declare let Prism: any;
@Component({ @Component({
selector: 'app-publication', selector: 'app-publication',
standalone: true, templateUrl: './publication.component.html',
templateUrl: './publication.component.html', styleUrl: './publication.component.scss',
styleUrl: './publication.component.scss', imports: [
imports: [ CommonModule,
CommonModule, MatIcon,
MatIcon, MatRippleModule,
MatRippleModule, MatProgressSpinner,
MatProgressSpinner, MatTooltipModule,
MatTooltipModule, RouterModule
RouterModule ]
]
}) })
export class PublicationComponent implements OnInit, OnDestroy { export class PublicationComponent implements OnInit, OnDestroy {
private readonly activatedRoute = inject(ActivatedRoute); private readonly activatedRoute = inject(ActivatedRoute);

View File

@@ -11,7 +11,6 @@ import { SearchPublicationsService } from "./search-publications.service";
selector: 'app-search-publications', selector: 'app-search-publications',
templateUrl: './search-publications.component.html', templateUrl: './search-publications.component.html',
styleUrl: './search-publications.component.scss', styleUrl: './search-publications.component.scss',
standalone: true,
imports: [CommonModule, MatProgressSpinner, PublicationListComponent], imports: [CommonModule, MatProgressSpinner, PublicationListComponent],
providers: [SearchPublicationsService] providers: [SearchPublicationsService]
}) })

View File

@@ -10,18 +10,17 @@ import { SubmitButtonComponent } from "../../components/submit-button/submit-but
import { MatRippleModule } from '@angular/material/core'; import { MatRippleModule } from '@angular/material/core';
@Component({ @Component({
selector: 'app-signin', selector: 'app-signin',
standalone: true, templateUrl: './signin.component.html',
templateUrl: './signin.component.html', styleUrl: './signin.component.scss',
styleUrl: './signin.component.scss', imports: [
imports: [ MatIconModule,
MatIconModule, MatRippleModule,
MatRippleModule, ReactiveFormsModule,
ReactiveFormsModule, RouterModule,
RouterModule, SubmitButtonComponent
SubmitButtonComponent ],
], providers: [SigninService, LoginService]
providers: [SigninService, LoginService]
}) })
export class SigninComponent implements OnInit, OnDestroy { export class SigninComponent implements OnInit, OnDestroy {
private signinService = inject(SigninService); private signinService = inject(SigninService);