From f7edbd106f3db3de9e178acafb9e1f91dd923ca6 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Wed, 19 Mar 2025 15:13:46 +0100 Subject: [PATCH] improve default behavior of number and currency input --- .../components/inputs/AppNumberInput.svelte | 30 +++++++++++++------ .../inputs/currency/AppCurrencyInput.svelte | 17 +++++++++-- 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/frontend/src/lib/components/apps/components/inputs/AppNumberInput.svelte b/frontend/src/lib/components/apps/components/inputs/AppNumberInput.svelte index e4496c9849..29dccf3b88 100644 --- a/frontend/src/lib/components/apps/components/inputs/AppNumberInput.svelte +++ b/frontend/src/lib/components/apps/components/inputs/AppNumberInput.svelte @@ -32,14 +32,6 @@ configuration ) - let value: number | undefined = resolvedConfig.defaultValue - - $componentControl[id] = { - setValue(nvalue: number | undefined) { - value = nvalue - } - } - onDestroy(() => { listInputs?.remove(id) }) @@ -48,9 +40,23 @@ result: undefined as number | undefined }) + let initValue = outputs?.result.peak() + let value: number | undefined = + !iterContext && initValue != undefined ? initValue : resolvedConfig.defaultValue + + $componentControl[id] = { + setValue(nvalue: number | undefined) { + value = nvalue + outputs?.result.set(value) + } + } + let initialHandleDefault = true + $: handleDefault(resolvedConfig.defaultValue) - $: { + $: value && onChangeValue() + + function onChangeValue() { outputs?.result.set(value) if (iterContext && listInputs) { listInputs.set(id, value) @@ -58,6 +64,12 @@ } function handleDefault(defaultValue: number | undefined) { + if (initialHandleDefault) { + initialHandleDefault = false + if (value != undefined) { + return + } + } value = defaultValue } diff --git a/frontend/src/lib/components/apps/components/inputs/currency/AppCurrencyInput.svelte b/frontend/src/lib/components/apps/components/inputs/currency/AppCurrencyInput.svelte index 143a6a9858..4448cfa4d3 100644 --- a/frontend/src/lib/components/apps/components/inputs/currency/AppCurrencyInput.svelte +++ b/frontend/src/lib/components/apps/components/inputs/currency/AppCurrencyInput.svelte @@ -41,11 +41,14 @@ configuration ) - let value: number | undefined = resolvedConfig.defaultValue + let initValue = outputs?.result.peak() + let value: number | undefined = + !iterContext && initValue != undefined ? initValue : resolvedConfig.defaultValue $componentControl[id] = { setValue(nvalue: number) { value = nvalue + outputs?.result.set(value ?? null) } } @@ -56,15 +59,23 @@ } } + let initialHandleDefault = true + + $: handleDefault(resolvedConfig.defaultValue) + function handleDefault(dflt: number | undefined) { + if (initialHandleDefault) { + initialHandleDefault = false + if (value != undefined) { + return + } + } value = dflt handleInput() } $: value != undefined && handleInput() - $: handleDefault(resolvedConfig.defaultValue) - let css = initCss($app.css?.currencycomponent, customCss)