index.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import _extends from "@babel/runtime/helpers/esm/extends";
  2. import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
  3. import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
  4. import * as React from 'react';
  5. import { formatValue, isInRange, isSameYear } from "../../utils/dateUtil";
  6. import { PanelContext, useInfo } from "../context";
  7. import PanelBody from "../PanelBody";
  8. import PanelHeader from "../PanelHeader";
  9. export default function YearPanel(props) {
  10. var prefixCls = props.prefixCls,
  11. locale = props.locale,
  12. generateConfig = props.generateConfig,
  13. pickerValue = props.pickerValue,
  14. disabledDate = props.disabledDate,
  15. onPickerValueChange = props.onPickerValueChange,
  16. onModeChange = props.onModeChange;
  17. var panelPrefixCls = "".concat(prefixCls, "-year-panel");
  18. // ========================== Base ==========================
  19. var _useInfo = useInfo(props, 'year'),
  20. _useInfo2 = _slicedToArray(_useInfo, 1),
  21. info = _useInfo2[0];
  22. var getStartYear = function getStartYear(date) {
  23. var startYear = Math.floor(generateConfig.getYear(date) / 10) * 10;
  24. return generateConfig.setYear(date, startYear);
  25. };
  26. var getEndYear = function getEndYear(date) {
  27. var startYear = getStartYear(date);
  28. return generateConfig.addYear(startYear, 9);
  29. };
  30. var startYearDate = getStartYear(pickerValue);
  31. var endYearDate = getEndYear(pickerValue);
  32. var baseDate = generateConfig.addYear(startYearDate, -1);
  33. // ========================= Cells ==========================
  34. var getCellDate = function getCellDate(date, offset) {
  35. return generateConfig.addYear(date, offset);
  36. };
  37. var getCellText = function getCellText(date) {
  38. return formatValue(date, {
  39. locale: locale,
  40. format: locale.cellYearFormat,
  41. generateConfig: generateConfig
  42. });
  43. };
  44. var getCellClassName = function getCellClassName(date) {
  45. return _defineProperty({}, "".concat(prefixCls, "-cell-in-view"), isSameYear(generateConfig, date, startYearDate) || isSameYear(generateConfig, date, endYearDate) || isInRange(generateConfig, startYearDate, endYearDate, date));
  46. };
  47. // ======================== Disabled ========================
  48. var mergedDisabledDate = disabledDate ? function (currentDate, disabledInfo) {
  49. // Start
  50. var startMonth = generateConfig.setMonth(currentDate, 0);
  51. var startDate = generateConfig.setDate(startMonth, 1);
  52. // End
  53. var endMonth = generateConfig.addYear(startDate, 1);
  54. var endDate = generateConfig.addDate(endMonth, -1);
  55. return disabledDate(startDate, disabledInfo) && disabledDate(endDate, disabledInfo);
  56. } : null;
  57. // ========================= Header =========================
  58. var yearNode = /*#__PURE__*/React.createElement("button", {
  59. type: "button",
  60. key: "decade",
  61. "aria-label": locale.decadeSelect,
  62. onClick: function onClick() {
  63. onModeChange('decade');
  64. },
  65. tabIndex: -1,
  66. className: "".concat(prefixCls, "-decade-btn")
  67. }, formatValue(startYearDate, {
  68. locale: locale,
  69. format: locale.yearFormat,
  70. generateConfig: generateConfig
  71. }), "-", formatValue(endYearDate, {
  72. locale: locale,
  73. format: locale.yearFormat,
  74. generateConfig: generateConfig
  75. }));
  76. // ========================= Render =========================
  77. return /*#__PURE__*/React.createElement(PanelContext.Provider, {
  78. value: info
  79. }, /*#__PURE__*/React.createElement("div", {
  80. className: panelPrefixCls
  81. }, /*#__PURE__*/React.createElement(PanelHeader, {
  82. superOffset: function superOffset(distance) {
  83. return generateConfig.addYear(pickerValue, distance * 10);
  84. },
  85. onChange: onPickerValueChange
  86. // Limitation
  87. ,
  88. getStart: getStartYear,
  89. getEnd: getEndYear
  90. }, yearNode), /*#__PURE__*/React.createElement(PanelBody, _extends({}, props, {
  91. disabledDate: mergedDisabledDate,
  92. titleFormat: locale.fieldYearFormat,
  93. colNum: 3,
  94. rowNum: 4,
  95. baseDate: baseDate
  96. // Body
  97. ,
  98. getCellDate: getCellDate,
  99. getCellText: getCellText,
  100. getCellClassName: getCellClassName
  101. }))));
  102. }