wix-style-react
Version:
wix-style-react
211 lines (210 loc) • 6.92 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _Checkbox = _interopRequireDefault(require("../Checkbox"));
var _Radio = _interopRequireDefault(require("../Radio"));
var _Text = _interopRequireDefault(require("../Text"));
var _SelectorSt = require("./Selector.st.css");
var _ExtraText = _interopRequireDefault(require("./ExtraText"));
var _ProgressBar = _interopRequireDefault(require("./ProgressBar"));
var _context = require("../WixStyleReactProvider/context");
var _Divider = _interopRequireDefault(require("../Divider"));
var _jsxFileName = "/home/builduser/work/a9c1ac8876d5057c/packages/wix-style-react/dist/cjs/Selector/Selector.js";
class Selector extends _react.default.PureComponent {
constructor() {
super(...arguments);
this._onClick = () => !this.props.isDisabled && this.props.onToggle(this.props.id);
}
render() {
var {
dataHook,
size,
imageSize,
imageShape,
image,
hasDivider,
title,
subtitle,
extraNode,
isSelected,
isDisabled,
indeterminate,
toggleType,
showBelowNodeOnSelect,
subtitleNode,
belowNode,
className
} = this.props;
return /*#__PURE__*/_react.default.createElement(_context.WixStyleReactContext.Consumer, {
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 78,
columnNumber: 7
}
}, _ref => {
var {
newColorsBranding
} = _ref;
return /*#__PURE__*/_react.default.createElement("li", {
"data-hook": dataHook,
className: (0, _SelectorSt.st)(_SelectorSt.classes.root, {
size,
newColorsBranding,
hasDivider
}, className),
onClick: this._onClick,
"data-shape": imageShape,
"data-size": imageSize,
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 80,
columnNumber: 11
}
}, /*#__PURE__*/_react.default.createElement("div", {
className: (0, _SelectorSt.st)(_SelectorSt.classes.mainPart, {
disabled: isDisabled
}),
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 91,
columnNumber: 13
}
}, toggleType === 'checkbox' ? /*#__PURE__*/_react.default.createElement(_Checkbox.default, {
dataHook: "toggle",
checked: isSelected,
disabled: isDisabled,
indeterminate: indeterminate,
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 93,
columnNumber: 17
}
}) : /*#__PURE__*/_react.default.createElement(_Radio.default, {
dataHook: "toggle",
checked: isSelected,
disabled: isDisabled,
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 100,
columnNumber: 17
}
}), image && /*#__PURE__*/_react.default.createElement("div", {
"data-hook": "selector-image",
className: (0, _SelectorSt.st)(_SelectorSt.classes.image, {
imageSize,
imageShape
}),
children: image,
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 108,
columnNumber: 17
}
}), /*#__PURE__*/_react.default.createElement("div", {
className: _SelectorSt.classes.titles,
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 118,
columnNumber: 15
}
}, /*#__PURE__*/_react.default.createElement(_Text.default, {
dataHook: "selector-title",
size: size,
ellipsis: true,
children: title,
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 119,
columnNumber: 17
}
}), subtitle && /*#__PURE__*/_react.default.createElement(_Text.default, {
size: size === 'medium' ? 'small' : 'tiny',
secondary: true,
dataHook: "selector-subtitle",
ellipsis: true,
children: subtitle,
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 127,
columnNumber: 19
}
}), subtitleNode && /*#__PURE__*/_react.default.createElement("div", {
"data-hook": "subtitle-node",
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 137,
columnNumber: 19
}
}, subtitleNode)), extraNode && /*#__PURE__*/_react.default.createElement("div", {
className: _SelectorSt.classes.extra,
"data-hook": "selector-extra-node",
children: extraNode,
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 142,
columnNumber: 17
}
})), showBelowNodeOnSelect && belowNode && isSelected && /*#__PURE__*/_react.default.createElement("div", {
"data-hook": "below-section",
className: _SelectorSt.classes.belowSection,
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 151,
columnNumber: 15
}
}, belowNode));
});
}
}
Selector.propTypes = {
/** Applied as data-hook HTML attribute that can be used in the tests */
dataHook: _propTypes.default.string,
id: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]).isRequired,
image: _propTypes.default.node,
size: _propTypes.default.oneOf(['small', 'medium']),
imageSize: _propTypes.default.oneOf(['tiny', 'small', 'portrait', 'large', 'cinema']),
imageShape: _propTypes.default.oneOf(['rectangular', 'circle']),
hasDivider: _propTypes.default.bool,
title: _propTypes.default.node.isRequired,
isSelected: _propTypes.default.bool,
isDisabled: _propTypes.default.bool,
indeterminate: _propTypes.default.bool,
subtitle: _propTypes.default.string,
extraNode: _propTypes.default.node,
onToggle: _propTypes.default.func,
toggleType: _propTypes.default.oneOf(['checkbox', 'radio']),
showBelowNodeOnSelect: _propTypes.default.bool,
belowNode: _propTypes.default.node,
subtitleNode: _propTypes.default.node,
className: _propTypes.default.string
};
Selector.defaultProps = {
isSelected: false,
isDisabled: false,
toggleType: 'radio',
size: 'medium',
imageSize: 'large',
imageShape: 'rectangular',
hasDivider: false,
onToggle: i => i,
showBelowNodeOnSelect: false
};
Selector.ExtraText = _ExtraText.default;
Selector.ProgressBar = _ProgressBar.default;
var _default = exports.default = Selector;
//# sourceMappingURL=Selector.js.map