Skip to content

Commit ec99bfd

Browse files
manucorporatadamdbradley
authored andcommitted
feat(viewcontroller): add onWillDismiss callback
Fixed #6702
1 parent 1c882b3 commit ec99bfd

File tree

13 files changed

+62
-38
lines changed

13 files changed

+62
-38
lines changed

demos/toast/index.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class ApiDemoPage {
1616
duration: 3000
1717
});
1818

19-
toast.onDismiss(this.dismissHandler);
19+
toast.onDidDismiss(this.dismissHandler);
2020
toast.present();
2121
}
2222

@@ -26,7 +26,7 @@ class ApiDemoPage {
2626
duration: 3000
2727
});
2828

29-
toast.onDismiss(this.dismissHandler);
29+
toast.onDidDismiss(this.dismissHandler);
3030
toast.present();
3131
}
3232

@@ -35,7 +35,7 @@ class ApiDemoPage {
3535
message: 'I am dismissed after 1.5 seconds',
3636
duration: 1500
3737
});
38-
toast.onDismiss(this.dismissHandler);
38+
toast.onDidDismiss(this.dismissHandler);
3939
toast.present();
4040
}
4141

@@ -45,12 +45,12 @@ class ApiDemoPage {
4545
showCloseButton: true,
4646
closeButtonText: 'Ok'
4747
});
48-
toast.onDismiss(this.dismissHandler);
48+
toast.onDidDismiss(this.dismissHandler);
4949
toast.present();
5050
}
5151

5252
private dismissHandler() {
53-
console.info('Toast onDismiss()');
53+
console.info('Toast onDidDismiss()');
5454
}
5555

5656
}

src/components/alert/test/basic/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,8 @@ class E2EPage {
136136
this.testPromptOpen = true;
137137
});
138138

139-
alert.onDismiss((data: any, role: any) => {
140-
console.log('onDismiss, data:', data, 'role:', role);
139+
alert.onDidDismiss((data: any, role: any) => {
140+
console.log('onDidDismiss, data:', data, 'role:', role);
141141
});
142142
}
143143

src/components/alert/test/dismiss/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export class E2EPage {
2424
]
2525
});
2626

