Updated sidebar to be global
This commit is contained in:
@@ -1,9 +1,8 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { useCalendar } from '@/stores/CalendarStore'
|
import { PhHouse, PhList } from '@phosphor-icons/vue'
|
||||||
|
import type { SidebarProps } from './SidebarProps';
|
||||||
|
|
||||||
import { PhList, PhHouse, PhMagnifyingGlass } from '@phosphor-icons/vue'
|
defineProps<SidebarProps>()
|
||||||
|
|
||||||
const { revealAdvancedSearch } = useCalendar()
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@@ -14,6 +13,7 @@ const { revealAdvancedSearch } = useCalendar()
|
|||||||
<PhList size="27" />
|
<PhList size="27" />
|
||||||
</UiButton>
|
</UiButton>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<UiTooltipProvider :delay-duration="100">
|
<UiTooltipProvider :delay-duration="100">
|
||||||
<UiTooltip>
|
<UiTooltip>
|
||||||
@@ -30,7 +30,28 @@ const { revealAdvancedSearch } = useCalendar()
|
|||||||
</UiTooltip>
|
</UiTooltip>
|
||||||
</UiTooltipProvider>
|
</UiTooltipProvider>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
|
||||||
|
<li v-for="(item, i) in menuItems" :key="i">
|
||||||
|
<UiTooltipProvider :delay-duration="100">
|
||||||
|
<UiTooltip>
|
||||||
|
<UiTooltipTrigger as-child>
|
||||||
|
<UiButton v-if="item.to" variant="ghost" size="icon" class="rounded-full" as-child>
|
||||||
|
<RouterLink :to="item.to">
|
||||||
|
<component :is="item.phIcon" size="24" weight="fill" />
|
||||||
|
</RouterLink>
|
||||||
|
</UiButton>
|
||||||
|
<UiButton v-if="item.clickHandler" variant="ghost" size="icon" class="rounded-full" @click="item.clickHandler">
|
||||||
|
<component :is="item.phIcon" size="24" weight="fill" />
|
||||||
|
</UiButton>
|
||||||
|
</UiTooltipTrigger>
|
||||||
|
<UiTooltipContent :side="'right'">
|
||||||
|
<p>{{ item.tooltip }}</p>
|
||||||
|
</UiTooltipContent>
|
||||||
|
</UiTooltip>
|
||||||
|
</UiTooltipProvider>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- <li>
|
||||||
<UiTooltipProvider :delay-duration="100">
|
<UiTooltipProvider :delay-duration="100">
|
||||||
<UiTooltip>
|
<UiTooltip>
|
||||||
<UiTooltipTrigger as-child>
|
<UiTooltipTrigger as-child>
|
||||||
@@ -48,7 +69,7 @@ const { revealAdvancedSearch } = useCalendar()
|
|||||||
</UiTooltipContent>
|
</UiTooltipContent>
|
||||||
</UiTooltip>
|
</UiTooltip>
|
||||||
</UiTooltipProvider>
|
</UiTooltipProvider>
|
||||||
</li>
|
</li> -->
|
||||||
</menu>
|
</menu>
|
||||||
|
|
||||||
<UserCTA />
|
<UserCTA />
|
||||||
10
components/global/SidebarProps.ts
Normal file
10
components/global/SidebarProps.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
export interface MenuItem {
|
||||||
|
phIcon: Component
|
||||||
|
tooltip: string
|
||||||
|
clickHandler?: () => void
|
||||||
|
to?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface SidebarProps {
|
||||||
|
menuItems: MenuItem[]
|
||||||
|
}
|
||||||
@@ -1,21 +1,28 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { storeToRefs } from 'pinia'
|
import { storeToRefs } from 'pinia'
|
||||||
import { useCalendar } from '@/stores/CalendarStore'
|
import { useCalendar } from '@/stores/CalendarStore'
|
||||||
|
import type { MenuItem } from '~/components/global/SidebarProps';
|
||||||
|
import { PhMagnifyingGlass } from '@phosphor-icons/vue'
|
||||||
|
|
||||||
import Calendar from '@/components/calendar/Calendar.vue'
|
const { revealAdvancedSearch } = useCalendar()
|
||||||
import Sidebar from '@/components/calendar/Sidebar.vue'
|
|
||||||
import CalendarSearch from '@/components/calendar/search/CalendarSearch.vue'
|
|
||||||
|
|
||||||
const { isAdvancedSearchOpen } = storeToRefs(useCalendar())
|
const { isAdvancedSearchOpen } = storeToRefs(useCalendar())
|
||||||
|
|
||||||
useHead({
|
useHead({
|
||||||
title: 'Calendar'
|
title: 'Calendar'
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const sidebarMenu: MenuItem[] = [
|
||||||
|
{
|
||||||
|
phIcon: PhMagnifyingGlass,
|
||||||
|
tooltip: 'Recherche avancée',
|
||||||
|
clickHandler: revealAdvancedSearch
|
||||||
|
}
|
||||||
|
]
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<main class="h-full grid grid-cols-[auto_1fr]">
|
<main class="h-full grid grid-cols-[auto_1fr]">
|
||||||
<Sidebar />
|
<Sidebar :menu-items="sidebarMenu" />
|
||||||
<Calendar />
|
<Calendar />
|
||||||
|
|
||||||
<CalendarSearch v-model:model-value="isAdvancedSearchOpen" />
|
<CalendarSearch v-model:model-value="isAdvancedSearchOpen" />
|
||||||
|
|||||||
Reference in New Issue
Block a user