index.js 2.2 KB

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