apeman-react-toast
Version:
apeman react package for toast components.
155 lines (121 loc) • 10.9 kB
JavaScript
/**
* 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==