Skip to content

Commit be7b9c3

Browse files
authored
Merge pull request #67 from sparksuite/improve-button-props-type-definition
Stricter type definition for button props
2 parents 357f986 + 2b4b530 commit be7b9c3

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

src/use-dropdown-menu.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
// Imports
22
import React, { useState, useRef, createRef, useEffect } from 'react';
33

4+
// Create interface for button properties
5+
interface ButtonProps
6+
extends Pick<
7+
React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>,
8+
'onKeyDown' | 'onClick' | 'tabIndex' | 'role' | 'aria-haspopup' | 'aria-expanded'
9+
> {
10+
ref: React.RefObject<HTMLButtonElement>;
11+
}
12+
413
// A custom Hook that abstracts away the listeners/controls for dropdown menus
514
export default function useDropdownMenu(itemCount: number) {
615
// Use state
@@ -147,7 +156,7 @@ export default function useDropdownMenu(itemCount: number) {
147156
};
148157

149158
// Define spreadable props for button and items
150-
const buttonProps: React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement> = {
159+
const buttonProps: ButtonProps = {
151160
onKeyDown: buttonListener,
152161
onClick: buttonListener,
153162
tabIndex: 0,

0 commit comments

Comments
 (0)