diff options
| author | Adam Soltys <[email protected]> | 2024-11-07 21:16:25 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-11-08 09:27:40 -0800 |
| commit | 32fcc461cd43c8907df5e306d520bb671307eab1 (patch) | |
| tree | 0253780c569998b6c1a5f43026586e94916c3fee /src/components/Numpad.svelte | |
| parent | be5aa52cea1d57c875cfb22d25c6a866b8de2239 (diff) | |
| download | coinos-ui-32fcc461cd43c8907df5e306d520bb671307eab1.tar.gz coinos-ui-32fcc461cd43c8907df5e306d520bb671307eab1.zip | |
svelte 5
Diffstat (limited to 'src/components/Numpad.svelte')
| -rw-r--r-- | src/components/Numpad.svelte | 55 |
1 files changed, 36 insertions, 19 deletions
diff --git a/src/components/Numpad.svelte b/src/components/Numpad.svelte index 07d1ef4c..03c7c48f 100644 --- a/src/components/Numpad.svelte +++ b/src/components/Numpad.svelte @@ -1,21 +1,33 @@ -<script> +<script lang="ts"> + import { run, preventDefault, stopPropagation } from "svelte/legacy"; + import Left from "$comp/Left.svelte"; import Icon from "$comp/Icon.svelte"; import { f, s, focus, warning, sat, sats } from "$lib/utils"; import { t } from "$lib/translations"; - export let amount, - currency, - element, - fiat = !amount, - rate, - submit = undefined; + interface Props { + amount: any; + currency: any; + element: any; + fiat?: any; + rate: any; + submit?: any; + amountFiat?: number; + } - export let amountFiat = 0; + let { + amount = $bindable(), + currency, + element = $bindable(), + fiat = $bindable(!amount), + rate = $bindable(), + submit = undefined, + amountFiat = $bindable(0), + }: Props = $props(); let arrow = "<"; - $: update(amount, amountFiat); let update = (a, f) => { if (fiat) { amount = Math.round(f / (rate / sats)); @@ -102,8 +114,6 @@ } }; - $: html = fiat ? amountFiat : s(amount); - let prev = ""; let input = (e) => { @@ -193,6 +203,13 @@ } fiat = !fiat; }; + run(() => { + update(amount, amountFiat); + }); + let html; + run(() => { + html = fiat ? amountFiat : s(amount); + }); </script> <div class="flex justify-center items-center"> @@ -208,17 +225,17 @@ use:focus contenteditable bind:innerHTML={html} - on:focus={select} - on:blur={blur} - on:input={input} - on:keydown={keydown} + onfocus={select} + onblur={blur} + oninput={input} + onkeydown={keydown} class="outline-none my-auto" bind:this={element} - /> + ></div> </div> <div class="flex items-center justify-center text-2xl cursor-pointer" - on:click|preventDefault|stopPropagation={swap} + onclick={stopPropagation(preventDefault(swap))} > {fiat ? "⚡️" + s(amount) : f(amountFiat, currency)} </div> @@ -230,7 +247,7 @@ <button type="button" class="btn" - on:click|preventDefault|stopPropagation={() => handleInput(value)} + onclick={stopPropagation(preventDefault(() => handleInput(value)))} > <Left /> </button> @@ -238,7 +255,7 @@ <button type="button" class="btn" - on:click|preventDefault|stopPropagation={() => handleInput(value)} + onclick={stopPropagation(preventDefault(() => handleInput(value)))} >{value}</button > {/if} |
