File tree Expand file tree Collapse file tree 3 files changed +55
-2
lines changed
src/internal/client/dom/elements
tests/runtime-runes/samples/value-attribute-null-undefined Expand file tree Collapse file tree 3 files changed +55
-2
lines changed Original file line number Diff line number Diff line change @@ -68,14 +68,14 @@ export function set_value(element, value) {
6868 // treat null and undefined the same for the initial value
6969 value ?? undefined ) ||
7070 // @ts -expect-error
71- // `progress` elements always need their value set when its `0`
71+ // `progress` elements always need their value set when it's `0`
7272 ( element . value === value && ( value !== 0 || element . nodeName !== 'PROGRESS' ) )
7373 ) {
7474 return ;
7575 }
7676
7777 // @ts -expect-error
78- element . value = value ;
78+ element . value = value ?? '' ;
7979}
8080
8181/**
Original file line number Diff line number Diff line change 1+ import { test , ok } from '../../test' ;
2+ import { flushSync } from 'svelte' ;
3+
4+ export default test ( {
5+ mode : [ 'client' ] ,
6+
7+ async test ( { assert, target } ) {
8+ /**
9+ * @type {HTMLInputElement | null }
10+ */
11+ const input = target . querySelector ( 'input[type=text]' ) ;
12+ /**
13+ * @type {HTMLButtonElement | null }
14+ */
15+ const setString = target . querySelector ( '#setString' ) ;
16+ /**
17+ * @type {HTMLButtonElement | null }
18+ */
19+ const setNull = target . querySelector ( '#setNull' ) ;
20+ /**
21+ * @type {HTMLButtonElement | null }
22+ */
23+ const setUndefined = target . querySelector ( '#setUndefined' ) ;
24+
25+ ok ( input ) ;
26+ ok ( setString ) ;
27+ ok ( setNull ) ;
28+ ok ( setUndefined ) ;
29+
30+ // value should be blank string when existing value attribute is changed to null or undefined
31+
32+ flushSync ( ( ) => { setString . click ( ) ; } ) ;
33+ assert . equal ( input . value , 'foo' ) ;
34+
35+ flushSync ( ( ) => { setNull . click ( ) ; } ) ;
36+ assert . equal ( input . value , '' ) ;
37+
38+ flushSync ( ( ) => { setString . click ( ) ; } ) ;
39+ assert . equal ( input . value , 'foo' ) ;
40+
41+ flushSync ( ( ) => { setUndefined . click ( ) ; } ) ;
42+ assert . equal ( input . value , '' ) ;
43+ }
44+ } ) ;
Original file line number Diff line number Diff line change 1+ <script >
2+ let value = $state (" " );
3+ </script >
4+
5+ <input type ="text" {value } />
6+
7+ <button id ="setString" onclick ={() => {value = " foo" ;}}></button >
8+ <button id ="setNull" onclick ={() => {value = null ;}}></button >
9+ <button id ="setUndefined" onclick ={() => {value = undefined ;}}></button >
You can’t perform that action at this time.
0 commit comments