fixUtil.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. export function getCellFixedInfo(colStart, colEnd, columns, stickyOffsets, direction) {
  2. const startColumn = columns[colStart] || {};
  3. const endColumn = columns[colEnd] || {};
  4. let fixLeft;
  5. let fixRight;
  6. if (startColumn.fixed === 'left') {
  7. fixLeft = stickyOffsets.left[colStart];
  8. } else if (endColumn.fixed === 'right') {
  9. fixRight = stickyOffsets.right[colEnd];
  10. }
  11. let lastFixLeft = false;
  12. let firstFixRight = false;
  13. let lastFixRight = false;
  14. let firstFixLeft = false;
  15. const nextColumn = columns[colEnd + 1];
  16. const prevColumn = columns[colStart - 1];
  17. if (direction === 'rtl') {
  18. if (fixLeft !== undefined) {
  19. const prevFixLeft = prevColumn && prevColumn.fixed === 'left';
  20. firstFixLeft = !prevFixLeft;
  21. } else if (fixRight !== undefined) {
  22. const nextFixRight = nextColumn && nextColumn.fixed === 'right';
  23. lastFixRight = !nextFixRight;
  24. }
  25. } else if (fixLeft !== undefined) {
  26. const nextFixLeft = nextColumn && nextColumn.fixed === 'left';
  27. lastFixLeft = !nextFixLeft;
  28. } else if (fixRight !== undefined) {
  29. const prevFixRight = prevColumn && prevColumn.fixed === 'right';
  30. firstFixRight = !prevFixRight;
  31. }
  32. return {
  33. fixLeft,
  34. fixRight,
  35. lastFixLeft,
  36. firstFixRight,
  37. lastFixRight,
  38. firstFixLeft,
  39. isSticky: stickyOffsets.isSticky
  40. };
  41. }