hswidget
Version:
Helpful Scripts UI widgets
74 lines • 6.99 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.EditList = void 0;
const mithril_1 = __importDefault(require("mithril"));
const hsutil_1 = require("hsutil");
const log = new hsutil_1.Log('EditList');
const EditLabel_1 = require("./EditLabel");
const Collapsible_1 = require("./Collapsible");
const Widget_1 = require("./Widget");
const defIsEmpty = (row) => (!row || !row.length || row === '') ? true : false;
const defaultRender = (rows) => {
return (row, rowNum) => {
if (row.map) {
return row.map((e, i) => mithril_1.default(EditLabel_1.EditLabel, {
placeholder: 'add...',
update: (newValue) => row[i] = newValue
}, e));
}
else if (typeof row === 'object') {
return Object.keys(row).map((e) => mithril_1.default(EditLabel_1.EditLabel, {
placeholder: 'add...',
update: (newValue) => row[e] = newValue
}, row[e]));
}
else {
return mithril_1.default(EditLabel_1.EditLabel, {
placeholder: 'add...',
update: (newValue) => rows[rowNum] = newValue
}, row);
}
};
};
function expand(rows, def, isEmpty) {
if (rows) {
const lastRowIndex = rows.length - 1;
if (lastRowIndex < 0 || rows[lastRowIndex] === undefined || !isEmpty(rows[lastRowIndex])) {
rows.push(def);
}
}
}
class EditList extends Widget_1.Widget {
view(node) {
const sort = node.attrs.sort || (() => 0);
const rows = node.attrs.rows ?? node?.children;
const isEmpty = node.attrs.isEmpty || defIsEmpty;
const isExpanded = node.attrs.isExpanded || false;
const render = node.attrs.rowRender || defaultRender(rows);
const def = node.attrs.defaultRow === undefined ? '' : node.attrs.defaultRow;
const expandRows = node.attrs.expand || expand;
const collapsible = node.attrs.collapsible === undefined ? true : node.attrs.collapsible;
if (!rows) {
log.warn(`EditList rows array is missing`);
}
if (!rows || !rows.map) {
log.warn(`EditList rows must be an array`);
}
expandRows(rows, def, isEmpty);
const content = rows.sort(sort).map((row, i) => render(row, i));
if (node.attrs.header) {
content.unshift(mithril_1.default('.header', node.attrs.header));
}
return collapsible ?
mithril_1.default(Collapsible_1.Collapsible, this.attrs(node.attrs, {
class: `hs_edit_list`,
isExpanded: isExpanded,
}), content)
: mithril_1.default(`.hs_edit_list`, this.attrs(node.attrs, {}), content);
}
}
exports.EditList = EditList;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWRpdExpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRWRpdExpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBbUNBLHNEQUF3QjtBQUN4QixtQ0FBc0M7QUFBRSxNQUFNLEdBQUcsR0FBRyxJQUFJLFlBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN4RSwyQ0FBMkM7QUFDM0MsK0NBQTZDO0FBQzdDLHFDQUF3QztBQWV4QyxNQUFNLFVBQVUsR0FBVSxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxLQUFHLEVBQUUsQ0FBQyxDQUFBLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQU8zRixNQUFNLGFBQWEsR0FBRyxDQUFDLElBQWMsRUFBWSxFQUFFO0lBQy9DLE9BQU8sQ0FBQyxHQUFXLEVBQUUsTUFBYSxFQUFhLEVBQUU7UUFDN0MsSUFBbUIsR0FBSSxDQUFDLEdBQUcsRUFBRTtZQUN6QixPQUFzQixHQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBUSxFQUFFLENBQVEsRUFBRSxFQUFFLENBQUMsaUJBQUMsQ0FBQyxxQkFBUyxFQUFFO2dCQUNoRSxXQUFXLEVBQUUsUUFBUTtnQkFDckIsTUFBTSxFQUFFLENBQUMsUUFBZSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUTthQUNqRCxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDVjthQUFNLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO1lBQ2hDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFRLEVBQUUsRUFBRSxDQUFDLGlCQUFDLENBQUMscUJBQVMsRUFBRTtnQkFDbkQsV0FBVyxFQUFFLFFBQVE7Z0JBQ3JCLE1BQU0sRUFBRSxDQUFD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