apeman-react-mixins
Version:
React mixin set of apeman.
117 lines (89 loc) • 7.16 kB
JavaScript
/**
* Mixin to handle toast.
* @mixin ApToastMixin
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var TOAST_TOASTER_KEY = "_apToastToaster";
/** @lends ApToastMixin */
var ApToastMixin = {
// --------------------
// Custom
// --------------------
$apToastMixed: true,
/**
* Get current toast messages.
* @returns {object} - Messages object.
*/
getToaster: function getToaster() {
var s = this;
var toaster = s[TOAST_TOASTER_KEY] || s.context[TOAST_TOASTER_KEY];
if (!toaster) {
var msg = "Toaster no initialized. You need to call `.registerToaster()` on this component or one of it's parents";
throw new Error(msg);
}
return toaster;
},
/**
* Set toast message.
* @param {string} message - Message to set
* @param {string} [level="default"] - Level of message.
*/
toast: function toast(message, level) {
var s = this;
var toaster = s.getToaster();
level = level || 'default';
toaster.emit('toast', {
level: level,
message: message
});
},
/**
* Set info toast message
*/
infoToast: function infoToast(message) {
var s = this;
s.toast(message, 'info');
},
/**
* Set warn toast message
*/
warnToast: function warnToast(message) {
var s = this;
s.toast(message, 'warn');
},
/**
* Set error toast message
*/
errorToast: function errorToast(message) {
var s = this;
s.toast(message, 'error');
},
/**
* Decorate toast context.
*/
registerToaster: function registerToaster(toaster) {
var s = this;
s[TOAST_TOASTER_KEY] = toaster;
},
// --------------------
// Specs
// --------------------
contextTypes: _defineProperty({}, TOAST_TOASTER_KEY, _react.PropTypes.object),
childContextTypes: _defineProperty({}, TOAST_TOASTER_KEY, _react.PropTypes.object),
getChildContext: function getChildContext() {
var s = this;
return _defineProperty({}, TOAST_TOASTER_KEY, s.getToaster());
}
// --------------------
// Lifecycle
// --------------------
};
exports.default = Object.freeze(ApToastMixin);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX3RvYXN0X21peGluLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUtBOzs7Ozs7QUFFQTs7Ozs7Ozs7QUFFQSxJQUFNLG9CQUFvQixpQkFBMUI7OztBQUdBLElBQU0sZUFBZTs7Ozs7QUFLbkIsaUJBQWUsSUFMSTs7Ozs7O0FBV25CLFlBWG1CLHdCQVdMO0FBQ1osUUFBTSxJQUFJLElBQVY7QUFDQSxRQUFJLFVBQVUsRUFBRyxpQkFBSCxLQUEwQixFQUFFLE9BQUYsQ0FBVyxpQkFBWCxDQUF4QztBQUNBLFFBQUksQ0FBQyxPQUFMLEVBQWM7QUFDWixVQUFJLE1BQU0sd0dBQVY7QUFDQSxZQUFNLElBQUksS0FBSixDQUFVLEdBQVYsQ0FBTjtBQUNEO0FBQ0QsV0FBTyxPQUFQO0FBQ0QsR0FuQmtCOzs7Ozs7OztBQTBCbkIsT0ExQm1CLGlCQTBCWixPQTFCWSxFQTBCSCxLQTFCRyxFQTBCSTtBQUNyQixRQUFNLElBQUksSUFBVjtBQUNBLFFBQUksVUFBVSxFQUFFLFVBQUYsRUFBZDtBQUNBLFlBQVEsU0FBUyxTQUFqQjtBQUNBLFlBQVEsSUFBUixDQUFhLE9BQWIsRUFBc0I7QUFDcEIsYUFBTyxLQURhO0FBRXBCLGVBQVM7QUFGVyxLQUF0QjtBQUlELEdBbENrQjs7Ozs7O0FBdUNuQixXQXZDbUIscUJBdUNSLE9BdkNRLEVBdUNDO0FBQ2xCLFFBQU0sSUFBSSxJQUFWO0FBQ0EsTUFBRSxLQUFGLENBQVEsT0FBUixFQUFpQixNQUFqQjtBQUNELEdBMUNrQjs7Ozs7O0FBK0NuQixXQS9DbUIscUJBK0NSLE9BL0NRLEVBK0NDO0FBQ2xCLFFBQU0sSUFBSSxJQUFWO0FBQ0EsTUFBRSxLQUFGLENBQVEsT0FBUixFQUFpQixNQUFqQjtBQUNELEdBbERrQjs7Ozs7O0FBdURuQixZQXZEbUIsc0JBdURQLE9BdkRPLEVBdURFO0FBQ25CLFFBQU0sSUFBSSxJQUFWO0FBQ0EsTUFBRSxLQUFGLENBQVEsT0FBUixFQUFpQixPQUFqQjtBQUNELEdBMURrQjs7Ozs7O0FBK0RuQixpQkEvRG1CLDJCQStERixPQS9ERSxFQStETztBQUN4QixRQUFNLElBQUksSUFBVjtBQUNBLE1BQUcsaUJBQUgsSUFBeUIsT0FBekI7QUFDRCxHQWxFa0I7Ozs7Ozs7QUF3RW5CLG9DQUNHLGlCQURILEVBQ3VCLGlCQUFNLE1BRDdCLENBeEVtQjs7QUE0RW5CLHlDQUNHLGlCQURILEVBQ3VCLGlCQUFNLE1BRDdCLENBNUVtQjs7QUFnRm5CLGlCQWhGbUIsNkJBZ0ZBO0FBQ2pCLFFBQU0sSUFBSSxJQUFWO0FBQ0EsK0JBQ0csaUJBREgsRUFDdUIsRUFBRSxVQUFGLEVBRHZCO0FBR0Q7Ozs7OztBQXJGa0IsQ0FBckI7O2tCQTZGZSxPQUFPLE1BQVAsQ0FBYyxZQUFkLEMiLCJmaWxlIjoiYXBfdG9hc3RfbWl4aW4uanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL29rdW5pc2hpbmlzaGkvUHJvamVjdHMvYXBlbWFuLXByb2plY3RzL2FwZW1hbi1yZWFjdC1taXhpbnMvbGliIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNaXhpbiB0byBoYW5kbGUgdG9hc3QuXG4gKiBAbWl4aW4gQXBUb2FzdE1peGluXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbmltcG9ydCBSZWFjdCwge1Byb3BUeXBlcyBhcyB0eXBlc30gZnJvbSAncmVhY3QnXG5cbmNvbnN0IFRPQVNUX1RPQVNURVJfS0VZID0gXCJfYXBUb2FzdFRvYXN0ZXJcIjtcblxuLyoqIEBsZW5kcyBBcFRvYXN0TWl4aW4gKi9cbmNvbnN0IEFwVG9hc3RNaXhpbiA9IHtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBDdXN0b21cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgJGFwVG9hc3RNaXhlZDogdHJ1ZSxcblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgdG9hc3QgbWVzc2FnZXMuXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IC0gTWVzc2FnZXMgb2JqZWN0LlxuICAgKi9cbiAgZ2V0VG9hc3RlciAoKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBsZXQgdG9hc3RlciA9IHNbIFRPQVNUX1RPQVNURVJfS0VZIF0gfHwgcy5jb250ZXh0WyBUT0FTVF9UT0FTVEVSX0tFWSBdXG4gICAgaWYgKCF0b2FzdGVyKSB7XG4gICAgICBsZXQgbXNnID0gXCJUb2FzdGVyIG5vIGluaXRpYWxpemVkLiBZb3UgbmVlZCB0byBjYWxsIGAucmVnaXN0ZXJUb2FzdGVyKClgIG9uIHRoaXMgY29tcG9uZW50IG9yIG9uZSBvZiBpdCdzIHBhcmVudHNcIlxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZylcbiAgICB9XG4gICAgcmV0dXJuIHRvYXN0ZXJcbiAgfSxcblxuICAvKipcbiAgICogU2V0IHRvYXN0IG1lc3NhZ2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gTWVzc2FnZSB0byBzZXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtsZXZlbD1cImRlZmF1bHRcIl0gLSBMZXZlbCBvZiBtZXNzYWdlLlxuICAgKi9cbiAgdG9hc3QgKG1lc3NhZ2UsIGxldmVsKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBsZXQgdG9hc3RlciA9IHMuZ2V0VG9hc3RlcigpXG4gICAgbGV2ZWwgPSBsZXZlbCB8fCAnZGVmYXVsdCdcbiAgICB0b2FzdGVyLmVtaXQoJ3RvYXN0Jywge1xuICAgICAgbGV2ZWw6IGxldmVsLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZVxuICAgIH0pXG4gIH0sXG5cbiAgLyoqXG4gICAqIFNldCBpbmZvIHRvYXN0IG1lc3NhZ2VcbiAgICovXG4gIGluZm9Ub2FzdCAobWVzc2FnZSkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgcy50b2FzdChtZXNzYWdlLCAnaW5mbycpXG4gIH0sXG5cbiAgLyoqXG4gICAqIFNldCB3YXJuIHRvYXN0IG1lc3NhZ2VcbiAgICovXG4gIHdhcm5Ub2FzdCAobWVzc2FnZSkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgcy50b2FzdChtZXNzYWdlLCAnd2FybicpXG4gIH0sXG5cbiAgLyoqXG4gICAqIFNldCBlcnJvciB0b2FzdCBtZXNzYWdlXG4gICAqL1xuICBlcnJvclRvYXN0IChtZXNzYWdlKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBzLnRvYXN0KG1lc3NhZ2UsICdlcnJvcicpXG4gIH0sXG5cbiAgLyoqXG4gICAqIERlY29yYXRlIHRvYXN0IGNvbnRleHQuXG4gICAqL1xuICByZWdpc3RlclRvYXN0ZXIgKHRvYXN0ZXIpIHtcbiAgICBjb25zdCBzID0gdGhpc1xuICAgIHNbIFRPQVNUX1RPQVNURVJfS0VZIF0gPSB0b2FzdGVyXG4gIH0sXG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gU3BlY3NcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBjb250ZXh0VHlwZXM6IHtcbiAgICBbVE9BU1RfVE9BU1RFUl9LRVldOiB0eXBlcy5vYmplY3RcbiAgfSxcblxuICBjaGlsZENvbnRleHRUeXBlczoge1xuICAgIFtUT0FTVF9UT0FTVEVSX0tFWV06IHR5cGVzLm9iamVjdFxuICB9LFxuXG4gIGdldENoaWxkQ29udGV4dCAoKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICByZXR1cm4ge1xuICAgICAgW1RPQVNUX1RPQVNURVJfS0VZXTogcy5nZXRUb2FzdGVyKClcbiAgICB9XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBMaWZlY3ljbGVcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBPYmplY3QuZnJlZXplKEFwVG9hc3RNaXhpbilcbiJdfQ==