Skip to content
This repository was archived by the owner on May 12, 2026. It is now read-only.

Commit 77cb3e0

Browse files
committed
Bank selector in top bar
1 parent c35a2cb commit 77cb3e0

2 files changed

Lines changed: 40 additions & 40 deletions

File tree

‎src/routes/(protected)/user/+page.svelte‎

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,6 @@
44
import ConsentCard from "$lib/components/ConsentCard.svelte";
55
import { toast } from "$lib/utils/toastService.js";
66
import { Clock } from "@lucide/svelte";
7-
import { currentBank } from "$lib/stores/currentBank.svelte";
8-
import { onMount } from "svelte";
9-
10-
let bankSelectorId = $state(currentBank.bankId);
11-
let banksReady = $state(false);
12-
13-
onMount(async () => {
14-
await currentBank.fetchBanks();
15-
banksReady = true;
16-
});
17-
18-
$effect(() => {
19-
if (banksReady && bankSelectorId !== currentBank.bankId) {
20-
currentBank.selectById(bankSelectorId);
21-
}
22-
});
23-
247
const { data } = $props();
258
const userData: SessionData["user"] = data.userData || undefined;
269
const entitlementRequests = data.entitlementRequests || [];
@@ -375,26 +358,6 @@
375358
{/snippet}
376359

377360
<div class="flex flex-col space-y-6">
378-
<!-- Current Bank Selection -->
379-
<div class="mx-10 pr-5">
380-
<header class="flex items-center justify-between py-4">
381-
<h1 class="h4 text-center align-middle">Current Bank</h1>
382-
</header>
383-
<div class="max-w-md">
384-
<select
385-
class="w-full rounded-lg border border-gray-300 bg-white px-3 py-2 text-sm dark:border-gray-600 dark:bg-gray-800 dark:text-gray-100"
386-
bind:value={bankSelectorId}
387-
>
388-
<option value="">No bank selected</option>
389-
{#each currentBank.banks as bank}
390-
<option value={bank.bank_id}>
391-
{bank.short_name} - {bank.full_name}
392-
</option>
393-
{/each}
394-
</select>
395-
</div>
396-
</div>
397-
398361
{@render userInfo(userData)}
399362

400363
<!-- My Entitlement Requests Section -->

‎src/routes/+layout.svelte‎

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import { createLogger } from "$lib/utils/logger";
1313
import { resourceDocsCache } from "$lib/stores/resourceDocsCache";
1414
import { currentBank } from "$lib/stores/currentBank.svelte";
15-
import { onMount } from "svelte";
15+
import { onMount, tick } from "svelte";
1616
1717
const logger = createLogger("LayoutClient");
1818
const layoutStartTime = performance.now();
@@ -48,6 +48,14 @@
4848
let expandedSections = $state<Record<string, boolean>>({});
4949
let displayMode: "dark" | "light" = $state("dark");
5050
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+
}
5159
let systemDynamicEntities = $state<any[]>([]);
5260
5361
async function clearCache() {
@@ -482,8 +490,37 @@
482490
style="height: 80px; flex-shrink: 0;"
483491
>
484492
<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">&#9998;</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+
>&times;</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">&#9998;</button></span>
521+
{:else}
522+
<button type="button" class="text-sm opacity-70 hover:text-tertiary-400 hover:opacity-100" onclick={openBankSelector}>Select Bank &#9998;</button>
523+
{/if}
487524
{/if}
488525
</div>
489526
{#if isAuthenticated}

0 commit comments

Comments
 (0)