index.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = void 0;
  7. var _vue = require("vue");
  8. var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  9. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  10. var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
  11. var _DatePanel = _interopRequireDefault(require("../DatePanel"));
  12. var _TimePanel = _interopRequireDefault(require("../TimePanel"));
  13. var _miscUtil = require("../../utils/miscUtil");
  14. var _timeUtil = require("../../utils/timeUtil");
  15. var _KeyCode = _interopRequireDefault(require("../../../_util/KeyCode"));
  16. var _classNames2 = _interopRequireDefault(require("../../../_util/classNames"));
  17. var _useMergeProps = _interopRequireDefault(require("../../hooks/useMergeProps"));
  18. var ACTIVE_PANEL = (0, _miscUtil.tuple)('date', 'time');
  19. function DatetimePanel(_props) {
  20. var props = (0, _useMergeProps.default)(_props);
  21. var prefixCls = props.prefixCls,
  22. operationRef = props.operationRef,
  23. generateConfig = props.generateConfig,
  24. value = props.value,
  25. defaultValue = props.defaultValue,
  26. disabledTime = props.disabledTime,
  27. showTime = props.showTime,
  28. onSelect = props.onSelect;
  29. var panelPrefixCls = "".concat(prefixCls, "-datetime-panel");
  30. var activePanel = (0, _vue.ref)(null);
  31. var dateOperationRef = (0, _vue.ref)({});
  32. var timeOperationRef = (0, _vue.ref)({});
  33. var timeProps = (0, _typeof2.default)(showTime) === 'object' ? (0, _objectSpread2.default)({}, showTime) : {};
  34. // ======================= Keyboard =======================
  35. function getNextActive(offset) {
  36. var activeIndex = ACTIVE_PANEL.indexOf(activePanel.value) + offset;
  37. var nextActivePanel = ACTIVE_PANEL[activeIndex] || null;
  38. return nextActivePanel;
  39. }
  40. var onBlur = function onBlur(e) {
  41. if (timeOperationRef.value.onBlur) {
  42. timeOperationRef.value.onBlur(e);
  43. }
  44. activePanel.value = null;
  45. };
  46. operationRef.value = {
  47. onKeydown: function onKeydown(event) {
  48. // Switch active panel
  49. if (event.which === _KeyCode.default.TAB) {
  50. var nextActivePanel = getNextActive(event.shiftKey ? -1 : 1);
  51. activePanel.value = nextActivePanel;
  52. if (nextActivePanel) {
  53. event.preventDefault();
  54. }
  55. return true;
  56. }
  57. // Operate on current active panel
  58. if (activePanel.value) {
  59. var _ref = activePanel.value === 'date' ? dateOperationRef : timeOperationRef;
  60. if (_ref.value && _ref.value.onKeydown) {
  61. _ref.value.onKeydown(event);
  62. }
  63. return true;
  64. }
  65. // Switch first active panel if operate without panel
  66. if ([_KeyCode.default.LEFT, _KeyCode.default.RIGHT, _KeyCode.default.UP, _KeyCode.default.DOWN].includes(event.which)) {
  67. activePanel.value = 'date';
  68. return true;
  69. }
  70. return false;
  71. },
  72. onBlur: onBlur,
  73. onClose: onBlur
  74. };
  75. // ======================== Events ========================
  76. var onInternalSelect = function onInternalSelect(date, source) {
  77. var selectedDate = date;
  78. if (source === 'date' && !value && timeProps.defaultValue) {
  79. // Date with time defaultValue
  80. selectedDate = generateConfig.setHour(selectedDate, generateConfig.getHour(timeProps.defaultValue));
  81. selectedDate = generateConfig.setMinute(selectedDate, generateConfig.getMinute(timeProps.defaultValue));
  82. selectedDate = generateConfig.setSecond(selectedDate, generateConfig.getSecond(timeProps.defaultValue));
  83. } else if (source === 'time' && !value && defaultValue) {
  84. selectedDate = generateConfig.setYear(selectedDate, generateConfig.getYear(defaultValue));
  85. selectedDate = generateConfig.setMonth(selectedDate, generateConfig.getMonth(defaultValue));
  86. selectedDate = generateConfig.setDate(selectedDate, generateConfig.getDate(defaultValue));
  87. }
  88. if (onSelect) {
  89. onSelect(selectedDate, 'mouse');
  90. }
  91. };
  92. // ======================== Render ========================
  93. var disabledTimes = disabledTime ? disabledTime(value || null) : {};
  94. return (0, _vue.createVNode)("div", {
  95. "class": (0, _classNames2.default)(panelPrefixCls, (0, _defineProperty2.default)({}, "".concat(panelPrefixCls, "-active"), activePanel.value))
  96. }, [(0, _vue.createVNode)(_DatePanel.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
  97. "operationRef": dateOperationRef,
  98. "active": activePanel.value === 'date',
  99. "onSelect": function onSelect(date) {
  100. onInternalSelect((0, _timeUtil.setDateTime)(generateConfig, date, !value && (0, _typeof2.default)(showTime) === 'object' ? showTime.defaultValue : null), 'date');
  101. }
  102. }), null), (0, _vue.createVNode)(_TimePanel.default, (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
  103. "format": undefined
  104. }, timeProps), disabledTimes), {}, {
  105. "disabledTime": null,
  106. "defaultValue": undefined,
  107. "operationRef": timeOperationRef,
  108. "active": activePanel.value === 'time',
  109. "onSelect": function onSelect(date) {
  110. onInternalSelect(date, 'time');
  111. }
  112. }), null)]);
  113. }
  114. DatetimePanel.displayName = 'DatetimePanel';
  115. DatetimePanel.inheritAttrs = false;
  116. var _default = DatetimePanel;
  117. exports.default = _default;