mirror of
https://github.com/carbon-design-system/carbon-components-svelte.git
synced 2025-09-15 10:21:05 +00:00
commit
e8b5bbc82c
2 changed files with 20 additions and 8 deletions
|
@ -17,6 +17,8 @@
|
||||||
let outerModal = undefined;
|
let outerModal = undefined;
|
||||||
let innerModal = undefined;
|
let innerModal = undefined;
|
||||||
|
|
||||||
|
let opened = false;
|
||||||
|
|
||||||
setContext('ComposedModal', {
|
setContext('ComposedModal', {
|
||||||
closeModal: () => {
|
closeModal: () => {
|
||||||
open = false;
|
open = false;
|
||||||
|
@ -45,11 +47,15 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
afterUpdate(() => {
|
afterUpdate(() => {
|
||||||
if (open) {
|
if (opened) {
|
||||||
dispatch('open');
|
if (!open) {
|
||||||
document.body.classList.add(cx('--body--with-modal-open'));
|
opened = false;
|
||||||
} else {
|
|
||||||
dispatch('close');
|
dispatch('close');
|
||||||
|
document.body.classList.add(cx('--body--with-modal-open'));
|
||||||
|
}
|
||||||
|
} else if (open) {
|
||||||
|
opened = true;
|
||||||
|
dispatch('open');
|
||||||
document.body.classList.remove(cx('--body--with-modal-open'));
|
document.body.classList.remove(cx('--body--with-modal-open'));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -30,6 +30,8 @@
|
||||||
let outerModal = undefined;
|
let outerModal = undefined;
|
||||||
let innerModal = undefined;
|
let innerModal = undefined;
|
||||||
|
|
||||||
|
let opened = false
|
||||||
|
|
||||||
// TODO: reuse in ComposedModal
|
// TODO: reuse in ComposedModal
|
||||||
function focus(element) {
|
function focus(element) {
|
||||||
const node = (element || innerModal).querySelector(selectorPrimaryFocus) || buttonRef;
|
const node = (element || innerModal).querySelector(selectorPrimaryFocus) || buttonRef;
|
||||||
|
@ -37,13 +39,17 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
afterUpdate(() => {
|
afterUpdate(() => {
|
||||||
if (open) {
|
if (opened) {
|
||||||
|
if (!open) {
|
||||||
|
opened = false;
|
||||||
|
dispatch('close');
|
||||||
|
document.body.classList.remove(cx('--body--with-modal-open'));
|
||||||
|
}
|
||||||
|
} else if (open) {
|
||||||
|
opened = true;
|
||||||
focus();
|
focus();
|
||||||
dispatch('open');
|
dispatch('open');
|
||||||
document.body.classList.add(cx('--body--with-modal-open'));
|
document.body.classList.add(cx('--body--with-modal-open'));
|
||||||
} else {
|
|
||||||
dispatch('close');
|
|
||||||
document.body.classList.remove(cx('--body--with-modal-open'));
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue