es-grid-template
Version:
es-grid-template
81 lines (80 loc) • 2.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.columnRangeHover = columnRangeHover;
var _utils = require("../../utils");
const EMPTY_RANGE = {
start: -1,
end: -1
};
function columnRangeHover(opts = {}) {
const stateKey = 'columnHover';
return function columnRangeHoverStep(pipeline) {
const hoverRange = opts.hoverRange ?? pipeline.getStateAtKey(stateKey) ?? opts.defaultHoverRange ?? EMPTY_RANGE;
const hoverColor = opts.hoverColor ?? 'var(--hover-bgcolor)';
const headerHoverColor = opts.headerHoverColor ?? 'var(--header-hover-bgcolor)';
const onChangeHoverRange = nextColIndexRange => {
pipeline.setStateAtKey(stateKey, nextColIndexRange);
opts.onChangeHoverRange?.(nextColIndexRange);
};
return pipeline.mapColumns((0, _utils.makeRecursiveMapper)((col, {
startIndex,
endIndex
}) => {
const colRange = {
start: startIndex,
end: endIndex
};
const match = colRange.end > hoverRange.start && hoverRange.end > colRange.start;
if (!(0, _utils.isLeafNode)(col)) {
if (headerHoverColor == null) {
return col;
}
return {
...col,
headerCellProps: (0, _utils.mergeCellProps)(col.headerCellProps ?? {}, {
onMouseEnter() {
onChangeHoverRange(colRange);
},
onMouseLeave() {
onChangeHoverRange(EMPTY_RANGE);
},
style: {
'--header-bgcolor': match ? headerHoverColor : undefined
}
})
};
}
const prevGetCellProps = col.getCellProps;
return {
...col,
headerCellProps: (0, _utils.mergeCellProps)(col.headerCellProps ?? {}, {
onMouseEnter() {
onChangeHoverRange(colRange);
},
onMouseLeave() {
onChangeHoverRange(EMPTY_RANGE);
},
style: {
'--header-bgcolor': match ? headerHoverColor : undefined
}
}),
getCellProps(value, record, rowIndex) {
const prevCellProps = prevGetCellProps?.(value, record, rowIndex);
return (0, _utils.mergeCellProps)(prevCellProps ?? {}, {
onMouseEnter() {
onChangeHoverRange(colRange);
},
onMouseLeave() {
onChangeHoverRange(EMPTY_RANGE);
},
style: {
'--bgcolor': match ? hoverColor : undefined
}
});
}
};
}));
};
}