fix(modal): re-enable swipe gestures when modal is dismissed (#24846)

Resolves #24817
This commit is contained in:
Sean Perkins
2022-02-24 15:57:18 -05:00
committed by GitHub
parent 3d0f99904f
commit 836c01c73e
2 changed files with 36 additions and 2 deletions

View File

@@ -12,7 +12,7 @@ test('menu: focus trap with overlays', async () => {
const ionDidOpen = await page.spyOnEvent('ionDidOpen');
const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent');
const ionModalDidDismiss= await page.spyOnEvent('ionModalDidDismiss');
const ionModalDidDismiss = await page.spyOnEvent('ionModalDidDismiss');
const menu = await page.find('ion-menu');
await menu.callMethod('open');
@@ -40,7 +40,6 @@ test('menu: focus trap with content inside overlays', async () => {
const ionDidOpen = await page.spyOnEvent('ionDidOpen');
const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent');
const ionModalDidDismiss= await page.spyOnEvent('ionModalDidDismiss');
const menu = await page.find('ion-menu');
await menu.callMethod('open');
@@ -57,3 +56,36 @@ test('menu: focus trap with content inside overlays', async () => {
expect(await getActiveElementID(page)).toEqual('other-button');
});
test('menu: should work with swipe gestures after modal is dismissed', async () => {
const page = await newE2EPage({
url: '/src/components/menu/test/focus-trap?ionic:_testing=true'
});
const ionDidOpen = await page.spyOnEvent('ionDidOpen');
const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent');
const ionModalDidDismiss = await page.spyOnEvent('ionModalDidDismiss');
const menu = await page.find('ion-menu');
await menu.callMethod('open');
await ionDidOpen.next();
const openModal = await page.find('#open-modal-button');
await openModal.click();
await ionModalDidPresent.next();
const modal = await page.find('ion-modal');
await modal.callMethod('dismiss');
await ionModalDidDismiss.next();
await page.mouse.move(30, 168);
await page.mouse.down();
await page.mouse.move(384, 168);
await page.mouse.up();
await page.waitForChanges();
expect(menu.classList.contains('show-menu')).toBeTruthy();
});

View File

@@ -527,6 +527,8 @@ export class Modal implements ComponentInterface, OverlayInterface {
const { delegate } = this.getDelegate();
await detachComponent(delegate, this.usersElement);
writeTask(() => this.el.classList.remove('show-modal'));
if (this.animation) {
this.animation.destroy();
}