Skip to content

Commit

Permalink
docs: showcase debounce reactive duration (#110)
Browse files Browse the repository at this point in the history
  • Loading branch information
huntabyte authored Jul 1, 2024
1 parent 62d245d commit 03d9005
Show file tree
Hide file tree
Showing 7 changed files with 499 additions and 248 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
"license": "MIT",
"devDependencies": {
"@changesets/cli": "^2.27.1",
"@huntabyte/eslint-config": "^0.3.1",
"@huntabyte/eslint-config": "^0.3.2",
"@svitejs/changesets-changelog-github-compact": "^1.1.0",
"eslint": "^9.1.1",
"eslint-plugin-svelte": "2.38.0",
Expand Down
682 changes: 459 additions & 223 deletions pnpm-lock.yaml

Large diffs are not rendered by default.

25 changes: 15 additions & 10 deletions sites/docs/content/utilities/use-debounce.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,23 +21,28 @@ category: Utilities
let count = $state(0);
let logged = $state("");
let isFirstTime = $state(true);
const logCount = useDebounce(() => {
if (isFirstTime) {
isFirstTime = false;
logged = `You pressed the button ${count} times!`;
} else {
logged = `You pressed the button ${count} times since last time!`;
}
count = 0;
}, 1000);
let debounceDuration = $state(1000);
const logCount = useDebounce(
() => {
if (isFirstTime) {
isFirstTime = false;
logged = `You pressed the button ${count} times!`;
} else {
logged = `You pressed the button ${count} times since last time!`;
}
count = 0;
},
() => debounceDuration
);
function ding() {
count++;
logCount();
}
</script>
<input type="number" bind:value={debounceDuration} />
<button onclick={ding}>DING DING DING</button>
<button onclick={logCount.cancel} disabled={!logCount.pending}>Cancel message</button>
<p>{logged || "Press the button!"}</p>
Expand Down
2 changes: 1 addition & 1 deletion sites/docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
"rehype-pretty-code": "^0.13.0",
"remark-gfm": "^4.0.0",
"shiki": "^1.1.3",
"svelte": "^5.0.0-next.130",
"svelte": "5.0.0-next.169",
"svelte-check": "^3.6.4",
"tailwind-merge": "^2.2.1",
"tailwind-variants": "^0.2.0",
Expand Down
3 changes: 2 additions & 1 deletion sites/docs/src/lib/components/demos/pressed-keys.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@
</div>
{/if}
{#each toPress as key}
<!-- svelte-ignore a11y_no_static_element_interactions a11y_click_events_have_key_events -->
<!-- svelte-ignore a11y_click_events_have_key_events -->
<!-- svelte-ignore a11y_no_static_element_interactions -->
<div
class="grid size-12 place-items-center rounded-lg border transition-all duration-200
{allPressed ? 'border-brand' : 'border-border'} bg-background"
Expand Down
32 changes: 21 additions & 11 deletions sites/docs/src/lib/components/demos/use-debounce.svelte
Original file line number Diff line number Diff line change
@@ -1,34 +1,44 @@
<script lang="ts">
import { useDebounce } from "runed";
import Input from "../ui/input/input.svelte";
import Label from "../ui/label/label.svelte";
import DemoContainer from "$lib/components/demo-container.svelte";
import { Button } from "$lib/components/ui/button";
let count = $state(0);
let logged = $state("");
let isFirstTime = $state(true);
let durationMs = $state(1000);
const logCount = useDebounce(() => {
if (isFirstTime) {
isFirstTime = false;
logged = `You pressed the button ${count} times!`;
} else {
logged = `You pressed the button ${count} times since last time!`;
}
count = 0;
}, 1000);
const logCount = useDebounce(
() => {
if (isFirstTime) {
isFirstTime = false;
logged = `You pressed the button ${count} times!`;
} else {
logged = `You pressed the button ${count} times since last time!`;
}
count = 0;
},
() => durationMs
);
function ding() {
count++;
logCount();
}
</script>

<DemoContainer>
<DemoContainer class="flex flex-col gap-4">
<div class="flex flex-col gap-1.5">
<Label for="duration">Debounce duration (ms)</Label>
<Input id="duration" type="number" bind:value={durationMs} />
</div>
<div class="flex items-center gap-4">
<Button variant="brand" size="sm" onclick={ding}>DING DING DING</Button>
<Button variant="subtle" size="sm" onclick={logCount.cancel} disabled={!logCount.pending}
>Cancel message</Button
>
</div>
<p class="mt-4">{logged || "Press the button!"}</p>
<p class="mt-2">{logged || "Press the button!"}</p>
</DemoContainer>
1 change: 0 additions & 1 deletion sites/docs/tailwind.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ const config = {
DEFAULT: "hsl(var(--destructive) / <alpha-value>)",
foreground: "hsl(var(--destructive-foreground) / <alpha-value>)",
},
success: "hsl(var(--success) / <alpha-value>)",
muted: {
DEFAULT: "hsl(var(--muted) / <alpha-value>)",
foreground: "hsl(var(--muted-foreground) / <alpha-value>)",
Expand Down

0 comments on commit 03d9005

Please sign in to comment.