|
12 | 12 | import { createLogger } from "$lib/utils/logger"; |
13 | 13 | import { resourceDocsCache } from "$lib/stores/resourceDocsCache"; |
14 | 14 | import { currentBank } from "$lib/stores/currentBank.svelte"; |
15 | | - import { onMount } from "svelte"; |
| 15 | + import { onMount, tick } from "svelte"; |
16 | 16 |
|
17 | 17 | const logger = createLogger("LayoutClient"); |
18 | 18 | const layoutStartTime = performance.now(); |
|
48 | 48 | let expandedSections = $state<Record<string, boolean>>({}); |
49 | 49 | let displayMode: "dark" | "light" = $state("dark"); |
50 | 50 | let userMenuOpen = $state(false); |
| 51 | + let bankSelectorOpen = $state(false); |
| 52 | + let bankSelectEl: HTMLSelectElement | undefined = $state(); |
| 53 | +
|
| 54 | + async function openBankSelector() { |
| 55 | + bankSelectorOpen = true; |
| 56 | + await tick(); |
| 57 | + try { bankSelectEl?.showPicker(); } catch {} |
| 58 | + } |
51 | 59 | let systemDynamicEntities = $state<any[]>([]); |
52 | 60 |
|
53 | 61 | async function clearCache() { |
|
482 | 490 | style="height: 80px; flex-shrink: 0;" |
483 | 491 | > |
484 | 492 | <div> |
485 | | - {#if isAuthenticated && currentBank.bank} |
486 | | - <span class="text-sm">{currentBank.bank.full_name}: {currentBank.bank.bank_id} ({currentBank.bank.bank_code}) <a href="/user" class="hover:text-tertiary-400" title="Change current bank">✎</a></span> |
| 493 | + {#if isAuthenticated} |
| 494 | + {#if bankSelectorOpen} |
| 495 | + <div class="flex items-center gap-2"> |
| 496 | + <select |
| 497 | + bind:this={bankSelectEl} |
| 498 | + class="rounded-md border border-surface-300-700 bg-surface-100-900 px-2 py-1 text-sm" |
| 499 | + value={currentBank.bankId} |
| 500 | + onchange={(e) => { |
| 501 | + currentBank.selectById(e.currentTarget.value); |
| 502 | + bankSelectorOpen = false; |
| 503 | + }} |
| 504 | + > |
| 505 | + <option value="">-- Select a bank --</option> |
| 506 | + {#each currentBank.banks as bank} |
| 507 | + <option value={bank.bank_id}> |
| 508 | + {bank.short_name} — {bank.full_name} |
| 509 | + </option> |
| 510 | + {/each} |
| 511 | + </select> |
| 512 | + <button |
| 513 | + type="button" |
| 514 | + class="text-sm opacity-60 hover:opacity-100" |
| 515 | + onclick={() => bankSelectorOpen = false} |
| 516 | + title="Close" |
| 517 | + >×</button> |
| 518 | + </div> |
| 519 | + {:else if currentBank.bank} |
| 520 | + <span class="text-sm">{currentBank.bank.full_name}: {currentBank.bank.bank_id} ({currentBank.bank.bank_code}) <button type="button" class="hover:text-tertiary-400" onclick={openBankSelector} title="Change current bank">✎</button></span> |
| 521 | + {:else} |
| 522 | + <button type="button" class="text-sm opacity-70 hover:text-tertiary-400 hover:opacity-100" onclick={openBankSelector}>Select Bank ✎</button> |
| 523 | + {/if} |
487 | 524 | {/if} |
488 | 525 | </div> |
489 | 526 | {#if isAuthenticated} |
|
0 commit comments