improved line editor and price editor

This commit is contained in:
2025-07-11 08:41:12 +02:00
parent 50adc206b2
commit 713e6ff8ff
3 changed files with 37 additions and 18 deletions

View File

@@ -1,5 +1,5 @@
plugins { plugins {
id("com.diffplug.spotless") version "latest.release" id("com.diffplug.spotless") version "7.0.4"
} }
repositories { repositories {

View File

@@ -2,18 +2,30 @@
let { editable = false, value = $bindable(null) } = $props(); let { editable = false, value = $bindable(null) } = $props();
let editing = $state(false); let editing = $state(false);
function toggleEdit(){ let editValue = value;
editing = !editing;
function applyEdit(){
value = editValue;
editing=false;
}
function resetEdit(){
editing = false;
editValue = value;
}
function startEdit(){
editing = editable;
} }
function typed(ev){ function typed(ev){
if (ev.keyCode == 13) toggleEdit(); if (ev.keyCode == 13) applyEdit();
if (ev.keyCode == 27) resetEdit();
} }
</script> </script>
{#if editable && editing} {#if editable && editing}
<input bind:value onkeyup={typed} /> <input bind:value={editValue} onkeyup={typed} autofocus />
{:else} {:else}
<div onclick={toggleEdit}>{value}</div> <div onclick={startEdit}>{value}</div>
{/if} {/if}

View File

@@ -2,18 +2,25 @@
let { editable = false, currency, value = $bindable(null) } = $props(); let { editable = false, currency, value = $bindable(null) } = $props();
let editing = $state(false); let editing = $state(false);
function toggleEdit(){ let editValue = value/100;
editing = !editing;
if (editing){ function applyEdit(){
value /= 100; value = editValue * 100;
} editing = false;
}
function resetEdit(){
editValue = value/100;
editing = false;
}
function startEdit(){
editing = editable;
} }
function typed(ev){ function typed(ev){
if (ev.keyCode == 13) { if (ev.keyCode == 13) applyEdit();
toggleEdit(); if (ev.keyCode == 27) resetEdit();
value *= 100;
}
} }
</script> </script>
@@ -22,8 +29,8 @@
</style> </style>
{#if editable && editing} {#if editable && editing}
<input type="number" step=".01" bind:value onkeyup={typed} />&nbsp;{currency} <input type="number" step=".01" bind:value={editValue} onkeyup={typed} />&nbsp;{currency}
{:else} {:else}
<div onclick={toggleEdit}>{Number(value/100).toFixed(2)}&nbsp;{currency}</div> <div onclick={startEdit}>{Number(value/100).toFixed(2)}&nbsp;{currency}</div>
{/if} {/if}