Skip to content

bug(modal): inconsistent dismiss behavior when dismissing by id #30030

@seopei

Description

@seopei

Prerequisites

Describe the Feature Request

Currently you are able to create multiple modals with an id. eg:

const modal = await this.modalCtrl.create({ component: ModalExampleComponent, id: 'my-id' }); modal.present(); 

When I dismiss the modal via this.modalCtrl.dimiss(undefined, undefined, 'my-id') the bottom most modal with this id will be closed. If I do not specify the id the to most modal will be closed. It would be great if always the top most modal would be closed.

Describe the Use Case

I want to present multiple modals with the same id. When I close an modal by id the top most modal with this id should be closed.

Describe Preferred Solution

No response

Describe Alternatives

No response

Related Code

see core/src/utils/overlays.ts

change this

export const getPresentedOverlay = ( doc: Document, overlayTag?: string, id?: string ): HTMLIonOverlayElement | undefined => { const overlays = getPresentedOverlays(doc, overlayTag); return id === undefined ? overlays[overlays.length - 1] : overlays.find((o) => o.id === id); }; 

into this

export const getPresentedOverlay = ( doc: Document, overlayTag?: string, id?: string ): HTMLIonOverlayElement | undefined => { const overlays = getPresentedOverlays(doc, overlayTag); return id === undefined ? overlays[overlays.length - 1] : overlays.slice().reverse().find((o) => o.id === id); }; 

Additional Information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions