Close all modals on route change

This commit is contained in:
Webifi 2023-06-05 16:51:11 -05:00
parent 443c30b7ab
commit db6e5898df
2 changed files with 15 additions and 3 deletions

View File

@ -9,7 +9,7 @@
import NewChat from './lib/NewChat.svelte'
import { chatsStorage, apiKeyStorage } from './lib/Storage.svelte'
import { Modals, closeModal } from 'svelte-modals'
import { triggerModalEsc } from './lib/Util.svelte'
import { dispatchModalEsc, checkModalEsc } from './lib/Util.svelte'
// The definition of the routes with some conditions
const routes = {
@ -31,6 +31,14 @@
'*': Home
}
const onLocationChange = (...args:any) => {
// close all modals on route change
dispatchModalEsc()
}
$: onLocationChange($location)
</script>
<Navbar />
@ -53,7 +61,7 @@
</Modals>
<svelte:window
on:keydown={(e) => triggerModalEsc(e)}
on:keydown={(e) => checkModalEsc(e)}
/>
<style>

View File

@ -29,8 +29,12 @@
})
}
export const triggerModalEsc = (event:KeyboardEvent|undefined):boolean|void => {
export const checkModalEsc = (event:KeyboardEvent|undefined):boolean|void => {
if (!event || event.key !== 'Escape') return
dispatchModalEsc()
}
export const dispatchModalEsc = ():boolean|void => {
const stack = Array.from(document.querySelectorAll('.modal')).filter(s =>
window.getComputedStyle(s).getPropertyValue('display') !== 'none'
)