diff --git a/packages/web-react/src/components/Dropdown/DropdownTrigger.tsx b/packages/web-react/src/components/Dropdown/DropdownTrigger.tsx index 09fab43d60..b7b9b1aa5b 100644 --- a/packages/web-react/src/components/Dropdown/DropdownTrigger.tsx +++ b/packages/web-react/src/components/Dropdown/DropdownTrigger.tsx @@ -1,21 +1,16 @@ import classNames from 'classnames'; import React, { ElementType } from 'react'; import { useStyleProps } from '../../hooks'; -import { StyleProps } from '../../types'; +import { DropdownTriggerProps } from '../../types'; import { useDropdownContext } from './DropdownContext'; import { useDropdownAriaProps } from './useDropdownAriaProps'; import { useDropdownStyleProps } from './useDropdownStyleProps'; -interface DropdownTriggerProps extends StyleProps { - elementType?: ElementType | string; - children: string | React.ReactNode | ((props: { isOpen: boolean }) => React.ReactNode); -} - const defaultProps = { elementType: 'button', }; -export const DropdownTrigger = (props: DropdownTriggerProps) => { +export const DropdownTrigger = (props: DropdownTriggerProps) => { const propsWithDefaults = { ...defaultProps, ...props }; const { elementType = 'button', children, ...rest } = propsWithDefaults; const { id, isOpen, onToggle, fullWidthMode, triggerRef } = useDropdownContext(); diff --git a/packages/web-react/src/components/Modal/demo/ModalDefault.tsx b/packages/web-react/src/components/Modal/demo/ModalDefault.tsx index 82184ae326..def9acc0cc 100644 --- a/packages/web-react/src/components/Modal/demo/ModalDefault.tsx +++ b/packages/web-react/src/components/Modal/demo/ModalDefault.tsx @@ -204,7 +204,6 @@ const ModalDefault = () => { provident unde. Eveniet, iste, molestiae?

- {/* @ts-expect-error -- TS2322: Property color does not exist on type … */} Dropdown diff --git a/packages/web-react/src/types/dropdown.ts b/packages/web-react/src/types/dropdown.ts index d8a6119761..1fab02c2d9 100644 --- a/packages/web-react/src/types/dropdown.ts +++ b/packages/web-react/src/types/dropdown.ts @@ -1,4 +1,4 @@ -import { LegacyRef } from 'react'; +import { ComponentPropsWithRef, ElementType, LegacyRef, ReactNode } from 'react'; import { Booleanish, ChildrenProps, ClickEvent, PlacementDictionaryType, StyleProps } from './shared'; export const DropdownFullWidthModes = { @@ -10,7 +10,7 @@ export const DropdownFullWidthModes = { export type DropdownFullWidthModeKeys = keyof typeof DropdownFullWidthModes; export type DropdownFullWidthMode = (typeof DropdownFullWidthModes)[DropdownFullWidthModeKeys]; -export type DropdownTriggerProps = { +export type DropdownTriggerRenderProps = { onClick: (event: ClickEvent) => void; className?: string | undefined; 'aria-expanded': Booleanish; @@ -20,7 +20,7 @@ export type DropdownTriggerProps = { export type DropdownRenderProps = { isOpen: boolean; - trigger: DropdownTriggerProps; + trigger: DropdownTriggerRenderProps; }; export interface DropdownProps extends ChildrenProps, StyleProps { @@ -41,3 +41,9 @@ export interface SpiritDropdownProps extends DropdownProps, ChildrenProps { } export interface UncontrolledDropdownProps extends ChildrenProps, Omit {} + +export type DropdownTriggerProps = { + elementType?: E; + children: string | ReactNode | ((props: { isOpen: boolean }) => ReactNode); +} & ComponentPropsWithRef & + StyleProps;