UNPKG

apeman-react-toast

Version:
155 lines (121 loc) 10.9 kB
/** * Toast group. * @constructor ApToastGroup */ "use strict"; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _ap_toast = require('./ap_toast'); var _ap_toast2 = _interopRequireDefault(_ap_toast); var _apemanReactMixins = require('apeman-react-mixins'); var _ap_info_toast = require('./ap_info_toast'); var _ap_info_toast2 = _interopRequireDefault(_ap_info_toast); var _ap_warn_toast = require('./ap_warn_toast'); var _ap_warn_toast2 = _interopRequireDefault(_ap_warn_toast); var _ap_error_toast = require('./ap_error_toast'); var _ap_error_toast2 = _interopRequireDefault(_ap_error_toast); var _toaster = require('./toaster'); var _toaster2 = _interopRequireDefault(_toaster); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** @lends ApToastGroup */ var ApToastGroup = _react2.default.createClass({ displayName: 'ApToastGroup', //-------------------- // Specs //-------------------- propTypes: { duration: _react.PropTypes.number, toaster: _react.PropTypes.instanceOf(_toaster2.default) }, mixins: [_apemanReactMixins.ApPureMixin], statics: { Toaster: _toaster2.default }, getInitialState: function getInitialState() { var state = { _date: null }; _toaster2.default.levels.forEach(function (level) { state[level] = null; }); return state; }, getDefaultProps: function getDefaultProps() { return { toaster: null }; }, render: function render() { var s = this; var state = s.state; var props = s.props; var duration = props.duration; return _react2.default.createElement( 'div', { className: (0, _classnames2.default)('ap-toast-group', props.className) }, _react2.default.createElement(_ap_toast2.default, { message: state.default, duration: duration }), _react2.default.createElement(_ap_info_toast2.default, { message: state.info, duration: duration }), _react2.default.createElement(_ap_warn_toast2.default, { message: state.warn, duration: duration }), _react2.default.createElement(_ap_error_toast2.default, { message: state.error, duration: duration }), props.children ); }, //-------------------- // Lifecycle //-------------------- componentDidMount: function componentDidMount() { var s = this; var props = s.props; if (props.toaster) { s.bindToaster(props.toaster); } }, componentWillReceiveProps: function componentWillReceiveProps(nextProps) { var s = this; var props = s.props; if (nextProps.toaster) { s.unbindToaster(props.toaster); s.bindToaster(nextProps.toaster); } }, componentWillUnmount: function componentWillUnmount() { var s = this; var props = s.props; if (props.toaster) { s.unbindToaster(props.toaster); } }, //-------------------- // Custom //-------------------- /** * Bind toaster events. * @param toaster */ bindToaster: function bindToaster(toaster) { var s = this; toaster.addListener('toast', s.handleToast); }, /** * Unbind toaster events. * @param toaster */ unbindToaster: function unbindToaster(toaster) { var s = this; toaster.removeListener('toast', s.handleToast); }, /** * Handle toaster events. * @param data */ handleToast: function handleToast(data) { var s = this; var state = { _date: new Date() }; _toaster2.default.levels.forEach(function (level) { state[level] = data.level === level ? data.message : null; }); s.setState(state); } }); module.exports = ApToastGroup; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX3RvYXN0X2dyb3VwLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUtBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVlBLElBQUksZUFBZSxnQkFBTSxXQUFOLENBQWtCOzs7Ozs7O0FBTWpDLGVBQVc7QUFDUCxrQkFBVSxpQkFBTSxNQUFOO0FBQ1YsaUJBQVMsaUJBQU0sVUFBTixtQkFBVDtLQUZKOztBQUtBLFlBQVEsZ0NBQVI7O0FBSUEsYUFBUztBQUNMLGtDQURLO0tBQVQ7O0FBSUEsZ0RBQWtCO0FBQ2QsWUFBSSxRQUFRLEVBQUMsT0FBTyxJQUFQLEVBQVQsQ0FEVTtBQUVkLDBCQUFRLE1BQVIsQ0FBZSxPQUFmLENBQXVCLGlCQUFTO0FBQzVCLGtCQUFNLEtBQU4sSUFBZSxJQUFmLENBRDRCO1NBQVQsQ0FBdkIsQ0FGYztBQUtkLGVBQU8sS0FBUCxDQUxjO0tBbkJlO0FBMkJqQyxnREFBa0I7QUFDZCxlQUFPO0FBQ0gscUJBQVMsSUFBVDtTQURKLENBRGM7S0EzQmU7QUFpQ2pDLDhCQUFTO0FBQ0wsWUFBSSxJQUFJLElBQUosQ0FEQztZQUVBLFFBQWdCLEVBQWhCLE1BRkE7WUFFTyxRQUFTLEVBQVQsTUFGUDtZQUdBLFdBQVksTUFBWixTQUhBOztBQUlMLGVBQ0k7O2NBQUssV0FBVywwQkFBVyxnQkFBWCxFQUE2QixNQUFNLFNBQU4sQ0FBeEMsRUFBTDtZQUNJLG9EQUFTLFNBQVMsTUFBTSxPQUFOLEVBQWUsVUFBVSxRQUFWLEVBQWpDLENBREo7WUFFSSx5REFBYSxTQUFTLE1BQU0sSUFBTixFQUFZLFVBQVUsUUFBVixFQUFsQyxDQUZKO1lBR0kseURBQWEsU0FBUyxNQUFNLElBQU4sRUFBWSxVQUFVLFFBQVYsRUFBbEMsQ0FISjtZQUlJLDBEQUFjLFNBQVMsTUFBTSxLQUFOLEVBQWEsVUFBVSxRQUFWLEVBQXBDLENBSko7WUFLSyxNQUFNLFFBQU47U0FOVCxDQUpLO0tBakN3Qjs7Ozs7O0FBb0RqQyxvREFBb0I7QUFDWixnQkFBSSxJQUFKLENBRFk7WUFFWCxRQUFTLEVBQVQsTUFGVzs7QUFHaEIsWUFBSSxNQUFNLE9BQU4sRUFBZTtBQUNmLGNBQUUsV0FBRixDQUFjLE1BQU0sT0FBTixDQUFkLENBRGU7U0FBbkI7S0F2RDZCO0FBNERqQyxrRUFBMEIsV0FBVztBQUM3QixnQkFBSSxJQUFKLENBRDZCO1lBRTVCLFFBQVMsRUFBVCxNQUY0Qjs7QUFHakMsWUFBSSxVQUFVLE9BQVYsRUFBbUI7QUFDbkIsY0FBRSxhQUFGLENBQWdCLE1BQU0sT0FBTixDQUFoQixDQURtQjtBQUVuQixjQUFFLFdBQUYsQ0FBYyxVQUFVLE9BQVYsQ0FBZCxDQUZtQjtTQUF2QjtLQS9ENkI7QUFxRWpDLDBEQUF1QjtBQUNmLGdCQUFJLElBQUosQ0FEZTtZQUVkLFFBQVMsRUFBVCxNQUZjOztBQUduQixZQUFJLE1BQU0sT0FBTixFQUFlO0FBQ2YsY0FBRSxhQUFGLENBQWdCLE1BQU0sT0FBTixDQUFoQixDQURlO1NBQW5CO0tBeEU2Qjs7Ozs7Ozs7OztBQXFGakMsc0NBQVksU0FBUTtBQUNoQixZQUFJLElBQUksSUFBSixDQURZO0FBRWhCLGdCQUFRLFdBQVIsQ0FBb0IsT0FBcEIsRUFBNkIsRUFBRSxXQUFGLENBQTdCLENBRmdCO0tBckZhOzs7Ozs7QUE4RmpDLDBDQUFjLFNBQVE7QUFDbEIsWUFBSSxJQUFJLElBQUosQ0FEYztBQUVsQixnQkFBUSxjQUFSLENBQXVCLE9BQXZCLEVBQWdDLEVBQUUsV0FBRixDQUFoQyxDQUZrQjtLQTlGVzs7Ozs7O0FBdUdqQyxzQ0FBWSxNQUFLO0FBQ2IsWUFBSSxJQUFJLElBQUosQ0FEUztBQUViLFlBQUksUUFBUSxFQUFDLE9BQU8sSUFBSSxJQUFKLEVBQVAsRUFBVCxDQUZTO0FBR2IsMEJBQVEsTUFBUixDQUFlLE9BQWYsQ0FBdUIsaUJBQVM7QUFDNUIsa0JBQU0sS0FBTixJQUFlLEtBQUssS0FBTCxLQUFlLEtBQWYsR0FBdUIsS0FBSyxPQUFMLEdBQWUsSUFBdEMsQ0FEYTtTQUFULENBQXZCLENBSGE7QUFNYixVQUFFLFFBQUYsQ0FBVyxLQUFYLEVBTmE7S0F2R2dCO0NBQWxCLENBQWY7O0FBaUhKLE9BQU8sT0FBUCxHQUFpQixZQUFqQiIsImZpbGUiOiJhcF90b2FzdF9ncm91cC5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvb2t1bmlzaGluaXNoaS9Qcm9qZWN0cy9hcGVtYW4tcHJvamVjdHMvYXBlbWFuLXJlYWN0LXRvYXN0L2xpYiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVG9hc3QgZ3JvdXAuXG4gKiBAY29uc3RydWN0b3IgQXBUb2FzdEdyb3VwXG4gKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBSZWFjdCwge1Byb3BUeXBlcyBhcyB0eXBlc30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IEFwVG9hc3QgZnJvbSAnLi9hcF90b2FzdCc7XG5pbXBvcnQge0FwUHVyZU1peGlufSBmcm9tICdhcGVtYW4tcmVhY3QtbWl4aW5zJztcbmltcG9ydCBBcEluZm9Ub2FzdCBmcm9tICcuL2FwX2luZm9fdG9hc3QnO1xuaW1wb3J0IEFwV2FyblRvYXN0IGZyb20gJy4vYXBfd2Fybl90b2FzdCc7XG5pbXBvcnQgQXBFcnJvclRvYXN0IGZyb20gJy4vYXBfZXJyb3JfdG9hc3QnO1xuaW1wb3J0IFRvYXN0ZXIgZnJvbSAnLi90b2FzdGVyJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuXG4vKiogQGxlbmRzIEFwVG9hc3RHcm91cCAqL1xubGV0IEFwVG9hc3RHcm91cCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBTcGVjc1xuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3BUeXBlczoge1xuICAgICAgICBkdXJhdGlvbjogdHlwZXMubnVtYmVyLFxuICAgICAgICB0b2FzdGVyOiB0eXBlcy5pbnN0YW5jZU9mKFRvYXN0ZXIpXG4gICAgfSxcblxuICAgIG1peGluczogW1xuICAgICAgICBBcFB1cmVNaXhpblxuICAgIF0sXG5cbiAgICBzdGF0aWNzOiB7XG4gICAgICAgIFRvYXN0ZXI6IFRvYXN0ZXJcbiAgICB9LFxuXG4gICAgZ2V0SW5pdGlhbFN0YXRlKCkge1xuICAgICAgICBsZXQgc3RhdGUgPSB7X2RhdGU6IG51bGx9O1xuICAgICAgICBUb2FzdGVyLmxldmVscy5mb3JFYWNoKGxldmVsID0+IHtcbiAgICAgICAgICAgIHN0YXRlW2xldmVsXSA9IG51bGw7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgfSxcblxuICAgIGdldERlZmF1bHRQcm9wcygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRvYXN0ZXI6IG51bGxcbiAgICAgICAgfTtcbiAgICB9LFxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBsZXQgcyA9IHRoaXM7XG4gICAgICAgIGxldCB7c3RhdGUsIHByb3BzfSA9IHM7XG4gICAgICAgIGxldCB7ZHVyYXRpb259ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnYXAtdG9hc3QtZ3JvdXAnLCBwcm9wcy5jbGFzc05hbWUpfT5cbiAgICAgICAgICAgICAgICA8QXBUb2FzdCBtZXNzYWdlPXtzdGF0ZS5kZWZhdWx0fSBkdXJhdGlvbj17ZHVyYXRpb259Lz5cbiAgICAgICAgICAgICAgICA8QXBJbmZvVG9hc3QgbWVzc2FnZT17c3RhdGUuaW5mb30gZHVyYXRpb249e2R1cmF0aW9ufS8+XG4gICAgICAgICAgICAgICAgPEFwV2FyblRvYXN0IG1lc3NhZ2U9e3N0YXRlLndhcm59IGR1cmF0aW9uPXtkdXJhdGlvbn0vPlxuICAgICAgICAgICAgICAgIDxBcEVycm9yVG9hc3QgbWVzc2FnZT17c3RhdGUuZXJyb3J9IGR1cmF0aW9uPXtkdXJhdGlvbn0vPlxuICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH0sXG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gTGlmZWN5Y2xlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIGxldCBzID0gdGhpcyxcbiAgICAgICAgICAgIHtwcm9wc30gPSBzO1xuICAgICAgICBpZiAocHJvcHMudG9hc3Rlcikge1xuICAgICAgICAgICAgcy5iaW5kVG9hc3Rlcihwcm9wcy50b2FzdGVyKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgICAgICBsZXQgcyA9IHRoaXMsXG4gICAgICAgICAgICB7cHJvcHN9ID0gcztcbiAgICAgICAgaWYgKG5leHRQcm9wcy50b2FzdGVyKSB7XG4gICAgICAgICAgICBzLnVuYmluZFRvYXN0ZXIocHJvcHMudG9hc3Rlcik7XG4gICAgICAgICAgICBzLmJpbmRUb2FzdGVyKG5leHRQcm9wcy50b2FzdGVyKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgICAgbGV0IHMgPSB0aGlzLFxuICAgICAgICAgICAge3Byb3BzfSA9IHM7XG4gICAgICAgIGlmIChwcm9wcy50b2FzdGVyKSB7XG4gICAgICAgICAgICBzLnVuYmluZFRvYXN0ZXIocHJvcHMudG9hc3Rlcik7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEN1c3RvbVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8qKlxuICAgICAqIEJpbmQgdG9hc3RlciBldmVudHMuXG4gICAgICogQHBhcmFtIHRvYXN0ZXJcbiAgICAgKi9cbiAgICBiaW5kVG9hc3Rlcih0b2FzdGVyKXtcbiAgICAgICAgbGV0IHMgPSB0aGlzO1xuICAgICAgICB0b2FzdGVyLmFkZExpc3RlbmVyKCd0b2FzdCcsIHMuaGFuZGxlVG9hc3QpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBVbmJpbmQgdG9hc3RlciBldmVudHMuXG4gICAgICogQHBhcmFtIHRvYXN0ZXJcbiAgICAgKi9cbiAgICB1bmJpbmRUb2FzdGVyKHRvYXN0ZXIpe1xuICAgICAgICBsZXQgcyA9IHRoaXM7XG4gICAgICAgIHRvYXN0ZXIucmVtb3ZlTGlzdGVuZXIoJ3RvYXN0Jywgcy5oYW5kbGVUb2FzdCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSB0b2FzdGVyIGV2ZW50cy5cbiAgICAgKiBAcGFyYW0gZGF0YVxuICAgICAqL1xuICAgIGhhbmRsZVRvYXN0KGRhdGEpe1xuICAgICAgICBsZXQgcyA9IHRoaXM7XG4gICAgICAgIGxldCBzdGF0ZSA9IHtfZGF0ZTogbmV3IERhdGUoKX07XG4gICAgICAgIFRvYXN0ZXIubGV2ZWxzLmZvckVhY2gobGV2ZWwgPT4ge1xuICAgICAgICAgICAgc3RhdGVbbGV2ZWxdID0gZGF0YS5sZXZlbCA9PT0gbGV2ZWwgPyBkYXRhLm1lc3NhZ2UgOiBudWxsO1xuICAgICAgICB9KTtcbiAgICAgICAgcy5zZXRTdGF0ZShzdGF0ZSk7XG4gICAgfVxufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gQXBUb2FzdEdyb3VwOyJdfQ==