From eaa68b8e6b9c2628ecc1f841a162872cb8fcb18a Mon Sep 17 00:00:00 2001 From: Ben Alpert Date: Sat, 7 Jun 2014 19:13:11 -0700 Subject: [PATCH] Fix select switching to multiple in IE This one was an actual behavioral bug rather than a bug with the tests; our intention was that the first element from the `defaultValue` array would remain selected but IE seemed to be choosing the last one instead. Now we set the value for uncontrolled components in componentDidUpdate when switching from multiple to non-multiple to ensure that a consistent option gets selected. Test Plan: Ran the ReactDOMSelect tests in jest, phantomjs, IE10, Chrome, and Firefox. Also tested an uncontrolled select manually to make sure that nothing crazy happened when switching between options. --- src/browser/ui/dom/components/ReactDOMSelect.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/browser/ui/dom/components/ReactDOMSelect.js b/src/browser/ui/dom/components/ReactDOMSelect.js index e4c9d07264..9a3a3e0818 100644 --- a/src/browser/ui/dom/components/ReactDOMSelect.js +++ b/src/browser/ui/dom/components/ReactDOMSelect.js @@ -141,9 +141,11 @@ var ReactDOMSelect = ReactCompositeComponent.createClass({ updateOptions(this, LinkedValueUtils.getValue(this)); }, - componentDidUpdate: function() { + componentDidUpdate: function(prevProps) { var value = LinkedValueUtils.getValue(this); - if (value != null) { + var prevMultiple = !!prevProps.multiple; + var multiple = !!this.props.multiple; + if (value != null || prevMultiple !== multiple) { updateOptions(this, value); } },