UNPKG

hswidget

Version:
61 lines 6.12 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Collapsible = void 0; const mithril_1 = __importDefault(require("mithril")); const Widget_1 = require("./Widget"); var Expansion; (function (Expansion) { Expansion[Expansion["closed"] = 0] = "closed"; Expansion[Expansion["opening"] = 1] = "opening"; Expansion[Expansion["open"] = 2] = "open"; Expansion[Expansion["closing"] = 3] = "closing"; })(Expansion || (Expansion = {})); class Collapsible extends Widget_1.Widget { oninit(node) { node.state.expanded = node.attrs.isExpanded ? Expansion.open : Expansion.closed; node.state.maxHeight = null; node.state.toggle = () => { switch (node.state.expanded) { case Expansion.open: case Expansion.opening: node.state.expanded = Expansion.closing; setTimeout(() => { node.state.expanded = Expansion.closed; mithril_1.default.redraw(); }, node.attrs.transition); break; case Expansion.closed: case Expansion.closing: node.state.expanded = Expansion.open; break; } }; } view(node) { node.attrs.transition = node.attrs.transition || 250; const components = node.children; const preArrow = node.attrs.preArrow || false; const postArrow = node.attrs.postArrow || false; const maxHeight = (node.state.expanded === Expansion.closed || node.state.expanded === Expansion.closing) ? '0' : `400px`; const title = [components.shift()]; if (preArrow) { title.unshift(mithril_1.default(`.hs_collapsible_pre .hs_collapsible_arrow_${node.state.expanded ? 'down' : 'right'}`)); } if (postArrow) { title.push(mithril_1.default(`.hs_collapsible_post .hs_collapsible_arrow_${node.state.expanded ? 'down' : 'left'}`)); } return mithril_1.default(`.hs_collapsible`, this.attrs(node.attrs, { class: node.state.expanded === Expansion.closed ? undefined : 'hs_collapsible_expanded', }), [ mithril_1.default('.hs_collapsible_title', { onclick: node.state.toggle }, title), mithril_1.default(`.hs_collapsible_content.hs_scrolly`, { style: `max-height:${maxHeight}; transition: max-height ${node.attrs.transition / 1000}s ease-in-out` }, node.state.expanded === Expansion.closed ? [] : components.map(c => mithril_1.default('', c))) ]); } } exports.Collapsible = Collapsible; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sbGFwc2libGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQ29sbGFwc2libGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBdUNBLHNEQUF1QztBQUd2QyxxQ0FBd0M7QUFFeEMsSUFBSyxTQUtKO0FBTEQsV0FBSyxTQUFTO0lBQ1YsNkNBQVcsQ0FBQTtJQUNYLCtDQUFXLENBQUE7SUFDWCx5Q0FBVyxDQUFBO0lBQ1gsK0NBQVcsQ0FBQTtBQUNmLENBQUMsRUFMSSxTQUFTLEtBQVQsU0FBUyxRQUtiO0FBNEJELE1BQWEsV0FBWSxTQUFRLGVBQU07SUFJbkMsTUFBTSxDQUFDLElBQWtDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFBLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQy9FLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDckIsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtnQkFDekIsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNwQixLQUFLLFNBQVMsQ0FBQyxPQUFPO29CQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO29CQUN4QyxVQUFVLENBQUMsR0FBRSxFQUFFO3dCQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7d0JBQ3ZDLGlCQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2YsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzFCLE1BQU07Z0JBQ1YsS0FBSyxTQUFTLENBQUMs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