wix-style-react
Version:
250 lines (200 loc) • 11.5 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireDefault(require("react"));
var _FocusableHOC = require("wix-ui-core/dist/src/hocs/Focusable/FocusableHOC");
var _InfoCircleSmall = _interopRequireDefault(require("wix-ui-icons-common/InfoCircleSmall"));
var _context = require("../../WixStyleReactProvider/context");
var _Heading = _interopRequireDefault(require("../../Heading"));
var _Text = _interopRequireDefault(require("../../Text"));
var _Tooltip = _interopRequireDefault(require("../../Tooltip"));
var _Loader = _interopRequireDefault(require("../../Loader"));
var _Box = _interopRequireDefault(require("../../Box"));
var _TrendIndicator = _interopRequireDefault(require("../../TrendIndicator"));
var _AdaptiveHeading = _interopRequireDefault(require("../../utils/AdaptiveHeading"));
var _dataHooks = _interopRequireDefault(require("../dataHooks"));
var _StatisticsItemSt = require("./StatisticsItem.st.css");
var _constants = require("../constants");
var _excluded = ["value", "valueInShort", "description", "descriptionInfo", "percentage", "invertedPercentage", "onClick", "children", "focusableOnFocus", "focusableOnBlur", "className", "size", "alignItems", "isLoading"];
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
var StatisticsItem = /*#__PURE__*/function (_React$PureComponent) {
(0, _inherits2["default"])(StatisticsItem, _React$PureComponent);
var _super = _createSuper(StatisticsItem);
function StatisticsItem() {
var _this;
(0, _classCallCheck2["default"])(this, StatisticsItem);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _super.call.apply(_super, [this].concat(args));
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_getFocusableProps", function () {
var _this$props = _this.props,
onClick = _this$props.onClick,
focusableOnFocus = _this$props.focusableOnFocus,
focusableOnBlur = _this$props.focusableOnBlur;
return onClick ? {
onFocus: focusableOnFocus,
onBlur: focusableOnBlur,
tabIndex: 0
} : {};
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_getSpaceOrEnterHandler", function (handler) {
return function (event) {
var key = event.key;
var isEnter = key === 'Enter';
var isSpace = key === ' ';
if (isEnter || isSpace) {
handler(event);
event.preventDefault();
}
};
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_renderValue", function (_ref) {
var value = _ref.value,
valueInShort = _ref.valueInShort,
size = _ref.size,
reducedSpacingAndImprovedLayout = _ref.reducedSpacingAndImprovedLayout,
isLoading = _ref.isLoading;
if (isLoading) {
var margin = size === _constants.SIZES.tiny ? '3px' : '6px';
return /*#__PURE__*/_react["default"].createElement(_Box["default"], {
align: "center",
marginTop: margin,
marginBottom: margin
}, /*#__PURE__*/_react["default"].createElement(_Loader["default"], {
dataHook: _dataHooks["default"].loader,
size: "tiny"
}));
}
var appearance = size === _constants.SIZES.tiny ? 'tiny' : reducedSpacingAndImprovedLayout ? 'H2' : 'H1';
return /*#__PURE__*/_react["default"].createElement(_AdaptiveHeading["default"], {
text: value || '-',
appearance: appearance,
textInShort: valueInShort,
dataHook: _dataHooks["default"].value
});
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_renderDescription", function (_ref2) {
var description = _ref2.description,
descriptionInfo = _ref2.descriptionInfo,
size = _ref2.size,
alignItems = _ref2.alignItems,
reducedSpacingAndImprovedLayout = _ref2.reducedSpacingAndImprovedLayout;
if (!description) {
return null;
}
return /*#__PURE__*/_react["default"].createElement("div", {
className: (0, _StatisticsItemSt.st)(_StatisticsItemSt.classes.description, {
alignItems: alignItems
})
}, size === _constants.SIZES.tiny || reducedSpacingAndImprovedLayout ? /*#__PURE__*/_react["default"].createElement(_Text["default"], {
ellipsis: true,
size: "small",
dataHook: _dataHooks["default"].description,
secondary: true
}, description) : /*#__PURE__*/_react["default"].createElement(_Heading["default"], {
ellipsis: true,
dataHook: _dataHooks["default"].description,
appearance: "H5"
}, description), descriptionInfo && /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
textAlign: "start",
className: _StatisticsItemSt.classes.tooltip,
dataHook: _dataHooks["default"].tooltip,
content: descriptionInfo
}, /*#__PURE__*/_react["default"].createElement(_InfoCircleSmall["default"], {
className: _StatisticsItemSt.classes.info,
"data-hook": _dataHooks["default"].info
})));
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_renderPercents", function (_ref3) {
var percentage = _ref3.percentage,
invertedPercentage = _ref3.invertedPercentage;
if (percentage == null) {
return null;
}
return /*#__PURE__*/_react["default"].createElement(_TrendIndicator["default"], {
className: _StatisticsItemSt.classes.percentage,
dataHook: _dataHooks["default"].percentage,
value: percentage,
inverted: invertedPercentage
});
});
return _this;
}
(0, _createClass2["default"])(StatisticsItem, [{
key: "render",
value: function render() {
var _this2 = this;
var _this$props2 = this.props,
value = _this$props2.value,
valueInShort = _this$props2.valueInShort,
description = _this$props2.description,
descriptionInfo = _this$props2.descriptionInfo,
percentage = _this$props2.percentage,
invertedPercentage = _this$props2.invertedPercentage,
onClick = _this$props2.onClick,
children = _this$props2.children,
focusableOnFocus = _this$props2.focusableOnFocus,
focusableOnBlur = _this$props2.focusableOnBlur,
className = _this$props2.className,
size = _this$props2.size,
alignItems = _this$props2.alignItems,
isLoading = _this$props2.isLoading,
rest = (0, _objectWithoutProperties2["default"])(_this$props2, _excluded);
var attrs = _objectSpread(_objectSpread({}, this._getFocusableProps()), {}, {
'data-hook': _dataHooks["default"].stat,
onKeyDown: onClick ? this._getSpaceOrEnterHandler(onClick) : undefined,
onClick: onClick
}, rest);
return /*#__PURE__*/_react["default"].createElement(_context.WixStyleReactContext.Consumer, null, function (_ref4) {
var reducedSpacingAndImprovedLayout = _ref4.reducedSpacingAndImprovedLayout;
var defaultSize = reducedSpacingAndImprovedLayout ? _constants.SIZES.tiny : _constants.SIZES.large;
return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({}, attrs, {
className: (0, _StatisticsItemSt.st)(_StatisticsItemSt.classes.item, {
clickable: !!onClick,
size: size || defaultSize,
alignItems: alignItems,
reducedSpacingAndImprovedLayout: reducedSpacingAndImprovedLayout
}, className)
}), _this2._renderValue({
value: value,
valueInShort: valueInShort,
size: size || defaultSize,
reducedSpacingAndImprovedLayout: reducedSpacingAndImprovedLayout,
isLoading: isLoading
}), _this2._renderDescription({
description: description,
descriptionInfo: descriptionInfo,
size: size || defaultSize,
alignItems: alignItems,
reducedSpacingAndImprovedLayout: reducedSpacingAndImprovedLayout
}), _this2._renderPercents({
percentage: percentage,
invertedPercentage: invertedPercentage
}), children);
});
}
}]);
return StatisticsItem;
}(_react["default"].PureComponent);
(0, _defineProperty2["default"])(StatisticsItem, "displayName", 'StatisticsItem');
(0, _defineProperty2["default"])(StatisticsItem, "defaultProps", {
alignItems: 'center'
});
var _default = (0, _FocusableHOC.withFocusable)(StatisticsItem);
exports["default"] = _default;