import { cx } from '@emotion/css'; import React, { FormEvent } from 'react'; import { Checkbox, Icon, Tooltip, useStyles2, useTheme2 } from '@grafana/ui'; import { getSelectStyles } from '@grafana/ui/src/components/Select/getSelectStyles'; import { Role } from 'app/types'; import { getStyles } from './styles'; interface RoleMenuOptionProps { data: Role; onChange: (value: Role) => void; isSelected?: boolean; isFocused?: boolean; disabled?: boolean; hideDescription?: boolean; } export const RoleMenuOption = React.forwardRef>( ({ data, isFocused, isSelected, disabled, onChange, hideDescription }, ref) => { const theme = useTheme2(); const styles = getSelectStyles(theme); const customStyles = useStyles2(getStyles); const wrapperClassName = cx( styles.option, isFocused && styles.optionFocused, disabled && customStyles.menuOptionDisabled ); const onChangeInternal = (event: FormEvent) => { if (disabled) { return; } event.preventDefault(); event.stopPropagation(); onChange(data); }; return (
{data.displayName || data.name} {!hideDescription && data.description &&
{data.description}
}
{data.description && ( )}
); } ); RoleMenuOption.displayName = 'RoleMenuOption';