diff --git a/app/javascript/mastodon/components/dropdown_menu.tsx b/app/javascript/mastodon/components/dropdown_menu.tsx index 9041c1fc9f..6622431b4c 100644 --- a/app/javascript/mastodon/components/dropdown_menu.tsx +++ b/app/javascript/mastodon/components/dropdown_menu.tsx @@ -27,7 +27,6 @@ import { openModal, closeModal } from 'mastodon/actions/modal'; import { CircularProgress } from 'mastodon/components/circular_progress'; import { isUserTouching } from 'mastodon/is_mobile'; import type { - DropdownMenu as DropdownMenuType, MenuItem, ActionMenuItem, ExternalLinkMenuItem, @@ -55,8 +54,8 @@ const isExternalLinkItem = (item: MenuItem): item is ExternalLinkMenuItem => { return !!(item as ExternalLinkMenuItem).href; }; -type RenderItemFn = ( - arg0: MenuItem, +type RenderItemFn = ( + arg0: Item, arg1: number, arg2: { onClick: (e: React.MouseEvent) => void; @@ -64,18 +63,18 @@ type RenderItemFn = ( }, ) => React.ReactNode; -type RenderHeaderFn = (arg0: DropdownMenuType) => React.ReactNode; - -const DropdownMenu: React.FC<{ - items?: DropdownMenuType; +interface DropdownMenuProps { + items: Item[]; loading?: boolean; scrollable?: boolean; onClose: () => void; openedViaKeyboard: boolean; - renderItem?: RenderItemFn; - renderHeader?: RenderHeaderFn; + renderItem?: RenderItemFn; + renderHeader?: (arg0: Item[]) => React.ReactNode; onItemClick: (e: React.MouseEvent | React.KeyboardEvent) => void; -}> = ({ +} + +const DropdownMenu = ({ items, loading, scrollable, @@ -84,7 +83,7 @@ const DropdownMenu: React.FC<{ renderItem, renderHeader, onItemClick, -}) => { +}: DropdownMenuProps) => { const nodeRef = useRef(null); const focusedItemRef = useRef(null); @@ -279,27 +278,27 @@ const DropdownMenu: React.FC<{ ); }; -interface DropdownProps { +interface DropdownProps { children?: React.ReactElement; icon?: string; iconComponent?: IconProp; - items?: DropdownMenuType; + items: Item[]; loading?: boolean; title?: string; disabled?: boolean; scrollable?: boolean; scrollKey?: string; status?: ImmutableMap; - renderItem?: RenderItemFn; - renderHeader?: RenderHeaderFn; + renderItem?: RenderItemFn; + renderHeader?: (arg0: Item[]) => React.ReactNode; onOpen?: () => void; - onItemClick?: (arg0: MenuItem, arg1: number) => void; + onItemClick?: (arg0: Item, arg1: number) => void; } const offset = [5, 5] as OffsetValue; const popperConfig = { strategy: 'fixed' } as UsePopperOptions; -export const Dropdown: React.FC = ({ +export const Dropdown = ({ children, icon, iconComponent, @@ -314,7 +313,7 @@ export const Dropdown: React.FC = ({ onOpen, onItemClick, scrollKey, -}) => { +}: DropdownProps) => { const dispatch = useAppDispatch(); const openDropdownId = useAppSelector((state) => state.dropdownMenu.openId); const openedViaKeyboard = useAppSelector( @@ -424,7 +423,7 @@ export const Dropdown: React.FC = ({ const handleItemClick = useCallback( (e: React.MouseEvent | React.KeyboardEvent) => { const i = Number(e.currentTarget.getAttribute('data-index')); - const item = items?.[i]; + const item = items[i]; handleClose(); @@ -494,7 +493,7 @@ export const Dropdown: React.FC = ({ {...arrowProps} /> - items={items} loading={loading} scrollable={scrollable} diff --git a/app/javascript/mastodon/components/edited_timestamp/index.tsx b/app/javascript/mastodon/components/edited_timestamp/index.tsx index aa683a7cb4..770cf33f8c 100644 --- a/app/javascript/mastodon/components/edited_timestamp/index.tsx +++ b/app/javascript/mastodon/components/edited_timestamp/index.tsx @@ -108,7 +108,7 @@ export const EditedTimestamp: React.FC<{ ); return ( - items={items} loading={loading} renderItem={renderItem}