From dfd40e2bde89f4c3170bc6053dd0283e990338d1 Mon Sep 17 00:00:00 2001 From: tglide <26071571+TGlide@users.noreply.github.com> Date: Fri, 10 Mar 2023 19:49:31 +0000 Subject: [PATCH] feat: proper select search positioning & keyboard controls --- src/lib/components/drop.svelte | 16 +++ src/lib/components/dropList.svelte | 3 +- src/lib/components/modal.svelte | 3 +- .../elements/forms/inputSelectSearch.svelte | 103 +++++++++++++----- .../attributes/+page.svelte | 16 +-- .../attributes/relationship.svelte | 55 ++++++---- 6 files changed, 140 insertions(+), 56 deletions(-) diff --git a/src/lib/components/drop.svelte b/src/lib/components/drop.svelte index 8e71f7730..624a32f89 100644 --- a/src/lib/components/drop.svelte +++ b/src/lib/components/drop.svelte @@ -12,6 +12,7 @@ export let childStart = false; export let noStyle = false; export let fullWidth = false; + export let fixed = false; let element: HTMLDivElement; let tooltip: HTMLDivElement; @@ -21,6 +22,7 @@ onMount(() => { instance = createPopper(element, tooltip, { placement, + strategy: fixed ? 'fixed' : 'absolute', modifiers: [ { name: 'arrow', @@ -39,6 +41,20 @@ options: { fallbackPlacements: ['bottom-start', 'bottom-end', 'top-start', 'top-end'] } + }, + { + name: 'sameWidth', + enabled: fixed, + phase: 'beforeWrite', + requires: ['computeStyles'], + fn: ({ state }) => { + state.styles.popper.width = `${state.rects.reference.width}px`; + }, + effect: ({ state }) => { + state.elements.popper.style.width = `${ + (state.elements.reference as HTMLElement)?.offsetWidth + }px`; + } } ] }); diff --git a/src/lib/components/dropList.svelte b/src/lib/components/dropList.svelte index fd7ab7f1b..eb96b9cc8 100644 --- a/src/lib/components/dropList.svelte +++ b/src/lib/components/dropList.svelte @@ -4,6 +4,7 @@ export let show = false; export let placement: Placement = 'bottom-start'; + export let fixed = false; export let scrollable = false; export let childStart = false; export let noArrow = false; @@ -13,7 +14,7 @@ export let position: 'relative' | 'static' = 'relative'; - + - {#if options?.length} - {#each options as option} -
  • - -
  • - {/each} + {#each options as option, i} +
  • + +
  • {:else}
  • There are no documents that match your search
  • - {/if} + {/each}
    + + diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/+page.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/+page.svelte index 0dee7a97a..eada00db2 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/+page.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/+page.svelte @@ -1,23 +1,23 @@