Skip to content

Commit 12780ed

Browse files
committed
only stash defaults when relevant
1 parent 27f6cbb commit 12780ed

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

packages/svelte/src/internal/client/dom/elements/attributes.js

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -360,16 +360,21 @@ export function set_attributes(
360360
if (value == null && !is_custom_element && !is_default) {
361361
attributes[key] = null;
362362

363-
// removing value/checked also removes defaultValue/defaultChecked — preserve
364-
let default_value = /** @type {HTMLInputElement} */ (element).defaultValue;
365-
let default_checked = /** @type {HTMLInputElement} */ (element).defaultChecked;
366-
367-
element.removeAttribute(key);
368-
369-
if (key === 'value') {
370-
/** @type {HTMLInputElement} */ (element).defaultValue = default_value;
371-
} else if (key === 'checked') {
372-
/** @type {HTMLInputElement} */ (element).defaultChecked = default_checked;
363+
if (name === 'value' || name === 'checked') {
364+
// removing value/checked also removes defaultValue/defaultChecked — preserve
365+
let input = /** @type {HTMLInputElement} */ (element);
366+
367+
if (name === 'value') {
368+
let prev = input.defaultValue;
369+
input.removeAttribute(name);
370+
input.defaultValue = prev;
371+
} else {
372+
let prev = input.defaultChecked;
373+
input.removeAttribute(name);
374+
input.defaultChecked = prev;
375+
}
376+
} else {
377+
element.removeAttribute(key);
373378
}
374379
} else if (
375380
is_default ||

0 commit comments

Comments
 (0)