wix-style-react
Version:
243 lines (203 loc) • 10.2 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
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 _propTypes = _interopRequireDefault(require("prop-types"));
var _Text = _interopRequireDefault(require("../Text"));
var _HorizontalTimelineSt = require("./HorizontalTimeline.st.css");
var _HorizontalTimelineIconsSt = require("./HorizontalTimelineIcons.st.css");
var _constants = require("./constants");
var _StatusCompleteFilled = _interopRequireDefault(require("wix-ui-icons-common/StatusCompleteFilled"));
var _StatusAlertFilled = _interopRequireDefault(require("wix-ui-icons-common/StatusAlertFilled"));
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 HorizontalTimeline = /*#__PURE__*/function (_React$PureComponent) {
(0, _inherits2["default"])(HorizontalTimeline, _React$PureComponent);
var _super = _createSuper(HorizontalTimeline);
function HorizontalTimeline() {
var _this;
(0, _classCallCheck2["default"])(this, HorizontalTimeline);
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), "_renderLine", function (_ref) {
var skin = _ref.skin,
line = _ref.line;
return /*#__PURE__*/_react["default"].createElement("div", {
className: (0, _HorizontalTimelineSt.st)(_HorizontalTimelineSt.classes.line, {
skin: skin,
line: line
})
});
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_renderLabel", function (_ref2) {
var label = _ref2.label,
index = _ref2.index,
labelEllipsis = _ref2.labelEllipsis;
var alignLabel = _this.props.alignLabel;
return /*#__PURE__*/_react["default"].createElement("div", {
className: (0, _HorizontalTimelineSt.st)(_HorizontalTimelineSt.classes.label, {
alignLabel: alignLabel
})
}, /*#__PURE__*/_react["default"].createElement(_Text["default"], {
size: "tiny",
ellipsis: labelEllipsis,
dataHook: "".concat(_constants.dataHooks.horizontalTimelineLabel, "-").concat(index)
}, label));
});
return _this;
}
(0, _createClass2["default"])(HorizontalTimeline, [{
key: "render",
value: function render() {
var _this2 = this;
var _this$props = this.props,
items = _this$props.items,
dataHook = _this$props.dataHook,
className = _this$props.className,
skin = _this$props.skin;
return /*#__PURE__*/_react["default"].createElement("div", {
className: (0, _HorizontalTimelineSt.st)(_HorizontalTimelineSt.classes.root, {
skin: skin
}, className),
"data-hook": dataHook,
"data-skin": skin
}, items.map(function (_ref3, index) {
var label = _ref3.label,
_ref3$width = _ref3.width,
width = _ref3$width === void 0 ? 'auto' : _ref3$width,
deprecatedSkin = _ref3.skin,
_ref3$icon = _ref3.icon,
icon = _ref3$icon === void 0 ? /*#__PURE__*/_react["default"].createElement(HorizontalTimeline.DefaultIcon, null) : _ref3$icon,
_ref3$line = _ref3.line,
line = _ref3$line === void 0 ? 'dashed' : _ref3$line,
_ref3$labelEllipsis = _ref3.labelEllipsis,
labelEllipsis = _ref3$labelEllipsis === void 0 ? true : _ref3$labelEllipsis;
var nextItemSkin = items[index + 1] && items[index + 1].skin || 'light';
var nextItemLine = items[index + 1] && items[index + 1].line || 'dashed';
return /*#__PURE__*/_react["default"].createElement("div", {
className: _HorizontalTimelineSt.classes.column,
key: index,
style: {
width: width
}
}, /*#__PURE__*/_react["default"].createElement("div", {
className: (0, _HorizontalTimelineSt.st)(_HorizontalTimelineSt.classes.item)
}, /*#__PURE__*/_react["default"].createElement("div", {
className: _HorizontalTimelineSt.classes.lineIconLine
}, _this2._renderLine({
skin: deprecatedSkin,
line: line
}), /*#__PURE__*/_react["default"].createElement("div", {
className: _HorizontalTimelineSt.classes.icon
}, icon), _this2._renderLine({
skin: nextItemSkin,
line: nextItemLine
})), _this2._renderLabel({
label: label,
index: index,
labelEllipsis: labelEllipsis
})));
}));
}
}]);
return HorizontalTimeline;
}(_react["default"].PureComponent);
(0, _defineProperty2["default"])(HorizontalTimeline, "displayName", 'HorizontalTimeline');
(0, _defineProperty2["default"])(HorizontalTimeline, "DefaultIcon", function (_ref4) {
var _ref4$skin = _ref4.skin,
skin = _ref4$skin === void 0 ? 'dark' : _ref4$skin;
return /*#__PURE__*/_react["default"].createElement("div", {
className: (0, _HorizontalTimelineIconsSt.st)(_HorizontalTimelineIconsSt.classes.upcomingIcon, {
skin: skin
})
});
});
(0, _defineProperty2["default"])(HorizontalTimeline, "ActiveIcon", function (_ref5) {
var _ref5$skin = _ref5.skin,
skin = _ref5$skin === void 0 ? 'dark' : _ref5$skin;
return /*#__PURE__*/_react["default"].createElement("div", {
className: (0, _HorizontalTimelineIconsSt.st)(_HorizontalTimelineIconsSt.classes.activeIcon, {
skin: skin
})
});
});
(0, _defineProperty2["default"])(HorizontalTimeline, "BoundaryIcon", function (_ref6) {
var _ref6$skin = _ref6.skin,
skin = _ref6$skin === void 0 ? 'dark' : _ref6$skin;
return /*#__PURE__*/_react["default"].createElement("div", {
className: (0, _HorizontalTimelineIconsSt.st)(_HorizontalTimelineIconsSt.classes.boundaryIcon, {
skin: skin
})
});
});
(0, _defineProperty2["default"])(HorizontalTimeline, "DestructiveIcon", function () {
return /*#__PURE__*/_react["default"].createElement(_StatusAlertFilled["default"], {
className: _HorizontalTimelineIconsSt.classes.errorIcon
});
});
(0, _defineProperty2["default"])(HorizontalTimeline, "CompleteIcon", function (_ref7) {
var _ref7$skin = _ref7.skin,
skin = _ref7$skin === void 0 ? 'dark' : _ref7$skin;
var className = (0, _HorizontalTimelineIconsSt.st)(_HorizontalTimelineIconsSt.classes.completeIcon, {
skin: skin
});
var standardSkin = /*#__PURE__*/_react["default"].createElement("div", {
className: className
});
var darkSkin = /*#__PURE__*/_react["default"].createElement(_StatusCompleteFilled["default"], {
className: className
});
return skin === 'standard' ? standardSkin : darkSkin;
});
(0, _defineProperty2["default"])(HorizontalTimeline, "defaultProps", {
skin: 'dark',
alignLabel: 'center',
items: []
});
HorizontalTimeline.propTypes = {
/** Controls the style of the component.*/
skin: _propTypes["default"].oneOf(['dark', 'standard']),
/** Aligns the labels of items. */
alignLabel: _propTypes["default"].oneOf(['center', 'start']),
/** Applied as data-hook HTML attribute that can be used in the tests */
dataHook: _propTypes["default"].string,
/** A css class to be applied to the component's root element */
className: _propTypes["default"].string,
/**
* Timeline items
* * `skin` - Controls line and text color (deprecated).
* * `line ` - Affects the line type, can be one of: 'filled' | 'dashed'.
* * `label` - Text displayed below the icon.
* * `icon ` - An icon representing a timeline item.
* * `width ` - The width of the timeline item, can be percentage or pixels.
* * `labelEllipsis ` - Set ellipsis for item's label .
*/
items: _propTypes["default"].arrayOf(_propTypes["default"].shape({
/** item's skin (deprecated)*/
skin: _propTypes["default"].oneOf(['dark', 'light']),
/** item's line type */
line: _propTypes["default"].oneOf(['filled', 'dashed']),
/** item's text */
label: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].node]).isRequired,
/** item's icon */
icon: _propTypes["default"].node,
/** custom width for item */
width: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
/** Ellipsis for item's label */
labelEllipsis: _propTypes["default"].bool
}))
};
var _default = HorizontalTimeline;
exports["default"] = _default;