Skip to content

Commit fabffff

Browse files
mateuszkrzaksilviuaavram
authored andcommittedNov 27, 2019
fix(useSelect): respect disabled option passed to getItemProps (#833)
* fix(useSelect): respect disabled option passed to `getItemProps` * fix failing test
1 parent d54e95d commit fabffff

File tree

3 files changed

+45
-31
lines changed

3 files changed

+45
-31
lines changed
 

‎.size-snapshot.json

+26-26
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,59 @@
11
{
22
"dist/downshift.cjs.js": {
3-
"bundled": 82078,
4-
"minified": 38025,
5-
"gzipped": 9601
3+
"bundled": 82171,
4+
"minified": 38051,
5+
"gzipped": 9612
66
},
77
"preact/dist/downshift.cjs.js": {
8-
"bundled": 80787,
9-
"minified": 36977,
10-
"gzipped": 9500
8+
"bundled": 80880,
9+
"minified": 37003,
10+
"gzipped": 9510
1111
},
1212
"preact/dist/downshift.umd.min.js": {
13-
"bundled": 93847,
14-
"minified": 32054,
15-
"gzipped": 9859
13+
"bundled": 93946,
14+
"minified": 32080,
15+
"gzipped": 9869
1616
},
1717
"preact/dist/downshift.umd.js": {
18-
"bundled": 107911,
19-
"minified": 38110,
20-
"gzipped": 11396
18+
"bundled": 108010,
19+
"minified": 38136,
20+
"gzipped": 11406
2121
},
2222
"dist/downshift.umd.min.js": {
23-
"bundled": 98486,
24-
"minified": 33372,
25-
"gzipped": 10422
23+
"bundled": 98585,
24+
"minified": 33398,
25+
"gzipped": 10431
2626
},
2727
"dist/downshift.umd.js": {
28-
"bundled": 137071,
29-
"minified": 47008,
30-
"gzipped": 14011
28+
"bundled": 137170,
29+
"minified": 47034,
30+
"gzipped": 14022
3131
},
3232
"dist/downshift.esm.js": {
33-
"bundled": 81697,
34-
"minified": 37716,
35-
"gzipped": 9541,
33+
"bundled": 81790,
34+
"minified": 37742,
35+
"gzipped": 9551,
3636
"treeshaked": {
3737
"rollup": {
3838
"code": 629,
3939
"import_statements": 303
4040
},
4141
"webpack": {
42-
"code": 27590
42+
"code": 27616
4343
}
4444
}
4545
},
4646
"preact/dist/downshift.esm.js": {
47-
"bundled": 80387,
48-
"minified": 36649,
49-
"gzipped": 9439,
47+
"bundled": 80480,
48+
"minified": 36675,
49+
"gzipped": 9449,
5050
"treeshaked": {
5151
"rollup": {
5252
"code": 630,
5353
"import_statements": 304
5454
},
5555
"webpack": {
56-
"code": 27633
56+
"code": 27659
5757
}
5858
}
5959
}

‎src/hooks/useSelect/__tests__/getItemProps.test.js

+11
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,17 @@ describe('getItemProps', () => {
5050

5151
expect(itemProps['aria-selected']).toBeUndefined()
5252
})
53+
54+
test('omit event handlers when disabled', () => {
55+
const {result} = setupHook()
56+
const itemProps = result.current.getItemProps({
57+
index: 0,
58+
disabled: true,
59+
})
60+
61+
expect(itemProps.onMouseMove).toBeUndefined()
62+
expect(itemProps.onClick).toBeUndefined()
63+
})
5364
})
5465

5566
describe('user props', () => {

‎src/hooks/useSelect/index.js

+8-5
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ function useSelect(userProps = {}) {
398398
if (itemIndex < 0) {
399399
throw new Error('Pass either item or item index in getItemProps!')
400400
}
401-
return {
401+
const itemProps = {
402402
[refKey]: handleRefs(ref, itemNode => {
403403
if (itemNode) {
404404
itemRefs.current.push(itemNode)
@@ -407,12 +407,15 @@ function useSelect(userProps = {}) {
407407
role: 'option',
408408
...(itemIndex === highlightedIndex && {'aria-selected': true}),
409409
id: getItemId(itemIndex),
410-
onMouseMove: callAllEventHandlers(onMouseMove, () =>
411-
itemHandleMouseMove(itemIndex),
412-
),
413-
onClick: callAllEventHandlers(onClick, () => itemHandleClick(itemIndex)),
414410
...rest,
411+
};
412+
413+
if (!rest.disabled) {
414+
itemProps.onMouseMove = callAllEventHandlers(onMouseMove, () =>itemHandleMouseMove(itemIndex))
415+
itemProps.onClick = callAllEventHandlers(onClick, () => itemHandleClick(itemIndex))
415416
}
417+
418+
return itemProps;
416419
}
417420

418421
return {

0 commit comments

Comments
 (0)
Please sign in to comment.