3 :class="{ on: state.status }"
10 <script setup lang="ts">
11 import Button from '@/components/buttons/Button.vue'
12 import { getFromLocalStorage, setToLocalStorage } from '@/composables'
13 import { ref } from 'vue'
15 const props = defineProps<{
23 const $emit = defineEmits(['clicked'])
25 const id = props.shared === true ? `shared-toggle-button-${props.id}` : `toggle-button-${props.id}`
27 const state = ref<{ status: boolean }>({
28 status: getFromLocalStorage<boolean>(id, props.status ?? false),
31 const click = (): void => {
32 if (props.shared === true) {
33 for (const key in localStorage) {
34 if (key !== id && key.startsWith('shared-toggle-button-')) {
35 setToLocalStorage<boolean>(key, false)
36 state.value.status = getFromLocalStorage<boolean>(key, false)
40 setToLocalStorage<boolean>(id, !getFromLocalStorage<boolean>(id, props.status ?? false))
41 state.value.status = getFromLocalStorage<boolean>(id, props.status ?? false)
42 if (getFromLocalStorage<boolean>(id, props.status ?? false)) {
47 $emit('clicked', getFromLocalStorage<boolean>(id, props.status ?? false))
53 background-color: lightgrey;