import { defineComponent, ref, Transition, TransitionGroup, watch } from 'vue' import ModeSwitch from './ModeSwitch' import icons, { initIcons } from './icons' import { OhVueIcon, addIcons } from 'oh-vue-icons' import { PxHeadset, PxAddBox, PxCheck } from 'oh-vue-icons/icons' import useRouterStore from '@/useRouterStore' import useLayoutStore from '../useLayoutStore' import useUserStore from '@/user/useUserStore' import AvatarCircle from '@/user/AvatarCircle' import clsx from 'clsx' import useSettingsStore from '@/settings/useSettingsStore' import { useMenuStore } from '../GlobalMenu' import { v4 as uuid } from 'uuid' initIcons() addIcons(PxHeadset, PxAddBox, PxCheck) const Item = defineComponent({ props: { name: { type: String, default: '' }, label: { type: String, default: '' }, idx: { type: Number, default: 0 }, active: { type: Boolean, default: false }, id: { type: String, default: '' } }, emits: ['click'], setup(props, ctx) { const hover = ref(false) return () => (
{ useMenuStore().open('page') useMenuStore().selectPage = { id: props.id, label: props.label, name: props.name, } e.stopPropagation() e.preventDefault() }} class={ 'relative z-10 w-full h-[56px] flex flex-col justify-center items-center text-[13px] cursor-pointer transition-all font-bold ' + (props.active ? 'text-white' : hover.value ? 'text-white' : 'text-white/80') } onMouseenter={() => { hover.value = true }} onMouseleave={() => { hover.value = false }} onClick={() => { ctx.emit('click') }} > {props.label}
) } }) export default defineComponent(() => { const menu = useMenuStore() const selected = ref(icons[0]) const router = useRouterStore() const layout = useLayoutStore() const settings = useSettingsStore() const user = useUserStore() const show = ref(false) const label = ref('') watch( selected, (val) => { label.value = val.label }, { immediate: true } ) watch( () => menu.selectPage, (val) => { if (val) { selected.value = { name: val.name, label: val.label } label.value = val.label } else { selected.value = icons[0] label.value = '' } } ) return () => ( {layout.ready && (
{ show.value = true }} onMouseleave={() => { show.value = false }} onMouseenter={() => { show.value = true }} >
)} ) })