UNPKG

jiro-ui

Version:

A Mithril.js UI library based from construct-ui

67 lines (66 loc) 2.67 kB
import { __assign, __extends, __rest } from "tslib"; import m from 'mithril'; import classnames from 'classnames'; import { Classes, safeCall } from '../../_shared'; import { AbstractComponent } from '../abstract-component'; import { Icon, Icons } from '../icon'; var Toast = /** @class */ (function (_super) { __extends(Toast, _super); function Toast() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.handleCloseClick = function () { _this.triggerDismiss(false); }; _this.startTimeout = function () { var timeout = _this.attrs.timeout; if (timeout > 0) { _this.setTimeout(function () { return _this.triggerDismiss(true); }, timeout); } }; return _this; } Toast.prototype.getDefaultAttrs = function () { return { timeout: 3000 }; }; Toast.prototype.oncreate = function () { this.startTimeout(); }; Toast.prototype.onbeforeupdate = function (vnode, prev) { _super.prototype.onbeforeupdate.call(this, vnode, prev); if (prev.attrs.timeout <= 0 && vnode.attrs.timeout > 0) { this.startTimeout(); } else if (prev.attrs.timeout > 0 && vnode.attrs.timeout <= 0) { this.clearTimeouts(); } else if (vnode.attrs.timeout !== prev.attrs.timeout) { this.clearTimeouts(); this.startTimeout(); } }; Toast.prototype.view = function () { var _a = this.attrs, className = _a.class, intent = _a.intent, size = _a.size, icon = _a.icon, message = _a.message, htmlAttrs = __rest(_a, ["class", "intent", "size", "icon", "message"]); var classes = classnames(Classes.TOAST, intent && "cui-" + intent, size && "cui-" + size, className); var content = [ icon && m(Icon, { name: icon }), m("." + Classes.TOAST_MESSAGE, message), m(Icon, { name: Icons.X, onclick: this.handleCloseClick }) ]; return m('', __assign(__assign({ class: classes, onblur: this.startTimeout, onfocus: this.clearTimeouts, onmouseenter: this.clearTimeouts, onmouseleave: this.startTimeout }, htmlAttrs), { tabindex: 0 }), content); }; Toast.prototype.onremove = function () { this.clearTimeouts(); }; Toast.prototype.triggerDismiss = function (didTimeoutExpire) { safeCall(this.attrs.onDismiss, this.attrs.key, didTimeoutExpire); this.clearTimeouts(); m.redraw(); }; return Toast; }(AbstractComponent)); export { Toast };