Skip to content

Commit ad4d9b1

Browse files
committed
added interface with stricter stype definition
1 parent 357f986 commit ad4d9b1

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

src/use-dropdown-menu.ts

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

4+
5+
// Create interface for button properties
6+
interface ButtonProps
7+
extends Pick<
8+
React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>,
9+
'onKeyDown' | 'onClick' | 'tabIndex' | 'role' | 'aria-haspopup' | 'aria-expanded'
10+
> {
11+
ref: ((instance: HTMLButtonElement | null) => void) | React.RefObject<HTMLButtonElement> | null | undefined;
12+
}
13+
14+
415
// A custom Hook that abstracts away the listeners/controls for dropdown menus
516
export default function useDropdownMenu(itemCount: number) {
617
// Use state
@@ -147,7 +158,7 @@ export default function useDropdownMenu(itemCount: number) {
147158
};
148159

149160
// Define spreadable props for button and items
150-
const buttonProps: React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement> = {
161+
const buttonProps: ButtonProps = {
151162
onKeyDown: buttonListener,
152163
onClick: buttonListener,
153164
tabIndex: 0,

0 commit comments

Comments
 (0)