@wix/design-system
Version:
@wix/design-system
149 lines (147 loc) • 5.63 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.FunnelStep = exports.EmptyFunnelStep = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireDefault(require("react"));
var _FunnelStepSt = require("./FunnelStep.st.css.js");
var _FunnelBadge = require("../FunnelBadge");
var _numberFormatters = require("../../utils/numberFormatters");
var _constants = require("../constants");
var _excluded = ["skin"];
var _jsxFileName = "/home/builduser/work/57e038ea7326c1ec/packages/wix-design-system/dist/cjs/FunnelChart/FunnelStep/FunnelStep.js";
var BADGE_STANDARD_FIXED_PERCENT_POSITION = 0.6;
var BADGE_DARK_FIXED_PERCENT_POSITION = 0.45;
var BADGE_STANDARD_MAX_TOP_POSITION = 86;
var BADGE_DARK_MAX_TOP_POSITION = 90;
var BADGE_OVERFLOWED_TOP_POSITION = 10;
function calculateBadgeTopPosition(currentDeltaHeight, nextDeltaHeight, differenceBadgeSkin) {
var isDarkBadge = differenceBadgeSkin === 'dark';
var badgeFixedPercentPosition = isDarkBadge ? BADGE_DARK_FIXED_PERCENT_POSITION : BADGE_STANDARD_FIXED_PERCENT_POSITION;
var badgeMaxTopPosition = isDarkBadge ? BADGE_DARK_MAX_TOP_POSITION : BADGE_STANDARD_MAX_TOP_POSITION;
var calculatedBadgePosition = Math.max(currentDeltaHeight + nextDeltaHeight * badgeFixedPercentPosition, 100 - badgeMaxTopPosition);
return calculatedBadgePosition < 0 ? BADGE_OVERFLOWED_TOP_POSITION : calculatedBadgePosition;
}
var FunnelStep = _ref => {
var {
currentBarIndex,
currentBarData,
nextBarData,
currentBarHeight,
nextBarHeight,
hideDifferenceBadge,
differenceBadgeSkin,
// remove
getDifferenceBadgeProps,
getDifferenceStepSkin,
getTooltipContent,
getTooltipProps,
onTooltipShow: _onTooltipShow
} = _ref;
var nextDeltaHeight = currentBarHeight - nextBarHeight;
var currentDeltaHeight = 100 - currentBarHeight;
var badgeTopPosition = calculateBadgeTopPosition(currentDeltaHeight, nextDeltaHeight, differenceBadgeSkin);
var difference = (0, _numberFormatters.countPercentageFromBase)(+currentBarData.value, +nextBarData.value, 0);
var differenceInPercentage = (0, _numberFormatters.formatToPercent)(difference);
var dataForDifferenceBadge = {
currentIndex: currentBarIndex,
differenceValue: difference / 100,
difference: differenceInPercentage
};
var _getDifferenceBadgePr = getDifferenceBadgeProps(dataForDifferenceBadge),
{
skin
} = _getDifferenceBadgePr,
otherDifferenceBadgeProps = (0, _objectWithoutProperties2.default)(_getDifferenceBadgePr, _excluded);
var chosenBadgeSkin = skin !== null && skin !== void 0 ? skin : differenceBadgeSkin;
var isDarkBadge = chosenBadgeSkin === 'dark';
var styleAttributes = {
nextBarIsFlat: nextBarHeight === 0,
skin: getDifferenceStepSkin(dataForDifferenceBadge)
};
return /*#__PURE__*/_react.default.createElement("div", {
className: (0, _FunnelStepSt.st)(_FunnelStepSt.classes.root, styleAttributes),
"data-hook": _constants.dataHooks.step,
"data-skin": styleAttributes.skin,
__self: void 0,
__source: {
fileName: _jsxFileName,
lineNumber: 88,
columnNumber: 5
}
}, /*#__PURE__*/_react.default.createElement("div", {
className: _FunnelStepSt.classes.funnelStepRotated,
style: {
height: "".concat(nextDeltaHeight, "%")
},
__self: void 0,
__source: {
fileName: _jsxFileName,
lineNumber: 93,
columnNumber: 7
}
}), /*#__PURE__*/_react.default.createElement("div", {
className: _FunnelStepSt.classes.funnelStep,
style: {
height: "".concat(nextBarHeight, "%")
},
__self: void 0,
__source: {
fileName: _jsxFileName,
lineNumber: 99,
columnNumber: 7
}
}), /*#__PURE__*/_react.default.createElement("div", {
className: _FunnelStepSt.classes.funnelStepPlaceholder,
style: {
top: "".concat(currentDeltaHeight, "%"),
height: "".concat(nextDeltaHeight, "%")
},
__self: void 0,
__source: {
fileName: _jsxFileName,
lineNumber: 103,
columnNumber: 7
}
}), hideDifferenceBadge ? null : /*#__PURE__*/_react.default.createElement("div", {
className: (0, _FunnelStepSt.st)(_FunnelStepSt.classes.badgeWrapper, {
top: isDarkBadge
}),
style: {
top: "".concat(badgeTopPosition, "%")
},
__self: void 0,
__source: {
fileName: _jsxFileName,
lineNumber: 112,
columnNumber: 9
}
}, /*#__PURE__*/_react.default.createElement(_FunnelBadge.FunnelBadge, (0, _extends2.default)({
value: differenceInPercentage,
tooltipContent: getTooltipContent(dataForDifferenceBadge),
tooltipProps: getTooltipProps(dataForDifferenceBadge),
differenceBadgeSkin: chosenBadgeSkin,
onTooltipShow: () => _onTooltipShow(dataForDifferenceBadge)
}, otherDifferenceBadgeProps, {
__self: void 0,
__source: {
fileName: _jsxFileName,
lineNumber: 116,
columnNumber: 11
}
}))));
};
/** It just takes place but doesn't display or calculate anything */
exports.FunnelStep = FunnelStep;
var EmptyFunnelStep = () => /*#__PURE__*/_react.default.createElement("div", {
className: (0, _FunnelStepSt.st)(_FunnelStepSt.classes.root),
__self: void 0,
__source: {
fileName: _jsxFileName,
lineNumber: 131,
columnNumber: 38
}
});
exports.EmptyFunnelStep = EmptyFunnelStep;
//# sourceMappingURL=FunnelStep.js.map