UNPKG

wix-style-react

Version:
206 lines (168 loc) • 8.37 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.listItemSectionBuilder = exports["default"] = exports.TYPES = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); 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 _ListItemSectionSt = require("./ListItemSection.st.css"); var _Divider = _interopRequireDefault(require("../Divider")); var _Text = _interopRequireDefault(require("../Text")); var _TextButton = _interopRequireDefault(require("../TextButton")); var _constants = require("./constants"); var _StringUtils = require("../utils/StringUtils"); 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 TYPES = { WHITESPACE: 'whitespace', DIVIDER: 'divider', TITLE: 'title', SUBHEADER: 'subheader' }; /** ListItemSection description */ exports.TYPES = TYPES; var ListItemSection = /*#__PURE__*/function (_React$PureComponent) { (0, _inherits2["default"])(ListItemSection, _React$PureComponent); var _super = _createSuper(ListItemSection); function ListItemSection() { var _this; (0, _classCallCheck2["default"])(this, ListItemSection); 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", {}); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_renderDivisionElements", function (children) { var _this$props = _this.props, dataHook = _this$props.dataHook, type = _this$props.type; return /*#__PURE__*/_react["default"].createElement("div", { className: (0, _ListItemSectionSt.st)(_ListItemSectionSt.classes.root, (0, _defineProperty2["default"])({}, type, true)), "data-hook": dataHook, onClick: function onClick(e) { return e.stopPropagation(); }, children: children }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_renderSuffix", function () { var _this$props2 = _this.props, suffix = _this$props2.suffix, onClick = _this$props2.onClick, ellipsis = _this$props2.ellipsis; return (0, _StringUtils.isString)(suffix) ? /*#__PURE__*/_react["default"].createElement("div", { className: _ListItemSectionSt.classes.suffixWrapper }, /*#__PURE__*/_react["default"].createElement(_TextButton["default"], { ellipsis: ellipsis, dataHook: _constants.dataHooks.SUFFIX, size: "tiny", onClick: onClick, className: _ListItemSectionSt.classes.suffix }, suffix)) : /*#__PURE__*/_react["default"].createElement("div", { "data-hook": _constants.dataHooks.SUFFIX, className: _ListItemSectionSt.classes.suffixWrapper, onClick: onClick }, suffix); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_renderTitle", function () { var _this$props3 = _this.props, dataHook = _this$props3.dataHook, className = _this$props3.className, type = _this$props3.type, title = _this$props3.title, suffix = _this$props3.suffix, ellipsis = _this$props3.ellipsis; return /*#__PURE__*/_react["default"].createElement("div", { className: (0, _ListItemSectionSt.st)(_ListItemSectionSt.classes.root, { subheader: type === TYPES.SUBHEADER, ellipsis: ellipsis, suffix: !!suffix }, className), "data-hook": dataHook }, /*#__PURE__*/_react["default"].createElement("div", { className: _ListItemSectionSt.classes.titleWrapper }, /*#__PURE__*/_react["default"].createElement(_Text["default"], { dataHook: _constants.dataHooks.TITLE, tagName: "div", size: "small", className: _ListItemSectionSt.classes.title, ellipsis: ellipsis, enterDelay: 300 }, title)), suffix && _this._renderSuffix()); }); return _this; } (0, _createClass2["default"])(ListItemSection, [{ key: "render", value: function render() { var type = this.props.type; if (type === TYPES.WHITESPACE) return this._renderDivisionElements(); if (type === TYPES.DIVIDER) return this._renderDivisionElements( /*#__PURE__*/_react["default"].createElement(_Divider["default"], null)); return this._renderTitle(); } }]); return ListItemSection; }(_react["default"].PureComponent); (0, _defineProperty2["default"])(ListItemSection, "displayName", 'ListItemSection'); (0, _defineProperty2["default"])(ListItemSection, "propTypes", { /** 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, /** A list item section can be * * `title` - Acts as a title for following list items. * * `subheader` - Acts as separator between list items for differentiation. * * `whitespace` - Adds some padding between list items. * * `divider` - Same as whitespace, but with a line. */ type: _propTypes["default"].oneOf(Object.values(TYPES)), /** Text of the list item */ title: _propTypes["default"].string, /** Suffix node. Renders TextButton for a string otherwise the node itself.*/ suffix: _propTypes["default"].node, /** If true, long text won't break into more than one line and will be terminated with an ellipsis */ ellipsis: _propTypes["default"].bool, /** A callback function called when suffix is clicked */ onClick: _propTypes["default"].func }); (0, _defineProperty2["default"])(ListItemSection, "defaultProps", { type: TYPES.TITLE, ellipsis: false, dataHook: 'list-item-section' }); var _default = ListItemSection; exports["default"] = _default; var listItemSectionBuilder = function listItemSectionBuilder(_ref) { var id = _ref.id, className = _ref.className, dataHook = _ref.dataHook, type = _ref.type, title = _ref.title, suffix = _ref.suffix, ellipsis = _ref.ellipsis; return { id: id, overrideOptionStyle: true, disabled: true, value: function value(props) { return /*#__PURE__*/_react["default"].createElement(ListItemSection, (0, _extends2["default"])({ className: className, dataHook: dataHook, type: type, title: title, suffix: suffix, ellipsis: ellipsis }, props)); } }; }; exports.listItemSectionBuilder = listItemSectionBuilder;