wix-style-react
Version:
60 lines (51 loc) • 1.54 kB
JavaScript
import shallowEqual from 'shallowequal';
import { stVars } from './DataTable.st.css';
export function virtualRowsAreEqual(prevProps, nextProps) {
const {
style: prevStyle,
data: prevData,
index: prevIndex,
...prevRest
} = prevProps;
const {
style: nextStyle,
data: nextData,
index: nextIndex,
...nextRest
} = nextProps;
const { data: nextItemData, ...restNextItemData } = nextData;
const { data: prevItemData, ...restPrevItemData } = prevData;
return (
nextIndex === prevIndex &&
shallowEqual(prevStyle, nextStyle) &&
shallowEqual(prevItemData[prevIndex], nextItemData[nextIndex]) &&
shallowEqual(restPrevItemData, restNextItemData) &&
shallowEqual(prevRest, nextRest)
);
}
const CELL_PADDING = parseInt(stVars.cellHorizontalPadding, 10);
const CELL_EDGE_PADDING = parseInt(stVars.cellHorizontalEdgePadding, 10);
const CELL_EDGE_PADDING_REDUCED_SPACING = parseInt(
stVars.cellHorizontalEdgePaddingReducedSpacing,
10,
);
export const getStickyColumnStyle = (
columns,
column,
reducedSpacingAndImprovedLayout,
) => {
const cellEdgePadding = reducedSpacingAndImprovedLayout
? CELL_EDGE_PADDING_REDUCED_SPACING
: CELL_EDGE_PADDING;
let left = 0;
for (let i = 0; i < columns.length; i++) {
const col = columns[i];
if (col === column) {
break;
}
const horizontalPadding =
i === 0 ? cellEdgePadding + CELL_PADDING : 2 * CELL_PADDING;
left += parseInt(col.width, 10) + horizontalPadding;
}
return { left };
};