UNPKG

npm-smooch-test

Version:

*Smooch adds beautifully simple messaging to your app to keep your users engaged and coming back.*

113 lines (87 loc) 3.76 kB
'use strict'; exports.__esModule = true; exports.Notification = exports.NotificationComponent = undefined; var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _reactDom = require('react-dom'); var _redux = require('redux'); var _reactRedux = require('react-redux'); var _html = require('../utils/html'); var _appStateActions = require('../actions/app-state-actions'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var NotificationComponent = exports.NotificationComponent = function (_Component) { (0, _inherits3.default)(NotificationComponent, _Component); function NotificationComponent() { (0, _classCallCheck3.default)(this, NotificationComponent); return (0, _possibleConstructorReturn3.default)(this, _Component.apply(this, arguments)); } NotificationComponent.prototype.bindHandler = function bindHandler() { var node = (0, _reactDom.findDOMNode)(this); var linkNode = node.querySelector('[data-ui-settings-link]'); if (linkNode) { linkNode.onclick = this.onLinkClick.bind(this); if (this.props.settings.linkColor) { linkNode.style = 'color: #' + this.props.settings.linkColor; } } }; NotificationComponent.prototype.componentDidMount = function componentDidMount() { this.bindHandler(); }; NotificationComponent.prototype.componentDidUpdate = function componentDidUpdate() { this.bindHandler(); }; NotificationComponent.prototype.onLinkClick = function onLinkClick(e) { e.preventDefault(); e.stopPropagation(); this.props.actions.hideSettingsNotification(); this.props.actions.showSettings(); }; NotificationComponent.prototype.render = function render() { var linkStyle = { cursor: 'pointer' }; return _react2.default.createElement( 'div', { key: 'content', className: 'sk-notification', onClick: this.props.actions.hideSettingsNotification }, _react2.default.createElement( 'p', null, _react2.default.createElement('span', { ref: 'text', dangerouslySetInnerHTML: (0, _html.createMarkup)(this.props.ui.text.settingsNotificationText) }), _react2.default.createElement( 'a', { style: linkStyle, className: 'sk-notification-close', onClick: this.props.actions.hideSettingsNotification }, '×' ) ) ); }; return NotificationComponent; }(_react.Component); NotificationComponent.defaultProps = { settings: {} }; var Notification = exports.Notification = (0, _reactRedux.connect)(function (state) { return { ui: state.ui, settings: state.app.settings && state.app.settings.web }; }, function (dispatch) { return { actions: (0, _redux.bindActionCreators)({ hideSettingsNotification: _appStateActions.hideSettingsNotification, showSettings: _appStateActions.showSettings }, dispatch) }; })(NotificationComponent);