@@ -10,13 +10,20 @@ import { normalizeSearchParam } from '#shared/utils/url'
1010const route = useRoute ()
1111
1212const { selectedPackages } = usePackageSelection ()
13- const selectionView = useRouteQuery < string >( ' selection-view ' , ' ' , { mode: ' push ' } )
13+ const isSelectioView = ref < boolean >( false )
1414
15- function toggleSelection() {
16- selectionView .value = selectionView .value === ' true' ? ' ' : ' true'
17- }
15+ watch (selectedPackages , packages => {
16+ if (packages .length === 0 ) {
17+ isSelectioView .value = false
18+ }
19+ })
1820
19- const isSelectioView = computed <boolean >(() => selectionView .value === ' true' )
21+ function showSelectionView() {
22+ isSelectioView .value = true
23+ }
24+ function hideSelectionView() {
25+ isSelectioView .value = false
26+ }
2027
2128// Preferences (persisted to localStorage)
2229const {
@@ -552,23 +559,33 @@ defineOgImageComponent('Default', {
552559 </script >
553560
554561<template >
555- <PackageActionBar />
562+ <PackageActionBar v-if = " !isSelectioView " />
556563
557564 <main class =" flex-1 py-8 search-page" :class =" { 'overflow-x-hidden': viewMode !== 'table' }" >
558565 <div class =" container-sm" >
559566 <div class =" flex items-center justify-between gap-4 mb-4" >
560567 <h1 class =" font-mono text-2xl sm:text-3xl font-medium" >
561568 {{ $t('search.title') }}
562569 </h1 >
563- <SearchProviderToggle />
570+ <button
571+ v-if =" isSelectioView"
572+ type =" button"
573+ class =" cursor-pointer inline-flex items-center gap-2 font-mono text-sm text-fg-muted hover:text-fg transition-colors duration-200 rounded focus-visible:outline-accent/70 shrink-0"
574+ @click =" hideSelectionView"
575+ >
576+ <span class =" i-lucide:arrow-left rtl-flip w-4 h-4" aria-hidden =" true" />
577+ <span class =" hidden sm:inline" >{{ $t('nav.back') }}</span >
578+ </button >
579+ <SearchProviderToggle v-else />
564580 </div >
565581
566582 <PackageSelectionView
567- :view-mode = " viewMode "
583+ @back = " hideSelectionView "
568584 v-if =" isSelectioView && selectedPackages.length"
585+ :view-mode =" viewMode"
569586 />
570587
571- <section v-if =" query" class =" results-layout" >
588+ <section v-else- if =" query" class =" results-layout" >
572589 <LoadingSpinner v-if =" showSearching" :text =" $t('search.searching')" />
573590
574591 <div
@@ -637,7 +654,7 @@ defineOgImageComponent('Default', {
637654 :disabled-sort-keys =" disabledSortKeys"
638655 search-context
639656 @toggle-column =" toggleColumn"
640- @toggle-selection =" toggleSelection "
657+ @toggle-selection =" showSelectionView "
641658 @reset-columns =" resetColumns"
642659 @clear-filter =" handleClearFilter"
643660 @clear-all-filters =" clearAllFilters"
0 commit comments