Skip to content

Commit a439b60

Browse files
authored
Merge pull request #119 from CenterForOpenScience/bugs/other-pages
fix(confirmation): updated confirmation dialog
2 parents 1dacb8f + 37c56f9 commit a439b60

File tree

17 files changed

+337
-335
lines changed

17 files changed

+337
-335
lines changed

src/app/features/moderation/components/collection-moderators/collection-moderators.component.ts

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { createDispatchMap, select } from '@ngxs/store';
22

33
import { TranslatePipe, TranslateService } from '@ngx-translate/core';
44

5-
import { ConfirmationService } from 'primeng/api';
65
import { Button } from 'primeng/button';
76
import { DialogService } from 'primeng/dynamicdialog';
87

@@ -13,8 +12,7 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
1312
import { FormControl } from '@angular/forms';
1413

1514
import { EducationHistoryComponent, EmploymentHistoryComponent, SearchInputComponent } from '@osf/shared/components';
16-
import { LoaderService, ToastService } from '@osf/shared/services';
17-
import { defaultConfirmationConfig } from '@osf/shared/utils';
15+
import { CustomConfirmationService, LoaderService, ToastService } from '@osf/shared/services';
1816

1917
import { AddModeratorType } from '../../enums';
2018
import { ModeratorDialogAddModel, ModeratorModel } from '../../models';
@@ -43,7 +41,7 @@ export class CollectionModeratorsComponent implements OnInit {
4341

4442
private readonly destroyRef = inject(DestroyRef);
4543
private readonly translateService = inject(TranslateService);
46-
private readonly confirmationService = inject(ConfirmationService);
44+
private readonly customConfirmationService = inject(CustomConfirmationService);
4745
private readonly dialogService = inject(DialogService);
4846
private readonly toastService = inject(ToastService);
4947
private readonly loaderService = inject(LoaderService);
@@ -141,18 +139,12 @@ export class CollectionModeratorsComponent implements OnInit {
141139
}
142140

143141
removeModerator(moderator: ModeratorModel) {
144-
this.confirmationService.confirm({
145-
...defaultConfirmationConfig,
146-
header: this.translateService.instant('moderation.removeDialog.title'),
147-
message: this.translateService.instant('moderation.removeDialog.message', {
148-
name: moderator.fullName,
149-
}),
150-
acceptButtonProps: {
151-
...defaultConfirmationConfig.acceptButtonProps,
152-
severity: 'danger',
153-
label: this.translateService.instant('common.buttons.remove'),
154-
},
155-
accept: () => {
142+
this.customConfirmationService.confirmDelete({
143+
headerKey: 'moderation.removeDialog.title',
144+
messageParams: { name: moderator.fullName },
145+
messageKey: 'moderation.removeDialog.message',
146+
acceptLabelKey: 'common.buttons.remove',
147+
onConfirm: () => {
156148
this.toastService.showSuccess('moderation.toastMessages.deleteSuccessMessage', { name: moderator.fullName });
157149
},
158150
});

src/app/features/project/contributors/contributors.component.ts

Lines changed: 14 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { createDispatchMap, select } from '@ngxs/store';
22

33
import { TranslatePipe, TranslateService } from '@ngx-translate/core';
44

5-
import { ConfirmationService } from 'primeng/api';
65
import { Button } from 'primeng/button';
76
import { DialogService } from 'primeng/dynamicdialog';
87
import { Select } from 'primeng/select';
@@ -22,8 +21,8 @@ import {
2221
ViewOnlyTableComponent,
2322
} from '@osf/shared/components';
2423
import { SelectOption } from '@osf/shared/models';
25-
import { ToastService } from '@osf/shared/services';
26-
import { defaultConfirmationConfig, findChangedItems } from '@osf/shared/utils';
24+
import { CustomConfirmationService, ToastService } from '@osf/shared/services';
25+
import { findChangedItems } from '@osf/shared/utils';
2726

2827
import { ViewOnlyLink, ViewOnlyLinkModel } from '../settings/models';
2928
import {
@@ -76,9 +75,9 @@ export class ContributorsComponent implements OnInit {
7675

7776
readonly destroyRef = inject(DestroyRef);
7877
readonly translateService = inject(TranslateService);
79-
readonly confirmationService = inject(ConfirmationService);
8078
readonly dialogService = inject(DialogService);
8179
readonly toastService = inject(ToastService);
80+
readonly customConfirmationService = inject(CustomConfirmationService);
8281

8382
private readonly route = inject(ActivatedRoute);
8483
private readonly projectId = toSignal(this.route.parent?.params.pipe(map((params) => params['id'])) ?? of(undefined));
@@ -251,18 +250,12 @@ export class ContributorsComponent implements OnInit {
251250
}
252251

253252
removeContributor(contributor: ContributorModel) {
254-
this.confirmationService.confirm({
255-
...defaultConfirmationConfig,
256-
header: this.translateService.instant('project.contributors.removeDialog.title'),
257-
message: this.translateService.instant('project.contributors.removeDialog.message', {
258-
name: contributor.fullName,
259-
}),
260-
acceptButtonProps: {
261-
...defaultConfirmationConfig.acceptButtonProps,
262-
severity: 'danger',
263-
label: this.translateService.instant('common.buttons.remove'),
264-
},
265-
accept: () => {
253+
this.customConfirmationService.confirmDelete({
254+
headerKey: 'project.contributors.removeDialog.title',
255+
messageKey: 'project.contributors.removeDialog.message',
256+
messageParams: { name: contributor.fullName },
257+
acceptLabelKey: 'common.buttons.remove',
258+
onConfirm: () => {
266259
this.actions
267260
.deleteContributor(this.projectId(), contributor.userId)
268261
.pipe(takeUntilDestroyed(this.destroyRef))
@@ -304,20 +297,11 @@ export class ContributorsComponent implements OnInit {
304297
}
305298

306299
deleteLinkItem(link: ViewOnlyLinkModel): void {
307-
this.confirmationService.confirm({
308-
...defaultConfirmationConfig,
309-
message: this.translateService.instant('myProjects.settings.delete.message'),
310-
header: this.translateService.instant('myProjects.settings.delete.title', {
311-
name: link.name,
312-
}),
313-
acceptButtonProps: {
314-
...defaultConfirmationConfig.acceptButtonProps,
315-
severity: 'danger',
316-
label: this.translateService.instant('settings.developerApps.list.deleteButton'),
317-
},
318-
accept: () => {
319-
this.actions.deleteViewOnlyLink(this.projectId(), link.id);
320-
},
300+
this.customConfirmationService.confirmDelete({
301+
headerKey: 'myProjects.settings.delete.title',
302+
headerParams: { name: link.name },
303+
messageKey: 'myProjects.settings.delete.message',
304+
onConfirm: () => this.actions.deleteViewOnlyLink(this.projectId(), link.id),
321305
});
322306
}
323307
}

src/app/features/project/settings/settings.component.ts

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import { createDispatchMap, select } from '@ngxs/store';
22

3-
import { TranslatePipe, TranslateService } from '@ngx-translate/core';
3+
import { TranslatePipe } from '@ngx-translate/core';
44

5-
import { ConfirmationService } from 'primeng/api';
65
import { Button } from 'primeng/button';
76
import { Card } from 'primeng/card';
87
import { TabPanels } from 'primeng/tabs';
@@ -45,8 +44,8 @@ import {
4544
NotificationSubscriptionSelectors,
4645
UpdateNotificationSubscriptionForNodeId,
4746
} from '@osf/features/settings/notifications/store';
48-
import { LoaderService, ToastService } from '@osf/shared/services';
49-
import { CustomValidators, defaultConfirmationConfig } from '@osf/shared/utils';
47+
import { CustomConfirmationService, LoaderService, ToastService } from '@osf/shared/services';
48+
import { CustomValidators } from '@osf/shared/utils';
5049
import { SubHeaderComponent } from '@shared/components';
5150
import { ProjectFormControls, SubscriptionEvent, SubscriptionFrequency } from '@shared/enums';
5251
import { UpdateNodeRequestModel } from '@shared/models';
@@ -77,8 +76,7 @@ import { UpdateNodeRequestModel } from '@shared/models';
7776
})
7877
export class SettingsComponent implements OnInit {
7978
private readonly route = inject(ActivatedRoute);
80-
private readonly translateService = inject(TranslateService);
81-
private readonly confirmationService = inject(ConfirmationService);
79+
private readonly customConfirmationService = inject(CustomConfirmationService);
8280
private readonly toastService = inject(ToastService);
8381
private readonly loaderService = inject(LoaderService);
8482

@@ -183,18 +181,11 @@ export class SettingsComponent implements OnInit {
183181
}
184182

185183
deleteLinkItem(link: ViewOnlyLinkModel): void {
186-
this.confirmationService.confirm({
187-
...defaultConfirmationConfig,
188-
message: this.translateService.instant('myProjects.settings.delete.message'),
189-
header: this.translateService.instant('myProjects.settings.delete.title', {
190-
name: link.name,
191-
}),
192-
acceptButtonProps: {
193-
...defaultConfirmationConfig.acceptButtonProps,
194-
severity: 'danger',
195-
label: this.translateService.instant('settings.developerApps.list.deleteButton'),
196-
},
197-
accept: () => {
184+
this.customConfirmationService.confirmDelete({
185+
headerKey: 'myProjects.settings.delete.title',
186+
headerParams: { name: link.name },
187+
messageKey: 'myProjects.settings.delete.message',
188+
onConfirm: () => {
198189
this.actions.deleteViewOnlyLink(this.projectId(), link.id).subscribe();
199190
},
200191
});

src/app/features/project/wiki/components/wiki-list/wiki-list.component.ts

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { TranslatePipe, TranslateService } from '@ngx-translate/core';
22

3-
import { ConfirmationService } from 'primeng/api';
43
import { Button } from 'primeng/button';
54
import { ButtonGroupModule } from 'primeng/buttongroup';
65
import { DialogService } from 'primeng/dynamicdialog';
@@ -11,7 +10,7 @@ import { Skeleton } from 'primeng/skeleton';
1110
import { ChangeDetectionStrategy, Component, computed, inject, input, output, signal } from '@angular/core';
1211
import { Router, RouterModule } from '@angular/router';
1312

14-
import { defaultConfirmationConfig } from '@osf/shared/utils';
13+
import { CustomConfirmationService } from '@osf/shared/services';
1514

1615
import { Wiki, WikiItemType, WikiMenuItem } from '../../models';
1716
import { ComponentWiki } from '../../store';
@@ -31,12 +30,15 @@ export class WikiListComponent {
3130
readonly isLoading = input<boolean>(false);
3231
readonly componentsList = input.required<ComponentWiki[]>();
3332
readonly currentWikiId = input.required<string>();
33+
3434
readonly deleteWiki = output<void>();
3535
readonly createWiki = output<void>();
36+
3637
private readonly dialogService = inject(DialogService);
3738
private readonly translateService = inject(TranslateService);
38-
private readonly confirmationService = inject(ConfirmationService);
39+
private readonly customConfirmationService = inject(CustomConfirmationService);
3940
private readonly router = inject(Router);
41+
4042
wikiItemType = WikiItemType;
4143
expanded = signal(true);
4244

@@ -97,16 +99,10 @@ export class WikiListComponent {
9799
}
98100

99101
openDeleteWikiDialog(): void {
100-
this.confirmationService.confirm({
101-
...defaultConfirmationConfig,
102-
header: this.translateService.instant('project.wiki.deleteWiki'),
103-
message: this.translateService.instant('project.wiki.deleteWikiMessage'),
104-
acceptButtonProps: {
105-
...defaultConfirmationConfig.acceptButtonProps,
106-
severity: 'danger',
107-
label: this.translateService.instant('common.buttons.delete'),
108-
},
109-
accept: () => this.deleteWiki.emit(),
102+
this.customConfirmationService.confirmDelete({
103+
headerKey: 'project.wiki.deleteWiki',
104+
messageKey: 'project.wiki.deleteWikiMessage',
105+
onConfirm: () => this.deleteWiki.emit(),
110106
});
111107
}
112108

@@ -122,7 +118,6 @@ export class WikiListComponent {
122118
});
123119
});
124120
} else {
125-
// change only the wiki id in query params
126121
this.router.navigate([], {
127122
queryParams: { wiki: wikiId },
128123
queryParamsHandling: 'merge',

src/app/features/settings/account-settings/components/connected-emails/connected-emails.component.html

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ <h2 class="account-setting-header">{{ 'settings.accountSettings.connectedEmails.
3535
<i
3636
class="osf-icon-close"
3737
tabindex="0"
38-
(click)="deleteEmail(email.id)"
39-
(keydown.enter)="deleteEmail(email.id)"
38+
(click)="openConfirmDeleteEmail(email)"
39+
(keydown.enter)="openConfirmDeleteEmail(email)"
4040
>
4141
</i>
4242
}
@@ -80,8 +80,8 @@ <h2 class="account-setting-header">{{ 'settings.accountSettings.connectedEmails.
8080
<i
8181
class="osf-icon-close"
8282
tabindex="0"
83-
(click)="deleteEmail(email.id)"
84-
(keydown.enter)="deleteEmail(email.id)"
83+
(click)="openConfirmDeleteEmail(email)"
84+
(keydown.enter)="openConfirmDeleteEmail(email)"
8585
></i>
8686
}
8787
@if (deletingEmailIds().has(email.id)) {
@@ -94,9 +94,9 @@ <h2 class="account-setting-header">{{ 'settings.accountSettings.connectedEmails.
9494
} @else {
9595
<p-button
9696
[label]="
97-
(isMobile()
98-
? 'settings.accountSettings.connectedEmails.buttons.resend'
99-
: 'settings.accountSettings.connectedEmails.buttons.resendConfirmation'
97+
(isSmall()
98+
? 'settings.accountSettings.connectedEmails.buttons.resendConfirmation'
99+
: 'settings.accountSettings.connectedEmails.buttons.resend'
100100
) | translate
101101
"
102102
severity="secondary"

0 commit comments

Comments
 (0)