in dashboards-observability/public/components/common/field_button/field_button.tsx [65:122]
export function FieldButton({
size = 'm',
isActive = false,
fieldIcon,
fieldName,
fieldInfoIcon,
fieldAction,
className,
isDraggable = false,
onClick,
dataTestSubj,
buttonProps,
...rest
}: FieldButtonProps) {
const classes = classNames(
'osdFieldButton',
size ? sizeToClassNameMap[size] : null,
{ 'osdFieldButton-isActive': isActive },
{ 'osdFieldButton--isDraggable': isDraggable },
className
);
const contentClasses = classNames('osd-resetFocusState', 'osdFieldButton__button');
const innerContent = (
<>
{fieldIcon && <span className="osdFieldButton__fieldIcon">{fieldIcon}</span>}
{fieldName && <span className="osdFieldButton__name">{fieldName}</span>}
{fieldInfoIcon && <div className="osdFieldButton__infoIcon">{fieldInfoIcon}</div>}
</>
);
return (
<div className={classes} {...rest}>
{onClick ? (
<button
onClick={(e) => {
if (e.type === 'click') {
e.currentTarget.focus();
}
onClick();
}}
data-test-subj={dataTestSubj}
className={contentClasses}
{...buttonProps}
>
{innerContent}
</button>
) : (
<div className={contentClasses} data-test-subj={dataTestSubj}>
{innerContent}
</div>
)}
{fieldAction && <div className="osdFieldButton__fieldAction">{fieldAction}</div>}
</div>
);
}