Skip to content

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

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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