From 054bd93e6acb15e095705d51d81dc732f07e399a Mon Sep 17 00:00:00 2001 From: Alexander Fedyashov Date: Thu, 1 Jun 2017 11:23:51 +0300 Subject: [PATCH] fix(Dropdown): fix key handling --- src/modules/Dropdown/Dropdown.js | 2 +- test/specs/modules/Dropdown/Dropdown-test.js | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/modules/Dropdown/Dropdown.js b/src/modules/Dropdown/Dropdown.js index 2d79dcba01..c25de4c8a9 100644 --- a/src/modules/Dropdown/Dropdown.js +++ b/src/modules/Dropdown/Dropdown.js @@ -1169,7 +1169,7 @@ export default class Dropdown extends Component { onClick: this.handleItemClick, selected: selectedIndex === i, ...opt, - key: getKeyOrValue(key, value), + key: getKeyOrValue(opt.key, opt.value), // Needed for handling click events on disabled items style: { ...opt.style, pointerEvents: 'all' }, })) diff --git a/test/specs/modules/Dropdown/Dropdown-test.js b/test/specs/modules/Dropdown/Dropdown-test.js index 539abed87b..054d0c88c9 100644 --- a/test/specs/modules/Dropdown/Dropdown-test.js +++ b/test/specs/modules/Dropdown/Dropdown-test.js @@ -1497,6 +1497,20 @@ describe('Dropdown', () => { .find('DropdownItem') .everyWhere(item => item.should.have.prop('data-foo', 'someValue')) }) + + it('handles keys correctly', () => { + const customOptions = [ + { key: 0, text: 'foo', value: 'foo' }, + { key: null, text: 'bar', value: 'bar' }, + { key: undefined, text: 'baz', value: 'baz' }, + ] + const wrapper = wrapperMount() + const items = wrapper.find('DropdownItem') + + items.at(0).key().should.equal('0') + items.at(1).key().should.equal('bar') + items.at(2).key().should.equal('baz') + }) }) describe('selection', () => {