{
- if (e.key === 'Escape') {
- popover.setOpen(false);
- searchInput?.focus();
- }
- }}
- onscroll={(e) => {
- if (!onscroll) return;
- const target = e.target as HTMLDivElement;
- if (!target) return;
+{#if open}
+
+
{
+ if (e.key === 'Escape') {
+ popover.setOpen(false);
+ searchInput?.focus();
+ }
+ }}
+ onscroll={(e) => {
+ if (!onscroll) return;
+ const target = e.target as HTMLDivElement;
+ if (!target) return;
- const margin = 10; // 10px margin for top & bottom
- const atTop = target.scrollTop < margin;
- const atBottom = target.scrollTop + target.clientHeight > target.scrollHeight - margin;
- onscroll({ event: e, top: atTop, bottom: atBottom, searchInput: searchInput?.value ?? '' });
- }}
- tabindex="0"
- {@attach minWidth({ options, mode: pickerWidth, matchElem: searchInput })}
- {...popover.floating()}
- >
- {#each filteredItems as opt (opt.value)}
- {@render option(opt)}
+ const margin = 10; // 10px margin for top & bottom
+ const atTop = target.scrollTop < margin;
+ const atBottom = target.scrollTop + target.clientHeight > target.scrollHeight - margin;
+ onscroll({ event: e, top: atTop, bottom: atBottom, searchInput: searchInput?.value ?? '' });
+ }}
+ tabindex="0"
+ {@attach minWidth({ options, mode: pickerWidth, matchElem: searchInput })}
+ {...popover.floating()}
+ >
+ {#each filteredItems as opt (opt.value)}
+ {@render option(opt)}
+ {:else}
+
+ {#if loading}
+ {@render option(loadingOption, true)}
{:else}
-
- {#if loading}
- {@render option(loadingOption, true)}
- {:else}
- {@render option(notFoundOption, true)}
- {/if}
- {/each}
-
- {/if}
-
+ {@render option(notFoundOption, true)}
+ {/if}
+ {/each}
+
+{/if}