Close all modals on route change
This commit is contained in:
parent
443c30b7ab
commit
db6e5898df
|
@ -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>
|
||||
|
|
|
@ -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'
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue