{this.title
diff --git a/packages/core/src/components/alert/animations/ios.enter.ts b/packages/core/src/components/alert/animations/ios.enter.ts
index a1dd2266e9..85384497e6 100644
--- a/packages/core/src/components/alert/animations/ios.enter.ts
+++ b/packages/core/src/components/alert/animations/ios.enter.ts
@@ -7,7 +7,7 @@ export default function iosEnterAnimation(Animation: Animation, baseEl: HTMLElem
const baseAnimation = new Animation();
const backdropAnimation = new Animation();
- backdropAnimation.addElement(baseEl.querySelector('.alert-backdrop'));
+ backdropAnimation.addElement(baseEl.querySelector('ion-backdrop'));
const wrapperAnimation = new Animation();
wrapperAnimation.addElement(baseEl.querySelector('.alert-wrapper'));
diff --git a/packages/core/src/components/alert/animations/ios.leave.ts b/packages/core/src/components/alert/animations/ios.leave.ts
index c68e2d0340..bf38c0180f 100644
--- a/packages/core/src/components/alert/animations/ios.leave.ts
+++ b/packages/core/src/components/alert/animations/ios.leave.ts
@@ -7,7 +7,7 @@ export default function iosLeaveAnimation(Animation: Animation, baseEl: HTMLElem
const baseAnimation = new Animation();
const backdropAnimation = new Animation();
- backdropAnimation.addElement(baseEl.querySelector('.alert-backdrop'));
+ backdropAnimation.addElement(baseEl.querySelector('ion-backdrop'));
const wrapperAnimation = new Animation();
wrapperAnimation.addElement(baseEl.querySelector('.alert-wrapper'));
diff --git a/packages/core/src/components/alert/animations/md.enter.ts b/packages/core/src/components/alert/animations/md.enter.ts
index c7376069fe..7905cc26e2 100644
--- a/packages/core/src/components/alert/animations/md.enter.ts
+++ b/packages/core/src/components/alert/animations/md.enter.ts
@@ -7,7 +7,7 @@ export default function mdEnterAnimation(Animation: Animation, baseEl: HTMLEleme
const baseAnimation = new Animation();
const backdropAnimation = new Animation();
- backdropAnimation.addElement(baseEl.querySelector('.alert-backdrop'));
+ backdropAnimation.addElement(baseEl.querySelector('ion-backdrop'));
const wrapperAnimation = new Animation();
wrapperAnimation.addElement(baseEl.querySelector('.alert-wrapper'));
diff --git a/packages/core/src/components/alert/animations/md.leave.ts b/packages/core/src/components/alert/animations/md.leave.ts
index 924fb3f4bb..872bb90649 100644
--- a/packages/core/src/components/alert/animations/md.leave.ts
+++ b/packages/core/src/components/alert/animations/md.leave.ts
@@ -7,7 +7,7 @@ export default function mdLeaveAnimation(Animation: Animation, baseEl: HTMLEleme
const baseAnimation = new Animation();
const backdropAnimation = new Animation();
- backdropAnimation.addElement(baseEl.querySelector('.alert-backdrop'));
+ backdropAnimation.addElement(baseEl.querySelector('ion-backdrop'));
const wrapperAnimation = new Animation();
wrapperAnimation.addElement(baseEl.querySelector('.alert-wrapper'));
diff --git a/packages/core/src/components/backdrop/backdrop.scss b/packages/core/src/components/backdrop/backdrop.scss
index 7d88292566..a83baf1647 100644
--- a/packages/core/src/components/backdrop/backdrop.scss
+++ b/packages/core/src/components/backdrop/backdrop.scss
@@ -13,12 +13,19 @@ ion-backdrop {
width: 100%;
height: 100%;
+ cursor: pointer;
opacity: .01;
transform: translateZ(0);
- contain: strict;
-}
+ touch-action: none;
-ion-backdrop.backdrop-no-tappable {
- cursor: auto;
+ contain: strict;
+
+ &.backdrop-hide {
+ background: transparent;
+ }
+
+ &.backdrop-no-tappable {
+ cursor: auto;
+ }
}
diff --git a/packages/core/src/components/backdrop/backdrop.tsx b/packages/core/src/components/backdrop/backdrop.tsx
index dbbe5d8b61..c9d998650f 100644
--- a/packages/core/src/components/backdrop/backdrop.tsx
+++ b/packages/core/src/components/backdrop/backdrop.tsx
@@ -1,4 +1,5 @@
-import { Component, Prop } from '@stencil/core';
+import { Component, Listen, EventEmitter, Event, Prop } from '@stencil/core';
+import { now } from '../../utils/helpers';
@Component({
tag: 'ion-backdrop',
@@ -11,10 +12,44 @@ import { Component, Prop } from '@stencil/core';
}
})
export class Backdrop {
- /**
- * The mode determines which platform styles to use.
- * Possible values are: `"ios"` or `"md"`.
- */
- @Prop() mode: 'ios' | 'md';
+ private lastClick = -10000;
+
+ @Prop() visible = true;
+ @Prop() tappable = true;
+ @Prop() stopPropagation = true;
+
+ @Event() ionBackdropTap: EventEmitter;
+
+ @Listen('touchstart', {passive: false, capture: true})
+ protected onTouchStart(ev: TouchEvent) {
+ this.lastClick = now(ev);
+ this.emitTap(ev);
+ }
+
+ @Listen('mousedown', {passive: false, capture: true})
+ protected onMouseDown(ev: TouchEvent) {
+ if(this.lastClick < now(ev) - 2500) {
+ this.emitTap(ev);
+ }
+ }
+
+ private emitTap(ev: Event) {
+ if(this.stopPropagation) {
+ ev.preventDefault();
+ ev.stopPropagation();
+ }
+ if (this.tappable) {
+ this.ionBackdropTap.emit();
+ }
+ }
+
+ hostData() {
+ return {
+ class: {
+ 'backdrop-hide': !this.visible,
+ 'backdrop-no-tappable': !this.tappable,
+ }
+ };
+ }
}
diff --git a/packages/core/src/components/backdrop/readme.md b/packages/core/src/components/backdrop/readme.md
index c6baf4c906..8fc7a01f4e 100644
--- a/packages/core/src/components/backdrop/readme.md
+++ b/packages/core/src/components/backdrop/readme.md
@@ -12,22 +12,41 @@ Backdrops are full screen components that overlay other components. They are use
## Properties
-#### mode
+#### stopPropagation
+
+boolean
+#### tappable
-The mode determines which platform styles to use.
-Possible values are: `"ios"` or `"md"`.
+boolean
+
+
+#### visible
+
+boolean
## Attributes
-#### mode
+#### stop-propagation
+
+boolean
+#### tappable
-The mode determines which platform styles to use.
-Possible values are: `"ios"` or `"md"`.
+boolean
+
+
+#### visible
+
+boolean
+
+
+## Events
+
+#### ionBackdropTap
diff --git a/packages/core/src/components/loading/animations/ios.enter.ts b/packages/core/src/components/loading/animations/ios.enter.ts
index d2dd02a7c5..e8990bf4c2 100644
--- a/packages/core/src/components/loading/animations/ios.enter.ts
+++ b/packages/core/src/components/loading/animations/ios.enter.ts
@@ -8,7 +8,7 @@ export default function iosEnterAnimation(Animation: Animation, baseEl: HTMLElem
const baseAnimation = new Animation();
const backdropAnimation = new Animation();
- backdropAnimation.addElement(baseEl.querySelector('.loading-backdrop'));
+ backdropAnimation.addElement(baseEl.querySelector('ion-backdrop'));
const wrapperAnimation = new Animation();
wrapperAnimation.addElement(baseEl.querySelector('.loading-wrapper'));
diff --git a/packages/core/src/components/loading/animations/ios.leave.ts b/packages/core/src/components/loading/animations/ios.leave.ts
index 8f1298201f..55f5559d98 100644
--- a/packages/core/src/components/loading/animations/ios.leave.ts
+++ b/packages/core/src/components/loading/animations/ios.leave.ts
@@ -8,7 +8,7 @@ export default function iosLeaveAnimation(Animation: Animation, baseEl: HTMLElem
const baseAnimation = new Animation();
const backdropAnimation = new Animation();
- backdropAnimation.addElement(baseEl.querySelector('.loading-backdrop'));
+ backdropAnimation.addElement(baseEl.querySelector('ion-backdrop'));
const wrapperAnimation = new Animation();
wrapperAnimation.addElement(baseEl.querySelector('.loading-wrapper'));
diff --git a/packages/core/src/components/loading/animations/md.enter.ts b/packages/core/src/components/loading/animations/md.enter.ts
index e7bc14334a..5816a91744 100644
--- a/packages/core/src/components/loading/animations/md.enter.ts
+++ b/packages/core/src/components/loading/animations/md.enter.ts
@@ -7,7 +7,7 @@ export default function mdEnterAnimation(Animation: Animation, baseEl: HTMLEleme
const baseAnimation = new Animation();
const backdropAnimation = new Animation();
- backdropAnimation.addElement(baseEl.querySelector('.loading-backdrop'));
+ backdropAnimation.addElement(baseEl.querySelector('ion-backdrop'));
const wrapperAnimation = new Animation();
wrapperAnimation.addElement(baseEl.querySelector('.loading-wrapper'));
diff --git a/packages/core/src/components/loading/animations/md.leave.ts b/packages/core/src/components/loading/animations/md.leave.ts
index f911fccc38..4d09d63c91 100644
--- a/packages/core/src/components/loading/animations/md.leave.ts
+++ b/packages/core/src/components/loading/animations/md.leave.ts
@@ -7,7 +7,7 @@ export default function mdLeaveAnimation(Animation: Animation, baseEl: HTMLEleme
const baseAnimation = new Animation();
const backdropAnimation = new Animation();
- backdropAnimation.addElement(baseEl.querySelector('.loading-backdrop'));
+ backdropAnimation.addElement(baseEl.querySelector('ion-backdrop'));
const wrapperAnimation = new Animation();
wrapperAnimation.addElement(baseEl.querySelector('.loading-wrapper'));
diff --git a/packages/core/src/components/loading/loading.ios.scss b/packages/core/src/components/loading/loading.ios.scss
index 6a918f5644..e989dc9e37 100644
--- a/packages/core/src/components/loading/loading.ios.scss
+++ b/packages/core/src/components/loading/loading.ios.scss
@@ -1,10 +1,6 @@
@import "./loading";
@import "./loading.ios.vars";
-.loading-backdrop-ios {
- background-color: $loading-backdrop-ios-color;
-}
-
// iOS Loading Indicator
// --------------------------------------------------
diff --git a/packages/core/src/components/loading/loading.ios.vars.scss b/packages/core/src/components/loading/loading.ios.vars.scss
index 22f0fdad6c..495dcfa401 100644
--- a/packages/core/src/components/loading/loading.ios.vars.scss
+++ b/packages/core/src/components/loading/loading.ios.vars.scss
@@ -3,9 +3,6 @@
// iOS Loading Indicator
// --------------------------------------------------
-/// @prop - Color of backdrop
-$loading-backdrop-ios-color: $backdrop-ios-color !default;
-
/// @prop - Font family of the loading wrapper
$loading-ios-font-family: $font-family-ios-base !default;
diff --git a/packages/core/src/components/loading/loading.md.scss b/packages/core/src/components/loading/loading.md.scss
index 0dcf580812..b527b2892d 100644
--- a/packages/core/src/components/loading/loading.md.scss
+++ b/packages/core/src/components/loading/loading.md.scss
@@ -1,10 +1,6 @@
@import "./loading";
@import "./loading.md.vars";
-.loading-backdrop-ios {
- background-color: $loading-backdrop-md-color;
-}
-
// Material Design Loading Indicator
// --------------------------------------------------
diff --git a/packages/core/src/components/loading/loading.md.vars.scss b/packages/core/src/components/loading/loading.md.vars.scss
index c9dc44fbe9..1cf80d489a 100644
--- a/packages/core/src/components/loading/loading.md.vars.scss
+++ b/packages/core/src/components/loading/loading.md.vars.scss
@@ -3,9 +3,6 @@
// Material Design Loading Indicator
// --------------------------------------------------
-/// @prop - Color of backdrop
-$loading-backdrop-md-color: $backdrop-md-color !default;
-
/// @prop - Font family of the loading wrapper
$loading-md-font-family: $font-family-md-base !default;
diff --git a/packages/core/src/components/loading/loading.scss b/packages/core/src/components/loading/loading.scss
index d780d9f21a..faa91a7063 100644
--- a/packages/core/src/components/loading/loading.scss
+++ b/packages/core/src/components/loading/loading.scss
@@ -14,37 +14,15 @@ ion-loading {
align-items: center;
justify-content: center;
+ touch-action: none;
+
contain: strict;
}
-ion-loading ion-gesture {
- display: block;
-
- width: 100%;
- height: 100%;
-
- visibility: inherit;
-}
-
ion-loading-controller {
display: none;
}
-.loading-backdrop {
- @include position(0, null, null, 0);
-
- position: absolute;
-
- z-index: $z-index-backdrop;
- display: block;
-
- width: 100%;
- height: 100%;
-
- opacity: .01;
- transform: translateZ(0);
-}
-
.loading-wrapper {
z-index: $z-index-overlay-wrapper;
display: flex;
diff --git a/packages/core/src/components/loading/loading.tsx b/packages/core/src/components/loading/loading.tsx
index 4277997c91..5fdcfd14cd 100644
--- a/packages/core/src/components/loading/loading.tsx
+++ b/packages/core/src/components/loading/loading.tsx
@@ -151,6 +151,11 @@ export class Loading {
this.dismiss();
}
+ @Listen('ionBackdropTap')
+ protected onBackdropTap() {
+ this.dismiss();
+ }
+
/**
* Present the loading overlay after it has been created.
*/
@@ -223,12 +228,6 @@ export class Loading {
});
}
- protected backdropClick() {
- if (this.enableBackdropDismiss) {
- this.dismiss();
- }
- }
-
hostData() {
const themedClasses = this.translucent ? createThemedClasses(this.mode, this.color, 'loading-translucent') : {};
@@ -241,8 +240,6 @@ export class Loading {
}
render() {
- const themedClasses = createThemedClasses(this.mode, this.color, 'loading-backdrop');
-
if (this.cssClass) {
this.cssClass.split(' ').forEach(cssClass => {
if (cssClass.trim() !== '') this.el.classList.add(cssClass);
@@ -268,12 +265,7 @@ export class Loading {
}
return [
-
,
+
,
{loadingInner}
diff --git a/packages/core/src/components/menu/menu.tsx b/packages/core/src/components/menu/menu.tsx
index c0d9e9603d..9fd137657c 100644
--- a/packages/core/src/components/menu/menu.tsx
+++ b/packages/core/src/components/menu/menu.tsx
@@ -447,7 +447,13 @@ export class Menu {
,
- ,
+
+
this.backdropEl = el}
+ class='menu-backdrop'
+ tappable={false}
+ stopPropagation={false}/>,
+
+ }}/>
]);
}
}
diff --git a/packages/core/src/components/menu/test/basic/index.html b/packages/core/src/components/menu/test/basic/index.html
index 87a54c784c..9aa2a59f63 100644
--- a/packages/core/src/components/menu/test/basic/index.html
+++ b/packages/core/src/components/menu/test/basic/index.html
@@ -6,6 +6,15 @@
Menu - Basic
+
+
@@ -75,6 +84,14 @@
Set Swipe Enabled False
+
+
+
+
+
+
+
+
diff --git a/packages/core/src/components/modal/animations/ios.enter.ts b/packages/core/src/components/modal/animations/ios.enter.ts
index 97699d932d..a7334e03bb 100644
--- a/packages/core/src/components/modal/animations/ios.enter.ts
+++ b/packages/core/src/components/modal/animations/ios.enter.ts
@@ -8,7 +8,7 @@ export default function iosEnterAnimation(Animation: Animation, baseEl: HTMLElem
const baseAnimation = new Animation();
const backdropAnimation = new Animation();
- backdropAnimation.addElement(baseEl.querySelector('.modal-backdrop'));
+ backdropAnimation.addElement(baseEl.querySelector('ion-backdrop'));
const wrapperAnimation = new Animation();
wrapperAnimation.addElement(baseEl.querySelector('.modal-wrapper'));
diff --git a/packages/core/src/components/modal/animations/ios.leave.ts b/packages/core/src/components/modal/animations/ios.leave.ts
index 3446d18dc9..054363ef5f 100644
--- a/packages/core/src/components/modal/animations/ios.leave.ts
+++ b/packages/core/src/components/modal/animations/ios.leave.ts
@@ -8,7 +8,7 @@ export default function iosLeaveAnimation(Animation: Animation, baseEl: HTMLElem
const baseAnimation = new Animation();
const backdropAnimation = new Animation();
- backdropAnimation.addElement(baseEl.querySelector('.modal-backdrop'));
+ backdropAnimation.addElement(baseEl.querySelector('ion-backdrop'));
const wrapperAnimation = new Animation();
const wrapperEl = baseEl.querySelector('.modal-wrapper');
diff --git a/packages/core/src/components/modal/animations/md.enter.ts b/packages/core/src/components/modal/animations/md.enter.ts
index e586c0f3ff..336e607011 100644
--- a/packages/core/src/components/modal/animations/md.enter.ts
+++ b/packages/core/src/components/modal/animations/md.enter.ts
@@ -7,7 +7,7 @@ export default function mdEnterAnimation(Animation: Animation, baseEl: HTMLEleme
const baseAnimation = new Animation();
const backdropAnimation = new Animation();
- backdropAnimation.addElement(baseEl.querySelector('.modal-backdrop'));
+ backdropAnimation.addElement(baseEl.querySelector('ion-backdrop'));
const wrapperAnimation = new Animation();
wrapperAnimation.addElement(baseEl.querySelector('.modal-wrapper'));
diff --git a/packages/core/src/components/modal/animations/md.leave.ts b/packages/core/src/components/modal/animations/md.leave.ts
index 78ba15bb60..9c332c5f60 100644
--- a/packages/core/src/components/modal/animations/md.leave.ts
+++ b/packages/core/src/components/modal/animations/md.leave.ts
@@ -7,7 +7,7 @@ export default function mdLeaveAnimation(Animation: Animation, baseEl: HTMLEleme
const baseAnimation = new Animation();
const backdropAnimation = new Animation();
- backdropAnimation.addElement(baseEl.querySelector('.modal-backdrop'));
+ backdropAnimation.addElement(baseEl.querySelector('ion-backdrop'));
const wrapperAnimation = new Animation();
const wrapperEl = baseEl.querySelector('.modal-wrapper');
diff --git a/packages/core/src/components/modal/modal.ios.scss b/packages/core/src/components/modal/modal.ios.scss
index fc61b3901e..3222fec1c1 100644
--- a/packages/core/src/components/modal/modal.ios.scss
+++ b/packages/core/src/components/modal/modal.ios.scss
@@ -1,10 +1,6 @@
@import "./modal";
@import "./modal.ios.vars";
-.modal-backdrop-ios {
- background-color: $modal-backdrop-ios-color;
-}
-
// iOS Modals
// --------------------------------------------------
diff --git a/packages/core/src/components/modal/modal.ios.vars.scss b/packages/core/src/components/modal/modal.ios.vars.scss
index 80566f10f1..b6dcd56489 100644
--- a/packages/core/src/components/modal/modal.ios.vars.scss
+++ b/packages/core/src/components/modal/modal.ios.vars.scss
@@ -3,9 +3,6 @@
// iOS Modals
// --------------------------------------------------
-/// @prop - Color of backdrop
-$modal-backdrop-ios-color: $backdrop-ios-color !default;
-
/// @prop - Background color for the modal
$modal-ios-background-color: $background-ios-color !default;
diff --git a/packages/core/src/components/modal/modal.md.scss b/packages/core/src/components/modal/modal.md.scss
index 0230c203d2..3976c11615 100644
--- a/packages/core/src/components/modal/modal.md.scss
+++ b/packages/core/src/components/modal/modal.md.scss
@@ -1,9 +1,6 @@
@import "./modal";
@import "./modal.md.vars";
-.modal-backdrop-md {
- background-color: $modal-backdrop-md-color;
-}
// Material Design Modals
// --------------------------------------------------
diff --git a/packages/core/src/components/modal/modal.md.vars.scss b/packages/core/src/components/modal/modal.md.vars.scss
index c5152dfd9e..4791342a96 100644
--- a/packages/core/src/components/modal/modal.md.vars.scss
+++ b/packages/core/src/components/modal/modal.md.vars.scss
@@ -3,9 +3,6 @@
// Material Design Modals
// --------------------------------------------------
-/// @prop - Color of backdrop
-$modal-backdrop-md-color: $backdrop-md-color !default;
-
/// @prop - Background color for the modal
$modal-md-background-color: $background-md-color !default;
diff --git a/packages/core/src/components/modal/modal.scss b/packages/core/src/components/modal/modal.scss
index 657099a15c..345f58cb5f 100644
--- a/packages/core/src/components/modal/modal.scss
+++ b/packages/core/src/components/modal/modal.scss
@@ -20,33 +20,13 @@ ion-modal-controller {
display: none;
}
-.modal-backdrop {
- @include position(0, null, null, 0);
- position: absolute;
-
- z-index: $z-index-backdrop;
- display: block;
-
- width: 100%;
- height: 100%;
-
- opacity: .01;
- transform: translateZ(0);
-
- @media not all and (min-width: $modal-inset-min-width) and (min-height: $modal-inset-min-height-small) {
- visibility: hidden;
+@media not all and (min-width: $modal-inset-min-width) and (min-height: $modal-inset-min-height-small) {
+ ion-modal ion-backdrop {
+ display: none;
}
}
-.modal-backdrop.backdrop-no-tappable {
- cursor: auto;
-}
-
-.modal-backdrop.hide-backdrop {
- visibility: hidden;
-}
-
.modal-wrapper {
z-index: 10;
diff --git a/packages/core/src/components/modal/modal.tsx b/packages/core/src/components/modal/modal.tsx
index 9d03d3a177..5b0abe425b 100644
--- a/packages/core/src/components/modal/modal.tsx
+++ b/packages/core/src/components/modal/modal.tsx
@@ -120,6 +120,30 @@ export class Modal {
*/
@Event() ionModalDidUnload: EventEmitter;
+ componentDidLoad() {
+ this.ionModalDidLoad.emit();
+ }
+
+ componentDidUnload() {
+ this.ionModalDidUnload.emit();
+ }
+
+ @Listen('ionDismiss')
+ protected onDismiss(ev: UIEvent) {
+ ev.stopPropagation();
+ ev.preventDefault();
+
+ this.dismiss();
+ }
+
+ @Listen('ionBackdropTap')
+ protected onBackdropTap() {
+ // const opts: NavOptions = {
+ // minClickBlockDuration: 400
+ // };
+ this.dismiss();
+ }
+
/**
* Present the modal overlay after it has been created.
*/
@@ -212,42 +236,11 @@ export class Modal {
return this.el.querySelector(`.${USER_COMPONENT_MODAL_CONTAINER_CLASS}`);
}
- @Listen('ionDismiss')
- protected onDismiss(ev: UIEvent) {
- ev.stopPropagation();
- ev.preventDefault();
-
- this.dismiss();
- }
-
- componentDidLoad() {
- this.ionModalDidLoad.emit();
- }
-
- componentDidUnload() {
- this.ionModalDidUnload.emit();
- }
-
- protected backdropClick() {
- if (this.enableBackdropDismiss) {
- // const opts: NavOptions = {
- // minClickBlockDuration: 400
- // };
- this.dismiss();
- }
- }
-
render() {
- const backdropClasses = createThemedClasses(this.mode, this.color, 'modal-backdrop');
const dialogClasses = createThemedClasses(this.mode, this.color, 'modal-wrapper');
return [
- ,
+ ,
];
}
diff --git a/packages/core/src/components/nav/nav.tsx b/packages/core/src/components/nav/nav.tsx
index 77ab2029a2..d705f87971 100644
--- a/packages/core/src/components/nav/nav.tsx
+++ b/packages/core/src/components/nav/nav.tsx
@@ -343,8 +343,7 @@ export class Nav implements PublicNav, NavOutlet {
type='pan'
direction='x'
threshold={10}
- attachTo='body'
- >);
+ attachTo='body'/>);
}
if (this.mode === 'ios') {
dom.push();
diff --git a/packages/core/src/components/picker/animations/ios.enter.ts b/packages/core/src/components/picker/animations/ios.enter.ts
index afe4a2059d..2d22f3ca73 100644
--- a/packages/core/src/components/picker/animations/ios.enter.ts
+++ b/packages/core/src/components/picker/animations/ios.enter.ts
@@ -8,7 +8,7 @@ export default function iosEnterAnimation(Animation: Animation, baseEl: HTMLElem
const baseAnimation = new Animation();
const backdropAnimation = new Animation();
- backdropAnimation.addElement(baseEl.querySelector('.picker-backdrop'));
+ backdropAnimation.addElement(baseEl.querySelector('ion-backdrop'));
const wrapperAnimation = new Animation();
wrapperAnimation.addElement(baseEl.querySelector('.picker-wrapper'));
diff --git a/packages/core/src/components/picker/animations/ios.leave.ts b/packages/core/src/components/picker/animations/ios.leave.ts
index 88adc103ba..4861fa9890 100644
--- a/packages/core/src/components/picker/animations/ios.leave.ts
+++ b/packages/core/src/components/picker/animations/ios.leave.ts
@@ -8,7 +8,7 @@ export default function iosLeaveAnimation(Animation: Animation, baseEl: HTMLElem
const baseAnimation = new Animation();
const backdropAnimation = new Animation();
- backdropAnimation.addElement(baseEl.querySelector('.picker-backdrop'));
+ backdropAnimation.addElement(baseEl.querySelector('ion-backdrop'));
const wrapperAnimation = new Animation();
wrapperAnimation.addElement(baseEl.querySelector('.picker-wrapper'));
diff --git a/packages/core/src/components/picker/picker.tsx b/packages/core/src/components/picker/picker.tsx
index 0a84c30471..fcf711c4fb 100644
--- a/packages/core/src/components/picker/picker.tsx
+++ b/packages/core/src/components/picker/picker.tsx
@@ -218,6 +218,16 @@ export class Picker {
this.dismiss();
}
+ @Listen('ionBackdropTap')
+ protected onBackdropTap() {
+ const cancelBtn = this.buttons.find(b => b.role === 'cancel');
+ if (cancelBtn) {
+ this.buttonClick(cancelBtn);
+ } else {
+ this.dismiss();
+ }
+ }
+
buttonClick(button: PickerButton) {
// if (this.disabled) {
// return;
@@ -273,18 +283,6 @@ export class Picker {
return this.columns;
}
- protected backdropClick() {
- // TODO !this.disabled
- if (this.enableBackdropDismiss) {
- const cancelBtn = this.buttons.find(b => b.role === 'cancel');
- if (cancelBtn) {
- this.buttonClick(cancelBtn);
- } else {
- this.dismiss();
- }
- }
- }
-
render() {
// TODO: cssClass
@@ -332,12 +330,7 @@ export class Picker {
// });
return [
- ,
+ ,