@shopify/polaris
Version:
Shopify’s product component library
26 lines (25 loc) • 1.25 kB
JavaScript
export function measureColumn(tableData) {
return function (column, index) {
const { firstVisibleColumnIndex, tableLeftVisibleEdge: tableStart, tableRightVisibleEdge: tableEnd, } = tableData;
const leftEdge = column.offsetLeft;
const rightEdge = leftEdge + column.offsetWidth;
const isVisibleLeft = isEdgeVisible(leftEdge, tableStart, tableEnd);
const isVisibleRight = isEdgeVisible(rightEdge, tableStart, tableEnd);
const isVisible = isVisibleLeft || isVisibleRight;
if (isVisible) {
tableData.firstVisibleColumnIndex = Math.min(firstVisibleColumnIndex, index);
}
return { leftEdge, rightEdge, isVisible };
};
}
export function isEdgeVisible(position, start, end) {
const minVisiblePixels = 30;
return (position >= start + minVisiblePixels && position <= end - minVisiblePixels);
}
export function getPrevAndCurrentColumns(tableData, columnData) {
const { firstVisibleColumnIndex } = tableData;
const previousColumnIndex = Math.max(firstVisibleColumnIndex - 1, 0);
const previousColumn = columnData[previousColumnIndex];
const currentColumn = columnData[firstVisibleColumnIndex];
return { previousColumn, currentColumn };
}