diff --git a/package-lock.json b/package-lock.json index 598ce0b5..33e98441 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,8 @@ "version": "5.8.3", "license": "ISC", "dependencies": { - "svelte-floating-ui": "1.5.8" + "svelte-floating-ui": "1.5.8", + "svelte-portal": "^2.2.1" }, "devDependencies": { "@rollup/plugin-alias": "^4.0.3", @@ -6803,6 +6804,11 @@ "svelte": ">=3.19.0" } }, + "node_modules/svelte-portal": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/svelte-portal/-/svelte-portal-2.2.1.tgz", + "integrity": "sha512-uF7is5sM4aq5iN7QF/67XLnTUvQCf2iiG/B1BHTqLwYVY1dsVmTeXZ/LeEyU6dLjApOQdbEG9lkqHzxiQtOLEQ==" + }, "node_modules/svelte-preprocess": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.3.tgz", @@ -12236,6 +12242,11 @@ "dev": true, "requires": {} }, + "svelte-portal": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/svelte-portal/-/svelte-portal-2.2.1.tgz", + "integrity": "sha512-uF7is5sM4aq5iN7QF/67XLnTUvQCf2iiG/B1BHTqLwYVY1dsVmTeXZ/LeEyU6dLjApOQdbEG9lkqHzxiQtOLEQ==" + }, "svelte-preprocess": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.3.tgz", diff --git a/package.json b/package.json index c4622d04..aa686469 100644 --- a/package.json +++ b/package.json @@ -70,6 +70,7 @@ } }, "dependencies": { - "svelte-floating-ui": "1.5.8" + "svelte-floating-ui": "1.5.8", + "svelte-portal": "^2.2.1" } } diff --git a/src/lib/Select.svelte b/src/lib/Select.svelte index 88f875a3..8d9f4556 100644 --- a/src/lib/Select.svelte +++ b/src/lib/Select.svelte @@ -2,6 +2,7 @@ import { beforeUpdate, createEventDispatcher, onDestroy, onMount } from 'svelte'; import { offset, flip, shift } from 'svelte-floating-ui/dom'; import { createFloatingActions } from 'svelte-floating-ui'; + import { portal } from "svelte-portal"; const dispatch = createEventDispatcher(); @@ -43,6 +44,7 @@ export let required = false; export let closeListOnChange = true; export let clearFilterTextOnBlur = true; + export let renderListTo = undefined; export let createGroupHeaderItem = (groupValue, item) => { return { @@ -683,8 +685,9 @@ bind:this={container} use:floatingRef role="none"> - {#if listOpen} + {#if listOpen && container}