UNPKG

wix-style-react

Version:
153 lines (120 loc) • 7.04 kB
"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 _X = _interopRequireDefault(require("wix-ui-icons-common/X")); var _IconButton = _interopRequireDefault(require("../IconButton")); var _ModalMobileLayoutSt = require("./ModalMobileLayout.st.css"); 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 ModalMobileLayout = /*#__PURE__*/function (_React$PureComponent) { (0, _inherits2["default"])(ModalMobileLayout, _React$PureComponent); var _super = _createSuper(ModalMobileLayout); function ModalMobileLayout() { var _this; (0, _classCallCheck2["default"])(this, ModalMobileLayout); 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), "_renderTitle", function () { return /*#__PURE__*/_react["default"].createElement("div", { className: _ModalMobileLayoutSt.classes.title, "data-hook": "modalMobileLayout-title", "data-sticky-title": _this.props.stickyTitle }, _this.props.title); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_renderFooter", function () { return /*#__PURE__*/_react["default"].createElement("div", { className: _ModalMobileLayoutSt.classes.footer, "data-hook": "modalMobileLayout-footer", "data-sticky-footer": _this.props.stickyFooter }, _this.props.footer); }); return _this; } (0, _createClass2["default"])(ModalMobileLayout, [{ key: "render", value: function render() { var _this$props = this.props, dataHook = _this$props.dataHook, className = _this$props.className, title = _this$props.title, content = _this$props.content, footer = _this$props.footer, onOverlayClick = _this$props.onOverlayClick, onCloseButtonClick = _this$props.onCloseButtonClick, fullscreen = _this$props.fullscreen, stickyTitle = _this$props.stickyTitle, stickyFooter = _this$props.stickyFooter; return /*#__PURE__*/_react["default"].createElement("div", { id: "modalMobileLayout-root", "data-hook": dataHook, className: (0, _ModalMobileLayoutSt.st)(_ModalMobileLayoutSt.classes.root, { fullscreen: fullscreen, stickyTitle: stickyTitle, stickyFooter: stickyFooter, noTitle: !title, noFooter: !footer }, className), onClick: function onClick(_ref) { var id = _ref.target.id; id === 'modalMobileLayout-root' && onOverlayClick && onOverlayClick(); } }, /*#__PURE__*/_react["default"].createElement("div", { className: _ModalMobileLayoutSt.classes.container }, onCloseButtonClick && /*#__PURE__*/_react["default"].createElement("div", { className: _ModalMobileLayoutSt.classes.close }, /*#__PURE__*/_react["default"].createElement(_IconButton["default"], { dataHook: "modalMobileLayout-close-button", skin: "light", onClick: onCloseButtonClick }, /*#__PURE__*/_react["default"].createElement(_X["default"], null))), title && stickyTitle && this._renderTitle(), /*#__PURE__*/_react["default"].createElement("div", { className: _ModalMobileLayoutSt.classes.content, "data-hook": "modalMobileLayout-content" }, /*#__PURE__*/_react["default"].createElement("div", null, title && !stickyTitle && this._renderTitle(), content, footer && !stickyFooter && this._renderFooter())), footer && stickyFooter && this._renderFooter())); } }]); return ModalMobileLayout; }(_react["default"].PureComponent); (0, _defineProperty2["default"])(ModalMobileLayout, "displayName", 'ModalMobileLayout'); (0, _defineProperty2["default"])(ModalMobileLayout, "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, /** title node to be displayed in the header strip */ title: _propTypes["default"].node, /** If true, the title will be sticky to the top of the modal */ stickyTitle: _propTypes["default"].bool, /** content node to be displayed */ content: _propTypes["default"].node, /** footer node to be displayed */ footer: _propTypes["default"].node, /** If true, the footer will be sticky to the bottom of the modal */ stickyFooter: _propTypes["default"].bool, /** callback for when there's a click on the overlay (in case the modal in not fullscreen) */ onOverlayClick: _propTypes["default"].func, /** callback for when the the close button is clicked. **Note**: if this prop is not provided, then the close button will not be shown. */ onCloseButtonClick: _propTypes["default"].func, /** If true, the modal will take all of the screen */ fullscreen: _propTypes["default"].bool }); (0, _defineProperty2["default"])(ModalMobileLayout, "defaultProps", { stickyTitle: false, stickyFooter: false, fullscreen: false }); var _default = ModalMobileLayout; exports["default"] = _default;