Browse Source

feat(lib): improve type safety for notification components

pull/6305/head
KenTandrian 2 months ago
parent
commit
6b80f3cab5
  1. 2
      libs/ui/src/lib/notifications/alert-dialog/alert-dialog.component.ts
  2. 2
      libs/ui/src/lib/notifications/alert-dialog/interfaces/interfaces.ts
  3. 2
      libs/ui/src/lib/notifications/confirmation-dialog/confirmation-dialog.component.ts
  4. 4
      libs/ui/src/lib/notifications/confirmation-dialog/interfaces/interfaces.ts
  5. 26
      libs/ui/src/lib/notifications/notification.service.ts
  6. 7
      libs/ui/src/lib/notifications/prompt-dialog/interfaces/interfaces.ts
  7. 16
      libs/ui/src/lib/notifications/prompt-dialog/prompt-dialog.component.ts

2
libs/ui/src/lib/notifications/alert-dialog/alert-dialog.component.ts

@ -12,7 +12,7 @@ import { AlertDialogParams } from './interfaces/interfaces';
})
export class GfAlertDialogComponent {
public discardLabel: string;
public message: string;
public message?: string;
public title: string;
public constructor(public dialogRef: MatDialogRef<GfAlertDialogComponent>) {}

2
libs/ui/src/lib/notifications/alert-dialog/interfaces/interfaces.ts

@ -1,6 +1,6 @@
export interface AlertDialogParams {
confirmLabel?: string;
discardLabel?: string;
discardLabel: string;
message?: string;
title: string;
}

2
libs/ui/src/lib/notifications/confirmation-dialog/confirmation-dialog.component.ts

@ -16,7 +16,7 @@ export class GfConfirmationDialogComponent {
public confirmLabel: string;
public confirmType: ConfirmationDialogType;
public discardLabel: string;
public message: string;
public message?: string;
public title: string;
public constructor(

4
libs/ui/src/lib/notifications/confirmation-dialog/interfaces/interfaces.ts

@ -1,9 +1,9 @@
import { ConfirmationDialogType } from '@ghostfolio/common/enums';
export interface ConfirmDialogParams {
confirmLabel?: string;
confirmLabel: string;
confirmType: ConfirmationDialogType;
discardLabel?: string;
discardLabel: string;
message?: string;
title: string;
}

26
libs/ui/src/lib/notifications/notification.service.ts

@ -22,9 +22,7 @@ export class NotificationService {
public constructor(private matDialog: MatDialog) {}
public alert(aParams: AlertParams) {
if (!aParams.discardLabel) {
aParams.discardLabel = translate('CLOSE');
}
aParams.discardLabel ??= translate('CLOSE');
const dialog = this.matDialog.open(GfAlertDialogComponent, {
autoFocus: false,
@ -46,24 +44,19 @@ export class NotificationService {
}
public confirm(aParams: ConfirmParams) {
if (!aParams.confirmLabel) {
aParams.confirmLabel = translate('YES');
}
if (!aParams.discardLabel) {
aParams.discardLabel = translate('CANCEL');
}
aParams.confirmLabel ??= translate('YES');
aParams.discardLabel ??= translate('CANCEL');
const dialog = this.matDialog.open(GfConfirmationDialogComponent, {
autoFocus: false,
disableClose: aParams.disableClose || false,
disableClose: aParams.disableClose ?? false,
maxWidth: this.dialogMaxWidth,
width: this.dialogWidth
});
dialog.componentInstance.initialize({
confirmLabel: aParams.confirmLabel,
confirmType: aParams.confirmType || ConfirmationDialogType.Primary,
confirmType: aParams.confirmType ?? ConfirmationDialogType.Primary,
discardLabel: aParams.discardLabel,
message: aParams.message,
title: aParams.title
@ -79,13 +72,8 @@ export class NotificationService {
}
public prompt(aParams: PromptParams) {
if (!aParams.confirmLabel) {
aParams.confirmLabel = translate('OK');
}
if (!aParams.discardLabel) {
aParams.discardLabel = translate('CANCEL');
}
aParams.confirmLabel ??= translate('OK');
aParams.discardLabel ??= translate('CANCEL');
const dialog = this.matDialog.open(GfPromptDialogComponent, {
autoFocus: true,

7
libs/ui/src/lib/notifications/prompt-dialog/interfaces/interfaces.ts

@ -0,0 +1,7 @@
export interface PromptDialogParams {
confirmLabel: string;
defaultValue?: string;
discardLabel: string;
title: string;
valueLabel?: string;
}

16
libs/ui/src/lib/notifications/prompt-dialog/prompt-dialog.component.ts

@ -5,6 +5,8 @@ import { MatDialogModule, MatDialogRef } from '@angular/material/dialog';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
import { PromptDialogParams } from './interfaces/interfaces';
@Component({
imports: [
MatButtonModule,
@ -18,25 +20,19 @@ import { MatInputModule } from '@angular/material/input';
})
export class GfPromptDialogComponent {
public confirmLabel: string;
public defaultValue: string;
public defaultValue?: string;
public discardLabel: string;
public formControl = new FormControl('');
public title: string;
public valueLabel: string;
public valueLabel?: string;
public constructor(public dialogRef: MatDialogRef<GfPromptDialogComponent>) {}
public initialize(aParams: {
confirmLabel?: string;
defaultValue?: string;
discardLabel?: string;
title: string;
valueLabel?: string;
}) {
public initialize(aParams: PromptDialogParams) {
this.confirmLabel = aParams.confirmLabel;
this.defaultValue = aParams.defaultValue;
this.discardLabel = aParams.discardLabel;
this.formControl.setValue(aParams.defaultValue);
this.formControl.setValue(aParams.defaultValue ?? null);
this.title = aParams.title;
this.valueLabel = aParams.valueLabel;
}

Loading…
Cancel
Save