@shopify/polaris
Version:
Shopify’s admin product component library
44 lines (42 loc) • 1.41 kB
JavaScript
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, 'left');
const isVisibleRight = isEdgeVisible(rightEdge, tableStart, tableEnd, 'right');
const isVisible = isVisibleLeft || isVisibleRight;
const width = column.offsetWidth;
if (isVisible) {
tableData.firstVisibleColumnIndex = Math.min(firstVisibleColumnIndex, index);
}
return {
leftEdge,
rightEdge,
isVisible,
width,
index
};
};
}
function isEdgeVisible(position, start, end, edgeType) {
const minVisiblePixels = 30;
return position >= start + (edgeType === 'left' ? 0 : minVisiblePixels) && position <= end - minVisiblePixels;
}
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
};
}
export { getPrevAndCurrentColumns, isEdgeVisible, measureColumn };