From 134081541717b6def9b80e2fc33124926fe516e7 Mon Sep 17 00:00:00 2001 From: Marcus Feitoza Date: Sun, 3 May 2020 01:03:23 -0300 Subject: [PATCH 1/3] fix(modal): focus --- src/components/Modal/Modal.svelte | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/components/Modal/Modal.svelte b/src/components/Modal/Modal.svelte index 03e7304e..32c0217d 100644 --- a/src/components/Modal/Modal.svelte +++ b/src/components/Modal/Modal.svelte @@ -19,7 +19,7 @@ export let size = undefined; export let style = undefined; - import { createEventDispatcher, afterUpdate, onDestroy } from 'svelte'; + import { createEventDispatcher, afterUpdate, onDestroy, onMount } from 'svelte'; import Close20 from 'carbon-icons-svelte/lib/Close20'; import { cx } from '../../lib'; import Button from '../Button'; @@ -36,12 +36,14 @@ node.focus(); } + onMount(() => { + focus(); + dispatch('open'); + document.body.classList.add(cx('--body--with-modal-open')); + }) + afterUpdate(() => { - if (open) { - focus(); - dispatch('open'); - document.body.classList.add(cx('--body--with-modal-open')); - } else { + if (!open) { dispatch('close'); document.body.classList.remove(cx('--body--with-modal-open')); } From f355f52071a4bac485fcd4a0b51fb20bf7f47d41 Mon Sep 17 00:00:00 2001 From: Marcus Feitoza Date: Sun, 3 May 2020 02:38:40 -0300 Subject: [PATCH 2/3] fix(modal): fix focus and events --- src/components/Modal/Modal.svelte | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/components/Modal/Modal.svelte b/src/components/Modal/Modal.svelte index 32c0217d..5f689b10 100644 --- a/src/components/Modal/Modal.svelte +++ b/src/components/Modal/Modal.svelte @@ -19,7 +19,7 @@ export let size = undefined; export let style = undefined; - import { createEventDispatcher, afterUpdate, onDestroy, onMount } from 'svelte'; + import { createEventDispatcher, afterUpdate, onDestroy } from 'svelte'; import Close20 from 'carbon-icons-svelte/lib/Close20'; import { cx } from '../../lib'; import Button from '../Button'; @@ -30,22 +30,26 @@ let outerModal = undefined; let innerModal = undefined; + let opened = false + // TODO: reuse in ComposedModal function focus(element) { const node = (element || innerModal).querySelector(selectorPrimaryFocus) || buttonRef; node.focus(); } - onMount(() => { - focus(); - dispatch('open'); - document.body.classList.add(cx('--body--with-modal-open')); - }) - afterUpdate(() => { - if (!open) { - dispatch('close'); - document.body.classList.remove(cx('--body--with-modal-open')); + if (opened) { + if (!open) { + opened = false; + dispatch('close'); + document.body.classList.remove(cx('--body--with-modal-open')); + } + } else if (open) { + opened = true; + focus(); + dispatch('open'); + document.body.classList.add(cx('--body--with-modal-open')); } }); From 023447e9a8331ced72b4369af1ff52f1d8e76142 Mon Sep 17 00:00:00 2001 From: Marcus Feitoza Date: Sun, 3 May 2020 17:58:27 -0300 Subject: [PATCH 3/3] fix(composedmodal): focus and event --- src/components/ComposedModal/ComposedModal.svelte | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/components/ComposedModal/ComposedModal.svelte b/src/components/ComposedModal/ComposedModal.svelte index df36630f..2282d40e 100644 --- a/src/components/ComposedModal/ComposedModal.svelte +++ b/src/components/ComposedModal/ComposedModal.svelte @@ -17,6 +17,8 @@ let outerModal = undefined; let innerModal = undefined; + let opened = false; + setContext('ComposedModal', { closeModal: () => { open = false; @@ -45,11 +47,15 @@ }); afterUpdate(() => { - if (open) { + if (opened) { + if (!open) { + opened = false; + dispatch('close'); + document.body.classList.add(cx('--body--with-modal-open')); + } + } else if (open) { + opened = true; dispatch('open'); - document.body.classList.add(cx('--body--with-modal-open')); - } else { - dispatch('close'); document.body.classList.remove(cx('--body--with-modal-open')); } });