Skip to content

Commit bcc0865

Browse files
committed
fix: don't clear date input on temporarily invalid value
fixes #7897 No test because this is only visually observable
1 parent 533bd9d commit bcc0865

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

.changeset/blue-rules-juggle.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"svelte": patch
3+
---
4+
5+
fix: don't clear date input on temporarily invalid value

packages/svelte/src/internal/client/render.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1026,6 +1026,7 @@ export function bind_value(dom, get_value, update) {
10261026

10271027
/** @type {any} */
10281028
let value = dom.value;
1029+
console.log('get value', value);
10291030
if (is_numberlike_input(dom)) {
10301031
value = to_number(value);
10311032
}
@@ -1042,12 +1043,19 @@ export function bind_value(dom, get_value, update) {
10421043
const value = get_value();
10431044
// @ts-ignore
10441045
dom.__value = value;
1046+
console.log('set value', value);
10451047

10461048
if (is_numberlike_input(dom) && value === to_number(dom.value)) {
10471049
// handles 0 vs 00 case (see https://github.com/sveltejs/svelte/issues/9959)
10481050
return;
10491051
}
10501052

1053+
if (dom.type === 'date' && !value && !dom.value) {
1054+
// Handles the case where a temporarily invalid date is set (while typing, for example with a leading 0 for the day)
1055+
// and prevents this state from clearing the other parts of the date input (see https://github.com/sveltejs/svelte/issues/7897)
1056+
return;
1057+
}
1058+
10511059
dom.value = stringify(value);
10521060
});
10531061
}

0 commit comments

Comments
 (0)