jiro-ui
Version:
A Mithril.js UI library based from construct-ui
91 lines (90 loc) • 3.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Toaster = exports.ToasterPosition = void 0;
var tslib_1 = require("tslib");
var mithril_1 = tslib_1.__importDefault(require("mithril"));
var classnames_1 = tslib_1.__importDefault(require("classnames"));
var _shared_1 = require("../../_shared");
var abstract_component_1 = require("../abstract-component");
var Toast_1 = require("./Toast");
var overlay_1 = require("../overlay");
exports.ToasterPosition = {
TOP: 'top',
TOP_START: 'top-start',
TOP_END: 'top-end',
BOTTOM: 'bottom',
BOTTOM_START: 'bottom-start',
BOTTOM_END: 'bottom-end'
};
var Toaster = /** @class */ (function (_super) {
tslib_1.__extends(Toaster, _super);
function Toaster() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.toasts = [];
_this.toastId = 0;
_this.dismiss = function (key, timedOut) {
if (timedOut === void 0) { timedOut = false; }
var index = _this.toasts.findIndex(function (x) { return x.key === key; });
var toast = _this.toasts[index];
if (toast) {
_shared_1.safeCall(toast.onDismiss, timedOut);
_this.toasts.splice(index, 1);
}
};
return _this;
}
Toaster.prototype.getDefaultAttrs = function () {
return {
clearOnEscapeKey: true,
position: 'top'
};
};
Toaster.prototype.view = function () {
var _this = this;
var _a = this.attrs, className = _a.class, position = _a.position, inline = _a.inline, toasts = _a.toasts, clearOnEscapeKey = _a.clearOnEscapeKey, style = _a.style;
var classes = classnames_1.default(_shared_1.Classes.TOASTER, _shared_1.Classes.TOASTER + "-" + position, inline && _shared_1.Classes.TOASTER_INLINE, className);
var renderedToasts = this.isControlled()
? toasts || []
: this.toasts.map(function (toastOptions) { return _this.renderToast(toastOptions); });
return mithril_1.default(overlay_1.Overlay, {
closeOnEscapeKey: clearOnEscapeKey,
closeOnOutsideClick: false,
class: classes,
content: renderedToasts,
hasBackdrop: false,
inline: inline,
isOpen: renderedToasts.length > 0,
transitionDuration: 0,
addToStack: false,
onClose: function () { return _this.clear(); },
style: style
});
};
Toaster.prototype.onremove = function () {
this.clear();
};
Toaster.prototype.show = function (attrs) {
var toastOptions = tslib_1.__assign(tslib_1.__assign({}, attrs), { key: "cui-toast-" + this.toastId++ });
this.toasts.push(toastOptions);
return toastOptions.key;
};
Toaster.prototype.update = function (key, attrs) {
var index = this.toasts.findIndex(function (x) { return x.key === key; });
this.toasts[index] = tslib_1.__assign(tslib_1.__assign({}, this.toasts[index]), attrs);
};
Toaster.prototype.clear = function () {
this.toasts.map(function (x) { return _shared_1.safeCall(x.onDismiss, false); });
this.toasts.length = 0;
};
Toaster.prototype.getToasts = function () {
return this.toasts;
};
Toaster.prototype.renderToast = function (attrs) {
return mithril_1.default(Toast_1.Toast, tslib_1.__assign(tslib_1.__assign({}, attrs), { onDismiss: this.dismiss }));
};
Toaster.prototype.isControlled = function () {
return this.attrs.toasts != null;
};
return Toaster;
}(abstract_component_1.AbstractComponent));
exports.Toaster = Toaster;