index.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  2. import { createVNode as _createVNode } from "vue";
  3. import QuarterHeader from './QuarterHeader';
  4. import QuarterBody from './QuarterBody';
  5. import { createKeydownHandler } from '../../utils/uiUtil';
  6. import useMergeProps from '../../hooks/useMergeProps';
  7. function QuarterPanel(_props) {
  8. const props = useMergeProps(_props);
  9. const {
  10. prefixCls,
  11. operationRef,
  12. onViewDateChange,
  13. generateConfig,
  14. value,
  15. viewDate,
  16. onPanelChange,
  17. onSelect
  18. } = props;
  19. const panelPrefixCls = `${prefixCls}-quarter-panel`;
  20. // ======================= Keyboard =======================
  21. operationRef.value = {
  22. onKeydown: event => createKeydownHandler(event, {
  23. onLeftRight: diff => {
  24. onSelect(generateConfig.addMonth(value || viewDate, diff * 3), 'key');
  25. },
  26. onCtrlLeftRight: diff => {
  27. onSelect(generateConfig.addYear(value || viewDate, diff), 'key');
  28. },
  29. onUpDown: diff => {
  30. onSelect(generateConfig.addYear(value || viewDate, diff), 'key');
  31. }
  32. })
  33. };
  34. // ==================== View Operation ====================
  35. const onYearChange = diff => {
  36. const newDate = generateConfig.addYear(viewDate, diff);
  37. onViewDateChange(newDate);
  38. onPanelChange(null, newDate);
  39. };
  40. return _createVNode("div", {
  41. "class": panelPrefixCls
  42. }, [_createVNode(QuarterHeader, _objectSpread(_objectSpread({}, props), {}, {
  43. "prefixCls": prefixCls,
  44. "onPrevYear": () => {
  45. onYearChange(-1);
  46. },
  47. "onNextYear": () => {
  48. onYearChange(1);
  49. },
  50. "onYearClick": () => {
  51. onPanelChange('year', viewDate);
  52. }
  53. }), null), _createVNode(QuarterBody, _objectSpread(_objectSpread({}, props), {}, {
  54. "prefixCls": prefixCls,
  55. "onSelect": date => {
  56. onSelect(date, 'mouse');
  57. }
  58. }), null)]);
  59. }
  60. QuarterPanel.displayName = 'QuarterPanel';
  61. QuarterPanel.inheritAttrs = false;
  62. export default QuarterPanel;