Skip to content

Commit 9cf3838

Browse files
maxmalovsilviuaavram
authored andcommittedNov 20, 2019
fix(useSelect): respect disabled option passed to getToggleButtonProps (#829)
1 parent d2fef0f commit 9cf3838

File tree

3 files changed

+61
-38
lines changed

3 files changed

+61
-38
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": 82381,
4-
"minified": 38042,
5-
"gzipped": 9598
3+
"bundled": 82078,
4+
"minified": 38025,
5+
"gzipped": 9601
66
},
77
"preact/dist/downshift.cjs.js": {
8-
"bundled": 81090,
9-
"minified": 36994,
10-
"gzipped": 9498
8+
"bundled": 80787,
9+
"minified": 36977,
10+
"gzipped": 9500
1111
},
1212
"preact/dist/downshift.umd.min.js": {
13-
"bundled": 93792,
14-
"minified": 32003,
15-
"gzipped": 9813
13+
"bundled": 93847,
14+
"minified": 32054,
15+
"gzipped": 9859
1616
},
1717
"preact/dist/downshift.umd.js": {
18-
"bundled": 107824,
19-
"minified": 38043,
20-
"gzipped": 11343
18+
"bundled": 107911,
19+
"minified": 38110,
20+
"gzipped": 11396
2121
},
2222
"dist/downshift.umd.min.js": {
23-
"bundled": 98431,
24-
"minified": 33321,
25-
"gzipped": 10377
23+
"bundled": 98486,
24+
"minified": 33372,
25+
"gzipped": 10422
2626
},
2727
"dist/downshift.umd.js": {
28-
"bundled": 136984,
29-
"minified": 46941,
30-
"gzipped": 13963
28+
"bundled": 137071,
29+
"minified": 47008,
30+
"gzipped": 14011
3131
},
3232
"dist/downshift.esm.js": {
33-
"bundled": 81619,
34-
"minified": 37532,
35-
"gzipped": 9478,
33+
"bundled": 81697,
34+
"minified": 37716,
35+
"gzipped": 9541,
3636
"treeshaked": {
3737
"rollup": {
3838
"code": 629,
3939
"import_statements": 303
4040
},
4141
"webpack": {
42-
"code": 27541
42+
"code": 27590
4343
}
4444
}
4545
},
4646
"preact/dist/downshift.esm.js": {
47-
"bundled": 80309,
48-
"minified": 36465,
49-
"gzipped": 9374,
47+
"bundled": 80387,
48+
"minified": 36649,
49+
"gzipped": 9439,
5050
"treeshaked": {
5151
"rollup": {
5252
"code": 630,
5353
"import_statements": 304
5454
},
5555
"webpack": {
56-
"code": 27584
56+
"code": 27633
5757
}
5858
}
5959
}

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

+10
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,16 @@ describe('getToggleButtonProps', () => {
7676

7777
expect(toggleButtonProps['aria-expanded']).toEqual(true)
7878
})
79+
80+
test('omit event handlers when disabled', () => {
81+
const {result} = setupHook()
82+
const toggleButtonProps = result.current.getToggleButtonProps({
83+
disabled: true,
84+
})
85+
86+
expect(toggleButtonProps.onClick).toBeUndefined()
87+
expect(toggleButtonProps.onKeyDown).toBeUndefined()
88+
})
7989
})
8090

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

‎src/hooks/useSelect/index.js

+25-12
Original file line numberDiff line numberDiff line change
@@ -360,18 +360,31 @@ function useSelect(userProps = {}) {
360360
refKey = 'ref',
361361
ref,
362362
...rest
363-
} = {}) => ({
364-
[refKey]: handleRefs(ref, toggleButtonNode => {
365-
toggleButtonRef.current = toggleButtonNode
366-
}),
367-
id: toggleButtonId,
368-
'aria-haspopup': 'listbox',
369-
'aria-expanded': isOpen,
370-
'aria-labelledby': `${labelId} ${toggleButtonId}`,
371-
onClick: callAllEventHandlers(onClick, toggleButtonHandleClick),
372-
onKeyDown: callAllEventHandlers(onKeyDown, toggleButtonHandleKeyDown),
373-
...rest,
374-
})
363+
} = {}) => {
364+
const toggleProps = {
365+
[refKey]: handleRefs(ref, toggleButtonNode => {
366+
toggleButtonRef.current = toggleButtonNode
367+
}),
368+
id: toggleButtonId,
369+
'aria-haspopup': 'listbox',
370+
'aria-expanded': isOpen,
371+
'aria-labelledby': `${labelId} ${toggleButtonId}`,
372+
...rest,
373+
}
374+
375+
if (!rest.disabled) {
376+
toggleProps.onClick = callAllEventHandlers(
377+
onClick,
378+
toggleButtonHandleClick,
379+
)
380+
toggleProps.onKeyDown = callAllEventHandlers(
381+
onKeyDown,
382+
toggleButtonHandleKeyDown,
383+
)
384+
}
385+
386+
return toggleProps
387+
}
375388
const getItemProps = ({
376389
item,
377390
index,

0 commit comments

Comments
 (0)
Please sign in to comment.