|
|
|
|
@ -15,6 +15,8 @@
@@ -15,6 +15,8 @@
|
|
|
|
|
let editing = $state(simple); |
|
|
|
|
let editValue = value; |
|
|
|
|
let start = 0; |
|
|
|
|
let x = 0; |
|
|
|
|
let y = 0; |
|
|
|
|
|
|
|
|
|
async function applyEdit(){ |
|
|
|
|
let success = await onSet(editValue); |
|
|
|
|
@ -22,22 +24,14 @@
@@ -22,22 +24,14 @@
|
|
|
|
|
editing=false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function resetEdit(){ |
|
|
|
|
editing = false; |
|
|
|
|
editValue = value; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function startEdit(){ |
|
|
|
|
activeField.update((n) => n+1); |
|
|
|
|
editing = editable; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function typed(ev){ |
|
|
|
|
if (ev.keyCode == 13) applyEdit(); |
|
|
|
|
if (ev.keyCode == 27) resetEdit(); |
|
|
|
|
function ignore(evt){ |
|
|
|
|
evt.preventDefault(); |
|
|
|
|
evt.stopPropagation(); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function measured(evt,duration){ |
|
|
|
|
function measured(evt,duration,d){ |
|
|
|
|
if (d > 100) return; |
|
|
|
|
if (duration < 500){ |
|
|
|
|
onclick(evt); |
|
|
|
|
} else { |
|
|
|
|
@ -46,29 +40,46 @@
@@ -46,29 +40,46 @@
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function oncontextmenu(evt){ |
|
|
|
|
evt.preventDefault(); |
|
|
|
|
evt.stopPropagation(); |
|
|
|
|
return false; |
|
|
|
|
startEdit(); |
|
|
|
|
return ignore(evt); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function onmousedown(evt){ |
|
|
|
|
evt.preventDefault(); |
|
|
|
|
start = evt.timeStamp; |
|
|
|
|
return ignore(evt); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function onmouseup(evt){ |
|
|
|
|
evt.preventDefault(); |
|
|
|
|
measured(evt, evt.timeStamp - start); |
|
|
|
|
measured(evt, evt.timeStamp - start,0); |
|
|
|
|
return ignore(evt); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function ontouchstart(evt){ |
|
|
|
|
evt.preventDefault(); |
|
|
|
|
start = evt.timeStamp; |
|
|
|
|
x = evt.touches[0].clientX; |
|
|
|
|
y = evt.touches[0].clientY; |
|
|
|
|
return ignore(evt); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function ontouchend(evt){ |
|
|
|
|
evt.preventDefault(); |
|
|
|
|
measured(evt, evt.timeStamp - start); |
|
|
|
|
let d = Math.abs(x - evt.changedTouches[0].clientX) + Math.abs(y - evt.changedTouches[0].clientY); |
|
|
|
|
measured(evt, evt.timeStamp - start, d); |
|
|
|
|
return ignore(evt); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function resetEdit(){ |
|
|
|
|
editing = false; |
|
|
|
|
editValue = value; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function startEdit(){ |
|
|
|
|
activeField.update((n) => n+1); |
|
|
|
|
editing = editable; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function typed(ev){ |
|
|
|
|
if (ev.keyCode == 13) applyEdit(); |
|
|
|
|
if (ev.keyCode == 27) resetEdit(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
activeField.subscribe((val) => resetEdit()); |
|
|
|
|
@ -92,5 +103,5 @@
@@ -92,5 +103,5 @@
|
|
|
|
|
{#if editable && editing} |
|
|
|
|
<input bind:value={editValue} onkeyup={typed} autofocus /> |
|
|
|
|
{:else} |
|
|
|
|
<svelte:element this={type} href={href} {onclick} {onmousedown} {onmouseup} {ontouchstart} {ontouchend} {oncontextmenu} class={{editable}} title={t('long_click_to_edit')} >{value}</svelte:element> |
|
|
|
|
<svelte:element this={type} href={href} onclick={ignore} {onmousedown} {onmouseup} {ontouchstart} {ontouchend} {oncontextmenu} class={{editable}} title={t('long_click_to_edit')} >{value}</svelte:element> |
|
|
|
|
{/if} |
|
|
|
|
|