wix-style-react
Version:
193 lines (155 loc) • 7.92 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 _ChevronRight = _interopRequireDefault(require("wix-ui-icons-common/ChevronRight"));
var _context = require("../../FontUpgrade/context");
var _Text = _interopRequireDefault(require("../../Text"));
var _StepMarker = _interopRequireDefault(require("./StepMarker"));
var _constants = require("../constants");
var _StepSt = require("./Step.st.css");
var _excluded = ["type", "styleType", "active", "last", "number", "text", "className"];
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 Step = /*#__PURE__*/function (_React$PureComponent) {
(0, _inherits2["default"])(Step, _React$PureComponent);
var _super = _createSuper(Step);
function Step() {
var _this;
(0, _classCallCheck2["default"])(this, Step);
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), "state", {
isHovered: false,
// Used to update <Text ellipsis> when CSS transition has ended
// (otherwise the logic to show/hide tooltip will not be applied)
transitionSequence: 1
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_handleMouseEnter", function () {
_this.setState({
isHovered: true
});
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_handleMouseLeave", function () {
_this.setState({
isHovered: false
});
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_handleTransitionEnd", function (event) {
var transitionSequence = _this.state.transitionSequence;
if (event.propertyName === 'flex-shrink') {
_this.setState({
transitionSequence: transitionSequence + 1
});
}
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_handleClick", function () {
_this._isClickable() && _this.props.onClick();
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_isClickable", function () {
var _this$props = _this.props,
onClick = _this$props.onClick,
type = _this$props.type,
active = _this$props.active;
return type !== _constants.StepType.Disabled && !active && !!onClick;
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_getFocusProps", function () {
var _this$props2 = _this.props,
onClick = _this$props2.onClick,
focusableOnFocus = _this$props2.focusableOnFocus,
focusableOnBlur = _this$props2.focusableOnBlur,
type = _this$props2.type;
if (onClick && type !== _constants.StepType.Disabled) {
return {
onFocus: focusableOnFocus,
onBlur: focusableOnBlur,
tabIndex: 0
};
}
return {
tabIndex: -1
};
});
return _this;
}
(0, _createClass2["default"])(Step, [{
key: "render",
value: function render() {
var _this2 = this;
var _this$props3 = this.props,
type = _this$props3.type,
styleType = _this$props3.styleType,
active = _this$props3.active,
last = _this$props3.last,
number = _this$props3.number,
text = _this$props3.text,
className = _this$props3.className,
otherProps = (0, _objectWithoutProperties2["default"])(_this$props3, _excluded);
var _this$state = this.state,
isHovered = _this$state.isHovered,
transitionSequence = _this$state.transitionSequence;
var isClickable = this._isClickable();
return /*#__PURE__*/_react["default"].createElement(_context.FontUpgradeContext.Consumer, null, function (_ref) {
var isMadefor = _ref.active;
return /*#__PURE__*/_react["default"].createElement("button", (0, _extends2["default"])({
className: (0, _StepSt.st)(_StepSt.classes.root, {
isMadefor: isMadefor,
type: type,
styleType: styleType,
selected: active,
hovered: isHovered,
clickable: isClickable
}, className),
"data-hook": _constants.DataHook.Step,
"data-type": type,
"data-active": active,
onMouseEnter: _this2._handleMouseEnter,
onMouseLeave: _this2._handleMouseLeave,
onClick: _this2._handleClick,
onTransitionEnd: _this2._handleTransitionEnd
}, _this2._getFocusProps()), /*#__PURE__*/_react["default"].createElement("div", {
className: _StepSt.classes.content
}, /*#__PURE__*/_react["default"].createElement(_StepMarker["default"], {
number: number,
active: active,
type: type,
styleType: styleType,
hovered: isHovered && isClickable,
className: _StepSt.classes.marker
}), /*#__PURE__*/_react["default"].createElement(_Text["default"], {
key: transitionSequence,
ellipsis: true,
weight: isMadefor ? 'thin' : 'normal',
size: styleType === _constants.Type.Text ? 'medium' : 'small',
showTooltip: !active,
dataHook: _constants.DataHook.StepText,
className: _StepSt.classes.text
}, text)), !last && /*#__PURE__*/_react["default"].createElement(_ChevronRight["default"], {
className: _StepSt.classes.arrow
}));
});
}
}]);
return Step;
}(_react["default"].PureComponent);
(0, _defineProperty2["default"])(Step, "displayName", 'Step');
(0, _defineProperty2["default"])(Step, "defaultProps", {
type: _constants.StepType.Normal
});
var _default = (0, _FocusableHOC.withFocusable)(Step);
exports["default"] = _default;