diff options
Diffstat (limited to 'src/components/ui/select/index.tsx')
-rw-r--r-- | src/components/ui/select/index.tsx | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/components/ui/select/index.tsx b/src/components/ui/select/index.tsx index 397fd97ed..c19c12417 100644 --- a/src/components/ui/select/index.tsx +++ b/src/components/ui/select/index.tsx | |||
@@ -13,6 +13,11 @@ import { | |||
13 | createRef, | 13 | createRef, |
14 | } from 'react'; | 14 | } from 'react'; |
15 | import withStyles, { type WithStylesProps } from 'react-jss'; | 15 | import withStyles, { type WithStylesProps } from 'react-jss'; |
16 | import { | ||
17 | isArrowDownKeyPress, | ||
18 | isArrowUpKeyPress, | ||
19 | isEnterKeyPress, | ||
20 | } from '../../../jsUtils'; | ||
16 | import type { Theme } from '../../../themes'; | 21 | import type { Theme } from '../../../themes'; |
17 | // biome-ignore lint/suspicious/noShadowRestrictedNames: <explanation> | 22 | // biome-ignore lint/suspicious/noShadowRestrictedNames: <explanation> |
18 | import Error from '../error'; | 23 | import Error from '../error'; |
@@ -288,23 +293,23 @@ class SelectComponent extends Component<IProps, IState> { | |||
288 | 293 | ||
289 | if (!open) return; | 294 | if (!open) return; |
290 | 295 | ||
291 | if (e.key === 'ArrowUp' || e.key === 'ArrowDown') { | 296 | if (isArrowUpKeyPress(e.key) || isArrowDownKeyPress(e.key)) { |
292 | e.preventDefault(); | 297 | e.preventDefault(); |
293 | } | 298 | } |
294 | 299 | ||
295 | if (this.componentRef?.current) { | 300 | if (this.componentRef?.current) { |
296 | if (e.key === 'ArrowUp' && selected > 0) { | 301 | if (isArrowUpKeyPress(e.key) && selected > 0) { |
297 | this.setState((state: IState) => ({ | 302 | this.setState((state: IState) => ({ |
298 | selected: state.selected - 1, | 303 | selected: state.selected - 1, |
299 | })); | 304 | })); |
300 | } else if ( | 305 | } else if ( |
301 | e.key === 'ArrowDown' && | 306 | isArrowDownKeyPress(e.key) && |
302 | selected < Object.keys(options!).length - 1 | 307 | selected < Object.keys(options!).length - 1 |
303 | ) { | 308 | ) { |
304 | this.setState((state: IState) => ({ | 309 | this.setState((state: IState) => ({ |
305 | selected: state.selected + 1, | 310 | selected: state.selected + 1, |
306 | })); | 311 | })); |
307 | } else if (e.key === 'Enter') { | 312 | } else if (isEnterKeyPress(e.key)) { |
308 | this.select(Object.keys(options!)[selected]); | 313 | this.select(Object.keys(options!)[selected]); |
309 | } | 314 | } |
310 | 315 | ||