fixUtil.js 1.7 KB

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