UNPKG

@serenity-is/sleekgrid

Version:

A modern Data Grid / Spreadsheet component

201 lines (197 loc) 8.87 kB
var Slick = Slick || {}; Slick._ = (() => { var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/data/groupitemmetadataprovider.ts var groupitemmetadataprovider_exports = {}; __export(groupitemmetadataprovider_exports, { GroupItemMetadataProvider: () => GroupItemMetadataProvider }); // global-externals:_ var { convertCompatFormatter, Group } = Slick; // src/data/groupitemmetadataprovider.ts var _GroupItemMetadataProvider = class _GroupItemMetadataProvider { constructor(opt) { this.pluginName = "GroupItemMetadataProvider"; this.handleGridClick = (e, args) => { var _a, _b, _c, _d, _e, _f, _g; let grid = (_a = args == null ? void 0 : args.grid) != null ? _a : this.grid; if (!grid) return; var item = grid.getDataItem(args.row); if (!item || !(item instanceof Group) || !this.options.toggleCssClass || !e.target.classList.contains(this.options.toggleCssClass)) return; e.stopImmediatePropagation(); e.preventDefault(); var range = grid.getRenderedRange(); (_c = (_b = grid.getData()).setRefreshHints) == null ? void 0 : _c.call(_b, { ignoreDiffsBefore: range.top, ignoreDiffsAfter: range.bottom + 1 }); if (item.collapsed) (_e = (_d = grid.getData()).expandGroup) == null ? void 0 : _e.call(_d, item.groupingKey); else (_g = (_f = grid.getData()).collapseGroup) == null ? void 0 : _g.call(_f, item.groupingKey); }; this.handleGridKeyDown = (e, args) => { var _a, _b, _c, _d, _e, _f, _g; if (!this.options.enableExpandCollapse || e.key !== " " && e.key !== "-" && e.key !== "+") return; let grid = (_a = args == null ? void 0 : args.grid) != null ? _a : this.grid; if (!grid) return; var activeCell = grid.getActiveCell(); if (!activeCell) return; var item = grid.getDataItem(activeCell.row); if (!item || !(item instanceof Group)) return; e.stopImmediatePropagation(); e.preventDefault(); if (e.key == "+" && !item.collapsed || e.key == "-" && item.collapsed) return; var range = grid.getRenderedRange(); (_c = (_b = grid.getData()).setRefreshHints) == null ? void 0 : _c.call(_b, { ignoreDiffsBefore: range.top, ignoreDiffsAfter: range.bottom + 1 }); if (item.collapsed) (_e = (_d = grid.getData()).expandGroup) == null ? void 0 : _e.call(_d, item.groupingKey); else (_g = (_f = grid.getData()).collapseGroup) == null ? void 0 : _g.call(_f, item.groupingKey); }; this.groupCellPosition = () => { var _a, _b, _c, _d; const result = { cell: 0, colspan: "*" }; if (!this.options.groupRowTotals || !this.grid) { return result; } var cols = this.grid.getColumns(); var col1; for (var idx = 0; idx < cols.length; idx++) { col1 = cols[idx]; if (!((_b = (_a = this.options).hasSummaryType) == null ? void 0 : _b.call(_a, cols[idx]))) { result.cell = idx; break; } } result.colspan = 0; for (var idx = result.cell + 1; idx < cols.length; idx++) { var col2 = cols[idx]; if (!((_d = (_c = this.options).hasSummaryType) == null ? void 0 : _d.call(_c, col2)) && !!(col1 == null ? void 0 : col1.frozen) === !!(col2 == null ? void 0 : col2.frozen)) { result.colspan++; } else break; } result.colspan = Math.max(1, result.colspan); return result; }; this.getGroupRowMetadata = (item) => { const opt = this.options; const gcp = this.groupCellPosition(); const result = { selectable: false, focusable: opt.groupFocusable, cssClasses: opt.groupCssClass + " " + opt.groupLevelPrefix + (item == null ? void 0 : item.level), columns: { [gcp.cell]: { colspan: gcp.colspan, cssClasses: opt.groupCellCssClass, format: opt.groupFormat, editor: null } } }; if (opt.groupRowTotals) result.format = opt.totalsFormat; return result; }; this.getTotalsRowMetadata = (item) => { var _a; const opt = this.options; return { selectable: false, focusable: opt.totalsFocusable, cssClasses: opt.totalsCssClass + " " + opt.groupLevelPrefix + ((_a = item == null ? void 0 : item.group) == null ? void 0 : _a.level), format: opt.totalsFormat, editor: null }; }; var _a, _b, _c, _d; this.options = Object.assign({}, _GroupItemMetadataProvider.defaults, opt); (_b = (_a = this.options).groupFormat) != null ? _b : _a.groupFormat = (opt == null ? void 0 : opt.groupFormatter) ? convertCompatFormatter(opt.groupFormatter) : (ctx) => _GroupItemMetadataProvider.defaultGroupFormat(ctx, this.options); (_d = (_c = this.options).totalsFormat) != null ? _d : _c.totalsFormat = (opt == null ? void 0 : opt.totalsFormatter) ? convertCompatFormatter(opt.totalsFormatter) : (ctx) => _GroupItemMetadataProvider.defaultTotalsFormat(ctx, this.grid); } static defaultGroupFormat(ctx, opt) { opt != null ? opt : opt = _GroupItemMetadataProvider.defaults; let item = ctx.item; if (!opt.enableExpandCollapse) return item == null ? void 0 : item.title; let indentation = item.level * opt.groupIndentation; return `<span class="${ctx.escape(opt.toggleCssClass + " " + (item.collapsed ? opt.toggleCollapsedCssClass : opt.toggleExpandedCssClass))}" style="margin-left: ${indentation}px"> <span class="${ctx.escape(opt.groupTitleCssClass)}" level="${ctx.escape(item.level)}">${item.title}</span>`; } static defaultTotalsFormat(ctx, grid) { var _a, _b, _c, _d, _e, _f; var item = ctx.item; if (!item.__groupTotals && item.totals) item = item.totals; return (_f = (_e = (_b = (_a = ctx.column) == null ? void 0 : _a.groupTotalsFormatter) == null ? void 0 : _b.call(_a, item, ctx.column)) != null ? _e : (_d = (_c = grid != null ? grid : ctx.grid) == null ? void 0 : _c.groupTotalsFormatter) == null ? void 0 : _d.call(_c, item, ctx.column)) != null ? _f : ""; } init(grid) { this.grid = grid; grid.onClick.subscribe(this.handleGridClick); grid.onKeyDown.subscribe(this.handleGridKeyDown); } destroy() { var _a, _b; if (this.grid) { (_a = this.grid.onClick) == null ? void 0 : _a.unsubscribe(this.handleGridClick); (_b = this.grid.onKeyDown) == null ? void 0 : _b.unsubscribe(this.handleGridKeyDown); } } getOptions() { return this.options; } setOptions(value) { Object.assign(this.options, value); } }; _GroupItemMetadataProvider.defaults = { enableExpandCollapse: true, groupCellCssClass: "slick-group-cell", groupCssClass: "slick-group", groupFocusable: true, groupIndentation: 15, groupLevelPrefix: "slick-group-level-", groupTitleCssClass: "slick-group-title", hasSummaryType: (col) => col.summaryType && col.summaryType != -1, totalsCssClass: "slick-group-totals", toggleCssClass: "slick-group-toggle", toggleCollapsedCssClass: "collapsed", toggleExpandedCssClass: "expanded", totalsFocusable: false }; var GroupItemMetadataProvider = _GroupItemMetadataProvider; return __toCommonJS(groupitemmetadataprovider_exports); })(); ["Data", "Editors", "Formatters", "Plugins"].forEach(ns => Slick._[ns] && (Slick[ns] = Object.assign(Slick[ns] || {}, Slick._[ns])) && delete Slick._[ns]); Object.assign(Slick, Slick._); delete Slick._; Slick.Data = Slick.Data || {}; Slick.Data.GroupItemMetadataProvider = Slick.GroupItemMetadataProvider; //# sourceMappingURL=slick.groupitemmetadataprovider.js.map