From 85f90738eeb719edb8ca81c55e2e62ffc736297e Mon Sep 17 00:00:00 2001 From: SJ Date: Tue, 10 Dec 2024 09:08:24 -0500 Subject: [PATCH] Added basic Select component (#16) --- src/lib/select/Select.svelte | 82 +++++++++++++++++++++++++ src/lib/select/select.dom.test.ts | 18 ++++++ src/routes/(main)/nav.svelte | 2 +- src/routes/examples/select/+page.svelte | 28 +++++++++ 4 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 src/lib/select/Select.svelte create mode 100644 src/lib/select/select.dom.test.ts create mode 100644 src/routes/examples/select/+page.svelte diff --git a/src/lib/select/Select.svelte b/src/lib/select/Select.svelte new file mode 100644 index 0000000..08cb5d6 --- /dev/null +++ b/src/lib/select/Select.svelte @@ -0,0 +1,82 @@ + + +{#if typeof as === "string"} + + {@render children?.(snippetProps)} + +{:else} + {@const AsComponent = as} + + {@render children?.(snippetProps)} + +{/if} diff --git a/src/lib/select/select.dom.test.ts b/src/lib/select/select.dom.test.ts new file mode 100644 index 0000000..947d1fd --- /dev/null +++ b/src/lib/select/select.dom.test.ts @@ -0,0 +1,18 @@ +import Select from "./Select.svelte"; +import { getInput, getSelect } from "../../test-utils/accessibility-assertions"; +import { focus, type, word } from "../../test-utils/interactions"; +import { + commonControlScenarios, + commonFormScenarios, + commonRenderingScenarios, +} from "../../test-utils/scenarios.dom"; + +commonRenderingScenarios(Select, { getElement: getSelect }); +commonControlScenarios(Select); +commonFormScenarios(Select, { + async performUserInteraction(control) { + if (control instanceof HTMLSelectElement) { + control.value = 'alice' + } + }, +}); diff --git a/src/routes/(main)/nav.svelte b/src/routes/(main)/nav.svelte index bcd3b14..c1a84c7 100644 --- a/src/routes/(main)/nav.svelte +++ b/src/routes/(main)/nav.svelte @@ -1,5 +1,5 @@