27-
alert.onDismiss(() => {
27+
alert.onDidDismiss(() => {
2828
console.log('dismiss');
2929
this.nav.push(AnotherPage);
3030
});

src/components/datetime/datetime.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,7 @@ export class DateTime {
489489
picker.present(pickerOptions);
490490

491491
this._isOpen = true;
492-
picker.onDismiss(() => {
492+
picker.onDidDismiss(() => {
493493
this._isOpen = false;
494494
});
495495
}

src/components/loading/loading.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ export class Loading extends ViewController {
8585
* will show even during page changes, but this can be disabled by setting
8686
* `dismissOnPageChange` to `true`. To dismiss the loading indicator after
8787
* creation, call the `dismiss()` method on the Loading instance. The
88-
* `onDismiss` function can be called to perform an action after the loading
88+
* `onDidDismiss` function can be called to perform an action after the loading
8989
* indicator is dismissed.
9090
*
9191
* >Note that after the component is dismissed, it will not be usable anymore
@@ -126,7 +126,7 @@ export class Loading extends ViewController {
126126
* duration: 5000
127127
* });
128128
*
129-
* loading.onDismiss(() => {
129+
* loading.onDidDismiss(() => {
130130
* console.log('Dismissed loading');
131131
* });
132132
*

src/components/loading/test/basic/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class E2EPage {
1515
cssClass: 'my-custom-loader'
1616
});
1717

18-
loading.onDismiss(() => {
18+
loading.onDidDismiss(() => {
1919
console.log('Dismissed loading');
2020
});
2121

src/components/modal/modal.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ export class Modal extends ViewController {
145145
*
146146
* presentProfileModal() {
147147
* let profileModal = this.modalCtrl.create(Profile, { userId: 8675309 });
148-
* profileModal.onDismiss(data => {
148+
* profileModal.onDidDismiss(data => {
149149
* console.log(data);
150150
* });
151151
* profileModal.present();

src/components/modal/test/basic/index.ts

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,13 @@ class E2EPage {
3636
let modal = this.modalCtrl.create(ModalPassData, { userId: 8675309 });
3737
modal.present();
3838

39-
modal.onDismiss((data: any) => {
39+
modal.onWillDismiss((data: any) => {
40+
console.log('WILL DISMISS with data', data);
41+
console.timeEnd('modal');
42+
});
43+
modal.onDidDismiss((data: any) => {
4044
console.log('modal data', data);
45+
console.timeEnd('modal');
4146
});
4247
}
4348

@@ -56,7 +61,7 @@ class E2EPage {
5661

5762
presentModalWithInputs() {
5863
let modal = this.modalCtrl.create(ModalWithInputs);
59-
modal.onDismiss((data: any) => {
64+
modal.onDidDismiss((data: any) => {
6065
console.log('Modal with inputs data:', data);
6166
});
6267
modal.present();
@@ -153,27 +158,28 @@ class ModalPassData {
153158
}
154159

155160
submit() {
161+
console.time('modal');
156162
this.viewCtrl.dismiss(this.data);
157163
}
158164

159165
ionViewLoaded(){
160-
console.log("ModalPassData ionViewLoaded fired");
166+
console.log('ModalPassData ionViewLoaded fired');
161167
}
162168

163169
ionViewWillEnter(){
164-
console.log("ModalPassData ionViewWillEnter fired");
170+
console.log('ModalPassData ionViewWillEnter fired');
165171
}
166172

167173
ionViewDidEnter(){
168-
console.log("ModalPassData ionViewDidEnter fired");
174+
console.log('ModalPassData ionViewDidEnter fired');
169175
}
170176

171177
ionViewWillLeave(){
172-
console.log("ModalPassData ionViewWillLeave fired");
178+
console.log('ModalPassData ionViewWillLeave fired');
173179
}
174180

175181
ionViewDidLeave(){
176-
console.log("ModalPassData ionViewDidLeave fired");
182+
console.log('ModalPassData ionViewDidLeave fired');
177183
}
178184
}
179185

@@ -365,15 +371,15 @@ class ModalFirstPage {
365371
}
366372

367373
ionViewLoaded(){
368-
console.log("ModalFirstPage ionViewLoaded fired");
374+
console.log('ModalFirstPage ionViewLoaded fired');
369375
}
370376

371377
ionViewWillEnter(){
372-
console.log("ModalFirstPage ionViewWillEnter fired");
378+
console.log('ModalFirstPage ionViewWillEnter fired');
373379
}
374380

375381
ionViewDidEnter(){
376-
console.log("ModalFirstPage ionViewDidEnter fired");
382+
console.log('ModalFirstPage ionViewDidEnter fired');
377383
}
378384

379385
openActionSheet() {
@@ -446,15 +452,15 @@ class ModalSecondPage {
446452
}
447453

448454
ionViewLoaded(){
449-
console.log("ModalSecondPage ionViewLoaded");
455+
console.log('ModalSecondPage ionViewLoaded');
450456
}
451457

452458
ionViewWillEnter(){
453-
console.log("ModalSecondPage ionViewWillEnter");
459+
console.log('ModalSecondPage ionViewWillEnter');
454460
}
455461

456462
ionViewDidEnter(){
457-
console.log("ModalSecondPage ionViewDidEnter");
463+
console.log('ModalSecondPage ionViewDidEnter');
458464
}
459465
}
460466

src/components/nav/view-controller.ts

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ export class ViewController {
3636
private _leavingOpts: NavOptions = null;
3737
private _loaded: boolean = false;
3838
private _nbDir: Navbar;
39-
private _onDismiss: Function = null;
39+
private _onDidDismiss: Function = null;
40+
private _onWillDismiss: Function = null;
4041
private _pgRef: ElementRef;
4142
private _cd: ChangeDetectorRef;
4243
protected _nav: NavController;
@@ -120,16 +121,33 @@ export class ViewController {
120121
* @private
121122
*/
122123
onDismiss(callback: Function) {
123-
this._onDismiss = callback;
124+
// deprecated warning: added beta.11 2016-06-30
125+
console.warn('onDismiss(..) has been deprecated. Please use onDidDismiss(..) instead');
126+
this.onDidDismiss(callback);
127+
}
128+
129+
/**
130+
* @private
131+
*/
132+
onDidDismiss(callback: Function) {
133+
this._onDidDismiss = callback;
134+
}
135+
136+
/**
137+
* @private
138+
*/
139+
onWillDismiss(callback: Function) {
140+
this._onWillDismiss = callback;
124141
}
125142

126143
/**
127144
* @private
128145
*/
129146
dismiss(data?: any, role?: any, navOptions: NavOptions = {}) {
130147
let options = merge({}, this._leavingOpts, navOptions);
148+
this._onWillDismiss && this._onWillDismiss(data, role);
131149
return this._nav.remove(this._nav.indexOf(this), 1, options).then(() => {
132-
this._onDismiss && this._onDismiss(data, role);
150+
this._onDidDismiss && this._onDidDismiss(data, role);
133151
return data;
134152
});
135153
}

src/components/popover/popover.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ export class Popover extends ViewController {
8787
* To dismiss the popover after creation, call the `dismiss()` method on the
8888
* `Popover` instance. The popover can also be dismissed from within the popover's
8989
* view by calling the `dismiss()` method on the [ViewController](../../nav/ViewController).
90-
* The `onDismiss` function can be called to perform an action after the popover
90+
* The `onDidDismiss` function can be called to perform an action after the popover
9191
* is dismissed. The popover will dismiss when the backdrop is clicked, but this
9292
* can be disabled by setting `enableBackdropDismiss` to `false` in the popover
9393
* options.

0 commit comments

Comments
 (0)