UNPKG

hswidget

Version:
71 lines 7.31 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.EditTextarea = void 0; const hsutil_1 = require("hsutil"); const log = new hsutil_1.Log('EditTextarea'); const mithril_1 = __importDefault(require("mithril")); const Popup_1 = require("./Popup"); const Widget_1 = require("./Widget"); const EditLabel_1 = require("./EditLabel"); class EditTextarea extends Widget_1.Widget { oninit(node) { node.state.editable = false; node.state.hasFocus = false; node.state.update = (newValue) => node.attrs.update(newValue); node.state.blur = (e) => { node.state.editable = false; node.state.hasFocus = false; const content = e.target.value; node.state.update(content); }; node.state.toggleEditable = () => node.state.editable = !node.state.editable; node.state.adjustTextAreaHeight = (dom) => { if (dom && dom.classList) { while (!dom.classList.contains('hsedit_textarea')) { dom = dom.parentElement; } const scHeight = dom.scrollHeight; const height = parseInt(window.getComputedStyle(dom).height); const h = Math.max(height, scHeight); dom.style.height = h > 0 ? `${h}px` : 'auto'; const listRow = dom.parentElement.parentElement; if (listRow.classList.contains('hsedit_list_row')) { listRow.style.height = h > 0 ? `${h + (node.state.editable ? 4 : 0)}px` : 'auto'; } } }; } onupdate(node) { if (node.state.editable) { if (!node.state.hasFocus) { node.dom.value = node.children || ''; node.dom.focus(); node.dom.select(); node.state.hasFocus = true; } node.state.adjustTextAreaHeight(node.dom); } } view(node) { const onEvent = this.attrs(node.attrs, { onclick: node.state.toggleEditable, onupdate: (n) => node.state.adjustTextAreaHeight(n.dom) }); const children = node.children.join(','); const html = EditLabel_1.makeHtml('' + children).replace(/\n/g, '<p>'); const content = children ? mithril_1.default.trust(html) : node.attrs.placeholder ?? 'click to enter'; const attrs = () => node.attrs.popup ? Popup_1.Popup.arm(node.attrs.popup, onEvent) : onEvent; const def = children ? '' : '.default'; return node.state.editable ? mithril_1.default(`textarea.hs_edit_textarea`, this.attrs(node.attrs, { wrap: 'physical', onblur: node.state.blur, }), content) : mithril_1.default(`.hs_edit_textarea${def}`, attrs(), content); } } exports.EditTextarea = EditTextarea; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWRpdFRleHRhcmVhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0VkaXRUZXh0YXJlYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFvQ0EsbUNBQXNDO0FBQUUsTUFBTSxHQUFHLEdBQUcsSUFBSSxZQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDNUUsc0RBQXVDO0FBQ3ZDLG1DQUF1QztBQUN2QyxxQ0FDd0M7QUFDeEMsMkNBQTJDO0FBUzNDLE1BQWEsWUFBYSxTQUFRLGVBQU07SUFPcEMsTUFBTSxDQUFDLElBQW1DO1FBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxRQUFlLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBTyxFQUFFLEVBQUU7WUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUM1QixNQUFNLE9BQU8sR0FBdUIsQ0FBQyxDQUFDLE1BQU8sQ0FBQyxLQUFLLENBQUM7WUFDcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFBO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUM3RSxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixH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