-
Notifications
You must be signed in to change notification settings - Fork 4.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix #1394 #1395
Fix #1394 #1395
Conversation
src/Select.js
Outdated
@@ -889,7 +889,7 @@ const Select = React.createClass({ | |||
}, | |||
|
|||
renderClear () { | |||
if (!this.props.clearable || (!this.props.value || this.props.value === 0) || (this.props.multi && !this.props.value.length) || this.props.disabled || this.props.isLoading) return; | |||
if (!this.props.clearable || this.props.value == null || this.props.value === 0 || this.props.multi && !this.props.value.length || this.props.disabled || this.props.isLoading) return; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
and what about this.props.value === 0
?
sometimes we have to use zero value and clear button is not displayed (
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, I guess we could remove this condition, and not display the clear button only when this.props.value
is null
or undefined
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
src and tests updated 😉
@JedWatson Any chance for this PR to be merged soon ? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for this @sgaestel, and cheers for bumping it as well. I'd be very happy to merge this, could you fix the loose equality operator though please?
src/Select.js
Outdated
@@ -901,7 +901,8 @@ const Select = React.createClass({ | |||
}, | |||
|
|||
renderClear () { | |||
if (!this.props.clearable || (!this.props.value || this.props.value === 0) || (this.props.multi && !this.props.value.length) || this.props.disabled || this.props.isLoading) return; | |||
|
|||
if (!this.props.clearable || this.props.value == null || this.props.multi && !this.props.value.length || this.props.disabled || this.props.isLoading) return; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not keen on the loose equality operator - I know how it works, but given the number of people who use / contribute to this project, without an explicit comment it could be misinterpreted.
How about we replace this with a more explicit value === undefined || value === null
so that the intended behaviour is explicit?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
✅ Done
Replaced as proposed by this.props.value === undefined || this.props.value === null
@@ -691,6 +691,11 @@ describe('Select', () => { | |||
expect(onChange, 'was called with', 0); | |||
}); | |||
|
|||
it('displays the X button for 0 value', () => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for also adding tests for this 😁
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You're welcome 😉
@@ -901,7 +901,8 @@ const Select = React.createClass({ | |||
}, | |||
|
|||
renderClear () { | |||
if (!this.props.clearable || (!this.props.value || this.props.value === 0) || (this.props.multi && !this.props.value.length) || this.props.disabled || this.props.isLoading) return; | |||
|
|||
if (!this.props.clearable || this.props.value === undefined || this.props.value === null || this.props.multi && !this.props.value.length || this.props.disabled || this.props.isLoading) return; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One small tweak: You could write this.props.value == null
instead of this.props.value === undefined || this.props.value === null
.
> undefined == null
true
I'd love to see this merged. You can see this bug right on http://jedwatson.github.io/react-select/: |
Hi @sgaestel this looks good to me, thanks again for your patience and the tests! |
* Fix JedWatson#1394 * Updates following review * Updates following review by @JedWatson
commit 07dc061 Author: cbergmiller <[email protected]> Date: Tue Jun 6 07:04:20 2017 +0200 [ADD] Clarified the onInputChange prop signature in the docs (JedWatson#1773) * [ADD] Clarified the onInputChange prop signature in the docs * [ADD] requested changes commit 40db517 Author: cbergmiller <[email protected]> Date: Sat Jun 3 15:53:45 2017 +0200 [FIX] JedWatson#1651 moved option prop sync to componentWillReceiveProps (JedWatson#1765) * [FIX] JedWatson#1651 moved option prop sync to componentWillReceiveProps * [ADD] test for option prop sync by componentWillReceiveProps commit 1d15068 Author: Jed Watson <[email protected]> Date: Thu May 25 00:25:19 2017 +1000 v1.0.0-rc.5 commit e06ea57 Author: Jed Watson <[email protected]> Date: Thu May 25 00:25:09 2017 +1000 Updating build commit 7013005 Merge: 9943711 8239201 Author: Jed Watson <[email protected]> Date: Thu May 25 00:19:49 2017 +1000 Merge pull request JedWatson#1738 from agirton/chore/HISTORY-update Update change log for rc5 release. commit 8239201 Author: Adam Girton <[email protected]> Date: Sat May 20 10:37:18 2017 -0700 Update changelog commit 9943711 Author: Benjamin Piouffle <[email protected]> Date: Fri May 19 07:21:40 2017 +1100 Fix selected option focus when valueKey is not "value" (JedWatson#1733) * Fix selected option focus when valueKey is not "value" * Revert "Fix selected option focus when valueKey is not "value"" This reverts commit 45f5665. * Fix on src/ instead of lib/ commit 196c7bb Author: Max Hubenthal <[email protected]> Date: Wed May 17 12:47:29 2017 -0400 Fix aria owns value (JedWatson#1556) commit fd19b91 Author: Simon Gaestel <[email protected]> Date: Wed May 17 18:22:34 2017 +0200 Fix JedWatson#1394 (JedWatson#1395) * Fix JedWatson#1394 * Updates following review * Updates following review by @JedWatson commit 549d20a Author: Jed Watson <[email protected]> Date: Mon May 15 00:00:05 2017 +1000 v1.0.0-rc.4 commit 5269a85 Merge: af8f58d 75d6372 Author: Jed Watson <[email protected]> Date: Sun May 14 23:31:30 2017 +1000 Merge pull request JedWatson#1652 from dan-diaz/isClearable Include a className of 'is-clearable' if clearable is true commit af8f58d Merge: 8ff4596 9150107 Author: Jed Watson <[email protected]> Date: Sun May 14 23:27:19 2017 +1000 Merge pull request JedWatson#1659 from lagun4ik/master Added variables for shadow styles commit 8ff4596 Merge: a0e5855 03b3da2 Author: Jed Watson <[email protected]> Date: Sun May 14 23:25:48 2017 +1000 Merge pull request JedWatson#1658 from agirton/migrate-to-external-pkgs Migrate to prop-types and create-react-class packages commit 03b3da2 Author: Adam Girton <[email protected]> Date: Sun Apr 30 20:41:54 2017 -0700 Bumping create-react-class and prop-types commit 387f241 Author: Adam Girton <[email protected]> Date: Sun Apr 30 20:35:55 2017 -0700 Update react-input-autosize dep commit 9150107 Author: lagun4ik <[email protected]> Date: Mon Apr 10 21:55:48 2017 +0300 added variables for shadow styles commit d7d2a79 Author: Adam Girton <[email protected]> Date: Mon Apr 10 09:55:46 2017 -0700 Move over examples to use new pkgs commit feabc4d Author: Adam Girton <[email protected]> Date: Mon Apr 10 09:55:17 2017 -0700 Migrate rest of src overto createClass pkg commit ace3e08 Author: Adam Girton <[email protected]> Date: Mon Apr 10 09:44:54 2017 -0700 Migrate src over to creatClass package commit 16ff8e9 Author: Adam Girton <[email protected]> Date: Mon Apr 10 09:38:37 2017 -0700 Use new prop-types package commit 75d6372 Author: DDiaz <[email protected]> Date: Thu Apr 6 10:39:10 2017 -0400 spaces to tabs commit c81b9c9 Author: DDiaz <[email protected]> Date: Thu Apr 6 10:37:15 2017 -0400 Include a className of 'is-clearable' if clearable is true
…ate_and_add_creatable_options * commit '26169305a721ec3099a912cea2f6ed38e6dc9c4c': (36 commits) Fix Usage Docs Example (JedWatson#1799) Hide create option after closing menu (JedWatson#1306) Update README.md to include 'valueComponent' prop (JedWatson#1803) Adding merged changes to changelog Fix backspace handling for non-multi select controls. Fixes JedWatson#638 (JedWatson#773) Update Select.js [ADD] Clarified the onInputChange prop signature in the docs (JedWatson#1773) [FIX] JedWatson#1651 moved option prop sync to componentWillReceiveProps (JedWatson#1765) v1.0.0-rc.5 Updating build Update changelog Fix selected option focus when valueKey is not "value" (JedWatson#1733) Fix aria owns value (JedWatson#1556) Fix JedWatson#1394 (JedWatson#1395) v1.0.0-rc.4 Bumping create-react-class and prop-types Update react-input-autosize dep added variables for shadow styles Move over examples to use new pkgs Migrate rest of src overto createClass pkg ... # Conflicts: # dist/react-select.js # dist/react-select.min.js # examples/dist/bundle.js # examples/dist/standalone.js # lib/Async.js # lib/Value.js
This way, the X clear button won't be displayed only for
null
orundefined
values, allowing to use0
orfalse
as clearable values in select options.