triiiceratops 0.10.2 → 0.10.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -539,6 +539,33 @@
539
539
  />
540
540
  </label>
541
541
  </li>
542
+ <li>
543
+ <label class="label cursor-pointer py-1 gap-2">
544
+ <span class="label-text"
545
+ >{m.settings_select_dock_position()}</span
546
+ >
547
+ <select
548
+ class="select select-bordered select-xs w-24"
549
+ value={config.search?.position ??
550
+ 'right'}
551
+ onchange={(e) => {
552
+ if (!config.search)
553
+ config.search = {};
554
+ config.search.position = (
555
+ e.currentTarget as HTMLSelectElement
556
+ ).value;
557
+ }}
558
+ onclick={(e) => e.stopPropagation()}
559
+ >
560
+ <option value="right"
561
+ >{m.settings_position_right()}</option
562
+ >
563
+ <option value="left"
564
+ >{m.settings_position_left()}</option
565
+ >
566
+ </select>
567
+ </label>
568
+ </li>
542
569
  <li>
543
570
  <label class="label cursor-pointer py-1 gap-2">
544
571
  <span class="label-text"
@@ -40,6 +40,7 @@
40
40
  }
41
41
  }
42
42
  let width = $derived(viewerState.config.search?.width ?? '320px');
43
+ let position = $derived(viewerState.config.search?.position ?? 'right');
43
44
  </script>
44
45
 
45
46
  <!-- Drawer / Panel -->
@@ -48,7 +49,9 @@
48
49
  class="h-full bg-base-200 shadow-2xl z-100 flex flex-col transition-[width] duration-200 {viewerState
49
50
  .config.transparentBackground
50
51
  ? ''
51
- : 'border-l border-base-300'}"
52
+ : position === 'left'
53
+ ? 'border-r border-base-300'
54
+ : 'border-l border-base-300'}"
52
55
  style="width: {width}"
53
56
  role="dialog"
54
57
  aria-label={m.search_panel_title()}
@@ -162,13 +162,16 @@
162
162
  let isLeftSidebarVisible = $derived(
163
163
  (internalViewerState.showThumbnailGallery &&
164
164
  internalViewerState.dockSide === 'left') ||
165
+ (internalViewerState.showSearchPanel &&
166
+ internalViewerState.config.search?.position === 'left') ||
165
167
  internalViewerState.pluginPanels.some(
166
168
  (p) => p.position === 'left' && p.isVisible(),
167
169
  ),
168
170
  );
169
171
 
170
172
  let isRightSidebarVisible = $derived(
171
- internalViewerState.showSearchPanel ||
173
+ (internalViewerState.showSearchPanel &&
174
+ internalViewerState.config.search?.position !== 'left') ||
172
175
  (internalViewerState.showThumbnailGallery &&
173
176
  internalViewerState.dockSide === 'right') ||
174
177
  internalViewerState.pluginPanels.some(
@@ -373,6 +376,13 @@
373
376
  ? ''
374
377
  : 'bg-base-200 border-r border-base-300'}"
375
378
  >
379
+ <!-- Search Panel (when configured left) -->
380
+ {#if internalViewerState.showSearchPanel && internalViewerState.config.search?.position === 'left'}
381
+ <div class="h-full relative pointer-events-auto">
382
+ <SearchPanel />
383
+ </div>
384
+ {/if}
385
+
376
386
  <!-- Gallery (when docked left) -->
377
387
  {#if internalViewerState.showThumbnailGallery && internalViewerState.dockSide === 'left'}
378
388
  <div class="h-full w-[140px] pointer-events-auto relative">
@@ -507,7 +517,7 @@
507
517
  : 'bg-base-200 border-l border-base-300'}"
508
518
  >
509
519
  <!-- Search Panel -->
510
- {#if internalViewerState.showSearchPanel}
520
+ {#if internalViewerState.showSearchPanel && internalViewerState.config.search?.position !== 'left'}
511
521
  <div class="h-full relative pointer-events-auto">
512
522
  <SearchPanel />
513
523
  </div>