Skip to content

Commit c681bf6

Browse files
author
Brandon Dail
committed
Set defaultSelected on option element from select's defaultValue
1 parent e7a2ac9 commit c681bf6

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

src/renderers/dom/fiber/wrappers/ReactDOMFiberSelect.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ function updateOptions(
7676
node: HTMLSelectElement,
7777
multiple: boolean,
7878
propValue: any,
79+
setDefaultSelected: boolean,
7980
) {
8081
type IndexableHTMLOptionsCollection = HTMLOptionsCollection & {
8182
[key: number]: HTMLOptionElement,
@@ -94,6 +95,9 @@ function updateOptions(
9495
if (options[i].selected !== selected) {
9596
options[i].selected = selected;
9697
}
98+
if (selected && setDefaultSelected) {
99+
options[i].defaultSelected = true;
100+
}
97101
}
98102
} else {
99103
// Do not set `select.value` as exact behavior isn't consistent across all
@@ -103,6 +107,9 @@ function updateOptions(
103107
for (let i = 0; i < options.length; i++) {
104108
if (options[i].value === selectedValue) {
105109
options[i].selected = true;
110+
if (setDefaultSelected) {
111+
options[i].defaultSelected = true;
112+
}
106113
return;
107114
}
108115
if (defaultSelected === null && !options[i].disabled) {
@@ -175,7 +182,7 @@ var ReactDOMSelect = {
175182
if (value != null) {
176183
updateOptions(node, !!props.multiple, value);
177184
} else if (props.defaultValue != null) {
178-
updateOptions(node, !!props.multiple, props.defaultValue);
185+
updateOptions(node, !!props.multiple, props.defaultValue, true);
179186
}
180187
},
181188

@@ -194,7 +201,7 @@ var ReactDOMSelect = {
194201
} else if (wasMultiple !== !!props.multiple) {
195202
// For simplicity, reapply `defaultValue` if `multiple` is toggled.
196203
if (props.defaultValue != null) {
197-
updateOptions(node, !!props.multiple, props.defaultValue);
204+
updateOptions(node, !!props.multiple, props.defaultValue, true);
198205
} else {
199206
// Revert the select back to its default unselected state.
200207
updateOptions(node, !!props.multiple, props.multiple ? [] : '');

0 commit comments

Comments
 (0)