UNPKG

@vtex/styleguide

Version:

> VTEX Styleguide React components ([Docs](https://vtex.github.io/styleguide))

123 lines (96 loc) 3.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.withToast = exports.ToastConsumer = exports.ToastProvider = exports.ToastContext = undefined; var _react = require("react"); var _react2 = _interopRequireDefault(_react); var _propTypes = require("prop-types"); var _propTypes2 = _interopRequireDefault(_propTypes); var _ToastManager = require("./ToastManager"); var _ToastManager2 = _interopRequireDefault(_ToastManager); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } var ToastContext = _react2.default.createContext({ showToast: function showToast() {}, hideToast: function hideToast() {}, toastState: null }); var ToastProvider = /*#__PURE__*/ function (_Component) { _inheritsLoose(ToastProvider, _Component); function ToastProvider(props) { var _this; _this = _Component.call(this, props) || this; _this.toastManager = _react2.default.createRef(); return _this; } var _proto = ToastProvider.prototype; _proto.render = function render() { var _this$props = this.props, children = _this$props.children, positioning = _this$props.positioning; return _react2.default.createElement(_ToastManager2.default, { positioning: positioning }, function (_ref) { var showToast = _ref.showToast, hideToast = _ref.hideToast, toastState = _ref.state; return _react2.default.createElement(ToastContext.Provider, { value: { showToast: showToast, hideToast: hideToast, toastState: toastState } }, children); }); }; return ToastProvider; }(_react.Component); ToastProvider.propTypes = { children: _propTypes2.default.node, /** Sets the position of the toasts based either on the dimensions of the parent element of the ToastProvider, or window dimensions */ positioning: _propTypes2.default.oneOf(['parent', 'window']) }; ToastProvider.defaultProps = { positioning: 'parent' }; var ToastConsumer = /*#__PURE__*/ function (_Component2) { _inheritsLoose(ToastConsumer, _Component2); function ToastConsumer() { return _Component2.apply(this, arguments) || this; } var _proto2 = ToastConsumer.prototype; _proto2.render = function render() { var children = this.props.children; return _react2.default.createElement(ToastContext.Consumer, null, function (value) { return children(value); }); }; return ToastConsumer; }(_react.Component); ToastConsumer.propTypes = { children: _propTypes2.default.func.isRequired }; // eslint-disable-next-line react/display-name var withToast = function withToast(WrappedComponent) { return function (props) { return _react2.default.createElement(ToastConsumer, null, function (_ref2) { var showToast = _ref2.showToast, hideToast = _ref2.hideToast, toastState = _ref2.toastState; return _react2.default.createElement(WrappedComponent, _extends({ showToast: showToast, hideToast: hideToast, toastState: toastState }, props)); }); }; }; exports.ToastContext = ToastContext; exports.ToastProvider = ToastProvider; exports.ToastConsumer = ToastConsumer; exports.withToast = withToast;