angular to 19

This commit is contained in:
Bastian Wagner
2026-02-13 13:50:24 +01:00
parent b83107094f
commit 8aabef1cd6
29 changed files with 5837 additions and 4180 deletions

View File

@@ -15,7 +15,7 @@
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:application",
"builder": "@angular/build:application",
"options": {
"outputPath": "dist/client",
"index": "src/index.html",
@@ -70,7 +70,7 @@
"defaultConfiguration": "production"
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"builder": "@angular/build:dev-server",
"options": {
"proxyConfig": "proxy.conf.json"
},
@@ -89,7 +89,7 @@
"defaultConfiguration": "development"
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n"
"builder": "@angular/build:extract-i18n"
}
}
}

9708
client/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -13,29 +13,29 @@
"private": true,
"dependencies": {
"@ag-grid-community/locale": "^32.1.0",
"@angular/animations": "^18.0.0",
"@angular/animations": "^19.2.18",
"@angular/cdk": "^18.2.4",
"@angular/common": "^18.0.0",
"@angular/compiler": "^18.0.0",
"@angular/core": "^18.0.0",
"@angular/forms": "^18.0.0",
"@angular/common": "^19.2.18",
"@angular/compiler": "^19.2.18",
"@angular/core": "^19.2.18",
"@angular/forms": "^19.2.18",
"@angular/material": "^18.2.4",
"@angular/material-moment-adapter": "^18.2.9",
"@angular/platform-browser": "^18.0.0",
"@angular/platform-browser-dynamic": "^18.0.0",
"@angular/router": "^18.0.0",
"@angular/platform-browser": "^19.2.18",
"@angular/platform-browser-dynamic": "^19.2.18",
"@angular/router": "^19.2.18",
"@ngneat/overview": "^6.0.0",
"@ngxpert/hot-toast": "^3.0.1",
"ag-grid-angular": "^32.1.0",
"ag-grid-community": "^32.1.0",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
"zone.js": "~0.14.3"
"zone.js": "~0.15.1"
},
"devDependencies": {
"@angular-devkit/build-angular": "^18.0.2",
"@angular/cli": "^18.0.2",
"@angular/compiler-cli": "^18.0.0",
"@angular/build": "^19.2.20",
"@angular/cli": "^19.2.20",
"@angular/compiler-cli": "^19.2.18",
"@faker-js/faker": "^9.0.3",
"@types/jest": "^29.5.14",
"autoprefixer": "^10.4.20",
@@ -44,6 +44,6 @@
"postcss": "^8.4.49",
"tailwindcss": "^3.4.16",
"ts-node": "^10.9.2",
"typescript": "~5.4.2"
"typescript": "~5.8.3"
}
}
}

View File

