Added search CTA to sidebar

This commit is contained in:
Alexis
2024-04-29 23:21:50 +02:00
parent 5adc7db425
commit 1893cd3400
6 changed files with 63 additions and 22 deletions

View File

@@ -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 />

View File

@@ -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>

View File

@@ -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>

View File

@@ -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="{

View File

@@ -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
} }
}) })

View File

@@ -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>