@revolist/revogrid
Version:
Virtual reactive data grid spreadsheet component - RevoGrid.
61 lines (60 loc) • 2.42 kB
JavaScript
/*!
* Built by Revolist OU ❤️
*/
import { h } from "@stencil/core";
import { FilterButton } from "../../plugins/filter/filter.button";
import { SortingSign } from "../../plugins/sorting/sorting.sign";
import { DATA_COL, FOCUS_CLASS, HEADER_CLASS, HEADER_SORTABLE_CLASS, MIN_COL_SIZE, } from "../../utils/consts";
import { HeaderCellRenderer } from "./header-cell-renderer";
const HeaderRenderer = (p) => {
var _a, _b, _c, _d, _e;
const cellClass = {
[HEADER_CLASS]: true,
[HEADER_SORTABLE_CLASS]: !!((_a = p.data) === null || _a === void 0 ? void 0 : _a.sortable),
};
if ((_b = p.data) === null || _b === void 0 ? void 0 : _b.order) {
cellClass[p.data.order] = true;
}
const dataProps = {
[DATA_COL]: p.column.itemIndex,
canResize: p.canResize,
minWidth: ((_c = p.data) === null || _c === void 0 ? void 0 : _c.minSize) || MIN_COL_SIZE,
maxWidth: (_d = p.data) === null || _d === void 0 ? void 0 : _d.maxSize,
active: p.active || ['r'],
class: cellClass,
style: {
width: `${p.column.size}px`,
transform: `translateX(${p.column.start}px)`,
},
onResize: p.onResize,
onDblClick(originalEvent) {
var _a;
(_a = p.onDblClick) === null || _a === void 0 ? void 0 : _a.call(p, {
column: p.data,
index: p.column.itemIndex,
originalEvent,
providers: p.data.providers,
});
},
onClick(originalEvent) {
if (originalEvent.defaultPrevented || !p.onClick) {
return;
}
p.onClick({
column: p.data,
index: p.column.itemIndex,
originalEvent,
providers: p.data.providers,
});
},
};
if (p.range) {
if (p.column.itemIndex >= p.range.x && p.column.itemIndex <= p.range.x1) {
if (typeof dataProps.class === 'object') {
dataProps.class[FOCUS_CLASS] = true;
}
}
}
return (h(HeaderCellRenderer, { data: p.data, props: dataProps, additionalData: p.additionalData }, h(SortingSign, { column: p.data }), p.canFilter && ((_e = p.data) === null || _e === void 0 ? void 0 : _e.filter) !== false ? (h(FilterButton, { column: p.data })) : ('')));
};
export default HeaderRenderer;