diff --git a/packages/bbui/src/Form/Core/Multiselect.svelte b/packages/bbui/src/Form/Core/Multiselect.svelte index 8816da33c4..f99d553830 100644 --- a/packages/bbui/src/Form/Core/Multiselect.svelte +++ b/packages/bbui/src/Form/Core/Multiselect.svelte @@ -15,6 +15,7 @@ export let sort = false export let autoWidth = false export let fetchTerm = null + export let searchTerm = null export let useFetch = false export let customPopoverHeight export let customPopoverOffsetBelow @@ -91,6 +92,7 @@ isPlaceholder={!arrayValue.length} {autocomplete} bind:fetchTerm + bind:searchTerm bind:open {useFetch} {isOptionSelected} diff --git a/packages/bbui/src/Form/Core/Picker.svelte b/packages/bbui/src/Form/Core/Picker.svelte index 9b90c1a865..1a0ef3b9c7 100644 --- a/packages/bbui/src/Form/Core/Picker.svelte +++ b/packages/bbui/src/Form/Core/Picker.svelte @@ -36,6 +36,7 @@ export let autocomplete = false export let sort = false export let fetchTerm = null + export let searchTerm = null export let useFetch = false export let customPopoverHeight export let customPopoverOffsetBelow @@ -45,7 +46,6 @@ export let customAnchor = null const dispatch = createEventDispatcher() - let searchTerm = null let button let popover diff --git a/packages/bbui/src/Form/Core/Select.svelte b/packages/bbui/src/Form/Core/Select.svelte index f843e2ccbd..f8de28de0c 100644 --- a/packages/bbui/src/Form/Core/Select.svelte +++ b/packages/bbui/src/Form/Core/Select.svelte @@ -25,6 +25,8 @@ export let tag = null export let customPopoverOffsetBelow export let customPopoverMaxHeight + export let fetchTerm = null + export let searchTerm = null const dispatch = createEventDispatcher() @@ -65,6 +67,8 @@ - row[primaryDisplay].includes(fetchTerm) - ) - : Object.values(allOptions) + $: options = Object.values(allOptions) - let lastFetchedTerm - $: fetchRows(fetchTerm) + $: fetchRows(searchTerm, primaryDisplay) - const fetchRows = fetchTerm => { - const termChangedSinceFetch = (lastFetchedTerm || "") !== (fetchTerm || "") - - const allRowsFetched = !lastFetchedTerm && !$fetch.hasNextPage - if (!allRowsFetched && termChangedSinceFetch) { + const fetchRows = (searchTerm, primaryDisplay) => { + const allRowsFetched = + $fetch.loaded && + !Object.keys($fetch.query.string).length && + !$fetch.hasNextPage + if (!allRowsFetched) { // Don't request until we have the primary display if (primaryDisplay) { - lastFetchedTerm = fetchTerm fetch.update({ - query: { string: { [primaryDisplay]: fetchTerm } }, + query: { string: { [primaryDisplay]: searchTerm } }, }) } } @@ -150,8 +145,8 @@ getOptionValue={option => option._id} {placeholder} sort - useFetch - bind:fetchTerm + useFetch={false} + bind:searchTerm /> {/if}