Skip to content

Commit 8f7e6b7

Browse files
author
Giuseppe Pennisi
committed
feat(winbox): improved handling of onClose method
1 parent 054a643 commit 8f7e6b7

7 files changed

Lines changed: 9453 additions & 8038 deletions

File tree

apps/winbox-example-app/src/app/app.component.ts

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import { Component, OnInit } from '@angular/core';
22
import { WinboxService } from '@rbtech/angular-winbox';
33
import { SimpleComponentComponent } from './simple-component/simple-component.component';
44
import { SidebarMenuModel } from '@rbtechdev/angular-sidebar';
5+
import { ModalYesNoComponent } from './modal-yes-no/modal-yes-no.component';
6+
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
57
import { faQuestion } from '@fortawesome/free-solid-svg-icons/faQuestion';
68

79
@Component({
@@ -90,23 +92,37 @@ export class AppComponent implements OnInit {
9092
],
9193
};
9294

93-
constructor(private winboxService: WinboxService) {}
95+
constructor(
96+
private winboxService: WinboxService,
97+
private modalService: NgbModal
98+
) {}
9499

95100
ngOnInit(): void {
96-
this.winboxService.openWinBox<SimpleComponentComponent>(
97-
{
98-
title: 'Test',
99-
height: '90%',
100-
width: '40%',
101-
x: 'center',
102-
y: 'center',
103-
index: 1057,
104-
onclose: (): boolean => {
105-
return true;
101+
const winboxInstance =
102+
this.winboxService.openWinBox<SimpleComponentComponent>(
103+
{
104+
title: 'Test',
105+
height: '90%',
106+
width: '40%',
107+
x: 'center',
108+
y: 'center',
109+
index: 1057,
110+
onclose: (): boolean => {
111+
const modal = this.modalService.open(ModalYesNoComponent);
112+
modal.componentInstance.title = 'Titolo';
113+
modal.componentInstance.message = 'Vuoi chiudere winbox?';
114+
winboxInstance.winBox.minimize(true);
115+
116+
modal.result
117+
.then(() => {
118+
winboxInstance.winBox.close(true);
119+
})
120+
.catch(() => winboxInstance.winBox.maximize(false));
121+
return false;
122+
},
106123
},
107-
},
108-
SimpleComponentComponent
109-
);
124+
SimpleComponentComponent
125+
);
110126
this.winboxService.showLastWinbox();
111127
}
112128
}

apps/winbox-example-app/src/app/app.module.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,16 @@ import { AppComponent } from './app.component';
55
import { RouterModule } from '@angular/router';
66
import { SimpleComponentComponent } from './simple-component/simple-component.component';
77
import { AngularSidebarModule } from '@rbtechdev/angular-sidebar';
8+
import { ModalYesNoComponent } from './modal-yes-no/modal-yes-no.component';
9+
import { NgbModalModule } from '@ng-bootstrap/ng-bootstrap';
810

911
@NgModule({
10-
declarations: [AppComponent, SimpleComponentComponent],
12+
declarations: [AppComponent, SimpleComponentComponent, ModalYesNoComponent],
1113
imports: [
1214
BrowserModule,
1315
RouterModule.forRoot([], { initialNavigation: 'enabledBlocking' }),
1416
AngularSidebarModule,
17+
NgbModalModule,
1518
],
1619
providers: [],
1720
bootstrap: [AppComponent],
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<div class="modal-header">
2+
<h4 [innerHTML]="title" class="modal-title" id="modal-title"></h4>
3+
<button
4+
(click)="cancel()"
5+
aria-describedby="modal-title"
6+
aria-label="Close button"
7+
class="btn-close"
8+
type="button"
9+
>
10+
<span aria-hidden="true">&times;</span>
11+
</button>
12+
</div>
13+
14+
<div class="modal-body">
15+
<p [innerHTML]="message"></p>
16+
</div>
17+
18+
<div class="modal-footer">
19+
<button
20+
(click)="cancel()"
21+
[class]="ccsCancelClass"
22+
class="btn cursor-pointer text-uppercase"
23+
type="button"
24+
>
25+
{{ noLabel }}
26+
</button>
27+
<button
28+
(click)="confirm()"
29+
[class]="ccsConfirmClass"
30+
class="btn cursor-pointer text-uppercase"
31+
type="button"
32+
>
33+
{{ yesLabel }}
34+
</button>
35+
</div>

apps/winbox-example-app/src/app/modal-yes-no/modal-yes-no.component.scss

Whitespace-only changes.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { Component, Input } from '@angular/core';
2+
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
3+
4+
@Component({
5+
// eslint-disable-next-line @angular-eslint/component-selector
6+
selector: 'pmed-modal-yes-no',
7+
templateUrl: './modal-yes-no.component.html',
8+
styleUrls: ['./modal-yes-no.component.scss'],
9+
})
10+
export class ModalYesNoComponent {
11+
@Input() title!: string;
12+
@Input() message!: string;
13+
@Input() yesLabel = 'Sì';
14+
@Input() noLabel = 'No';
15+
@Input() ccsCancelClass = 'btn-secondary';
16+
@Input() ccsConfirmClass = 'btn-primary';
17+
18+
constructor(public modal: NgbActiveModal) {}
19+
20+
cancel() {
21+
this.modal.dismiss();
22+
}
23+
24+
confirm() {
25+
this.modal.close();
26+
}
27+
}

0 commit comments

Comments
 (0)