useCellClassName.js 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = useCellClassName;
  6. var _dateUtil = require("../utils/dateUtil");
  7. var _miscUtil = require("../utils/miscUtil");
  8. function useCellClassName(_ref) {
  9. let {
  10. cellPrefixCls,
  11. generateConfig,
  12. rangedValue,
  13. hoverRangedValue,
  14. isInView,
  15. isSameCell,
  16. offsetCell,
  17. today,
  18. value
  19. } = _ref;
  20. function getClassName(currentDate) {
  21. const prevDate = offsetCell(currentDate, -1);
  22. const nextDate = offsetCell(currentDate, 1);
  23. const rangeStart = (0, _miscUtil.getValue)(rangedValue, 0);
  24. const rangeEnd = (0, _miscUtil.getValue)(rangedValue, 1);
  25. const hoverStart = (0, _miscUtil.getValue)(hoverRangedValue, 0);
  26. const hoverEnd = (0, _miscUtil.getValue)(hoverRangedValue, 1);
  27. const isRangeHovered = (0, _dateUtil.isInRange)(generateConfig, hoverStart, hoverEnd, currentDate);
  28. function isRangeStart(date) {
  29. return isSameCell(rangeStart, date);
  30. }
  31. function isRangeEnd(date) {
  32. return isSameCell(rangeEnd, date);
  33. }
  34. const isHoverStart = isSameCell(hoverStart, currentDate);
  35. const isHoverEnd = isSameCell(hoverEnd, currentDate);
  36. const isHoverEdgeStart = (isRangeHovered || isHoverEnd) && (!isInView(prevDate) || isRangeEnd(prevDate));
  37. const isHoverEdgeEnd = (isRangeHovered || isHoverStart) && (!isInView(nextDate) || isRangeStart(nextDate));
  38. return {
  39. // In view
  40. [`${cellPrefixCls}-in-view`]: isInView(currentDate),
  41. // Range
  42. [`${cellPrefixCls}-in-range`]: (0, _dateUtil.isInRange)(generateConfig, rangeStart, rangeEnd, currentDate),
  43. [`${cellPrefixCls}-range-start`]: isRangeStart(currentDate),
  44. [`${cellPrefixCls}-range-end`]: isRangeEnd(currentDate),
  45. [`${cellPrefixCls}-range-start-single`]: isRangeStart(currentDate) && !rangeEnd,
  46. [`${cellPrefixCls}-range-end-single`]: isRangeEnd(currentDate) && !rangeStart,
  47. [`${cellPrefixCls}-range-start-near-hover`]: isRangeStart(currentDate) && (isSameCell(prevDate, hoverStart) || (0, _dateUtil.isInRange)(generateConfig, hoverStart, hoverEnd, prevDate)),
  48. [`${cellPrefixCls}-range-end-near-hover`]: isRangeEnd(currentDate) && (isSameCell(nextDate, hoverEnd) || (0, _dateUtil.isInRange)(generateConfig, hoverStart, hoverEnd, nextDate)),
  49. // Range Hover
  50. [`${cellPrefixCls}-range-hover`]: isRangeHovered,
  51. [`${cellPrefixCls}-range-hover-start`]: isHoverStart,
  52. [`${cellPrefixCls}-range-hover-end`]: isHoverEnd,
  53. // Range Edge
  54. [`${cellPrefixCls}-range-hover-edge-start`]: isHoverEdgeStart,
  55. [`${cellPrefixCls}-range-hover-edge-end`]: isHoverEdgeEnd,
  56. [`${cellPrefixCls}-range-hover-edge-start-near-range`]: isHoverEdgeStart && isSameCell(prevDate, rangeEnd),
  57. [`${cellPrefixCls}-range-hover-edge-end-near-range`]: isHoverEdgeEnd && isSameCell(nextDate, rangeStart),
  58. // Others
  59. [`${cellPrefixCls}-today`]: isSameCell(today, currentDate),
  60. [`${cellPrefixCls}-selected`]: isSameCell(value, currentDate)
  61. };
  62. }
  63. return getClassName;
  64. }