use-range-picker.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. var utils = require('../utils.js');
  5. var constants = require('../constants.js');
  6. var useShortcut = require('./use-shortcut.js');
  7. var index = require('../../../../hooks/use-namespace/index.js');
  8. var index$1 = require('../../../../hooks/use-locale/index.js');
  9. var shared = require('@vue/shared');
  10. const useRangePicker = (props, {
  11. defaultValue,
  12. leftDate,
  13. rightDate,
  14. unit,
  15. onParsedValueChanged
  16. }) => {
  17. const { emit } = vue.getCurrentInstance();
  18. const { pickerNs } = vue.inject(constants.ROOT_PICKER_INJECTION_KEY);
  19. const drpNs = index.useNamespace("date-range-picker");
  20. const { t, lang } = index$1.useLocale();
  21. const handleShortcutClick = useShortcut.useShortcut(lang);
  22. const minDate = vue.ref();
  23. const maxDate = vue.ref();
  24. const rangeState = vue.ref({
  25. endDate: null,
  26. selecting: false
  27. });
  28. const handleChangeRange = (val) => {
  29. rangeState.value = val;
  30. };
  31. const handleRangeConfirm = (visible = false) => {
  32. const _minDate = vue.unref(minDate);
  33. const _maxDate = vue.unref(maxDate);
  34. if (utils.isValidRange([_minDate, _maxDate])) {
  35. emit("pick", [_minDate, _maxDate], visible);
  36. }
  37. };
  38. const onSelect = (selecting) => {
  39. rangeState.value.selecting = selecting;
  40. if (!selecting) {
  41. rangeState.value.endDate = null;
  42. }
  43. };
  44. const onReset = (parsedValue) => {
  45. if (shared.isArray(parsedValue) && parsedValue.length === 2) {
  46. const [start, end] = parsedValue;
  47. minDate.value = start;
  48. leftDate.value = start;
  49. maxDate.value = end;
  50. onParsedValueChanged(vue.unref(minDate), vue.unref(maxDate));
  51. } else {
  52. restoreDefault();
  53. }
  54. };
  55. const restoreDefault = () => {
  56. const [start, end] = utils.getDefaultValue(vue.unref(defaultValue), {
  57. lang: vue.unref(lang),
  58. unit,
  59. unlinkPanels: props.unlinkPanels
  60. });
  61. minDate.value = void 0;
  62. maxDate.value = void 0;
  63. leftDate.value = start;
  64. rightDate.value = end;
  65. };
  66. vue.watch(defaultValue, (val) => {
  67. if (val) {
  68. restoreDefault();
  69. }
  70. }, { immediate: true });
  71. vue.watch(() => props.parsedValue, onReset, { immediate: true });
  72. return {
  73. minDate,
  74. maxDate,
  75. rangeState,
  76. lang,
  77. ppNs: pickerNs,
  78. drpNs,
  79. handleChangeRange,
  80. handleRangeConfirm,
  81. handleShortcutClick,
  82. onSelect,
  83. onReset,
  84. t
  85. };
  86. };
  87. exports.useRangePicker = useRangePicker;
  88. //# sourceMappingURL=use-range-picker.js.map