diff --git a/core/src/components/picker-internal/picker-internal.tsx b/core/src/components/picker-internal/picker-internal.tsx index 4cde38426a..ae91d97845 100644 --- a/core/src/components/picker-internal/picker-internal.tsx +++ b/core/src/components/picker-internal/picker-internal.tsx @@ -1,5 +1,5 @@ import type { ComponentInterface, EventEmitter } from '@stencil/core'; -import { Component, Element, Event, Host, h } from '@stencil/core'; +import { Component, Element, Event, Listen, Host, h } from '@stencil/core'; import { getElementRoot } from '../../utils/helpers'; @@ -30,6 +30,19 @@ export class PickerInternal implements ComponentInterface { @Event() ionInputModeChange!: EventEmitter; + /** + * When the picker is interacted with + * we need to prevent touchstart so other + * gestures do not fire. For example, + * scrolling on the wheel picker + * in ion-datetime should not cause + * a card modal to swipe to close. + */ + @Listen('touchstart') + preventTouchStartPropagation(ev: TouchEvent) { + ev.stopPropagation(); + } + componentWillLoad() { getElementRoot(this.el).addEventListener('focusin', this.onFocusIn); getElementRoot(this.el).addEventListener('focusout', this.onFocusOut);