index.js 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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 } from "../../utils/dateUtil";
  6. import { PanelContext, useInfo } from "../context";
  7. import PanelBody from "../PanelBody";
  8. import PanelHeader from "../PanelHeader";
  9. export default function MonthPanel(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, "-month-panel");
  18. // ========================== Base ==========================
  19. var _useInfo = useInfo(props, 'month'),
  20. _useInfo2 = _slicedToArray(_useInfo, 1),
  21. info = _useInfo2[0];
  22. var baseDate = generateConfig.setMonth(pickerValue, 0);
  23. // ========================= Month ==========================
  24. var monthsLocale = locale.shortMonths || (generateConfig.locale.getShortMonths ? generateConfig.locale.getShortMonths(locale.locale) : []);
  25. // ========================= Cells ==========================
  26. var getCellDate = function getCellDate(date, offset) {
  27. return generateConfig.addMonth(date, offset);
  28. };
  29. var getCellText = function getCellText(date) {
  30. var month = generateConfig.getMonth(date);
  31. return locale.monthFormat ? formatValue(date, {
  32. locale: locale,
  33. format: locale.monthFormat,
  34. generateConfig: generateConfig
  35. }) : monthsLocale[month];
  36. };
  37. var getCellClassName = function getCellClassName() {
  38. return _defineProperty({}, "".concat(prefixCls, "-cell-in-view"), true);
  39. };
  40. // ======================== Disabled ========================
  41. var mergedDisabledDate = disabledDate ? function (currentDate, disabledInfo) {
  42. var startDate = generateConfig.setDate(currentDate, 1);
  43. var nextMonthStartDate = generateConfig.setMonth(startDate, generateConfig.getMonth(startDate) + 1);
  44. var endDate = generateConfig.addDate(nextMonthStartDate, -1);
  45. return disabledDate(startDate, disabledInfo) && disabledDate(endDate, disabledInfo);
  46. } : null;
  47. // ========================= Header =========================
  48. var yearNode = /*#__PURE__*/React.createElement("button", {
  49. type: "button",
  50. key: "year",
  51. "aria-label": locale.yearSelect,
  52. onClick: function onClick() {
  53. onModeChange('year');
  54. },
  55. tabIndex: -1,
  56. className: "".concat(prefixCls, "-year-btn")
  57. }, formatValue(pickerValue, {
  58. locale: locale,
  59. format: locale.yearFormat,
  60. generateConfig: generateConfig
  61. }));
  62. // ========================= Render =========================
  63. return /*#__PURE__*/React.createElement(PanelContext.Provider, {
  64. value: info
  65. }, /*#__PURE__*/React.createElement("div", {
  66. className: panelPrefixCls
  67. }, /*#__PURE__*/React.createElement(PanelHeader, {
  68. superOffset: function superOffset(distance) {
  69. return generateConfig.addYear(pickerValue, distance);
  70. },
  71. onChange: onPickerValueChange
  72. // Limitation
  73. ,
  74. getStart: function getStart(date) {
  75. return generateConfig.setMonth(date, 0);
  76. },
  77. getEnd: function getEnd(date) {
  78. return generateConfig.setMonth(date, 11);
  79. }
  80. }, yearNode), /*#__PURE__*/React.createElement(PanelBody, _extends({}, props, {
  81. disabledDate: mergedDisabledDate,
  82. titleFormat: locale.fieldMonthFormat,
  83. colNum: 3,
  84. rowNum: 4,
  85. baseDate: baseDate
  86. // Body
  87. ,
  88. getCellDate: getCellDate,
  89. getCellText: getCellText,
  90. getCellClassName: getCellClassName
  91. }))));
  92. }