UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

91 lines (90 loc) 2.62 kB
'use strict'; 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';