import {onBeforeUnmount, onMounted, ref, type Ref} from 'vue' export function useCalendarPopover(rootRef: Ref) { const isOpen = ref(false) const viewMode = ref<'days' | 'months'>('days') const open = () => { isOpen.value = true viewMode.value = 'days' } const close = () => { isOpen.value = false viewMode.value = 'days' } const toggleView = () => { viewMode.value = viewMode.value === 'days' ? 'months' : 'days' } const onMouseDown = (event: MouseEvent) => { if (!isOpen.value || !rootRef.value) return if (!rootRef.value.contains(event.target as Node)) close() } onMounted(() => document.addEventListener('mousedown', onMouseDown)) onBeforeUnmount(() => document.removeEventListener('mousedown', onMouseDown)) return {isOpen, viewMode, open, close, toggleView} }