@hakuna-matata-ui/close-button
Version:
A React and Chakra UI close button component.
114 lines (95 loc) • 3.24 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var icon = require('@hakuna-matata-ui/icon');
var system = require('@hakuna-matata-ui/system');
var utils = require('@hakuna-matata-ui/utils');
var React = require('react');
function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
});
}
n["default"] = e;
return Object.freeze(n);
}
var React__namespace = /*#__PURE__*/_interopNamespace(React);
function _objectWithoutPropertiesLoose(source, excluded) {
if (source == null) return {};
var target = {};
var sourceKeys = Object.keys(source);
var key, i;
for (i = 0; i < sourceKeys.length; i++) {
key = sourceKeys[i];
if (excluded.indexOf(key) >= 0) continue;
target[key] = source[key];
}
return target;
}
function _extends() {
_extends = Object.assign || function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends.apply(this, arguments);
}
var _excluded = ["children", "isDisabled", "__css"];
var CloseIcon = function CloseIcon(props) {
return /*#__PURE__*/React__namespace.createElement(icon.Icon, _extends({
focusable: "false",
"aria-hidden": true
}, props), /*#__PURE__*/React__namespace.createElement("path", {
fill: "currentColor",
d: "M.439,21.44a1.5,1.5,0,0,0,2.122,2.121L11.823,14.3a.25.25,0,0,1,.354,0l9.262,9.263a1.5,1.5,0,1,0,2.122-2.121L14.3,12.177a.25.25,0,0,1,0-.354l9.263-9.262A1.5,1.5,0,0,0,21.439.44L12.177,9.7a.25.25,0,0,1-.354,0L2.561.44A1.5,1.5,0,0,0,.439,2.561L9.7,11.823a.25.25,0,0,1,0,.354Z"
}));
};
/**
* A button with a close icon.
*
* It is used to handle the close functionality in feedback and overlay components
* like Alerts, Toasts, Drawers and Modals.
*/
var CloseButton = /*#__PURE__*/system.forwardRef(function (props, ref) {
var styles = system.useStyleConfig("CloseButton", props);
var _omitThemingProps = system.omitThemingProps(props),
children = _omitThemingProps.children,
isDisabled = _omitThemingProps.isDisabled,
__css = _omitThemingProps.__css,
rest = _objectWithoutPropertiesLoose(_omitThemingProps, _excluded);
var baseStyle = {
outline: 0,
display: "flex",
alignItems: "center",
justifyContent: "center",
flexShrink: 0
};
return /*#__PURE__*/React__namespace.createElement(system.chakra.button, _extends({
type: "button",
"aria-label": "Close",
ref: ref,
disabled: isDisabled,
__css: _extends({}, baseStyle, styles, __css)
}, rest), children || /*#__PURE__*/React__namespace.createElement(CloseIcon, {
width: "1em",
height: "1em"
}));
});
if (utils.__DEV__) {
CloseButton.displayName = "CloseButton";
}
exports.CloseButton = CloseButton;