Skip to content

Commit d85515e

Browse files
committed
prevent editend to fire to often
1 parent 08ab3f6 commit d85515e

File tree

7 files changed

+98
-84
lines changed

7 files changed

+98
-84
lines changed

dist/index.js

+23-21
Original file line numberDiff line numberDiff line change
@@ -770,32 +770,34 @@
770770
}
771771

772772
function stopEditing() {
773-
$$invalidate(3, editFocussed = false);
774-
$$invalidate(6, editing = false);
773+
if (editing) {
774+
$$invalidate(3, editFocussed = false);
775+
$$invalidate(6, editing = false);
775776

776-
if (parse) {
777-
preciseValue = parse(visibleValue);
778-
updateValues(preciseValue);
779-
} else {
780-
let checkValue = parseFloat(editElement.value);
781-
782-
if (!isNaN(checkValue)) {
783-
preciseValue = parseFloat(visibleValue);
777+
if (parse) {
778+
preciseValue = parse(visibleValue);
784779
updateValues(preciseValue);
780+
} else {
781+
let checkValue = parseFloat(editElement.value);
782+
783+
if (!isNaN(checkValue)) {
784+
preciseValue = parseFloat(visibleValue);
785+
updateValues(preciseValue);
786+
}
785787
}
786-
}
787788

788-
// Bring focus back to the drag element if editElement was focussed:
789-
if (document.activeElement === editElement) {
790-
setTimeout(
791-
() => {
792-
dragElement.focus();
793-
},
794-
0
795-
);
796-
}
789+
// Bring focus back to the drag element if editElement was focussed:
790+
if (document.activeElement === editElement) {
791+
setTimeout(
792+
() => {
793+
dragElement.focus();
794+
},
795+
0
796+
);
797+
}
797798

798-
dispatch("editend");
799+
dispatch("editend");
800+
}
799801
}
800802

801803
function stepValue(numSteps) {

dist/index.mjs

+23-21
Original file line numberDiff line numberDiff line change
@@ -764,32 +764,34 @@ function instance($$self, $$props, $$invalidate) {
764764
}
765765

766766
function stopEditing() {
767-
$$invalidate(3, editFocussed = false);
768-
$$invalidate(6, editing = false);
767+
if (editing) {
768+
$$invalidate(3, editFocussed = false);
769+
$$invalidate(6, editing = false);
769770

770-
if (parse) {
771-
preciseValue = parse(visibleValue);
772-
updateValues(preciseValue);
773-
} else {
774-
let checkValue = parseFloat(editElement.value);
775-
776-
if (!isNaN(checkValue)) {
777-
preciseValue = parseFloat(visibleValue);
771+
if (parse) {
772+
preciseValue = parse(visibleValue);
778773
updateValues(preciseValue);
774+
} else {
775+
let checkValue = parseFloat(editElement.value);
776+
777+
if (!isNaN(checkValue)) {
778+
preciseValue = parseFloat(visibleValue);
779+
updateValues(preciseValue);
780+
}
779781
}
780-
}
781782

782-
// Bring focus back to the drag element if editElement was focussed:
783-
if (document.activeElement === editElement) {
784-
setTimeout(
785-
() => {
786-
dragElement.focus();
787-
},
788-
0
789-
);
790-
}
783+
// Bring focus back to the drag element if editElement was focussed:
784+
if (document.activeElement === editElement) {
785+
setTimeout(
786+
() => {
787+
dragElement.focus();
788+
},
789+
0
790+
);
791+
}
791792

792-
dispatch("editend");
793+
dispatch("editend");
794+
}
793795
}
794796

795797
function stepValue(numSteps) {

example/public/build/bundle.css

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

example/public/build/bundle.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

example/public/build/bundle.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

example/src/App2.svelte

+30-22
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<script>
22
import NumberSpinner from "../../src/index.js";
3+
let showSpinner = true;
34
let value1 = 100;
45
let value2 = 33;
56
let logs = [];
@@ -9,33 +10,40 @@
910

1011
<h3>Test App</h3>
1112
<p>
12-
The first number spinner listens to custom logging events and displays them on screen for faster debugging on mobile devices.
13+
The first number spinner listens to custom logging events and displays them on screen for faster
14+
debugging on mobile devices.
1315
</p>
1416

1517
<hr />
1618

17-
<div class="row">
18-
<NumberSpinner
19-
bind:value={value1}
20-
on:consoleLog={(ev) => (logs = [{ timestamp: Date.now(), msg: ev.detail }, ...logs])}
21-
on:keydown={(ev) => {
22-
logs = [{ timestamp: Date.now(), msg: "keydown key: " + ev.key }, ...logs]
23-
}}
24-
on:keypress={(ev) => {
25-
logs = [{ timestamp: Date.now(), msg: "keypress key: " + ev.key }, ...logs]
26-
}}
27-
on:keyup={(ev) => {
28-
logs = [{ timestamp: Date.now(), msg: "keyup key: " + ev.key }, ...logs]
29-
}}
30-
on:editstart={(ev) => {
31-
logs = [{ timestamp: Date.now(), msg: "editstart" }, ...logs]
32-
}}
33-
on:editend={(ev) => {
34-
logs = [{ timestamp: Date.now(), msg: "editend" }, ...logs]
35-
}}
19+
<label>
20+
<input type="checkbox" bind:checked={showSpinner} />
21+
Show Spinner
22+
</label>
3623

37-
/>
38-
</div>
24+
{#if showSpinner}
25+
<div class="row">
26+
<NumberSpinner
27+
bind:value={value1}
28+
on:consoleLog={(ev) => (logs = [{ timestamp: Date.now(), msg: ev.detail }, ...logs])}
29+
on:keydown={(ev) => {
30+
logs = [{ timestamp: Date.now(), msg: "keydown key: " + ev.key }, ...logs];
31+
}}
32+
on:keypress={(ev) => {
33+
logs = [{ timestamp: Date.now(), msg: "keypress key: " + ev.key }, ...logs];
34+
}}
35+
on:keyup={(ev) => {
36+
logs = [{ timestamp: Date.now(), msg: "keyup key: " + ev.key }, ...logs];
37+
}}
38+
on:editstart={(ev) => {
39+
logs = [{ timestamp: Date.now(), msg: "editstart" }, ...logs];
40+
}}
41+
on:editend={(ev) => {
42+
logs = [{ timestamp: Date.now(), msg: "editend" }, ...logs];
43+
}}
44+
/>
45+
</div>
46+
{/if}
3947

4048
<hr />
4149

src/NumberSpinner.svelte

+19-17
Original file line numberDiff line numberDiff line change
@@ -288,28 +288,30 @@
288288
}
289289
290290
function stopEditing() {
291-
editFocussed = false;
292-
editing = false;
291+
if (editing) {
292+
editFocussed = false;
293+
editing = false;
293294
294-
if (parse) {
295-
preciseValue = parse(visibleValue);
296-
updateValues(preciseValue);
297-
} else {
298-
let checkValue = parseFloat(editElement.value);
299-
if (!isNaN(checkValue)) {
300-
preciseValue = parseFloat(visibleValue);
295+
if (parse) {
296+
preciseValue = parse(visibleValue);
301297
updateValues(preciseValue);
298+
} else {
299+
let checkValue = parseFloat(editElement.value);
300+
if (!isNaN(checkValue)) {
301+
preciseValue = parseFloat(visibleValue);
302+
updateValues(preciseValue);
303+
}
302304
}
303-
}
304305
305-
// Bring focus back to the drag element if editElement was focussed:
306-
if (document.activeElement === editElement) {
307-
setTimeout(() => {
308-
dragElement.focus();
309-
}, 0);
310-
}
306+
// Bring focus back to the drag element if editElement was focussed:
307+
if (document.activeElement === editElement) {
308+
setTimeout(() => {
309+
dragElement.focus();
310+
}, 0);
311+
}
311312
312-
dispatch("editend");
313+
dispatch("editend");
314+
}
313315
}
314316
315317
function stepValue(numSteps) {

0 commit comments

Comments
 (0)