@telia/styleguide
Version:
This is a living styleguide, showing the Atomic Design components which should be used in Telia Norway's web applications to achieve a common look & feel, and therefore user experience.
236 lines (191 loc) • 9.08 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
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 _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf3 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames6 = _interopRequireDefault(require("classnames"));
var _SvgIcon = _interopRequireDefault(require("../../atoms/SvgIcon/SvgIcon"));
/**
* Status: *finished*
*/
var StepByStep =
/*#__PURE__*/
function (_Component) {
(0, _inherits2.default)(StepByStep, _Component);
function StepByStep() {
var _getPrototypeOf2;
var _this;
(0, _classCallCheck2.default)(this, StepByStep);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(StepByStep)).call.apply(_getPrototypeOf2, [this].concat(args)));
_this.state = {
selectedIndex: 0
};
_this.onSelect = function (index) {
_this.setState({
selectedIndex: index
});
};
return _this;
}
(0, _createClass2.default)(StepByStep, [{
key: "render",
value: function render() {
var _this2 = this;
var _this$props = this.props,
children = _this$props.children,
className = _this$props.className,
interactive = _this$props.interactive,
selectedIndex = _this$props.selectedIndex,
onSelect = _this$props.onSelect,
rest = (0, _objectWithoutProperties2.default)(_this$props, ["children", "className", "interactive", "selectedIndex", "onSelect"]);
return _react.default.createElement("ul", (0, _extends2.default)({
className: (0, _classnames6.default)('step-by-step', (0, _defineProperty2.default)({}, className, className))
}, rest), interactive ? _react.default.Children.map(children, function (step, i) {
return _react.default.cloneElement(step, {
key: i,
index: i,
opened: selectedIndex ? selectedIndex === i : _this2.state.selectedIndex === i,
onSelect: onSelect || _this2.onSelect,
interactive: interactive
});
}) : children);
}
}]);
return StepByStep;
}(_react.Component);
StepByStep.propTypes = process.env.NODE_ENV !== "production" ? {
/** StepByStep.Step */
children: _propTypes.default.node,
/** Whether this should be interactive or just static. */
interactive: _propTypes.default.bool,
/** Index of the active step. Use when you want to handle the state on your own. Start at 0. */
selectedIndex: _propTypes.default.number,
/** Handler func triggered when user clicks the icon. Use when you want to handle the state on your own. */
onSelect: _propTypes.default.func
} : {};
StepByStep.Step = function (_ref) {
var _classnames2;
var children = _ref.children,
className = _ref.className,
index = _ref.index,
opened = _ref.opened,
onSelect = _ref.onSelect,
interactive = _ref.interactive,
rest = (0, _objectWithoutProperties2.default)(_ref, ["children", "className", "index", "opened", "onSelect", "interactive"]);
return _react.default.createElement("li", (0, _extends2.default)({
className: (0, _classnames6.default)('step-by-step__step-wrapper', (_classnames2 = {}, (0, _defineProperty2.default)(_classnames2, className, className), (0, _defineProperty2.default)(_classnames2, 'step-by-step__step--opened', opened), (0, _defineProperty2.default)(_classnames2, 'step-by-step__step--closed', !opened), (0, _defineProperty2.default)(_classnames2, 'step-by-step__step--touched', true), _classnames2))
}, rest), _react.default.Children.map(children, function (it, i) {
return _react.default.cloneElement(it, {
key: i,
index: index,
opened: opened,
onSelect: onSelect,
interactive: interactive
});
}));
};
var _ref3 = _react.default.createElement(_SvgIcon.default, {
iconName: "step-by-step-pebble",
color: "grey"
});
StepByStep.Description = function (_ref2) {
var children = _ref2.children,
className = _ref2.className,
heading = _ref2.heading,
iconName = _ref2.iconName,
imageSrc = _ref2.imageSrc,
number = _ref2.number,
pebbles = _ref2.pebbles,
onSelect = _ref2.onSelect,
index = _ref2.index,
interactive = _ref2.interactive,
opened = _ref2.opened,
rest = (0, _objectWithoutProperties2.default)(_ref2, ["children", "className", "heading", "iconName", "imageSrc", "number", "pebbles", "onSelect", "index", "interactive", "opened"]);
return _react.default.createElement(_react.default.Fragment, null, _react.default.createElement(Icon, {
pebbles: pebbles,
onSelect: onSelect,
index: index,
interactive: interactive,
opened: opened
}, pebbles && _ref3, imageSrc && _react.default.createElement("img", {
className: "step-by-step__icon",
src: imageSrc
}), iconName && _react.default.createElement(_SvgIcon.default, {
className: "step-by-step__icon",
iconName: iconName,
color: "purple"
}), number !== null && _react.default.createElement("span", {
className: "step-by-step__number"
}, number)), _react.default.createElement("div", (0, _extends2.default)({
className: (0, _classnames6.default)('step-by-step__text', (0, _defineProperty2.default)({}, className, className))
}, rest), _react.default.createElement("h2", {
className: "step-by-step__heading heading heading--level-2"
}, heading), children && _react.default.createElement("div", {
className: "step-by-step__description"
}, children)));
};
StepByStep.Description.propTypes = {
/** Short step description. */
children: _propTypes.default.node,
/** Name of svg icon. */
iconName: _propTypes.default.string,
/** Source for an image. */
imageSrc: _propTypes.default.string,
/** Number if you want to show number instead of icon. */
number: _propTypes.default.number,
/** Pebbles style shape of the icon. */
pebbles: _propTypes.default.bool,
/** Step heading. */
heading: _propTypes.default.string.isRequired,
/** Passed down from parent */
interactive: _propTypes.default.bool,
/** Passed down from parent */
opened: _propTypes.default.bool
};
StepByStep.Content = function (_ref4) {
var children = _ref4.children,
className = _ref4.className,
opened = _ref4.opened,
interactive = _ref4.interactive,
rest = (0, _objectWithoutProperties2.default)(_ref4, ["children", "className", "opened", "interactive"]);
return _react.default.createElement("div", (0, _extends2.default)({
className: (0, _classnames6.default)('step-by-step__content', (0, _defineProperty2.default)({}, className, className))
}, rest), children);
};
var Icon = function Icon(_ref5) {
var _classnames5;
var children = _ref5.children,
className = _ref5.className,
onSelect = _ref5.onSelect,
index = _ref5.index,
interactive = _ref5.interactive,
opened = _ref5.opened,
pebbles = _ref5.pebbles,
rest = (0, _objectWithoutProperties2.default)(_ref5, ["children", "className", "onSelect", "index", "interactive", "opened", "pebbles"]);
var elementType = interactive ? 'a' : 'div';
return _react.default.createElement(elementType, (0, _extends2.default)({
className: (0, _classnames6.default)('step-by-step__step', (_classnames5 = {}, (0, _defineProperty2.default)(_classnames5, className, className), (0, _defineProperty2.default)(_classnames5, 'step-by-step__step--interactive', interactive), (0, _defineProperty2.default)(_classnames5, 'step-by-step__step--highlighted', opened), (0, _defineProperty2.default)(_classnames5, 'step-by-step__pebbles', pebbles), (0, _defineProperty2.default)(_classnames5, 'step-by-step__circle step-by-step__circle--no-border', !pebbles), _classnames5)),
onClick: function onClick() {
if (!interactive) return;
onSelect(index);
},
tabIndex: index
}, rest), children);
};
var _default = StepByStep;
exports.default = _default;