diff --git a/packages/ui/src/SearchInput/SearchInput.svelte b/packages/ui/src/SearchInput/SearchInput.svelte
index c50d3de..4335c58 100644
--- a/packages/ui/src/SearchInput/SearchInput.svelte
+++ b/packages/ui/src/SearchInput/SearchInput.svelte
@@ -2,13 +2,23 @@
import './SearchInput.css';
export let size: 'small' | 'medium' | 'large' = 'small';
+ export let onSearch: (text: string) => void;
+
+ let timer: NodeJS.Timeout;
+ const onChange = (e: KeyboardEvent) => {
+ const t = e.target as HTMLInputElement;
+ clearTimeout(timer);
+ timer = setTimeout(() => {
+ onSearch && onSearch(t.value);
+ }, 300);
+ };
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 24e725d..cccecea 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -21,6 +21,7 @@ importers:
eslint: ^8.16.0
eslint-config-prettier: ^8.3.0
eslint-plugin-svelte3: ^4.0.0
+ fuse.js: ^6.6.2
postcss: ^8.4.19
prettier: ^2.6.2
prettier-plugin-svelte: ^2.7.0
@@ -35,11 +36,12 @@ importers:
dependencies:
'@tauri-apps/api': 1.2.0
buffer: 6.0.3
+ fuse.js: 6.6.2
devDependencies:
'@playwright/test': 1.25.0
'@sveltejs/adapter-auto': 1.0.0-next.89
'@sveltejs/adapter-static': 1.0.0-next.48
- '@sveltejs/kit': 1.0.0-next.562_svelte@3.53.1+vite@3.2.4
+ '@sveltejs/kit': 1.0.0-next.563_svelte@3.53.1+vite@3.2.4
'@tauri-apps/cli': 1.2.0
'@tea/ui': link:../ui
'@typescript-eslint/eslint-plugin': 5.43.0_wze2rj5tow7zwqpgbdx2buoy3m
@@ -99,7 +101,7 @@ importers:
'@storybook/svelte-vite': 7.0.0-alpha.51_xlscsvjyync2sh57nhuoanpbpq
'@storybook/testing-library': 0.0.13_wcqkhtmu7mswc6yz4uyexck3ty
'@sveltejs/adapter-auto': 1.0.0-next.89
- '@sveltejs/kit': 1.0.0-next.561_svelte@3.53.1+vite@3.2.4
+ '@sveltejs/kit': 1.0.0-next.563_svelte@3.53.1+vite@3.2.4
'@sveltejs/package': 1.0.0-next.1_7dvewpees4iyn2tkw2qzal77a4
'@typescript-eslint/eslint-plugin': 5.43.0_wze2rj5tow7zwqpgbdx2buoy3m
'@typescript-eslint/parser': 5.43.0_e3uo4sehh4zr4i6m57mkkxxv7y
@@ -3002,36 +3004,8 @@ packages:
resolution: {integrity: sha512-Z5Z+QZOav6D0KDeU3ReksGERJg/sX1k5OKWWXyQ11OwGErEEwSXHYRUyjaBmZEPeGzpVVGwwMUK8YWJlG/MKeA==}
dev: true
- /@sveltejs/kit/1.0.0-next.561_svelte@3.53.1+vite@3.2.4:
- resolution: {integrity: sha512-N8HQvS6gcm7R78ADfM4xjhuFS3Ir+Ezce3De8WOnISXQ1tS2npc5LMH9LRHHi14nfosAfJ7vUlcLwLE6N/I7+Q==}
- engines: {node: '>=16.14'}
- hasBin: true
- requiresBuild: true
- peerDependencies:
- svelte: ^3.44.0
- vite: ^3.2.0
- dependencies:
- '@sveltejs/vite-plugin-svelte': 1.3.1_svelte@3.53.1+vite@3.2.4
- '@types/cookie': 0.5.1
- cookie: 0.5.0
- devalue: 4.2.0
- kleur: 4.1.5
- magic-string: 0.26.7
- mime: 3.0.0
- sade: 1.8.1
- set-cookie-parser: 2.5.1
- sirv: 2.0.2
- svelte: 3.53.1
- tiny-glob: 0.2.9
- undici: 5.12.0
- vite: 3.2.4
- transitivePeerDependencies:
- - diff-match-patch
- - supports-color
- dev: true
-
- /@sveltejs/kit/1.0.0-next.562_svelte@3.53.1+vite@3.2.4:
- resolution: {integrity: sha512-VgJzjtfjVLW/4A/vDtURc10PrS3bb/N62LHzqLZcUNb5+eN4a0k5cayC7Hz2tmtvrb2Qsg+piEAogvqjKBxrOg==}
+ /@sveltejs/kit/1.0.0-next.563_svelte@3.53.1+vite@3.2.4:
+ resolution: {integrity: sha512-RvQSE6dOuH4vE2hM5K/DezJlm9RjC5EMQK8X46mBXIggp8unaDH+YJyF+KRvAZE5sV93Hk5xaq0WZa8jtU42Jw==}
engines: {node: '>=16.14'}
hasBin: true
requiresBuild: true
@@ -6043,6 +6017,11 @@ packages:
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
dev: true
+ /fuse.js/6.6.2:
+ resolution: {integrity: sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==}
+ engines: {node: '>=10'}
+ dev: false
+
/gauge/3.0.2:
resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==}
engines: {node: '>=10'}