Update Angular dependencies to latest versions (#1366)

This commit is contained in:
Aditya Chandel
2025-10-16 14:13:45 -06:00
committed by GitHub
parent c635b16870
commit 3149b07901
14 changed files with 1778 additions and 1591 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -12,14 +12,14 @@
},
"private": true,
"dependencies": {
"@angular/animations": "^20.1.6",
"@angular/common": "^20.1.6",
"@angular/compiler": "^20.1.6",
"@angular/core": "^20.1.6",
"@angular/forms": "^20.1.6",
"@angular/platform-browser": "^20.1.6",
"@angular/platform-browser-dynamic": "^20.1.6",
"@angular/router": "^20.1.6",
"@angular/animations": "^20.3.5",
"@angular/common": "^20.3.5",
"@angular/compiler": "^20.3.5",
"@angular/core": "^20.3.5",
"@angular/forms": "^20.3.5",
"@angular/platform-browser": "^20.3.5",
"@angular/platform-browser-dynamic": "^20.3.5",
"@angular/router": "^20.3.5",
"@iharbeck/ngx-virtual-scroller": "^19.0.1",
"@primeng/themes": "^20.0.1",
"@stomp/rx-stomp": "^2.0.1",
@@ -45,16 +45,16 @@
"tslib": "^2.8.1",
"ws": "^8.18.2",
"zone.js": "^0.15.1",
"@angular/cdk": "^20.2.2"
"@angular/cdk": "^20.2.9"
},
"devDependencies": {
"@angular-devkit/build-angular": "^20.1.5",
"@angular/cli": "^20.1.5",
"@angular/compiler-cli": "^20.1.6",
"@angular-devkit/build-angular": "^20.3.6",
"@angular/cli": "^20.3.6",
"@angular/compiler-cli": "^20.3.5",
"@tailwindcss/typography": "^0.5.16",
"@types/jasmine": "^5.1.8",
"@types/showdown": "^2.0.6",
"angular-eslint": "^20.1.1",
"angular-eslint": "^20.4.0",
"autoprefixer": "^10.4.21",
"eslint": "^9.33.0",
"jasmine-core": "^5.7.1",
@@ -64,7 +64,7 @@
"karma-jasmine": "^5.1.0",
"karma-jasmine-html-reporter": "^2.1.0",
"tailwindcss": "3.4.17",
"typescript": "~5.8.2",
"typescript": "~5.9.3",
"typescript-eslint": "^8.39.0"
}
}

View File

