@itwin/itwinui-react
Version:
A react component library for iTwinUI
91 lines (90 loc) • 2.62 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true,
});
Object.defineProperty(exports, 'IconButton', {
enumerable: true,
get: function () {
return IconButton;
},
});
const _interop_require_default = require('@swc/helpers/_/_interop_require_default');
const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard');
const _classnames = /*#__PURE__*/ _interop_require_default._(
require('classnames'),
);
const _react = /*#__PURE__*/ _interop_require_wildcard._(require('react'));
const _index = require('../../utils/index.js');
const _Tooltip = require('../Tooltip/Tooltip.js');
const _VisuallyHidden = require('../VisuallyHidden/VisuallyHidden.js');
const _ButtonGroup = require('../ButtonGroup/ButtonGroup.js');
const _Popover = require('../Popover/Popover.js');
const IconButton = _react.forwardRef((props, ref) => {
let {
isActive,
children,
styleType = 'default',
size,
className,
title,
label = title,
iconProps,
labelProps,
...rest
} = props;
let buttonGroupOrientation = _react.useContext(
_ButtonGroup.ButtonGroupContext,
);
let hasPopoverOpen = _react.useContext(_Popover.PopoverOpenContext);
let logWarning = (0, _index.useWarningLogger)();
if (
'development' === process.env.NODE_ENV &&
!label &&
!props['aria-label'] &&
!props['aria-labelledby']
)
logWarning('IconButton is missing the `label` prop.');
let button = _react.createElement(
_index.ButtonBase,
{
ref: ref,
className: (0, _classnames.default)('iui-button', 'iui-field', className),
'data-iui-variant': 'default' !== styleType ? styleType : void 0,
'data-iui-size': size,
'data-iui-active': isActive,
'data-iui-has-popover': hasPopoverOpen ? 'open' : void 0,
'aria-pressed': isActive,
...rest,
},
_react.createElement(
_index.Box,
{
as: 'span',
'aria-hidden': true,
...iconProps,
className: (0, _classnames.default)(
'iui-button-icon',
iconProps?.className,
),
},
children,
),
label
? _react.createElement(_VisuallyHidden.VisuallyHidden, null, label)
: null,
);
return label
? _react.createElement(
_Tooltip.Tooltip,
{
placement: 'vertical' === buttonGroupOrientation ? 'right' : 'top',
...labelProps,
content: label,
ariaStrategy: 'none',
},
button,
)
: button;
});
if ('development' === process.env.NODE_ENV)
IconButton.displayName = 'IconButton';