diff --git a/.vscode/settings.json b/.vscode/settings.json index 6c242e3c..39806d53 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -28,6 +28,7 @@ "combobox", "listbox", "radiobox", + "unstub", "viamrobotics" ] } diff --git a/packages/blocks/vite.config.ts b/packages/blocks/vite.config.ts index 88045762..7a521e23 100644 --- a/packages/blocks/vite.config.ts +++ b/packages/blocks/vite.config.ts @@ -13,5 +13,6 @@ export default defineConfig({ setupFiles: ['src/vitest.setup.ts'], environment: 'jsdom', mockReset: true, + unstubGlobals: true, }, }); diff --git a/packages/core/package.json b/packages/core/package.json index 4204925c..f9d5c9eb 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@viamrobotics/prime-core", - "version": "0.0.77", + "version": "0.0.78", "publishConfig": { "access": "public" }, diff --git a/packages/core/src/lib/select/searchable-select.svelte b/packages/core/src/lib/select/searchable-select.svelte index 79f091ec..56d3f429 100644 --- a/packages/core/src/lib/select/searchable-select.svelte +++ b/packages/core/src/lib/select/searchable-select.svelte @@ -102,9 +102,12 @@ $: autoSelectOption = allOptions[autoSelectIndex] ?? otherOption; $: isExpanded = menuState === FOCUS_SEARCH || menuState === FOCUS_ITEM; $: activeOption = isExpanded ? autoSelectOption : undefined; $: activeID = activeOption ? SELECTED_ID : undefined; +$: activeElement = activeOption + ? optionElements[activeOption.option] + : undefined; -$: if (activeOption) { - optionElements[activeOption.option]?.scrollIntoView({ block: 'nearest' }); +$: if (typeof activeElement?.scrollIntoView === 'function') { + activeElement.scrollIntoView({ block: 'nearest' }); } const setMenuState = (nextMenuState: MenuState) => { diff --git a/packages/core/src/vitest.setup.ts b/packages/core/src/vitest.setup.ts index 7de9a78f..b2696a53 100644 --- a/packages/core/src/vitest.setup.ts +++ b/packages/core/src/vitest.setup.ts @@ -1,15 +1,7 @@ -import { afterEach, vi } from 'vitest'; +import { afterEach } from 'vitest'; import { cleanup } from '@testing-library/svelte'; import '@testing-library/jest-dom/vitest'; -/** - * `Element.scrollIntoView` is not implemented/stubbed in `jsdom` so we stub it - * out here: - * - * https://github.com/jsdom/jsdom/issues/1695 - */ -Element.prototype.scrollIntoView = vi.fn(); - /** * `PointerEvent` does not exist in `jsdom` so this polyfill is based off this * comment on the PR to add it: diff --git a/packages/core/vite.config.ts b/packages/core/vite.config.ts index a3164566..14549236 100644 --- a/packages/core/vite.config.ts +++ b/packages/core/vite.config.ts @@ -13,6 +13,7 @@ export default defineConfig({ setupFiles: ['src/vitest.setup.ts'], environment: 'jsdom', mockReset: true, + unstubGlobals: true, // For testing svelte internals like onMount, see: https://github.com/vitest-dev/vitest/issues/2834 alias: [{ find: /^svelte$/u, replacement: 'svelte/internal' }], },