Skip to content

Commit 5a83fef

Browse files
authored
[InferenceSnippet.svelte] Better UX for stream chgeckbox (#555)
* [InferenceSnippet.svelte] Better UX for stream chgeckbox * handle undefined * fix lint * better settings align
1 parent 1a79e61 commit 5a83fef

File tree

2 files changed

+30
-28
lines changed

2 files changed

+30
-28
lines changed

kit/src/lib/Dropdown.svelte

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,13 @@
1414
export let selectedValue: string | undefined = undefined;
1515
export let useDeprecatedJS = true;
1616
export let withBtnCaret = false;
17-
export let dontCloseIds: string[] = [];
1817
1918
let element: HTMLElement | undefined = undefined;
2019
let isOpen = false;
2120
2221
function onClose(e: Event) {
2322
if (e.target) {
24-
const id = (e.target as HTMLElement).id;
25-
if (dontCloseIds.includes(id)) {
23+
if ((e.target as HTMLElement | undefined)?.className.includes("do-not-close-dropdown")) {
2624
return;
2725
}
2826
}

kit/src/lib/InferenceSnippet/InferenceSnippet.svelte

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -240,35 +240,40 @@
240240
</div>
241241
{/if}
242242

243-
<div class="flex not-prose my-1.5">
243+
<div class="flex not-prose mb-1.5 mt-auto">
244244
<Dropdown
245245
btnLabel=""
246246
classNames="hidden md:block"
247247
noBtnClass
248248
useDeprecatedJS={false}
249249
forceMenuAlignement="right"
250-
dontCloseIds={["stream-checkbox"]}
251250
>
252251
<slot slot="button">
253-
<button class="btn h-7 gap-1 px-1.5 py-0.5 md:px-2" title="Settings dropdown">
254-
<IconSettings />
252+
<button
253+
class="text-md flex select-none items-center rounded-lg border px-1.5 py-1 leading-none hover:shadow-xs cursor-pointer text-gray-500 opacity-90 hover:text-gray-700 dark:hover:text-gray-200"
254+
type="button"
255+
title="Settings dropdown"
256+
>
257+
<IconSettings classNames="mr-1" />
255258
Settings
256259
</button>
257260
</slot>
258261
<slot slot="menu">
259262
<div class="flex flex-col p-2 gap-y-2">
260263
{#if model.tags.includes("conversational")}
261-
<div
262-
class="text-md group relative flex items-center self-start leading-tight gap-x-2 border-b w-full pb-2"
264+
<button
265+
class="text-md group relative flex items-center self-start leading-tight gap-x-2 border-b w-full pb-2 cursor-default do-not-close-dropdown"
266+
on:click={() => (streaming = !streaming)}
267+
type="button"
263268
>
264269
<input
265-
class="form-input not-prose"
270+
class="form-input not-prose do-not-close-dropdown"
266271
type="checkbox"
267272
bind:checked={streaming}
268273
id="stream-checkbox"
269274
/>
270-
<span class="">Stream</span>
271-
</div>
275+
<span class="do-not-close-dropdown">Stream</span>
276+
</button>
272277
{/if}
273278
<a
274279
href="/settings/tokens"
@@ -290,33 +295,32 @@
290295
</div>
291296
</slot>
292297
</Dropdown>
293-
<Dropdown
294-
classNames="md:hidden"
295-
noBtnClass
296-
useDeprecatedJS={false}
297-
forceMenuAlignement="left"
298-
dontCloseIds={["stream-checkbox"]}
299-
>
298+
<Dropdown classNames="md:hidden" noBtnClass useDeprecatedJS={false} forceMenuAlignement="left">
300299
<slot slot="button">
301-
<button class="btn h-7 gap-1 px-1.5 py-0.5 md:px-2" title="Settings dropdown">
302-
<IconSettings />
300+
<button
301+
class="text-md flex select-none items-center rounded-lg border px-1.5 py-1 leading-none hover:shadow-xs cursor-pointer text-gray-500 opacity-90 hover:text-gray-700 dark:hover:text-gray-200"
302+
type="button"
303+
title="Settings dropdown"
304+
>
305+
<IconSettings classNames="mr-1" />
303306
Settings
304307
</button>
305308
</slot>
306309
<slot slot="menu">
307310
<div class="flex flex-col p-2 gap-y-2">
308311
{#if model.tags.includes("conversational")}
309-
<div
310-
class="text-md group relative flex items-center self-start leading-tight gap-x-2 border-b w-full pb-2"
312+
<button
313+
class="text-md group relative flex items-center self-start leading-tight gap-x-2 border-b w-full pb-2 cursor-default do-not-close-dropdown"
314+
on:click={() => (streaming = !streaming)}
315+
type="button"
311316
>
312317
<input
313-
class="form-input not-prose"
318+
class="form-input not-prose do-not-close-dropdown"
314319
type="checkbox"
315320
bind:checked={streaming}
316-
id="stream-checkbox"
317321
/>
318-
<span class="">Stream</span>
319-
</div>
322+
<span class="do-not-close-dropdown">Stream</span>
323+
</button>
320324
{/if}
321325
<a
322326
href="/settings/tokens"
@@ -338,7 +342,7 @@
338342
</div>
339343
</slot>
340344
</Dropdown>
341-
<div class="flex-grow" />
345+
<div class="flex-grow md:hidden" />
342346
</div>
343347
</div>
344348

0 commit comments

Comments
 (0)