@@ -3,15 +3,14 @@ import { MAT_DATE_LOCALE } from '@angular/material/core';
import { RouterOutlet } from '@angular/router';
@Component({
selector: 'app-root',
standalone: true,
imports: [RouterOutlet,],
providers: [
{ provide: LOCALE_ID, useValue: 'de-DE' },
{ provide: MAT_DATE_LOCALE, useValue: 'de-DE' }
],
templateUrl: './app.component.html',
styleUrl: './app.component.scss'
selector: 'app-root',
imports: [RouterOutlet,],
providers: [
{ provide: LOCALE_ID, useValue: 'de-DE' },
{ provide: MAT_DATE_LOCALE, useValue: 'de-DE' }
],
templateUrl: './app.component.html',
styleUrl: './app.component.scss'
})
export class AppComponent {

View File

@@ -8,11 +8,10 @@ import { AuthService } from '../auth/auth.service';
import { SettingsComponent } from '../../modules/settings/settings.component';
@Component({
selector: 'app-layout',
standalone: true,
imports: [MatButtonModule, MatIconModule, MatSidenavModule, RouterModule, MatToolbarModule, SettingsComponent],
templateUrl: './layout.component.html',
styleUrl: './layout.component.scss'
selector: 'app-layout',
imports: [MatButtonModule, MatIconModule, MatSidenavModule, RouterModule, MatToolbarModule, SettingsComponent],
templateUrl: './layout.component.html',
styleUrl: './layout.component.scss'
})
export class LayoutComponent {
private authService: AuthService = inject(AuthService);

View File

@@ -10,12 +10,11 @@ import { AG_GRID_LOCALE_DE } from '@ag-grid-community/locale';
import { MatButtonModule } from '@angular/material/button';
@Component({
selector: 'app-all-users',
standalone: true,
imports: [AgGridAngular, MatButtonModule],
providers: [DatePipe],
templateUrl: './all-users.component.html',
styleUrl: './all-users.component.scss'
selector: 'app-all-users',
imports: [AgGridAngular, MatButtonModule],
providers: [DatePipe],
templateUrl: './all-users.component.html',
styleUrl: './all-users.component.scss'
})
export class AllUsersComponent {

View File

@@ -4,11 +4,10 @@ import { AuthService } from '../../../core/auth/auth.service';
import { MatDialog, MatDialogActions, MatDialogModule, MatDialogRef } from '@angular/material/dialog';
@Component({
selector: 'app-login',
standalone: true,
imports: [MatButtonModule, MatDialogModule],
templateUrl: './login.component.html',
styleUrl: './login.component.scss'
selector: 'app-login',
imports: [MatButtonModule, MatDialogModule],
templateUrl: './login.component.html',
styleUrl: './login.component.scss'
})
export class LoginComponent {
public authService: AuthService = inject(AuthService);

View File

@@ -11,11 +11,10 @@ import { MatButtonModule } from '@angular/material/button';
import { MatIconModule } from '@angular/material/icon';
@Component({
selector: 'app-create-cylinder',
standalone: true,
imports: [CommonModule, MatFormFieldModule, MatInputModule, MatDialogModule, ReactiveFormsModule, FormsModule, MatSelectModule, MatButtonModule, MatIconModule],
templateUrl: './create-cylinder.component.html',
styleUrl: './create-cylinder.component.scss'
selector: 'app-create-cylinder',
imports: [CommonModule, MatFormFieldModule, MatInputModule, MatDialogModule, ReactiveFormsModule, FormsModule, MatSelectModule, MatButtonModule, MatIconModule],
templateUrl: './create-cylinder.component.html',
styleUrl: './create-cylinder.component.scss'
})
export class CreateCylinderComponent {
private api: ApiService = inject(ApiService);

View File

@@ -6,12 +6,11 @@ import { MatIconModule } from '@angular/material/icon';
import { ICylinder } from '../../../../model/interface/cylinder.interface';
@Component({
selector: 'app-delete-cylinder',
standalone: true,
imports: [MatDialogModule, MatButtonModule, CommonModule, MatIconModule],
providers: [{ provide: LOCALE_ID, useValue: 'de-DE' },],
templateUrl: './delete-cylinder.component.html',
styleUrl: './delete-cylinder.component.scss'
selector: 'app-delete-cylinder',
imports: [MatDialogModule, MatButtonModule, CommonModule, MatIconModule],
providers: [{ provide: LOCALE_ID, useValue: 'de-DE' },],
templateUrl: './delete-cylinder.component.html',
styleUrl: './delete-cylinder.component.scss'
})
export class DeleteCylinderComponent {
readonly dialogRef = inject(MatDialogRef<DeleteCylinderComponent>);

View File

@@ -11,12 +11,11 @@ import { MatIconModule } from '@angular/material/icon';
import { MatButtonModule } from '@angular/material/button';
@Component({
selector: 'app-cylinder',
standalone: true,
imports: [AgGridAngular, MatDialogModule, MatIconModule, MatButtonModule],
providers: [DatePipe],
templateUrl: './cylinder.component.html',
styleUrl: './cylinder.component.scss'
selector: 'app-cylinder',
imports: [AgGridAngular, MatDialogModule, MatIconModule, MatButtonModule],
providers: [DatePipe],
templateUrl: './cylinder.component.html',
styleUrl: './cylinder.component.scss'
})
export class CylinderComponent {
private api: ApiService = inject(ApiService);

View File

@@ -11,12 +11,11 @@ import { AG_GRID_LOCALE_DE } from '@ag-grid-community/locale';
import { MatButtonModule } from '@angular/material/button';
@Component({
selector: 'app-dashboard',
standalone: true,
imports: [AgGridAngular, MatIconModule, AgGridAngular, MatCardModule, RouterModule, MatButtonModule],
providers: [DatePipe],
templateUrl: './dashboard.component.html',
styleUrl: './dashboard.component.scss'
selector: 'app-dashboard',
imports: [AgGridAngular, MatIconModule, AgGridAngular, MatCardModule, RouterModule, MatButtonModule],
providers: [DatePipe],
templateUrl: './dashboard.component.html',
styleUrl: './dashboard.component.scss'
})
export class DashboardComponent {
private api = inject(ApiService);

View File

@@ -13,12 +13,11 @@ import { AgLoadingComponent } from '../../../../shared/ag-grid/components/ag-loa
import { HELPER } from '../../../../shared/helper.service';
@Component({
selector: 'app-archive',
standalone: true,
imports: [MatDialogModule, AgGridAngular, MatButtonModule, MatIconModule],
providers: [DatePipe, { provide: LOCALE_ID, useValue: 'de-DE' }],
templateUrl: './archive.component.html',
styleUrl: './archive.component.scss'
selector: 'app-archive',
imports: [MatDialogModule, AgGridAngular, MatButtonModule, MatIconModule],
providers: [DatePipe, { provide: LOCALE_ID, useValue: 'de-DE' }],
templateUrl: './archive.component.html',
styleUrl: './archive.component.scss'
})
export class ArchiveComponent {
private api: ApiService = inject(ApiService);

View File

@@ -5,11 +5,10 @@ import { MatButtonModule } from '@angular/material/button';
import { MatIconModule } from '@angular/material/icon';
@Component({
selector: 'app-delete-key',
standalone: true,
imports: [MatDialogModule, MatButtonModule, MatIconModule],
templateUrl: './delete-key.component.html',
styleUrl: './delete-key.component.scss'
selector: 'app-delete-key',
imports: [MatDialogModule, MatButtonModule, MatIconModule],
templateUrl: './delete-key.component.html',
styleUrl: './delete-key.component.scss'
})
export class DeleteKeyComponent {
readonly dialogRef = inject(MatDialogRef<DeleteKeyComponent>);

View File

@@ -26,17 +26,16 @@ import { AG_GRID_LOCALE_DE } from '@ag-grid-community/locale';
import { AgGridAngular } from 'ag-grid-angular';
@Component({
selector: 'app-handover-dialog',
standalone: true,
imports: [FormsModule, MatTabsModule, AgGridAngular, ReactiveFormsModule, MatDatepickerModule, MatFormFieldModule, MatInputModule, MatButtonModule, MatDialogModule, CommonModule, MatAutocompleteModule, MatProgressSpinnerModule, MatRadioModule],
providers: [
provideNativeDateAdapter(),
{ provide: LOCALE_ID, useValue: 'de-DE' },
{ provide: MAT_DATE_LOCALE, useValue: 'de-DE' },
DatePipe
],
templateUrl: './handover-dialog.component.html',
styleUrl: './handover-dialog.component.scss'
selector: 'app-handover-dialog',
imports: [FormsModule, MatTabsModule, AgGridAngular, ReactiveFormsModule, MatDatepickerModule, MatFormFieldModule, MatInputModule, MatButtonModule, MatDialogModule, CommonModule, MatAutocompleteModule, MatProgressSpinnerModule, MatRadioModule],
providers: [
provideNativeDateAdapter(),
{ provide: LOCALE_ID, useValue: 'de-DE' },
{ provide: MAT_DATE_LOCALE, useValue: 'de-DE' },
DatePipe
],
templateUrl: './handover-dialog.component.html',
styleUrl: './handover-dialog.component.scss'
})
export class HandoverDialogComponent {
@@ -214,7 +213,7 @@ export class HandoverDialogComponent {
@Component({
template: `
template: `
<mat-nav-list>
<a mat-list-item (click)="openLink($event, true)">
<span matListItemTitle>Anlegen</span>
@@ -228,8 +227,7 @@ export class HandoverDialogComponent {
</mat-nav-list>
`,
standalone: true,
imports: [MatInputModule, MatListModule],
imports: [MatInputModule, MatListModule]
})
export class BottomSheetCreateCustomer {
private _bottomSheetRef =

View File

@@ -6,12 +6,11 @@ import { IKey } from '../../../../model/interface/key.interface';
import { CommonModule, DatePipe } from '@angular/common';
@Component({
selector: 'app-lost-key',
standalone: true,
imports: [MatDialogModule, MatButtonModule, MatIconModule, CommonModule],
providers: [{ provide: LOCALE_ID, useValue: 'de-DE' }],
templateUrl: './lost-key.component.html',
styleUrl: './lost-key.component.scss'
selector: 'app-lost-key',
imports: [MatDialogModule, MatButtonModule, MatIconModule, CommonModule],
providers: [{ provide: LOCALE_ID, useValue: 'de-DE' }],
templateUrl: './lost-key.component.html',
styleUrl: './lost-key.component.scss'
})
export class LostKeyComponent {
readonly dialogRef = inject(MatDialogRef<LostKeyComponent>);

View File

@@ -12,12 +12,11 @@ import { LostKeyComponent } from '../lost-key/lost-key.component';
import { MatButtonModule } from '@angular/material/button';
@Component({
selector: 'app-lost-keys',
standalone: true,
imports: [MatDialogModule, AgGridAngular, CommonModule, MatButtonModule],
providers: [DatePipe],
templateUrl: './lost-keys.component.html',
styleUrl: './lost-keys.component.scss'
selector: 'app-lost-keys',
imports: [MatDialogModule, AgGridAngular, CommonModule, MatButtonModule],
providers: [DatePipe],
templateUrl: './lost-keys.component.html',
styleUrl: './lost-keys.component.scss'
})
export class LostKeysComponent {
private api: ApiService = inject(ApiService);

View File

@@ -16,11 +16,10 @@ import { IKey } from '../../../model/interface/key.interface';
import { ICylinder } from '../../../model/interface/cylinder.interface';
@Component({
selector: 'app-create',
standalone: true,
imports: [MatDialogModule, MatButtonModule, ReactiveFormsModule, FormsModule, MatFormFieldModule, MatInputModule, MatSelectModule, MatDialogModule, MatIconModule, MatCheckboxModule],
templateUrl: './create.component.html',
styleUrl: './create.component.scss'
selector: 'app-create',
imports: [MatDialogModule, MatButtonModule, ReactiveFormsModule, FormsModule, MatFormFieldModule, MatInputModule, MatSelectModule, MatDialogModule, MatIconModule, MatCheckboxModule],
templateUrl: './create.component.html',
styleUrl: './create.component.scss'
})
export class CreateKeyComponent {

View File

@@ -9,11 +9,10 @@ import { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/materia
import { MatButtonModule } from '@angular/material/button';
@Component({
selector: 'app-select-key-cylinder',
standalone: true,
imports: [AgGridAngular, MatDialogModule, MatButtonModule],
templateUrl: './select-key-cylinder.component.html',
styleUrl: './select-key-cylinder.component.scss'
selector: 'app-select-key-cylinder',
imports: [AgGridAngular, MatDialogModule, MatButtonModule],
templateUrl: './select-key-cylinder.component.html',
styleUrl: './select-key-cylinder.component.scss'
})
export class SelectKeyCylinderComponent {
private toast: HotToastService = inject(HotToastService);

View File

@@ -20,12 +20,11 @@ import { MatTooltipModule } from '@angular/material/tooltip';
import { SelectKeyCylinderComponent } from './create/select-key-cylinder/select-key-cylinder.component';
@Component({
selector: 'app-keys',
standalone: true,
imports: [AgGridAngular, MatButtonModule, MatDialogModule, MatIconModule, MatTooltipModule],
providers: [DatePipe],
templateUrl: './keys.component.html',
styleUrl: './keys.component.scss'
selector: 'app-keys',
imports: [AgGridAngular, MatButtonModule, MatDialogModule, MatIconModule, MatTooltipModule],
providers: [DatePipe],
templateUrl: './keys.component.html',
styleUrl: './keys.component.scss'
})
export class KeysComponent {
private api: ApiService = inject(ApiService);

View File

@@ -10,11 +10,10 @@ import { HotToastService } from '@ngxpert/hot-toast';
import {MatProgressBarModule} from '@angular/material/progress-bar';
@Component({
selector: 'app-settings',
standalone: true,
imports: [MatProgressBarModule, MatFormFieldModule, MatInputModule, MatButtonModule, ReactiveFormsModule, FormsModule, MatSlideToggleModule],
templateUrl: './settings.component.html',
styleUrl: './settings.component.scss'
selector: 'app-settings',
imports: [MatProgressBarModule, MatFormFieldModule, MatInputModule, MatButtonModule, ReactiveFormsModule, FormsModule, MatSlideToggleModule],
templateUrl: './settings.component.html',
styleUrl: './settings.component.scss'
})
export class SettingsComponent {
@Input() isOpen = false;

View File

@@ -5,11 +5,10 @@ import { IUser } from '../../../../model/interface/user.interface';
import { MatIconModule } from '@angular/material/icon';
@Component({
selector: 'app-remove-manager-popup',
standalone: true,
imports: [MatButtonModule, MatDialogModule, MatIconModule],
templateUrl: './remove-manager-popup.component.html',
styleUrl: './remove-manager-popup.component.scss'
selector: 'app-remove-manager-popup',
imports: [MatButtonModule, MatDialogModule, MatIconModule],
templateUrl: './remove-manager-popup.component.html',
styleUrl: './remove-manager-popup.component.scss'
})
export class RemoveManagerPopupComponent {
readonly dialogRef = inject(MatDialogRef<RemoveManagerPopupComponent>);

View File

@@ -17,11 +17,10 @@ import { IUser } from '../../../../model/interface/user.interface';
import { MatIconModule } from '@angular/material/icon';
@Component({
selector: 'app-system-manager',
standalone: true,
imports: [AgGridAngular, MatDialogModule, MatButtonModule, MatInputModule, MatFormFieldModule, CommonModule, FormsModule, MatIconModule],
templateUrl: './system-manager.component.html',
styleUrl: './system-manager.component.scss'
selector: 'app-system-manager',
imports: [AgGridAngular, MatDialogModule, MatButtonModule, MatInputModule, MatFormFieldModule, CommonModule, FormsModule, MatIconModule],
templateUrl: './system-manager.component.html',
styleUrl: './system-manager.component.scss'
})
export class SystemManagerComponent {

View File

@@ -9,11 +9,10 @@ import { MatInputModule } from '@angular/material/input';
import { MatIconModule } from '@angular/material/icon';
@Component({
selector: 'app-create',
standalone: true,
imports: [MatDialogModule, MatButtonModule, ReactiveFormsModule, FormsModule, MatFormFieldModule, MatInputModule, MatDialogModule, MatIconModule],
templateUrl: './create.component.html',
styleUrl: './create.component.scss'
selector: 'app-create',
imports: [MatDialogModule, MatButtonModule, ReactiveFormsModule, FormsModule, MatFormFieldModule, MatInputModule, MatDialogModule, MatIconModule],
templateUrl: './create.component.html',
styleUrl: './create.component.scss'
})
export class CreateSystemComponent {
private api: ApiService = inject(ApiService);

View File

@@ -10,12 +10,11 @@ import { CreateSystemComponent } from './create/create.component';
import { AgSystemManagerComponent } from '../../shared/ag-grid/components/ag-system-manager/ag-system-manager.component';
@Component({
selector: 'app-system',
standalone: true,
imports: [AgGridAngular, MatButtonModule, MatDialogModule],
providers: [DatePipe],
templateUrl: './system.component.html',
styleUrl: './system.component.scss'
selector: 'app-system',
imports: [AgGridAngular, MatButtonModule, MatDialogModule],
providers: [DatePipe],
templateUrl: './system.component.html',
styleUrl: './system.component.scss'
})
export class SystemComponent {
private api: ApiService = inject(ApiService);

View File

@@ -7,10 +7,9 @@ import { ICellRendererParams } from 'ag-grid-community';
import { MatTooltipModule } from '@angular/material/tooltip';
@Component({
standalone: true,
imports: [MatDialogModule, MatTooltipModule],
templateUrl: './ag-base-component.component.html',
styleUrl: './ag-base-component.component.scss'
imports: [MatDialogModule, MatTooltipModule],
templateUrl: './ag-base-component.component.html',
styleUrl: './ag-base-component.component.scss'
})
export class AgBaseComponentComponent implements ICellRendererAngularComp {
protected api: ApiService = inject(ApiService);

View File

@@ -4,11 +4,10 @@ import { DeleteCylinderComponent } from '../../../../modules/cylinder/components
import { MatTooltipModule } from '@angular/material/tooltip';
@Component({
selector: 'app-ag-delete-cylinder',
standalone: true,
imports: [MatTooltipModule],
templateUrl: './ag-delete-cylinder.component.html',
styleUrl: './ag-delete-cylinder.component.scss'
selector: 'app-ag-delete-cylinder',
imports: [MatTooltipModule],
templateUrl: './ag-delete-cylinder.component.html',
styleUrl: './ag-delete-cylinder.component.scss'
})
export class AgDeleteCylinderComponent extends AgBaseComponentComponent {

View File

@@ -12,11 +12,10 @@ import { LostKeyComponent } from '../../../../modules/keys/components/lost-key/l
import { CreateKeyComponent } from '../../../../modules/keys/create/create.component';
@Component({
selector: 'app-ag-delete-key',
standalone: true,
imports: [MatDialogModule, MatTooltipModule],
templateUrl: './ag-delete-key.component.html',
styleUrl: './ag-delete-key.component.scss'
selector: 'app-ag-delete-key',
imports: [MatDialogModule, MatTooltipModule],
templateUrl: './ag-delete-key.component.html',
styleUrl: './ag-delete-key.component.scss'
})
export class AgDeleteKeyComponent implements ICellRendererAngularComp {
key!: IKey;

View File

@@ -4,11 +4,10 @@ import { ILoadingOverlayAngularComp } from 'ag-grid-angular';
import { ILoadingOverlayParams } from 'ag-grid-community';
@Component({
selector: 'app-ag-loading',
standalone: true,
imports: [MatProgressSpinnerModule],
templateUrl: './ag-loading.component.html',
styleUrl: './ag-loading.component.scss'
selector: 'app-ag-loading',
imports: [MatProgressSpinnerModule],
templateUrl: './ag-loading.component.html',
styleUrl: './ag-loading.component.scss'
})
export class AgLoadingComponent implements ILoadingOverlayAngularComp {
agInit(params: ILoadingOverlayParams<any, any>): void {

View File

@@ -8,11 +8,10 @@ import { ApiService } from '../../../api.service';
import { SystemManagerComponent } from '../../../../modules/system/components/system-manager/system-manager.component';
@Component({
selector: 'app-ag-system-manager',
standalone: true,
imports: [MatDialogModule, MatTooltipModule],
templateUrl: './ag-system-manager.component.html',
styleUrl: './ag-system-manager.component.scss'
selector: 'app-ag-system-manager',
imports: [MatDialogModule, MatTooltipModule],
templateUrl: './ag-system-manager.component.html',
styleUrl: './ag-system-manager.component.scss'
})
export class AgSystemManagerComponent implements ICellRendererAngularComp {