UNPKG

jiro-ui

Version:

A Mithril.js UI library based from construct-ui

61 lines (60 loc) 2.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Dialog = void 0; var tslib_1 = require("tslib"); var mithril_1 = tslib_1.__importDefault(require("mithril")); var classnames_1 = tslib_1.__importDefault(require("classnames")); var abstract_component_1 = require("../abstract-component"); var _shared_1 = require("../../_shared"); var overlay_1 = require("../overlay"); var button_1 = require("../button"); var icon_1 = require("../icon"); var Dialog = /** @class */ (function (_super) { tslib_1.__extends(Dialog, _super); function Dialog() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.handleContainerClick = function (e) { var _a = _this.attrs, closeOnOutsideClick = _a.closeOnOutsideClick, onClose = _a.onClose; var target = e.target; var isClickOutsideDialog = _shared_1.getClosest(target, "." + _shared_1.Classes.DIALOG_CONTENT) == null; if (isClickOutsideDialog && closeOnOutsideClick) { _shared_1.safeCall(onClose); } else e.redraw = false; }; return _this; } Dialog.prototype.getDefaultAttrs = function () { return { hasCloseButton: true, closeOnOutsideClick: true }; }; Dialog.prototype.view = function () { var _a = this.attrs, basic = _a.basic, onClose = _a.onClose, hasCloseButton = _a.hasCloseButton, className = _a.class, footer = _a.footer, content = _a.content, style = _a.style, title = _a.title, otherAttrs = tslib_1.__rest(_a, ["basic", "onClose", "hasCloseButton", "class", "footer", "content", "style", "title"]); var closeButton = mithril_1.default(button_1.Button, { class: _shared_1.Classes.DIALOG_CLOSE_BUTTON, basic: true, iconLeft: icon_1.Icons.X, onclick: onClose ? function (e) { return onClose(e); } : undefined }); var header = mithril_1.default('', { class: _shared_1.Classes.DIALOG_HEADER }, [ mithril_1.default('h3', title), hasCloseButton && closeButton ]); var innerContent = mithril_1.default('', { class: _shared_1.Classes.DIALOG_CONTENT }, [ title && header, mithril_1.default('', { class: _shared_1.Classes.DIALOG_BODY }, content), footer && mithril_1.default('', { class: _shared_1.Classes.DIALOG_FOOTER }, footer) ]); var container = mithril_1.default('', { class: classnames_1.default(_shared_1.Classes.DIALOG, basic && _shared_1.Classes.BASIC, className), onclick: this.handleContainerClick, style: style }, innerContent); return mithril_1.default(overlay_1.Overlay, tslib_1.__assign(tslib_1.__assign({}, otherAttrs), { onClose: onClose, content: container })); }; return Dialog; }(abstract_component_1.AbstractComponent)); exports.Dialog = Dialog;