mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-20 12:29:55 +08:00
fix(modal, popover): quickly opening modal/popover no longer presents duplicates (#24697)
This commit is contained in:
@ -48,13 +48,6 @@
|
||||
outline: none;
|
||||
|
||||
contain: strict;
|
||||
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
:host(.modal-interactive) .modal-wrapper,
|
||||
:host(.modal-interactive) ion-backdrop {
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
:host(.overlay-hidden) {
|
||||
|
@ -587,7 +587,7 @@ export class Modal implements ComponentInterface, OverlayInterface {
|
||||
|
||||
const showHandle = handle !== false && isSheetModal;
|
||||
const mode = getIonMode(this);
|
||||
const { presented, modalId } = this;
|
||||
const { modalId } = this;
|
||||
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
||||
|
||||
return (
|
||||
@ -605,7 +605,6 @@ export class Modal implements ComponentInterface, OverlayInterface {
|
||||
[`modal-card`]: isCardModal,
|
||||
[`modal-sheet`]: isSheetModal,
|
||||
'overlay-hidden': true,
|
||||
'modal-interactive': presented,
|
||||
...getClassMap(this.cssClass)
|
||||
}}
|
||||
id={modalId}
|
||||
|
@ -42,13 +42,6 @@
|
||||
color: $popover-text-color;
|
||||
|
||||
z-index: $z-index-overlay;
|
||||
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
:host(.popover-interactive) .popover-content,
|
||||
:host(.popover-interactive) ion-backdrop {
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
:host(.overlay-hidden) {
|
||||
|
@ -565,7 +565,7 @@ export class Popover implements ComponentInterface, PopoverInterface {
|
||||
|
||||
render() {
|
||||
const mode = getIonMode(this);
|
||||
const { onLifecycle, popoverId, parentPopover, dismissOnSelect, presented, side, arrow, htmlAttributes } = this;
|
||||
const { onLifecycle, popoverId, parentPopover, dismissOnSelect, side, arrow, htmlAttributes } = this;
|
||||
const desktop = isPlatform('desktop');
|
||||
const enableArrow = arrow && !parentPopover && !desktop;
|
||||
|
||||
@ -584,7 +584,6 @@ export class Popover implements ComponentInterface, PopoverInterface {
|
||||
[mode]: true,
|
||||
'popover-translucent': this.translucent,
|
||||
'overlay-hidden': true,
|
||||
'popover-interactive': presented,
|
||||
'popover-desktop': desktop,
|
||||
[`popover-side-${side}`]: true,
|
||||
'popover-nested': !!parentPopover
|
||||
|
@ -502,8 +502,13 @@ export const dismiss = async (
|
||||
|
||||
activeAnimations.delete(overlay);
|
||||
|
||||
// Make overlay hidden again in case it is being reused
|
||||
/**
|
||||
* Make overlay hidden again in case it is being reused.
|
||||
* We can safely remove pointer-events: none as
|
||||
* overlay-hidden will set display: none.
|
||||
*/
|
||||
overlay.el.classList.add('overlay-hidden');
|
||||
overlay.el.style.removeProperty('pointer-events');
|
||||
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
|
Reference in New Issue
Block a user