Added search CTA to sidebar
This commit is contained in:
@@ -1,14 +1,13 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { useCalendar } from '@/stores/CalendarStore'
|
import { useCalendar } from '@/stores/CalendarStore'
|
||||||
|
|
||||||
|
import { Button } from '@/components/ui/button'
|
||||||
import CalendarMenuNav from './CalendarMenuNav.vue'
|
import CalendarMenuNav from './CalendarMenuNav.vue'
|
||||||
import CalendarMenuToday from './CalendarMenuToday.vue'
|
import CalendarMenuToday from './CalendarMenuToday.vue'
|
||||||
import CalendarSwitch from './CalendarSwitch.vue'
|
import CalendarSwitch from './CalendarSwitch.vue'
|
||||||
import CalendarCurrentDate from './CalendarCurrentDate.vue'
|
import CalendarCurrentDate from './CalendarCurrentDate.vue'
|
||||||
|
|
||||||
import CalendarSearch from './search/CalendarSearch.vue'
|
const { currentDate, revealAdvancedSearch } = useCalendar()
|
||||||
|
|
||||||
const { currentDate } = useCalendar()
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@@ -28,7 +27,10 @@ const { currentDate } = useCalendar()
|
|||||||
|
|
||||||
<menu class="flex items-center gap-2">
|
<menu class="flex items-center gap-2">
|
||||||
<li>
|
<li>
|
||||||
<CalendarSearch />
|
<Button search-slash @click="revealAdvancedSearch()">
|
||||||
|
<PhMagnifyingGlass size="20" weight="light" />
|
||||||
|
Recherche avancée
|
||||||
|
</Button>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<CalendarSwitch />
|
<CalendarSwitch />
|
||||||
|
|||||||
@@ -145,7 +145,6 @@ function toFutureFar(): void {
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="flex items-center gap-2">
|
<div class="flex items-center gap-2">
|
||||||
<!-- Implement decrementDate to account for other mods -->
|
|
||||||
<TooltipProvider :delayDuration="250">
|
<TooltipProvider :delayDuration="250">
|
||||||
<Tooltip>
|
<Tooltip>
|
||||||
<TooltipTrigger>
|
<TooltipTrigger>
|
||||||
|
|||||||
@@ -1,22 +1,55 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { PhList, PhHouse } from '@phosphor-icons/vue'
|
import { useCalendar } from '@/stores/CalendarStore'
|
||||||
|
|
||||||
|
import { PhList, PhHouse, PhMagnifyingGlass } from '@phosphor-icons/vue'
|
||||||
|
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'
|
||||||
import Button from '../ui/button/Button.vue'
|
import Button from '../ui/button/Button.vue'
|
||||||
|
|
||||||
|
const { revealAdvancedSearch } = useCalendar()
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<nav class="w-16 py-6 border-r-[1px] border-l-slate-500 grid justify-center">
|
<nav class="w-16 py-6 border-r-[1px] border-l-slate-500 grid justify-center">
|
||||||
<menu>
|
<menu class="flex flex-col gap-4">
|
||||||
<li class="mb-12">
|
<li class="mb-12">
|
||||||
<Button variant="ghost" size="icon" @click="console.log" class="rounded-full">
|
<Button variant="ghost" size="icon" @click="console.log" class="rounded-full">
|
||||||
<PhList size="27" />
|
<PhList size="27" />
|
||||||
</Button>
|
</Button>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<Button variant="ghost" size="icon" class="rounded-full" as-child>
|
<TooltipProvider :delayDuration="100">
|
||||||
<RouterLink to="/">
|
<Tooltip>
|
||||||
<PhHouse size="24" weight="fill" />
|
<TooltipTrigger>
|
||||||
</RouterLink>
|
<Button variant="ghost" size="icon" class="rounded-full" as-child>
|
||||||
</Button>
|
<RouterLink to="/">
|
||||||
|
<PhHouse size="24" weight="fill" />
|
||||||
|
</RouterLink>
|
||||||
|
</Button>
|
||||||
|
</TooltipTrigger>
|
||||||
|
<TooltipContent :side="'right'">
|
||||||
|
<p>Retourner aux outils</p>
|
||||||
|
</TooltipContent>
|
||||||
|
</Tooltip>
|
||||||
|
</TooltipProvider>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<TooltipProvider :delayDuration="100">
|
||||||
|
<Tooltip>
|
||||||
|
<TooltipTrigger>
|
||||||
|
<Button
|
||||||
|
variant="ghost"
|
||||||
|
size="icon"
|
||||||
|
class="rounded-full"
|
||||||
|
@click="revealAdvancedSearch()"
|
||||||
|
>
|
||||||
|
<PhMagnifyingGlass size="24" weight="fill" />
|
||||||
|
</Button>
|
||||||
|
</TooltipTrigger>
|
||||||
|
<TooltipContent :side="'right'">
|
||||||
|
<p>Recherche avancée</p>
|
||||||
|
</TooltipContent>
|
||||||
|
</Tooltip>
|
||||||
|
</TooltipProvider>
|
||||||
</li>
|
</li>
|
||||||
</menu>
|
</menu>
|
||||||
</nav>
|
</nav>
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ import SearchList from './lists/SearchList.vue'
|
|||||||
const { characters } = useCharacters()
|
const { characters } = useCharacters()
|
||||||
const { baseEvents } = useCalendarEvents()
|
const { baseEvents } = useCalendarEvents()
|
||||||
|
|
||||||
const modalOpen = ref<boolean>(false)
|
const modalOpen = defineModel({ default: false })
|
||||||
|
|
||||||
const searchQuery = ref<string>('')
|
const searchQuery = ref<string>('')
|
||||||
// const searchEnough = computed<boolean>(() => searchQuery.value.length >= 2)
|
// const searchEnough = computed<boolean>(() => searchQuery.value.length >= 2)
|
||||||
@@ -243,13 +243,6 @@ function handleCategorySelect(e: any) {
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<Dialog v-model:open="modalOpen" @update:open="resetSearch()">
|
<Dialog v-model:open="modalOpen" @update:open="resetSearch()">
|
||||||
<DialogTrigger>
|
|
||||||
<Button search-slash>
|
|
||||||
<PhMagnifyingGlass size="20" weight="light" />
|
|
||||||
Recherche avancée
|
|
||||||
</Button>
|
|
||||||
</DialogTrigger>
|
|
||||||
|
|
||||||
<DialogContent
|
<DialogContent
|
||||||
class="flex flex-col flex-nowrap top-16 -translate-y-0 data-[state=closed]:slide-out-to-top-[5%] data-[state=open]:slide-in-from-top-[5%]"
|
class="flex flex-col flex-nowrap top-16 -translate-y-0 data-[state=closed]:slide-out-to-top-[5%] data-[state=open]:slide-in-from-top-[5%]"
|
||||||
:class="{
|
:class="{
|
||||||
|
|||||||
@@ -388,6 +388,12 @@ export const useCalendar = defineStore('calendar', () => {
|
|||||||
selectedDate.value = date
|
selectedDate.value = date
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const isAdvancedSearchOpen: Ref<boolean> = ref<boolean>(false)
|
||||||
|
|
||||||
|
function revealAdvancedSearch() {
|
||||||
|
isAdvancedSearchOpen.value = true
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
staticConfig,
|
staticConfig,
|
||||||
viewTypeOptions,
|
viewTypeOptions,
|
||||||
@@ -413,6 +419,8 @@ export const useCalendar = defineStore('calendar', () => {
|
|||||||
getMonthName,
|
getMonthName,
|
||||||
setViewType,
|
setViewType,
|
||||||
getViewTypeTitle,
|
getViewTypeTitle,
|
||||||
isCurrentScreenActive
|
isCurrentScreenActive,
|
||||||
|
isAdvancedSearchOpen,
|
||||||
|
revealAdvancedSearch
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,12 +1,16 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
import { storeToRefs } from 'pinia'
|
||||||
|
import { onMounted } from 'vue'
|
||||||
import { useCalendar } from '@/stores/CalendarStore'
|
import { useCalendar } from '@/stores/CalendarStore'
|
||||||
|
|
||||||
import Calendar from '@/components/calendar/Calendar.vue'
|
import Calendar from '@/components/calendar/Calendar.vue'
|
||||||
import Sidebar from '@/components/calendar/Sidebar.vue'
|
import Sidebar from '@/components/calendar/Sidebar.vue'
|
||||||
|
import CalendarSearch from '@/components/calendar/search/CalendarSearch.vue'
|
||||||
|
|
||||||
const { validateUrlParams } = useCalendar()
|
const { validateUrlParams } = useCalendar()
|
||||||
|
const { isAdvancedSearchOpen } = storeToRefs(useCalendar())
|
||||||
|
|
||||||
validateUrlParams()
|
onMounted(() => validateUrlParams())
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@@ -14,4 +18,6 @@ validateUrlParams()
|
|||||||
<Sidebar />
|
<Sidebar />
|
||||||
<Calendar />
|
<Calendar />
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
|
<CalendarSearch v-model:model-value="isAdvancedSearchOpen" />
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
Reference in New Issue
Block a user