UNPKG

12 kBJavaScriptView Raw
1/**
2 * Toast group.
3 * @class ApToastGroup
4 */
5
6'use strict';
7
8Object.defineProperty(exports, "__esModule", {
9 value: true
10});
11
12var _react = require('react');
13
14var _react2 = _interopRequireDefault(_react);
15
16var _ap_toast = require('./ap_toast');
17
18var _ap_toast2 = _interopRequireDefault(_ap_toast);
19
20var _apemanReactMixins = require('apeman-react-mixins');
21
22var _ap_info_toast = require('./ap_info_toast');
23
24var _ap_info_toast2 = _interopRequireDefault(_ap_info_toast);
25
26var _ap_warn_toast = require('./ap_warn_toast');
27
28var _ap_warn_toast2 = _interopRequireDefault(_ap_warn_toast);
29
30var _ap_error_toast = require('./ap_error_toast');
31
32var _ap_error_toast2 = _interopRequireDefault(_ap_error_toast);
33
34var _toaster = require('./toasting/toaster');
35
36var _toaster2 = _interopRequireDefault(_toaster);
37
38var _classnames = require('classnames');
39
40var _classnames2 = _interopRequireDefault(_classnames);
41
42function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
43
44/** @lends ApToastGroup */
45var ApToastGroup = _react2.default.createClass({
46 displayName: 'ApToastGroup',
47
48
49 // --------------------
50 // Specs
51 // --------------------
52
53 propTypes: {
54 duration: _react.PropTypes.number,
55 toaster: _react.PropTypes.instanceOf(_toaster2.default)
56 },
57
58 mixins: [_apemanReactMixins.ApPureMixin],
59
60 statics: {
61 Toaster: _toaster2.default
62 },
63
64 getInitialState: function getInitialState() {
65 var state = { _date: null };
66 _toaster2.default.levels.forEach(function (level) {
67 state[level] = null;
68 });
69 return state;
70 },
71 getDefaultProps: function getDefaultProps() {
72 return {
73 toaster: null
74 };
75 },
76 render: function render() {
77 var s = this;
78 var state = s.state;
79 var props = s.props;
80 var duration = props.duration;
81
82
83 return _react2.default.createElement(
84 'div',
85 { className: (0, _classnames2.default)('ap-toast-group', {}, props.className) },
86 _react2.default.createElement(_ap_toast2.default, { message: state.default, duration: duration, name: 'default', onDismiss: s.handleDismiss }),
87 _react2.default.createElement(_ap_info_toast2.default, { message: state.info, duration: duration, name: 'info', onDismiss: s.handleDismiss }),
88 _react2.default.createElement(_ap_warn_toast2.default, { message: state.warn, duration: duration, name: 'warn', onDismiss: s.handleDismiss }),
89 _react2.default.createElement(_ap_error_toast2.default, { message: state.error, duration: duration, name: 'error', onDismiss: s.handleDismiss }),
90 props.children
91 );
92 },
93
94
95 // --------------------
96 // Lifecycle
97 // --------------------
98
99 componentDidMount: function componentDidMount() {
100 var s = this;
101 var props = s.props;
102
103 if (props.toaster) {
104 s.bindToaster(props.toaster);
105 }
106 },
107 componentWillReceiveProps: function componentWillReceiveProps(nextProps) {
108 var s = this;
109 var props = s.props;
110
111 if (nextProps.toaster) {
112 s.unbindToaster(props.toaster);
113 s.bindToaster(nextProps.toaster);
114 }
115 },
116 componentWillUnmount: function componentWillUnmount() {
117 var s = this;
118 var props = s.props;
119
120 if (props.toaster) {
121 s.unbindToaster(props.toaster);
122 }
123 },
124
125
126 // --------------------
127 // Custom
128 // --------------------
129
130 handleDismiss: function handleDismiss(e) {
131 var s = this;
132 var state = s.state;
133 var name = e.name;
134 var dismissed = e.dismissed;
135
136 if (state[name] === dismissed) {
137 s.setState({ name: null });
138 }
139 },
140
141
142 /**
143 * Bind toaster events.
144 * @param toaster
145 */
146 bindToaster: function bindToaster(toaster) {
147 var s = this;
148 toaster.addListener('toast', s.handleToast);
149 },
150
151
152 /**
153 * Unbind toaster events.
154 * @param toaster
155 */
156 unbindToaster: function unbindToaster(toaster) {
157 var s = this;
158 toaster.removeListener('toast', s.handleToast);
159 },
160
161
162 /**
163 * Handle toaster events.
164 * @param data
165 */
166 handleToast: function handleToast(data) {
167 var s = this;
168 var state = { _date: new Date() };
169 _toaster2.default.levels.forEach(function (level) {
170 state[level] = data.level === level ? data.message : null;
171 });
172 s.setState(state);
173 }
174});
175
176exports.default = ApToastGroup;
177//# sourceMappingURL=data:application/json;base64,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UztBQUFBLFFBR0gsU0FIRyxHQUdXLENBSFgsQ0FHSCxTQUhHOztBQUlmLFFBQUksTUFBTyxJQUFQLE1BQWtCLFNBQXRCLEVBQWlDO0FBQy9CLFFBQUUsUUFBRixDQUFXLEVBQUUsTUFBTSxJQUFSLEVBQVg7QUFDRDtBQUNGLEdBMUZvQzs7Ozs7OztBQWdHckMsYUFoR3FDLHVCQWdHekIsT0FoR3lCLEVBZ0dqQjtBQUNsQixRQUFNLElBQUksSUFBVjtBQUNBLFlBQVEsV0FBUixDQUFvQixPQUFwQixFQUE2QixFQUFFLFdBQS9CO0FBQ0QsR0FuR29DOzs7Ozs7O0FBeUdyQyxlQXpHcUMseUJBeUd2QixPQXpHdUIsRUF5R2Y7QUFDcEIsUUFBTSxJQUFJLElBQVY7QUFDQSxZQUFRLGNBQVIsQ0FBdUIsT0FBdkIsRUFBZ0MsRUFBRSxXQUFsQztBQUNELEdBNUdvQzs7Ozs7OztBQWtIckMsYUFsSHFDLHVCQWtIekIsSUFsSHlCLEVBa0hwQjtBQUNmLFFBQU0sSUFBSSxJQUFWO0FBQ0EsUUFBSSxRQUFRLEVBQUUsT0FBTyxJQUFJLElBQUosRUFBVCxFQUFaO0FBQ0Esc0JBQVEsTUFBUixDQUFlLE9BQWYsQ0FBdUIsVUFBQyxLQUFELEVBQVc7QUFDaEMsWUFBTyxLQUFQLElBQWlCLEtBQUssS0FBTCxLQUFlLEtBQWYsR0FBdUIsS0FBSyxPQUE1QixHQUFzQyxJQUF2RDtBQUNELEtBRkQ7QUFHQSxNQUFFLFFBQUYsQ0FBVyxLQUFYO0FBQ0Q7QUF6SG9DLENBQWxCLENBQXJCOztrQkE0SGUsWSIsImZpbGUiOiJhcF90b2FzdF9ncm91cC5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvb2t1bmlzaGluaXNoaS9Qcm9qZWN0cy9hcGVtYW4tcHJvamVjdHMvYXBlbWFuLXJlYWN0LXRvYXN0L2xpYiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVG9hc3QgZ3JvdXAuXG4gKiBAY2xhc3MgQXBUb2FzdEdyb3VwXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbmltcG9ydCBSZWFjdCwge1Byb3BUeXBlcyBhcyB0eXBlc30gZnJvbSAncmVhY3QnXG5pbXBvcnQgQXBUb2FzdCBmcm9tICcuL2FwX3RvYXN0J1xuaW1wb3J0IHtBcFB1cmVNaXhpbn0gZnJvbSAnYXBlbWFuLXJlYWN0LW1peGlucydcbmltcG9ydCBBcEluZm9Ub2FzdCBmcm9tICcuL2FwX2luZm9fdG9hc3QnXG5pbXBvcnQgQXBXYXJuVG9hc3QgZnJvbSAnLi9hcF93YXJuX3RvYXN0J1xuaW1wb3J0IEFwRXJyb3JUb2FzdCBmcm9tICcuL2FwX2Vycm9yX3RvYXN0J1xuaW1wb3J0IFRvYXN0ZXIgZnJvbSAnLi90b2FzdGluZy90b2FzdGVyJ1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcydcblxuLyoqIEBsZW5kcyBBcFRvYXN0R3JvdXAgKi9cbmNvbnN0IEFwVG9hc3RHcm91cCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBTcGVjc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByb3BUeXBlczoge1xuICAgIGR1cmF0aW9uOiB0eXBlcy5udW1iZXIsXG4gICAgdG9hc3RlcjogdHlwZXMuaW5zdGFuY2VPZihUb2FzdGVyKVxuICB9LFxuXG4gIG1peGluczogW1xuICAgIEFwUHVyZU1peGluXG4gIF0sXG5cbiAgc3RhdGljczoge1xuICAgIFRvYXN0ZXI6IFRvYXN0ZXJcbiAgfSxcblxuICBnZXRJbml0aWFsU3RhdGUgKCkge1xuICAgIGxldCBzdGF0ZSA9IHsgX2RhdGU6IG51bGwgfVxuICAgIFRvYXN0ZXIubGV2ZWxzLmZvckVhY2gobGV2ZWwgPT4ge1xuICAgICAgc3RhdGVbIGxldmVsIF0gPSBudWxsO1xuICAgIH0pXG4gICAgcmV0dXJuIHN0YXRlO1xuICB9LFxuXG4gIGdldERlZmF1bHRQcm9wcyAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRvYXN0ZXI6IG51bGxcbiAgICB9XG4gIH0sXG5cbiAgcmVuZGVyICgpIHtcbiAgICBjb25zdCBzID0gdGhpc1xuICAgIGxldCB7IHN0YXRlLCBwcm9wcyB9ID0gc1xuICAgIGxldCB7IGR1cmF0aW9uIH0gPSBwcm9wc1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXsgY2xhc3NuYW1lcygnYXAtdG9hc3QtZ3JvdXAnLCB7XG4gICAgICAgICAgICB9LCBwcm9wcy5jbGFzc05hbWUpIH0+XG4gICAgICAgIDxBcFRvYXN0IG1lc3NhZ2U9eyBzdGF0ZS5kZWZhdWx0IH0gZHVyYXRpb249eyBkdXJhdGlvbiB9IG5hbWU9XCJkZWZhdWx0XCIgb25EaXNtaXNzPXsgcy5oYW5kbGVEaXNtaXNzIH0vPlxuICAgICAgICA8QXBJbmZvVG9hc3QgbWVzc2FnZT17IHN0YXRlLmluZm8gfSBkdXJhdGlvbj17IGR1cmF0aW9uIH0gbmFtZT1cImluZm9cIiBvbkRpc21pc3M9eyBzLmhhbmRsZURpc21pc3MgfS8+XG4gICAgICAgIDxBcFdhcm5Ub2FzdCBtZXNzYWdlPXsgc3RhdGUud2FybiB9IGR1cmF0aW9uPXsgZHVyYXRpb24gfSBuYW1lPVwid2FyblwiIG9uRGlzbWlzcz17IHMuaGFuZGxlRGlzbWlzcyB9Lz5cbiAgICAgICAgPEFwRXJyb3JUb2FzdCBtZXNzYWdlPXsgc3RhdGUuZXJyb3IgfSBkdXJhdGlvbj17IGR1cmF0aW9uIH0gbmFtZT1cImVycm9yXCIgb25EaXNtaXNzPXsgcy5oYW5kbGVEaXNtaXNzIH0vPlxuICAgICAgICB7IHByb3BzLmNoaWxkcmVuIH1cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfSxcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBMaWZlY3ljbGVcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBjb21wb25lbnREaWRNb3VudCAoKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBsZXQgeyBwcm9wcyB9ID0gc1xuICAgIGlmIChwcm9wcy50b2FzdGVyKSB7XG4gICAgICBzLmJpbmRUb2FzdGVyKHByb3BzLnRvYXN0ZXIpXG4gICAgfVxuICB9LFxuXG4gIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgKG5leHRQcm9wcykge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgcHJvcHMgfSA9IHNcbiAgICBpZiAobmV4dFByb3BzLnRvYXN0ZXIpIHtcbiAgICAgIHMudW5iaW5kVG9hc3Rlcihwcm9wcy50b2FzdGVyKVxuICAgICAgcy5iaW5kVG9hc3RlcihuZXh0UHJvcHMudG9hc3RlcilcbiAgICB9XG4gIH0sXG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQgKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgcHJvcHMgfSA9IHNcbiAgICBpZiAocHJvcHMudG9hc3Rlcikge1xuICAgICAgcy51bmJpbmRUb2FzdGVyKHByb3BzLnRvYXN0ZXIpXG4gICAgfVxuICB9LFxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEN1c3RvbVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGhhbmRsZURpc21pc3MoZSkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgc3RhdGUgfSA9IHNcbiAgICBsZXQgeyBuYW1lLCBkaXNtaXNzZWQgfSA9IGVcbiAgICBpZiAoc3RhdGVbIG5hbWUgXSA9PT0gZGlzbWlzc2VkKSB7XG4gICAgICBzLnNldFN0YXRlKHsgbmFtZTogbnVsbCB9KVxuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQmluZCB0b2FzdGVyIGV2ZW50cy5cbiAgICogQHBhcmFtIHRvYXN0ZXJcbiAgICovXG4gIGJpbmRUb2FzdGVyKHRvYXN0ZXIpe1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgdG9hc3Rlci5hZGRMaXN0ZW5lcigndG9hc3QnLCBzLmhhbmRsZVRvYXN0KVxuICB9LFxuXG4gIC8qKlxuICAgKiBVbmJpbmQgdG9hc3RlciBldmVudHMuXG4gICAqIEBwYXJhbSB0b2FzdGVyXG4gICAqL1xuICB1bmJpbmRUb2FzdGVyKHRvYXN0ZXIpe1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgdG9hc3Rlci5yZW1vdmVMaXN0ZW5lcigndG9hc3QnLCBzLmhhbmRsZVRvYXN0KVxuICB9LFxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdG9hc3RlciBldmVudHMuXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqL1xuICBoYW5kbGVUb2FzdChkYXRhKXtcbiAgICBjb25zdCBzID0gdGhpc1xuICAgIGxldCBzdGF0ZSA9IHsgX2RhdGU6IG5ldyBEYXRlKCkgfVxuICAgIFRvYXN0ZXIubGV2ZWxzLmZvckVhY2goKGxldmVsKSA9PiB7XG4gICAgICBzdGF0ZVsgbGV2ZWwgXSA9IGRhdGEubGV2ZWwgPT09IGxldmVsID8gZGF0YS5tZXNzYWdlIDogbnVsbDtcbiAgICB9KVxuICAgIHMuc2V0U3RhdGUoc3RhdGUpXG4gIH1cbn0pXG5cbmV4cG9ydCBkZWZhdWx0IEFwVG9hc3RHcm91cDsiXX0=
\No newline at end of file