PopupPanel.js 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import _extends from "@babel/runtime/helpers/esm/extends";
  2. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  3. import * as React from 'react';
  4. import PickerPanel from "../../PickerPanel";
  5. import { PickerHackContext } from "../../PickerPanel/context";
  6. import PickerContext from "../context";
  7. import { offsetPanelDate } from "../hooks/useRangePickerValue";
  8. export default function PopupPanel(props) {
  9. var picker = props.picker,
  10. multiplePanel = props.multiplePanel,
  11. pickerValue = props.pickerValue,
  12. onPickerValueChange = props.onPickerValueChange,
  13. needConfirm = props.needConfirm,
  14. onSubmit = props.onSubmit,
  15. range = props.range,
  16. hoverValue = props.hoverValue;
  17. var _React$useContext = React.useContext(PickerContext),
  18. prefixCls = _React$useContext.prefixCls,
  19. generateConfig = _React$useContext.generateConfig;
  20. // ======================== Offset ========================
  21. var internalOffsetDate = React.useCallback(function (date, offset) {
  22. return offsetPanelDate(generateConfig, picker, date, offset);
  23. }, [generateConfig, picker]);
  24. var nextPickerValue = React.useMemo(function () {
  25. return internalOffsetDate(pickerValue, 1);
  26. }, [pickerValue, internalOffsetDate]);
  27. // Outside
  28. var onSecondPickerValueChange = function onSecondPickerValueChange(nextDate) {
  29. onPickerValueChange(internalOffsetDate(nextDate, -1));
  30. };
  31. // ======================= Context ========================
  32. var sharedContext = {
  33. onCellDblClick: function onCellDblClick() {
  34. if (needConfirm) {
  35. onSubmit();
  36. }
  37. }
  38. };
  39. var hideHeader = picker === 'time';
  40. // ======================== Props =========================
  41. var pickerProps = _objectSpread(_objectSpread({}, props), {}, {
  42. hoverValue: null,
  43. hoverRangeValue: null,
  44. hideHeader: hideHeader
  45. });
  46. if (range) {
  47. pickerProps.hoverRangeValue = hoverValue;
  48. } else {
  49. pickerProps.hoverValue = hoverValue;
  50. }
  51. // ======================== Render ========================
  52. // Multiple
  53. if (multiplePanel) {
  54. return /*#__PURE__*/React.createElement("div", {
  55. className: "".concat(prefixCls, "-panels")
  56. }, /*#__PURE__*/React.createElement(PickerHackContext.Provider, {
  57. value: _objectSpread(_objectSpread({}, sharedContext), {}, {
  58. hideNext: true
  59. })
  60. }, /*#__PURE__*/React.createElement(PickerPanel, pickerProps)), /*#__PURE__*/React.createElement(PickerHackContext.Provider, {
  61. value: _objectSpread(_objectSpread({}, sharedContext), {}, {
  62. hidePrev: true
  63. })
  64. }, /*#__PURE__*/React.createElement(PickerPanel, _extends({}, pickerProps, {
  65. pickerValue: nextPickerValue,
  66. onPickerValueChange: onSecondPickerValueChange
  67. }))));
  68. }
  69. // Single
  70. return /*#__PURE__*/React.createElement(PickerHackContext.Provider, {
  71. value: _objectSpread({}, sharedContext)
  72. }, /*#__PURE__*/React.createElement(PickerPanel, pickerProps));
  73. }