Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/resources/scripts/components/elements/dropdown/DropdownItem.tsx
10262 views
1
import React, { forwardRef } from 'react';
2
import { Menu } from '@headlessui/react';
3
import styles from './style.module.css';
4
import classNames from 'classnames';
5
6
interface Props {
7
children: React.ReactNode | ((opts: { active: boolean; disabled: boolean }) => JSX.Element);
8
danger?: boolean;
9
disabled?: boolean;
10
className?: string;
11
icon?: JSX.Element;
12
onClick?: (e: React.MouseEvent) => void;
13
}
14
15
const DropdownItem = forwardRef<HTMLAnchorElement, Props>(
16
({ disabled, danger, className, onClick, children, icon: IconComponent }, ref) => {
17
return (
18
<Menu.Item disabled={disabled}>
19
{({ disabled, active }) => (
20
<a
21
ref={ref}
22
href={'#'}
23
className={classNames(
24
styles.menu_item,
25
{
26
[styles.danger]: danger,
27
[styles.disabled]: disabled,
28
},
29
className
30
)}
31
onClick={onClick}
32
>
33
{IconComponent}
34
{typeof children === 'function' ? children({ disabled, active }) : children}
35
</a>
36
)}
37
</Menu.Item>
38
);
39
}
40
);
41
42
export default DropdownItem;
43
44