From dfc00f6668435f43b906e25ec936286286625c64 Mon Sep 17 00:00:00 2001
From: Rafael Dessotti <42934425+rafadess@users.noreply.github.com>
Date: Mon, 6 Sep 2021 13:47:48 -0300
Subject: [PATCH] Clear ComboBox Programaticaly (#804)
* Added clear function
* Dispatching clear event
* Exporting function clear
* Added example
---
docs/src/pages/components/ComboBox.svx | 14 ++++++++++++++
src/ComboBox/ComboBox.svelte | 19 ++++++++++++-------
2 files changed, 26 insertions(+), 7 deletions(-)
diff --git a/docs/src/pages/components/ComboBox.svx b/docs/src/pages/components/ComboBox.svx
index 014769f0..b63d1c67 100644
--- a/docs/src/pages/components/ComboBox.svx
+++ b/docs/src/pages/components/ComboBox.svx
@@ -1,6 +1,9 @@
### Default
@@ -22,6 +25,17 @@ items={[
{id: "2", text: "Fax"}
]} />
+### Clear selection
+
+
+
+
### Multiple combo boxes
diff --git a/src/ComboBox/ComboBox.svelte b/src/ComboBox/ComboBox.svelte
index 539c94f8..2f7edd86 100644
--- a/src/ComboBox/ComboBox.svelte
+++ b/src/ComboBox/ComboBox.svelte
@@ -123,6 +123,14 @@
highlightedIndex = index;
}
+ export function clear() {
+ selectedIndex = -1;
+ highlightedIndex = -1;
+ open = false;
+ inputValue = "";
+ ref?.focus();
+ }
+
afterUpdate(() => {
if (open) {
ref.focus();
@@ -140,6 +148,9 @@
$: if (selectedIndex > -1) {
selectedId = items[selectedIndex].id;
dispatch("select", { selectedId, selectedIndex, selectedItem });
+ } else {
+ clear();
+ dispatch("clear");
}
$: ariaLabel = $$props["aria-label"] || "Choose an item";
$: menuId = `menu-${id}`;
@@ -286,13 +297,7 @@
{#if inputValue}