useRangeDisabledDate.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  2. import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
  3. import { isSame } from "../../utils/dateUtil";
  4. import { getFromDate } from "../../utils/miscUtil";
  5. /**
  6. * RangePicker need additional logic to handle the `disabled` case. e.g.
  7. * [disabled, enabled] should end date not before start date
  8. */
  9. export default function useRangeDisabledDate(values, disabled, activeIndexList, generateConfig, locale, disabledDate) {
  10. var activeIndex = activeIndexList[activeIndexList.length - 1];
  11. var rangeDisabledDate = function rangeDisabledDate(date, info) {
  12. var _values = _slicedToArray(values, 2),
  13. start = _values[0],
  14. end = _values[1];
  15. var mergedInfo = _objectSpread(_objectSpread({}, info), {}, {
  16. from: getFromDate(values, activeIndexList)
  17. });
  18. // ============================ Disabled ============================
  19. // Should not select days before the start date
  20. if (activeIndex === 1 && disabled[0] && start &&
  21. // Same date isOK
  22. !isSame(generateConfig, locale, start, date, mergedInfo.type) &&
  23. // Before start date
  24. generateConfig.isAfter(start, date)) {
  25. return true;
  26. }
  27. // Should not select days after the end date
  28. if (activeIndex === 0 && disabled[1] && end &&
  29. // Same date isOK
  30. !isSame(generateConfig, locale, end, date, mergedInfo.type) &&
  31. // After end date
  32. generateConfig.isAfter(date, end)) {
  33. return true;
  34. }
  35. // ============================= Origin =============================
  36. return disabledDate === null || disabledDate === void 0 ? void 0 : disabledDate(date, mergedInfo);
  37. };
  38. return rangeDisabledDate;
  39. }