@mskcc/carbon-react
Version:
Carbon react components for the MSKCC DSM
124 lines (116 loc) • 4.3 kB
JavaScript
/**
* MSKCC 2021, 2024
*/
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
var PropTypes = require('prop-types');
var React = require('react');
var Button = require('../Button/Button.js');
require('../Button/Button.Skeleton.js');
var cx = require('classnames');
require('../Tooltip/DefinitionTooltip.js');
var Tooltip = require('../Tooltip/Tooltip.js');
var usePrefix = require('../../internal/usePrefix.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
const IconButton = /*#__PURE__*/React.forwardRef(function IconButton(_ref, ref) {
let {
align,
children,
className,
closeOnActivation = true,
defaultOpen = false,
disabled,
enterDelayMs = 100,
kind,
label,
leaveDelayMs = 100,
wrapperClasses,
size,
disableTooltip = false,
...rest
} = _ref;
const prefix = usePrefix.usePrefix();
const tooltipClasses = cx__default["default"](wrapperClasses, `${prefix}--icon-tooltip`, {
[`${prefix}--icon-tooltip--disabled`]: disabled
});
return /*#__PURE__*/React__default["default"].createElement(Tooltip.Tooltip, {
align: align,
closeOnActivation: closeOnActivation,
className: tooltipClasses,
defaultOpen: defaultOpen,
enterDelayMs: enterDelayMs,
label: label,
leaveDelayMs: leaveDelayMs,
disabled: disableTooltip
}, /*#__PURE__*/React__default["default"].createElement(Button["default"], _rollupPluginBabelHelpers["extends"]({}, rest, {
disabled: disabled,
kind: kind,
ref: ref,
size: size,
className: cx__default["default"](`msk-btn--icon-only`, className)
}), /*#__PURE__*/React__default["default"].createElement("span", {
className: "msk-icon msk-btn--icon"
}, children)));
});
IconButton.propTypes = {
/**
* Specify how the trigger should align with the tooltip
*/
align: PropTypes__default["default"].oneOf(['top', 'top-left', 'top-right', 'bottom', 'bottom-left', 'bottom-right', 'left', 'right']),
/**
* Provide an icon or asset to be rendered inside of the IconButton
*/
children: PropTypes__default["default"].node,
/**
* Specify an optional className to be added to your Button
*/
className: PropTypes__default["default"].string,
/**
* Determines whether the tooltip should close when inner content is activated (click, Enter or Space)
*/
closeOnActivation: PropTypes__default["default"].bool,
/**
* Specify whether the tooltip should be open when it first renders
*/
defaultOpen: PropTypes__default["default"].bool,
/**
* Specify whether the tooltip should be disabled
*/
disableTooltip: PropTypes__default["default"].bool,
/**
* Specify whether the Button should be disabled, or not
*/
disabled: PropTypes__default["default"].bool,
/**
* Specify the duration in milliseconds to delay before displaying the tooltip
*/
enterDelayMs: PropTypes__default["default"].number,
/**
* Specify the type of button to be used as the base for the IconButton
*/
kind: PropTypes__default["default"].oneOf(['primary', 'secondary', 'danger', 'ghost', 'danger--primary', 'danger--ghost', 'danger--tertiary', 'tertiary']),
/**
* Provide the label to be rendered inside of the Tooltip. The label will use
* `aria-labelledby` and will fully describe the child node that is provided.
* This means that if you have text in the child node it will not be
* announced to the screen reader.
*/
label: PropTypes__default["default"].node.isRequired,
/**
* Specify the duration in milliseconds to delay before hiding the tooltip
*/
leaveDelayMs: PropTypes__default["default"].number,
/**
* Specify the size of the Button. Defaults to `md`.
*/
size: PropTypes__default["default"].oneOf(['sm', 'md', 'lg']),
/**
* Specify an optional className to be added to your Tooltip wrapper
*/
wrapperClasses: PropTypes__default["default"].string
};
exports.IconButton = IconButton;