Skip to content

Commit e39ff71

Browse files
committed
refac
1 parent d42da41 commit e39ff71

4 files changed

Lines changed: 13 additions & 18 deletions

File tree

src/lib/components/chat/MessageInput/CommandSuggestionList.svelte

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import Models from './Commands/Models.svelte';
55
import Skills from './Commands/Skills.svelte';
66
import Emojis from './Commands/Emojis.svelte';
7+
import DropdownMenu from '$lib/components/common/DropdownMenu.svelte';
78
89
export let char = '';
910
export let query = '';
@@ -52,10 +53,10 @@
5253
}
5354
</script>
5455

55-
<div
56-
class="{(filteredItems ?? []).length > 0
56+
<DropdownMenu
57+
className="{(filteredItems ?? []).length > 0
5758
? ''
58-
: 'hidden'} rounded-2xl shadow-lg border border-gray-200 dark:border-gray-800 flex flex-col bg-white dark:bg-gray-850 w-72 p-1"
59+
: 'hidden'} w-72 font-sans text-xs"
5960
id="suggestions-container"
6061
>
6162
<div class="overflow-y-auto scrollbar-thin max-h-60">
@@ -154,4 +155,4 @@
154155
/>
155156
{/if}
156157
</div>
157-
</div>
158+
</DropdownMenu>

src/lib/components/chat/Messages/MultiResponseMessages.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -411,15 +411,15 @@
411411
</div>
412412

413413
{#if message.timestamp}
414-
<div class="mt-0.5 flex justify-start text-gray-600 dark:text-gray-500">
414+
<div class="mt-0.5 flex justify-start whitespace-nowrap text-gray-600 dark:text-gray-500">
415415
<Tooltip
416416
className="flex self-center"
417417
content={formatMessageTimestampFull(message.timestamp * 1000)}
418418
placement="bottom"
419419
>
420420
<time
421421
datetime={new Date(message.timestamp * 1000).toISOString()}
422-
class="invisible group-hover:visible ml-1 text-[0.6875rem] tabular-nums text-gray-400 dark:text-gray-600 select-none"
422+
class="invisible group-hover:visible ml-1 shrink-0 whitespace-nowrap text-[0.6875rem] tabular-nums text-gray-400 dark:text-gray-600 select-none"
423423
>
424424
{formatMessageTimestamp(message.timestamp * 1000)}
425425
</time>

src/lib/components/chat/Messages/ResponseMessage.svelte

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -890,7 +890,7 @@
890890
{#if !edit}
891891
<div
892892
bind:this={buttonsContainerElement}
893-
class="flex justify-start overflow-x-auto buttons text-gray-600 dark:text-gray-500 mt-0.5"
893+
class="flex items-center justify-start overflow-x-auto whitespace-nowrap buttons text-gray-600 dark:text-gray-500 mt-0.5 [&>*]:shrink-0"
894894
>
895895
{#if message.done || siblings.length > 1}
896896
{#if siblings.length > 1}
@@ -1341,7 +1341,8 @@
13411341
}}
13421342
>
13431343
<Tooltip content={$i18n.t('Regenerate')} placement="bottom">
1344-
<div
1344+
<button
1345+
type="button"
13451346
aria-label={$i18n.t('Regenerate')}
13461347
class="{isLastMessage
13471348
? 'visible'
@@ -1362,7 +1363,7 @@
13621363
d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99"
13631364
/>
13641365
</svg>
1365-
</div>
1366+
</button>
13661367
</Tooltip>
13671368
</RegenerateMenu>
13681369
{:else}
@@ -1487,7 +1488,7 @@
14871488
>
14881489
<time
14891490
datetime={new Date(message.timestamp * 1000).toISOString()}
1490-
class="invisible group-hover:visible ml-1 text-[0.6875rem] tabular-nums text-gray-400 dark:text-gray-600 select-none"
1491+
class="invisible group-hover:visible ml-1 shrink-0 whitespace-nowrap text-[0.6875rem] tabular-nums text-gray-400 dark:text-gray-600 select-none"
14911492
>
14921493
{formatMessageTimestamp(message.timestamp * 1000)}
14931494
</time>

src/lib/components/chat/ModelSelector/Selector.svelte

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@
7575
let triggerElement: HTMLElement | null = null;
7676
let contentElement: HTMLElement | null = null;
7777
let dropdownPosition = { top: 0, left: 0, maxHeight: undefined as number | undefined };
78-
let isSmallViewport = false;
7978
let positionFrame: number | undefined;
8079
let settleTimers: number[] = [];
8180
@@ -98,10 +97,6 @@
9897
};
9998
};
10099
101-
const updateViewportSize = () => {
102-
isSmallViewport = (window.visualViewport?.width ?? window.innerWidth) < 640;
103-
};
104-
105100
const updatePosition = () => {
106101
if (!show || !triggerElement) return;
107102
const rect = triggerElement.getBoundingClientRect();
@@ -152,7 +147,6 @@
152147
};
153148
154149
const scheduleSettledPositionUpdates = () => {
155-
updateViewportSize();
156150
for (const timer of settleTimers) window.clearTimeout(timer);
157151
settleTimers = [];
158152
schedulePositionUpdate();
@@ -556,7 +550,6 @@
556550
tags = Array.from(new Set(tags)).sort((a, b) => a.localeCompare(b));
557551
}
558552
559-
updateViewportSize();
560553
window.addEventListener('scroll', schedulePositionUpdate, true);
561554
window.visualViewport?.addEventListener('resize', scheduleSettledPositionUpdates);
562555
window.visualViewport?.addEventListener('scroll', schedulePositionUpdate);
@@ -649,7 +642,7 @@
649642
650643
let listScrollTop = 0;
651644
let listContainer;
652-
$: listViewportHeight = isSmallViewport ? 240 : 288;
645+
$: listViewportHeight = Math.min(288, Math.max(96, (dropdownPosition.maxHeight ?? 352) - 64));
653646
654647
$: visibleStart = Math.max(0, Math.floor(listScrollTop / ITEM_HEIGHT) - OVERSCAN);
655648
$: visibleEnd = Math.min(

0 commit comments

Comments
 (0)