@octopusdeploy/design-system-components
Version:
The design systems component library.
37 lines (36 loc) • 1.41 kB
TypeScript
import type { SupportedAriaPopupRole } from "../../utils/SupportedAriaPopupRole";
interface UseDropdownButtonOptions {
trapFocus: boolean;
dropdownAriaRole: SupportedAriaPopupRole;
}
export declare function useDropdownButton(options: UseDropdownButtonOptions): DropdownButtonState;
interface UseOpenControlledDropdownButtonOptions extends UseDropdownButtonOptions {
isOpen: boolean;
setIsOpen: (value: boolean | ((prev: boolean) => boolean)) => void;
}
export declare function useOpenControlledDropdownButton({ trapFocus, dropdownAriaRole, setIsOpen, isOpen }: UseOpenControlledDropdownButtonOptions): DropdownButtonState;
export interface DropdownButtonState {
isOpen: boolean;
toggleDropdown: () => void;
closeDropdown: (options?: CloseDropdownOptions) => void;
buttonElement: HTMLElement | null;
setButtonRef: (button: HTMLElement | null) => void;
buttonAriaAttributes: ButtonAriaAttributes;
setDropdownRef: (dropdown: HTMLElement | null) => void;
dropdownAttributes: DropdownAttributes;
}
interface CloseDropdownOptions {
moveFocusToButton?: boolean;
}
interface ButtonAriaAttributes {
"aria-expanded": "true" | "false";
"aria-haspopup": SupportedAriaPopupRole;
"aria-controls": string | undefined;
}
interface DropdownAttributes {
dropdownId: string;
dropdownAriaAttributes: {
role: SupportedAriaPopupRole;
};
}
export {};