openreplay/frontend/app/components/ui/IconButton/IconButton.js
Andrey Babushkin fd5c0c9747
Add lokalisation (#3092)
* applied eslint

* add locales and lint the project

* removed error boundary

* updated locales

* fix min files

* fix locales
2025-03-06 17:43:15 +01:00

88 lines
2.2 KiB
JavaScript

import React from 'react';
import cn from 'classnames';
import { Tooltip } from 'antd';
import { CircularLoader, Icon } from 'UI';
import stl from './iconButton.module.css';
const IconButton = React.forwardRef(
(
{
icon,
label = false,
active,
onClick,
plain = false,
shadow = false,
red = false,
primary = false,
primaryText = false,
redText = false,
outline = false,
loading = false,
roundedOutline = false,
hideLoader = false,
circle = false,
size = 'default',
marginRight,
buttonSmall,
className = '',
style,
name,
disabled = false,
tooltip = false,
tooltipPosition = 'top center',
compact = false,
...rest
},
ref,
) => (
<Tooltip title={tooltip} position={tooltipPosition}>
<button
ref={ref}
name={name}
className={cn(stl.button, className, {
[stl.plain]: plain,
[stl.active]: active,
[stl.shadow]: shadow,
[stl.primary]: primary,
[stl.red]: red,
[stl.primaryText]: primaryText,
[stl.redText]: redText,
[stl.outline]: outline,
[stl.circle]: circle,
[stl.roundedOutline]: roundedOutline,
[stl.buttonSmall]: buttonSmall,
[stl.small]: size === 'small',
[stl.tiny]: size === 'tiny',
[stl.marginRight]: marginRight,
[stl.compact]: compact,
[stl.hasLabel]: !!label,
})}
onClick={onClick}
disabled={disabled || loading}
style={style}
{...rest}
>
{!hideLoader && <CircularLoader loading={loading} />}
{icon && (
<Icon
color="teal"
name={icon}
data-hidden={loading}
size={
size === 'tiny' || size === 'small' || buttonSmall ? '14' : '16'
}
/>
)}
{label && (
<span className={cn(stl.label, icon || loading ? 'ml-2' : '')}>
{label}
</span>
)}
</button>
</Tooltip>
),
);
IconButton.displayName = 'IconButton';
export default IconButton;