MCPcopy Create free account
hub / github.com/krasimir/react-in-patterns / updateOptions

Function updateOptions

code/controlled-uncontrolled/public/app.js:13836–13876  ·  view source on GitHub ↗
(node, multiple, propValue, setDefaultSelected)

Source from the content-addressed store, hash-verified

13834}
13835
13836function updateOptions(node, multiple, propValue, setDefaultSelected) {
13837 var options = node.options;
13838
13839 if (multiple) {
13840 var selectedValues = propValue;
13841 var selectedValue = {};
13842 for (var i = 0; i < selectedValues.length; i++) {
13843 // Prefix to avoid chaos with special keys.
13844 selectedValue['$' + selectedValues[i]] = true;
13845 }
13846 for (var _i = 0; _i < options.length; _i++) {
13847 var selected = selectedValue.hasOwnProperty('$' + options[_i].value);
13848 if (options[_i].selected !== selected) {
13849 options[_i].selected = selected;
13850 }
13851 if (selected && setDefaultSelected) {
13852 options[_i].defaultSelected = true;
13853 }
13854 }
13855 } else {
13856 // Do not set `select.value` as exact behavior isn't consistent across all
13857 // browsers for all cases.
13858 var _selectedValue = '' + propValue;
13859 var defaultSelected = null;
13860 for (var _i2 = 0; _i2 < options.length; _i2++) {
13861 if (options[_i2].value === _selectedValue) {
13862 options[_i2].selected = true;
13863 if (setDefaultSelected) {
13864 options[_i2].defaultSelected = true;
13865 }
13866 return;
13867 }
13868 if (defaultSelected === null && !options[_i2].disabled) {
13869 defaultSelected = options[_i2];
13870 }
13871 }
13872 if (defaultSelected !== null) {
13873 defaultSelected.selected = true;
13874 }
13875 }
13876}
13877
13878/**
13879 * Implements a <select> host component that allows optionally setting the

Callers 3

postMountWrapper$2Function · 0.70
postUpdateWrapperFunction · 0.70
restoreControlledState$2Function · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected