UNPKG

hswidget

Version:
92 lines 7.85 kB
import { Log } from 'hsutil'; const log = new Log('EditLabel'); import m from "mithril"; import { Popup } from './Popup'; import { Widget } from './Widget'; export class EditLabel extends Widget { onupdate(node) { const dom = node.dom; if (dom && node.state.editable && document.activeElement !== node.dom) { dom.value = node.children || ''; dom.focus(); dom.select(); } } oninit(node) { node.state.editable = false; node.state.blur = (e) => { node.state.editable = false; node.attrs.update(e.target.value); }; node.state.makeEditable = () => { node.state.editable = true; }; node.state.blurIfReturn = (key) => { key.which === 13 ? key.target.blur() : ''; }; } view(node) { const children = node.children.join(','); const html = makeHtml('' + children); const content = children ? m.trust(html) : node.attrs.placeholder ?? 'click to enter'; const spanAttrs = this.attrs(node.attrs, { onclick: node.state.makeEditable }); const inputAttrs = this.attrs(node.attrs, { onblur: node.state.blur, onkeyup: node.state.blurIfReturn }); const def = children ? '' : '.default'; return node.state.editable ? m(`input.hsedit_label`, inputAttrs, '') : m(`span.hsedit_label${def}`, Popup.arm(node.attrs.popup, spanAttrs), content); } } export class EditDate extends EditLabel { oninit(node) { super.oninit(node); node.state.update = node.attrs.update; node.attrs.update = (newValue) => { if (newValue) { const date = new Date(newValue); const result = isNaN(date.getTime()) ? 'invalid date' : date.toDateString().slice(4); node.state.update(result); } else { node.state.update(undefined); } }; } view(node) { let content = node.children; if (!content || content === '') { content = new Date().toDateString(); content = content.slice(4); } return super.view(node); } } let convert; export function makeHtml(content) { async function loadShowdown() { try { log.info(`loading showdown...`); const showdown = await import('showdown'); log.info(`showdown loaded, creating converter...`); const converter = new showdown.Converter({ tables: true, ghCompatibleHeaderId: true, smartIndentationFix: true, takslists: true, strikethrough: true }); convert = converter.makeHtml.bind(converter); } catch (e) { log.warn(`converting '${content}': ${e}`); } } if (convert) { return convert(content); } else { loadShowdown(); return content; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWRpdExhYmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0VkaXRMYWJlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQ0EsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFlLFFBQVEsQ0FBQztBQUFFLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3pFLE9BQU8sQ0FBQyxNQUFxQixTQUFTLENBQUM7QUFDdkMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFhLFNBQVMsQ0FBQztBQUN2QyxPQUFPLEVBQWUsTUFBTSxFQUFjLE1BQU8sVUFBVSxDQUFDO0FBVTVELE1BQU0sT0FBTyxTQUFVLFNBQVEsTUFBTTtJQUtqQyxRQUFRLENBQUMsSUFBcUM7UUFDMUMsTUFBTSxHQUFHLEdBQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUN6QixJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsYUFBYSxLQUFTLElBQUssQ0FBQyxHQUFHLEVBQUU7WUFDeEUsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNoQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWixHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDaEI7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQWdDO1FBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUssRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQTtRQUNELElBQUks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