@revolist/revogrid
Version:
Virtual reactive data grid spreadsheet component - RevoGrid.
103 lines (96 loc) • 4.72 kB
JavaScript
/*!
* Built by Revolist OU ❤️
*/
;
var index = require('./index-Dq8Xzj5l.js');
var dimension_helpers = require('./dimension.helpers-CaIsYC99.js');
var column_service = require('./column.service-DvQDqxxx.js');
const SortingSign = ({ column }) => {
var _a;
return index.h("i", { class: (_a = column === null || column === void 0 ? void 0 : column.order) !== null && _a !== void 0 ? _a : 'sort-off' });
};
const PADDING_DEPTH = 10;
const RowRenderer = ({ rowClass, index: index$1, size, start, depth, groupingLevel }, cells) => {
const props = Object.assign({ [dimension_helpers.DATA_ROW]: index$1 }, (typeof groupingLevel === 'number'
? { 'data-level': groupingLevel }
: {}));
return (index.h("div", Object.assign({}, props, { class: `rgRow ${rowClass || ''}`, style: {
height: `${size}px`,
transform: `translateY(${start}px)`,
paddingLeft: depth ? `${PADDING_DEPTH * depth}px` : undefined,
} }), cells));
};
function expandEvent(e, model, virtualIndex) {
var _a;
const event = new CustomEvent(column_service.GROUP_EXPAND_EVENT, {
detail: {
model,
virtualIndex,
},
cancelable: true,
bubbles: true,
});
(_a = e.target) === null || _a === void 0 ? void 0 : _a.dispatchEvent(event);
}
const GroupingRowRenderer = (props) => {
const { model, itemIndex, hasExpand, groupingCustomRenderer } = props;
const name = model[column_service.PSEUDO_GROUP_ITEM];
const expanded = model[column_service.GROUP_EXPANDED];
const depth = parseInt(model[column_service.GROUP_DEPTH], 10) || 0;
if (groupingCustomRenderer) {
return (index.h(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }), index.h("div", { onClick: e => expandEvent(e, model, itemIndex) }, groupingCustomRenderer(index.h, Object.assign(Object.assign({}, props), { colType: props.providers.colType, name,
expanded,
depth })))));
}
return (index.h(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }), hasExpand && [
index.h("button", { class: { [column_service.GROUP_EXPAND_BTN]: true }, onClick: e => expandEvent(e, model, itemIndex) }, expandSvgIconVNode(expanded)),
name,
]));
};
const expandSvgIconVNode = (expanded = false) => {
return (index.h("svg", { "aria-hidden": "true", style: { transform: `rotate(${!expanded ? -90 : 0}deg)` }, focusable: "false", viewBox: "0 0 448 512" }, index.h("path", { fill: "currentColor", d: "M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z" })));
};
function renderCell(v) {
var _a;
const els = [];
// #region Custom cell
const template = (_a = v.schemaModel.column) === null || _a === void 0 ? void 0 : _a.cellTemplate;
if (template) {
els.push(template(index.h, v.schemaModel, v.additionalData));
}
// #endregion
// #region Regular cell
else {
if (!v.schemaModel.column) {
// something is wrong with data
if (index.Build === null || index.Build === void 0 ? void 0 : index.Build.isDev) {
console.error('Investigate column problem.', v.schemaModel);
}
return '';
}
// Row drag
if (v.schemaModel.column.rowDrag &&
column_service.isRowDragService(v.schemaModel.column.rowDrag, v.schemaModel)) {
els.push(index.h("span", { class: dimension_helpers.DRAGGABLE_CLASS, onMouseDown: originalEvent => {
var _a;
return (_a = v.dragStartCell) === null || _a === void 0 ? void 0 : _a.emit({
originalEvent,
model: v.schemaModel,
});
} }, index.h("span", { class: dimension_helpers.DRAG_ICON_CLASS })));
}
els.push(`${column_service.getCellDataParsed(v.schemaModel.model, v.schemaModel.column)}`);
}
return els;
}
const CellRenderer = ({ renderProps, cellProps, }) => {
const render = renderCell.bind(null, renderProps);
return (index.h("div", Object.assign({}, cellProps, { redraw: render }), render()));
};
exports.CellRenderer = CellRenderer;
exports.GroupingRowRenderer = GroupingRowRenderer;
exports.PADDING_DEPTH = PADDING_DEPTH;
exports.RowRenderer = RowRenderer;
exports.SortingSign = SortingSign;
exports.expandEvent = expandEvent;
exports.expandSvgIconVNode = expandSvgIconVNode;