useRangeDisabled.js 2.8 KB

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