UNPKG

@wix/design-system

Version:

@wix/design-system

121 lines (120 loc) 5.59 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = _interopRequireDefault(require("react")); var _Focusable = require("../common/Focusable"); var _generateDataAttr = require("../utils/generateDataAttr"); var _Badge = require("./Badge.constants"); var _BadgeSt = require("./Badge.st.css.js"); var _Text = _interopRequireDefault(require("../Text/Text")); var _excluded = ["focusableOnFocus", "focusableOnBlur"], _excluded2 = ["type", "skin", "size", "uppercase", "noPadding", "showTooltip", "display", "children", "customContent", "prefixIcon", "suffixIcon", "onClick", "dataHook", "className", "ariaLabel"]; var _jsxFileName = "/home/builduser/work/57e038ea7326c1ec/packages/wix-design-system/dist/cjs/Badge/Badge.tsx"; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var getProps = props => { // that's what you pay for using HOCs... var focusableOnFocus = props.focusableOnFocus, focusableOnBlur = props.focusableOnBlur, rest = (0, _objectWithoutProperties2.default)(props, _excluded); return rest; }; var getFocusableProps = props => { // add focusable hooks only when badge is clickable var onClick = props.onClick, focusableOnFocus = props.focusableOnFocus, focusableOnBlur = props.focusableOnBlur; return onClick ? { onFocus: focusableOnFocus, onBlur: focusableOnBlur, tabIndex: 0 } : {}; }; function Badge(props) { var _getProps = getProps(props), _getProps$type = _getProps.type, type = _getProps$type === void 0 ? _Badge.TYPE.solid : _getProps$type, _getProps$skin = _getProps.skin, skin = _getProps$skin === void 0 ? _Badge.SKIN.general : _getProps$skin, _getProps$size = _getProps.size, size = _getProps$size === void 0 ? _Badge.SIZE.medium : _getProps$size, _getProps$uppercase = _getProps.uppercase, uppercase = _getProps$uppercase === void 0 ? true : _getProps$uppercase, _getProps$noPadding = _getProps.noPadding, noPadding = _getProps$noPadding === void 0 ? false : _getProps$noPadding, _getProps$showTooltip = _getProps.showTooltip, showTooltip = _getProps$showTooltip === void 0 ? true : _getProps$showTooltip, _getProps$display = _getProps.display, display = _getProps$display === void 0 ? 'inline' : _getProps$display, children = _getProps.children, customContent = _getProps.customContent, prefixIcon = _getProps.prefixIcon, suffixIcon = _getProps.suffixIcon, onClick = _getProps.onClick, dataHook = _getProps.dataHook, className = _getProps.className, ariaLabel = _getProps.ariaLabel, rest = (0, _objectWithoutProperties2.default)(_getProps, _excluded2); return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({ "aria-label": ariaLabel, role: onClick ? 'button' : undefined, "data-hook": dataHook, onClick: onClick, onKeyDown: onClick ? event => { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); onClick(event); } } : undefined }, getFocusableProps(props), { className: (0, _BadgeSt.st)(_BadgeSt.classes.root, _objectSpread({ clickable: !!onClick, display, type, skin, size, uppercase, noPadding }, rest), className) }, (0, _generateDataAttr.generateDataAttr)({ type, skin, size, uppercase }, ['type', 'skin', 'size', 'uppercase']), { "data-clickable": !!onClick /* TODO: this prop used to come from stylable v1 spread and is used for testing. Update component testkit to use stylable testkit instead */, "data-is-inverted": rest['data-is-inverted'], __self: this, __source: { fileName: _jsxFileName, lineNumber: 55, columnNumber: 5 } }), prefixIcon && /*#__PURE__*/_react.default.cloneElement(prefixIcon, { className: _BadgeSt.classes.prefix, 'data-prefix-icon': true }), customContent ? customContent : /*#__PURE__*/_react.default.createElement(_Text.default, { className: _BadgeSt.classes.text, ellipsis: true, size: size === 'medium' ? 'small' : size, weight: "normal", showTooltip: showTooltip, __self: this, __source: { fileName: _jsxFileName, lineNumber: 104, columnNumber: 9 } }, children), suffixIcon && /*#__PURE__*/_react.default.cloneElement(suffixIcon, { className: _BadgeSt.classes.suffix, 'data-suffix-icon': true })); } Badge.displayName = 'Badge'; var _default = exports.default = (0, _Focusable.withFocusable)(Badge); //# sourceMappingURL=Badge.js.map