Skip to content

Commit 760f8df

Browse files
bodnaraxflord
authored andcommitted
feat: added type to dialog config
Method for retrieving default dialog config will return typed config if data type is provided. Provided example implementation for couple of cases.
1 parent fb7ff10 commit 760f8df

File tree

9 files changed

+53
-24
lines changed

9 files changed

+53
-24
lines changed

apps/admin-gui/src/app/admin/pages/admin-page/admin-attributes/admin-attributes.component.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import { Component, HostBinding, OnInit } from '@angular/core';
22
import { SelectionModel } from '@angular/cdk/collections';
3-
import { DeleteAttributeDefinitionDialogComponent } from '../../../../shared/components/dialogs/delete-attribute-definition-dialog/delete-attribute-definition-dialog.component';
3+
import {
4+
DeleteAttributeDefinitionDialogComponent,
5+
DeleteAttributeDefinitionDialogData,
6+
} from '../../../../shared/components/dialogs/delete-attribute-definition-dialog/delete-attribute-definition-dialog.component';
47
import { MatDialog } from '@angular/material/dialog';
58
import { CreateAttributeDefinitionDialogComponent } from '../../../../shared/components/dialogs/create-attribute-definition-dialog/create-attribute-definition-dialog.component';
69
import { getDefaultDialogConfig } from '@perun-web-apps/perun/utils';
@@ -36,7 +39,7 @@ export class AdminAttributesComponent implements OnInit {
3639
}
3740

