mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-21 04:53:58 +08:00
clearTimeout after toast is dismissed, add WP styles
This commit is contained in:
@ -27,6 +27,7 @@
|
|||||||
"components/select/select.wp",
|
"components/select/select.wp",
|
||||||
"components/tabs/tabs.wp",
|
"components/tabs/tabs.wp",
|
||||||
"components/toggle/toggle.wp",
|
"components/toggle/toggle.wp",
|
||||||
|
"components/toast/toast.wp",
|
||||||
"components/toolbar/toolbar.wp";
|
"components/toolbar/toolbar.wp";
|
||||||
|
|
||||||
|
|
||||||
|
@ -43,31 +43,8 @@ class E2EPage {
|
|||||||
|
|
||||||
this.nav.present(toast);
|
this.nav.present(toast);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Page({
|
|
||||||
template: `
|
|
||||||
<ion-toolbar>
|
|
||||||
<ion-buttons start>
|
|
||||||
<button (click)="dismiss()">Close</button>
|
|
||||||
</ion-buttons>
|
|
||||||
<ion-title>Toast</ion-title>
|
|
||||||
</ion-toolbar>
|
|
||||||
<ion-content padding>
|
|
||||||
Hi, I'm Bob, and I'm a modal.
|
|
||||||
</ion-content>
|
|
||||||
`
|
|
||||||
})
|
|
||||||
class ToastPage {
|
|
||||||
constructor(private viewCtrl: ViewController) { }
|
|
||||||
|
|
||||||
dismiss() {
|
|
||||||
this.viewCtrl.dismiss();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@App({
|
@App({
|
||||||
template: '<ion-nav [root]="root"></ion-nav>'
|
template: '<ion-nav [root]="root"></ion-nav>'
|
||||||
})
|
})
|
||||||
|
@ -121,6 +121,7 @@ class ToastCmp {
|
|||||||
private hdrId: string;
|
private hdrId: string;
|
||||||
private id: number;
|
private id: number;
|
||||||
private created: number;
|
private created: number;
|
||||||
|
private dismissTimeout: number = undefined;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private _nav: NavController,
|
private _nav: NavController,
|
||||||
@ -158,8 +159,7 @@ class ToastCmp {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// if there's a `duration` set, automatically dismiss.
|
// if there's a `duration` set, automatically dismiss.
|
||||||
setTimeout(() => this.dismiss('backdrop'), this.d.duration ? this.d.duration : 3000)
|
this.dismissTimeout = setTimeout(() => this.dismiss('backdrop'), this.d.duration ? this.d.duration : 3000)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
click(button, dismissDelay?) {
|
click(button, dismissDelay?) {
|
||||||
@ -182,6 +182,8 @@ class ToastCmp {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dismiss(role): Promise<any> {
|
dismiss(role): Promise<any> {
|
||||||
|
clearTimeout(this.dismissTimeout);
|
||||||
|
this.dismissTimeout = undefined;
|
||||||
return this._viewCtrl.dismiss(null, role);
|
return this._viewCtrl.dismiss(null, role);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -254,10 +256,51 @@ class ToastMdSlideOut extends Transition {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class ToastWpPopIn extends Transition {
|
||||||
|
constructor(enteringView: ViewController, leavingView: ViewController, opts: TransitionOptions) {
|
||||||
|
super(opts);
|
||||||
|
|
||||||
|
let ele = enteringView.pageRef().nativeElement;
|
||||||
|
let backdrop = new Animation(ele.querySelector('.backdrop'));
|
||||||
|
let wrapper = new Animation(ele.querySelector('.toast-wrapper'));
|
||||||
|
|
||||||
|
wrapper.fromTo('opacity', '0.01', '1').fromTo('scale', '1.3', '1');
|
||||||
|
backdrop.fromTo('opacity', 0, 0);
|
||||||
|
|
||||||
|
this
|
||||||
|
.easing('cubic-bezier(0,0 0.05,1)')
|
||||||
|
.duration(200)
|
||||||
|
.add(backdrop)
|
||||||
|
.add(wrapper);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ToastWpPopOut extends Transition {
|
||||||
|
constructor(enteringView: ViewController, leavingView: ViewController, opts: TransitionOptions) {
|
||||||
|
super(opts);
|
||||||
|
|
||||||
|
let ele = leavingView.pageRef().nativeElement;
|
||||||
|
let backdrop = new Animation(ele.querySelector('.backdrop'));
|
||||||
|
let wrapper = new Animation(ele.querySelector('.toast-wrapper'));
|
||||||
|
|
||||||
|
wrapper.fromTo('opacity', '1', '0').fromTo('scale', '1', '1.3');
|
||||||
|
backdrop.fromTo('opacity', 0, 0);
|
||||||
|
|
||||||
|
this
|
||||||
|
.easing('ease-out')
|
||||||
|
.duration(150)
|
||||||
|
.add(backdrop)
|
||||||
|
.add(wrapper);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Transition.register('toast-slide-in', ToastSlideIn);
|
Transition.register('toast-slide-in', ToastSlideIn);
|
||||||
Transition.register('toast-slide-out', ToastSlideOut);
|
Transition.register('toast-slide-out', ToastSlideOut);
|
||||||
Transition.register('toast-md-slide-in', ToastMdSlideIn);
|
Transition.register('toast-md-slide-in', ToastMdSlideIn);
|
||||||
Transition.register('toast-md-slide-out', ToastMdSlideOut);
|
Transition.register('toast-md-slide-out', ToastMdSlideOut);
|
||||||
|
Transition.register('toast-wp-slide-out', ToastWpPopOut);
|
||||||
|
Transition.register('toast-wp-slide-in', ToastWpPopIn);
|
||||||
|
|
||||||
|
|
||||||
let toastIds = -1;
|
let toastIds = -1;
|
||||||
|
33
ionic/components/toast/toast.wp.scss
Normal file
33
ionic/components/toast/toast.wp.scss
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
// Windows Phone Toast
|
||||||
|
// --------------------------------------------------
|
||||||
|
$toast-wp-text-align: left !default;
|
||||||
|
$toast-wp-background: rgba(0, 0, 0, 1) !default;
|
||||||
|
$toast-wp-border-radius: 0 !default;
|
||||||
|
$toast-wp-button-color: #fff !default;
|
||||||
|
|
||||||
|
$toast-wp-title-color: #fff !default;
|
||||||
|
$toast-wp-title-font-size: 1.4rem !default;
|
||||||
|
$toast-wp-title-padding: 1.5rem !default;
|
||||||
|
|
||||||
|
.toast-wrapper {
|
||||||
|
background: $toast-wp-background;
|
||||||
|
border-radius: $toast-wp-border-radius;
|
||||||
|
bottom: 0;
|
||||||
|
display: block;
|
||||||
|
left: 0;
|
||||||
|
margin: auto;
|
||||||
|
max-width: $toast-max-width;
|
||||||
|
position: absolute;
|
||||||
|
transform: translate3d(0, 100%, 0);
|
||||||
|
z-index: $z-index-overlay-wrapper;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toast-message {
|
||||||
|
color: $toast-wp-title-color;
|
||||||
|
font-size: $toast-wp-title-font-size;
|
||||||
|
padding: $toast-wp-title-padding;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toast-button {
|
||||||
|
color: $toast-wp-button-color;
|
||||||
|
}
|
Reference in New Issue
Block a user