useRangeDisabled.js 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import { getValue } from '../utils/miscUtil';
  2. import { isSameDate, getQuarter } from '../utils/dateUtil';
  3. import { computed } from 'vue';
  4. export default function useRangeDisabled(_ref, openRecordsRef) {
  5. var picker = _ref.picker,
  6. locale = _ref.locale,
  7. selectedValue = _ref.selectedValue,
  8. disabledDate = _ref.disabledDate,
  9. disabled = _ref.disabled,
  10. generateConfig = _ref.generateConfig;
  11. var startDate = computed(function () {
  12. return getValue(selectedValue.value, 0);
  13. });
  14. var endDate = computed(function () {
  15. return getValue(selectedValue.value, 1);
  16. });
  17. function weekFirstDate(date) {
  18. return generateConfig.value.locale.getWeekFirstDate(locale.value.locale, date);
  19. }
  20. function monthNumber(date) {
  21. var year = generateConfig.value.getYear(date);
  22. var month = generateConfig.value.getMonth(date);
  23. return year * 100 + month;
  24. }
  25. function quarterNumber(date) {
  26. var year = generateConfig.value.getYear(date);
  27. var quarter = getQuarter(generateConfig.value, date);
  28. return year * 10 + quarter;
  29. }
  30. var disabledStartDate = function disabledStartDate(date) {
  31. var _disabledDate$value;
  32. if (disabledDate && disabledDate !== null && disabledDate !== void 0 && (_disabledDate$value = disabledDate.value) !== null && _disabledDate$value !== void 0 && _disabledDate$value.call(disabledDate, date)) {
  33. return true;
  34. }
  35. // Disabled range
  36. if (disabled[1] && endDate) {
  37. return !isSameDate(generateConfig.value, date, endDate.value) && generateConfig.value.isAfter(date, endDate.value);
  38. }
  39. // Disabled part
  40. if (openRecordsRef.value[1] && endDate.value) {
  41. switch (picker.value) {
  42. case 'quarter':
  43. return quarterNumber(date) > quarterNumber(endDate.value);
  44. case 'month':
  45. return monthNumber(date) > monthNumber(endDate.value);
  46. case 'week':
  47. return weekFirstDate(date) > weekFirstDate(endDate.value);
  48. default:
  49. return !isSameDate(generateConfig.value, date, endDate.value) && generateConfig.value.isAfter(date, endDate.value);
  50. }
  51. }
  52. return false;
  53. };
  54. var disabledEndDate = function disabledEndDate(date) {
  55. var _disabledDate$value2;
  56. if ((_disabledDate$value2 = disabledDate.value) !== null && _disabledDate$value2 !== void 0 && _disabledDate$value2.call(disabledDate, date)) {
  57. return true;
  58. }
  59. // Disabled range
  60. if (disabled[0] && startDate) {
  61. return !isSameDate(generateConfig.value, date, endDate.value) && generateConfig.value.isAfter(startDate.value, date);
  62. }
  63. // Disabled part
  64. if (openRecordsRef.value[0] && startDate.value) {
  65. switch (picker.value) {
  66. case 'quarter':
  67. return quarterNumber(date) < quarterNumber(startDate.value);
  68. case 'month':
  69. return monthNumber(date) < monthNumber(startDate.value);
  70. case 'week':
  71. return weekFirstDate(date) < weekFirstDate(startDate.value);
  72. default:
  73. return !isSameDate(generateConfig.value, date, startDate.value) && generateConfig.value.isAfter(startDate.value, date);
  74. }
  75. }
  76. return false;
  77. };
  78. return [disabledStartDate, disabledEndDate];
  79. }