3841
onCreate(): void {
39-
const config = getDefaultDialogConfig();
42+
const config = getDefaultDialogConfig<never>();
4043
config.width = '650px';
4144

4245
const dialogRef = this.dialog.open(CreateAttributeDefinitionDialogComponent, config);
@@ -49,7 +52,7 @@ export class AdminAttributesComponent implements OnInit {
4952
}
5053

5154
onDelete(): void {
52-
const config = getDefaultDialogConfig();
55+
const config = getDefaultDialogConfig<DeleteAttributeDefinitionDialogData>();
5356
config.width = '450px';
5457
config.data = {
5558
attributes: this.selected.selected,
@@ -79,7 +82,7 @@ export class AdminAttributesComponent implements OnInit {
7982
}
8083

8184
onImport(): void {
82-
const config = getDefaultDialogConfig();
85+
const config = getDefaultDialogConfig<never>();
8386
config.width = '700px';
8487

8588
const dialogRef = this.dialog.open(AttributeImportDialogComponent, config);

apps/admin-gui/src/app/admin/pages/admin-page/admin-services/service-detail-page/service-destinations/service-destinations.component.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ import {
1010
PerunTranslateService,
1111
} from '@perun-web-apps/perun/services';
1212
import { getDefaultDialogConfig } from '@perun-web-apps/perun/utils';
13-
import { RemoveDestinationDialogComponent } from '../../../../../../shared/components/dialogs/remove-destination-dialog/remove-destination-dialog.component';
13+
import {
14+
RemoveDestinationDialogComponent,
15+
RemoveDestinationDialogData,
16+
} from '../../../../../../shared/components/dialogs/remove-destination-dialog/remove-destination-dialog.component';
1417

1518
@Component({
1619
selector: 'app-service-destinations',
@@ -63,7 +66,7 @@ export class ServiceDestinationsComponent implements OnInit {
6366
}
6467

6568
onRemove(): void {
66-
const config = getDefaultDialogConfig();
69+
const config = getDefaultDialogConfig<RemoveDestinationDialogData>();
6770
config.width = '500px';
6871
config.data = {
6972
destinations: this.selection.selected,

apps/admin-gui/src/app/admin/pages/admin-page/admin-services/service-detail-page/service-detail-page.component.ts

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,24 @@ import { SideMenuService } from '../../../../../core/services/common/side-menu.s
1010
import { SideMenuItemService } from '../../../../../shared/side-menu/side-menu-item.service';
1111
import { getDefaultDialogConfig } from '@perun-web-apps/perun/utils';
1212
import { MatDialog } from '@angular/material/dialog';
13-
import { CreateEditServiceDialogComponent } from '../../../../../shared/components/dialogs/create-edit-service-dialog/create-edit-service-dialog.component';
13+
import {
14+
CreateEditServiceDialogComponent,
15+
CreateServiceDialogData,
16+
} from '../../../../../shared/components/dialogs/create-edit-service-dialog/create-edit-service-dialog.component';
1417
import {
1518
EntityStorageService,
1619
GuiAuthResolver,
1720
NotificatorService,
1821
} from '@perun-web-apps/perun/services';
19-
import { DeleteServiceDialogComponent } from '../../../../../shared/components/dialogs/delete-service-dialog/delete-service-dialog.component';
22+
import {
23+
DeleteServiceDialogComponent,
24+
DeleteServiceDialogData,
25+
} from '../../../../../shared/components/dialogs/delete-service-dialog/delete-service-dialog.component';
2026
import { TranslateService } from '@ngx-translate/core';
21-
import { UniversalConfirmationItemsDialogComponent } from '@perun-web-apps/perun/dialogs';
27+
import {
28+
UniversalConfirmationItemsDialogComponent,
29+
UniversalConfirmationItemsDialogData,
30+
} from '@perun-web-apps/perun/dialogs';
2231

2332
@Component({
2433
selector: 'app-service-detail-page',
@@ -55,7 +64,7 @@ export class ServiceDetailPageComponent implements OnInit {
5564
}
5665

5766
editService(): void {
58-
const config = getDefaultDialogConfig();
67+
const config = getDefaultDialogConfig<CreateServiceDialogData>();
5968
config.width = '600px';
6069
config.data = {
6170
theme: 'service-theme',
@@ -72,7 +81,7 @@ export class ServiceDetailPageComponent implements OnInit {
7281
}
7382

7483
removeService(): void {
75-
const config = getDefaultDialogConfig();
84+
const config = getDefaultDialogConfig<DeleteServiceDialogData>();
7685
config.width = '600px';
7786
config.data = {
7887
theme: 'service-theme',
@@ -112,7 +121,7 @@ export class ServiceDetailPageComponent implements OnInit {
112121
}
113122

114123
evaluateConsents(): void {
115-
const config = getDefaultDialogConfig();
124+
const config = getDefaultDialogConfig<UniversalConfirmationItemsDialogData>();
116125
config.width = '500px';
117126
config.data = {
118127
title: this.translate.instant('SERVICE_DETAIL.CONFIRM_DIALOG_TITLE') as string,

apps/admin-gui/src/app/admin/pages/admin-page/admin-services/service-detail-page/service-required-attributes/service-required-attributes.component.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,14 @@ import {
88
import { TABLE_REQUIRED_ATTRIBUTES } from '@perun-web-apps/config/table-config';
99
import { MatDialog } from '@angular/material/dialog';
1010
import { getDefaultDialogConfig } from '@perun-web-apps/perun/utils';
11-
import { AddRequiredAttributesDialogComponent } from '../../../../../../shared/components/dialogs/add-required-attributes-dialog/add-required-attributes-dialog.component';
12-
import { RemoveRequiredAttributesDialogComponent } from '../../../../../../shared/components/dialogs/remove-required-attributes-dialog/remove-required-attributes-dialog.component';
11+
import {
12+
AddRequiredAttributesDialogComponent,
13+
AddRequiredAttributesDialogData,
14+
} from '../../../../../../shared/components/dialogs/add-required-attributes-dialog/add-required-attributes-dialog.component';
15+
import {
16+
RemoveRequiredAttributesDialogComponent,
17+
RemoveRequiredAttributesDialogData,
18+
} from '../../../../../../shared/components/dialogs/remove-required-attributes-dialog/remove-required-attributes-dialog.component';
1319
import { EntityStorageService, GuiAuthResolver } from '@perun-web-apps/perun/services';
1420

1521
@Component({
@@ -48,7 +54,7 @@ export class ServiceRequiredAttributesComponent implements OnInit {
4854
}
4955

5056
onAdd(): void {
51-
const config = getDefaultDialogConfig();
57+
const config = getDefaultDialogConfig<AddRequiredAttributesDialogData>();
5258
config.width = '950px';
5359
config.data = {
5460
serviceId: this.service.id,
@@ -65,7 +71,7 @@ export class ServiceRequiredAttributesComponent implements OnInit {
6571
}
6672

6773
onRemove(): void {
68-
const config = getDefaultDialogConfig();
74+
const config = getDefaultDialogConfig<RemoveRequiredAttributesDialogData>();
6975
config.width = '650px';
7076
config.data = {
7177
serviceId: this.service.id,

apps/admin-gui/src/app/admin/pages/admin-user-detail-page/admin-user-detail-page.component.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,20 @@ import { SideMenuItemService } from '../../../shared/side-menu/side-menu-item.se
55
import { AttributesManagerService, User, UsersManagerService } from '@perun-web-apps/perun/openapi';
66
import { getDefaultDialogConfig } from '@perun-web-apps/perun/utils';
77
import { MatDialog } from '@angular/material/dialog';
8-
import { EditUserDialogComponent } from '../../../shared/components/dialogs/edit-user-dialog/edit-user-dialog.component';
8+
import {
9+
EditUserDialogComponent,
10+
EditUserDialogData,
11+
} from '../../../shared/components/dialogs/edit-user-dialog/edit-user-dialog.component';
912
import {
1013
EntityStorageService,
1114
GuiAuthResolver,
1215
StoreService,
1316
} from '@perun-web-apps/perun/services';
1417
import {
1518
AnonymizeUserDialogComponent,
19+
AnonymizeUserDialogComponentData,
1620
DeleteUserDialogComponent,
21+
DeleteUserDialogComponentData,
1722
} from '@perun-web-apps/perun/dialogs';
1823
import { ComponentType } from '@angular/cdk/overlay';
1924

@@ -76,7 +81,7 @@ export class AdminUserDetailPageComponent implements OnInit {
7681
}
7782

7883
editUser(): void {
79-
const config = getDefaultDialogConfig();
84+
const config = getDefaultDialogConfig<EditUserDialogData>();
8085
config.width = '450px';
8186
config.data = {
8287
theme: 'admin-theme',
@@ -112,7 +117,9 @@ export class AdminUserDetailPageComponent implements OnInit {
112117
private openDialog(
113118
dialogComponent: ComponentType<AnonymizeUserDialogComponent | DeleteUserDialogComponent>
114119
): void {
115-
const config = getDefaultDialogConfig();
120+
const config = getDefaultDialogConfig<
121+
AnonymizeUserDialogComponentData | DeleteUserDialogComponentData
122+
>();
116123
config.width = '550px';
117124
config.data = {
118125
theme: 'admin-theme',

apps/admin-gui/src/app/app.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ export class AppComponent implements OnInit, AfterViewInit {
178178
const recentVersion: string = result['version'] as string;
179179
if (recentVersion) {
180180
if (this.version && recentVersion !== 'SNAPSHOT' && this.version !== recentVersion) {
181-
const config = getDefaultDialogConfig();
181+
const config = getDefaultDialogConfig<never>();
182182
this.dialog.open(NewVersionDialogComponent, config);
183183
} else {
184184
this.version = recentVersion;

apps/admin-gui/src/app/core/services/common/admin-gui-config.service.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { MatDialog } from '@angular/material/dialog';
1010
import { Location } from '@angular/common';
1111
import {
1212
PreventProxyOverloadDialogComponent,
13+
PreventProxyOverloadDialogData,
1314
ServerDownDialogComponent,
1415
} from '@perun-web-apps/general';
1516
import { getDefaultDialogConfig } from '@perun-web-apps/perun/utils';
@@ -159,7 +160,7 @@ export class AdminGuiConfigService {
159160
}
160161

161162
private handleErr(err: string & HttpErrorResponse): void {
162-
const config = getDefaultDialogConfig();
163+
const config = getDefaultDialogConfig<PreventProxyOverloadDialogData>();
163164
// FIXME: during initialization phase, it might happen that the translations are not loaded.
164165
if (err === 'Invalid path') {
165166
config.data = {

libs/perun/dialogs/src/lib/universal-confirmation-items-dialog/universal-confirmation-items-dialog.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export interface UniversalConfirmationItemsDialogData {
77
title: string;
88
description: string;
99
items: string[];
10-
alert: string;
10+
alert?: string;
1111
type: 'remove' | 'confirmation';
1212
showAsk: boolean;
1313
}

libs/perun/utils/src/lib/perun-utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -600,8 +600,8 @@ export function createNewApplicationMail(langs = ['en', 'cs']): ApplicationMail
600600
return mail;
601601
}
602602

603-
export function getDefaultDialogConfig(): MatDialogConfig {
604-
const config = new MatDialogConfig();
603+
export function getDefaultDialogConfig<T>(): MatDialogConfig<T> {
604+
const config = new MatDialogConfig<T>();
605605
config.disableClose = true;
606606
config.autoFocus = false;
607607
return config;

0 commit comments

Comments
 (0)