@@ -13,7 +13,7 @@ export class BookDialogHelperService {
private dialogService = inject(DialogService);
openShelfAssigner(bookIds: Set<number>): DynamicDialogRef {
openShelfAssigner(bookIds: Set<number>): DynamicDialogRef | null {
return this.dialogService.open(ShelfAssignerComponent, {
header: `Update Books' Shelves`,
modal: true,
@@ -31,7 +31,7 @@ export class BookDialogHelperService {
});
}
openLockUnlockMetadataDialog(bookIds: Set<number>): DynamicDialogRef {
openLockUnlockMetadataDialog(bookIds: Set<number>): DynamicDialogRef | null {
const count = bookIds.size;
return this.dialogService.open(LockUnlockMetadataDialogComponent, {
header: `Lock or Unlock Metadata for ${count} Selected Book${count > 1 ? 's' : ''}`,
@@ -43,7 +43,7 @@ export class BookDialogHelperService {
});
}
openMetadataRefreshDialog(bookIds: Set<number>): DynamicDialogRef {
openMetadataRefreshDialog(bookIds: Set<number>): DynamicDialogRef | null {
return this.dialogService.open(MultiBookMetadataFetchComponent, {
header: 'Metadata Refresh Options',
modal: true,
@@ -55,7 +55,7 @@ export class BookDialogHelperService {
});
}
openBulkMetadataEditDialog(bookIds: Set<number>): DynamicDialogRef {
openBulkMetadataEditDialog(bookIds: Set<number>): DynamicDialogRef | null {
return this.dialogService.open(BulkMetadataUpdateComponent, {
header: 'Bulk Edit Metadata',
modal: true,
@@ -71,7 +71,7 @@ export class BookDialogHelperService {
});
}
openMultibookMetadataEditorDialog(bookIds: Set<number>): DynamicDialogRef {
openMultibookMetadataEditorDialog(bookIds: Set<number>): DynamicDialogRef | null {
return this.dialogService.open(MultiBookMetadataEditorComponent, {
header: 'Bulk Edit Metadata',
showHeader: false,

View File

@@ -131,7 +131,7 @@ export class BookBrowserComponent implements OnInit {
entityOptions: MenuItem[] | undefined;
selectedBooks = new Set<number>();
isDrawerVisible = false;
dynamicDialogRef: DynamicDialogRef | undefined;
dynamicDialogRef: DynamicDialogRef | undefined | null;
EntityType = EntityType;
currentFilterLabel: string | null = null;
rawFilterParamFromUrl: string | null = null;
@@ -542,7 +542,7 @@ export class BookBrowserComponent implements OnInit {
openShelfAssigner(): void {
this.dynamicDialogRef = this.dialogHelperService.openShelfAssigner(this.selectedBooks);
this.dynamicDialogRef.onClose.subscribe(() => {
this.dynamicDialogRef?.onClose.subscribe(() => {
this.selectedBooks = new Set<number>();
});
}

View File

@@ -27,7 +27,7 @@ import {ProgressSpinner} from 'primeng/progressspinner';
standalone: true
})
export class MainDashboardComponent implements OnInit {
ref: DynamicDialogRef | undefined;
ref: DynamicDialogRef | undefined | null;
private bookService = inject(BookService);
private dialogService = inject(DialogService);

View File

@@ -30,7 +30,7 @@ export class LibraryCreatorComponent implements OnInit {
mode!: string;
library!: Library | undefined;
editModeLibraryName: string = '';
directoryPickerDialogRef!: DynamicDialogRef<DirectoryPickerComponent>;
directoryPickerDialogRef!: DynamicDialogRef<DirectoryPickerComponent> | null;
watch: boolean = false;
scanMode: LibraryScanMode = 'FILE_AS_BOOK';
defaultBookFormat: BookFileType | undefined = undefined;
@@ -81,7 +81,7 @@ export class LibraryCreatorComponent implements OnInit {
contentStyle: {overflow: 'hidden'},
baseZIndex: 10
});
this.directoryPickerDialogRef.onClose.subscribe((selectedFolders: string[] | null) => {
this.directoryPickerDialogRef?.onClose.subscribe((selectedFolders: string[] | null) => {
if (selectedFolders && selectedFolders.length > 0) {
selectedFolders.forEach(folder => {
if (!this.folders.includes(folder)) {

View File

@@ -676,7 +676,7 @@ export class MetadataEditorComponent implements OnInit {
},
});
ref.onClose.subscribe((result) => {
ref?.onClose.subscribe((result) => {
if (result) {
this.metadataForm.get("thumbnailUrl")?.setValue(result);
this.onSave();

View File

@@ -31,7 +31,7 @@ import {UserService} from '../../user-management/user.service';
export class EmailV2ProviderComponent implements OnInit {
emailProviders: EmailProvider[] = [];
editingProviderIds: number[] = [];
ref: DynamicDialogRef | undefined;
ref: DynamicDialogRef | undefined | null;
private dialogService = inject(DialogService);
private emailProvidersService = inject(EmailV2ProviderService);
private messageService = inject(MessageService);
@@ -130,7 +130,7 @@ export class EmailV2ProviderComponent implements OnInit {
closable: true,
style: {position: 'absolute', top: '15%'},
});
this.ref.onClose.subscribe((result) => {
this.ref?.onClose.subscribe((result) => {
if (result) {
this.loadEmailProviders();
}

View File

@@ -28,7 +28,7 @@ import {CreateEmailRecipientDialogComponent} from '../create-email-recipient-dia
export class EmailV2RecipientComponent implements OnInit {
recipientEmails: EmailRecipient[] = [];
editingRecipientIds: number[] = [];
ref: DynamicDialogRef | undefined;
ref: DynamicDialogRef | undefined | null;
private dialogService = inject(DialogService);
private emailRecipientService = inject(EmailV2RecipientService);
private messageService = inject(MessageService);
@@ -117,7 +117,7 @@ export class EmailV2RecipientComponent implements OnInit {
closable: true,
style: {position: 'absolute', top: '15%'},
});
this.ref.onClose.subscribe((result) => {
this.ref?.onClose.subscribe((result) => {
if (result) {
this.loadRecipientEmails();
}

View File

@@ -35,7 +35,7 @@ import {Tooltip} from 'primeng/tooltip';
styleUrls: ['./user-management.component.scss'],
})
export class UserManagementComponent implements OnInit, OnDestroy {
ref: DynamicDialogRef | undefined;
ref: DynamicDialogRef | undefined | null;
private dialogService = inject(DialogService);
private userService = inject(UserService);
private libraryService = inject(LibraryService);
@@ -111,7 +111,7 @@ export class UserManagementComponent implements OnInit, OnDestroy {
closable: true,
style: {position: 'absolute', top: '15%'},
});
this.ref.onClose.subscribe((result) => {
this.ref?.onClose.subscribe((result) => {
if (result) {
this.loadUsers();
}

View File

@@ -23,7 +23,7 @@ export class DuplicateFilesNotificationComponent implements OnDestroy {
displayDialog = false;
private duplicateFileService = inject(DuplicateFileService);
private ref: DynamicDialogRef | undefined;
private ref: DynamicDialogRef | undefined | null;
duplicateFiles$ = this.duplicateFileService.duplicateFiles$;
duplicateFilesCount$: Observable<number> = this.duplicateFiles$.pipe(
@@ -48,7 +48,7 @@ export class DuplicateFilesNotificationComponent implements OnDestroy {
}
});
this.ref.onClose.subscribe((result: any) => {
this.ref?.onClose.subscribe((result: any) => {
if (result) {
// Handle any result from dialog if needed
}

View File

@@ -27,7 +27,7 @@ export class AppMenuComponent implements OnInit {
magicShelfMenu$: Observable<any> | undefined;
versionInfo: AppVersion | null = null;
dynamicDialogRef: DynamicDialogRef | undefined;
dynamicDialogRef: DynamicDialogRef | undefined | null;
private libraryService = inject(LibraryService);
private shelfService = inject(ShelfService);

View File

@@ -9,7 +9,7 @@ export class IconPickerService {
open(): Observable<string> {
const isMobile = window.innerWidth <= 768;
const ref: DynamicDialogRef = this.dialog.open(IconPickerComponent, {
const ref: DynamicDialogRef | null = this.dialog.open(IconPickerComponent, {
header: 'Choose an Icon',
modal: true,
closable: true,
@@ -22,6 +22,6 @@ export class IconPickerService {
minWidth: isMobile ? '90vw' : '800px',
}
});
return ref.onClose as Observable<string>;
return ref!.onClose as Observable<string>;
}
}

View File

@@ -13,7 +13,7 @@ export class DialogLauncherService {
dialogService = inject(DialogService);
open(options: { component: any; header: string; top?: string; width?: string }): DynamicDialogRef {
open(options: { component: any; header: string; top?: string; width?: string }): DynamicDialogRef | null {
const isMobile = window.innerWidth <= 768;
const {component, header, top, width} = options;
return this.dialogService.open(component, {