Files
windmill/frontend/src/lib/components/DarkModeObserver.svelte
T
Faton Ramadani f6e3bf6ca3 fix(frontend): Fix dark mode observer, removed code duplication (#2770)
* fix(frontend): Fix dark mode observer, removed code duplication

* Revert
2023-12-05 14:20:21 +01:00

30 lines
784 B
Svelte

<script lang="ts">
import { onMount, onDestroy } from 'svelte'
import { createEventDispatcher } from 'svelte'
export let darkMode: boolean = false
const dispatch = createEventDispatcher()
let observer: MutationObserver
onMount(() => {
darkMode = document.documentElement.classList.contains('dark')
observer = new MutationObserver((mutationsList, observer) => {
for (let mutation of mutationsList) {
if (mutation.type === 'attributes' && mutation.attributeName === 'class') {
const newDarkMode = document.documentElement.classList.contains('dark')
dispatch('change', newDarkMode)
darkMode = newDarkMode
}
}
})
observer.observe(document.documentElement, { attributes: true })
})
onDestroy(() => {
observer.disconnect()
})
</script>