Footer.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
  2. import classNames from 'classnames';
  3. import * as React from 'react';
  4. import useTimeInfo from "../../hooks/useTimeInfo";
  5. import PickerContext from "../context";
  6. export default function Footer(props) {
  7. var mode = props.mode,
  8. internalMode = props.internalMode,
  9. renderExtraFooter = props.renderExtraFooter,
  10. showNow = props.showNow,
  11. showTime = props.showTime,
  12. onSubmit = props.onSubmit,
  13. onNow = props.onNow,
  14. invalid = props.invalid,
  15. needConfirm = props.needConfirm,
  16. generateConfig = props.generateConfig,
  17. disabledDate = props.disabledDate;
  18. var _React$useContext = React.useContext(PickerContext),
  19. prefixCls = _React$useContext.prefixCls,
  20. locale = _React$useContext.locale,
  21. _React$useContext$but = _React$useContext.button,
  22. Button = _React$useContext$but === void 0 ? 'button' : _React$useContext$but;
  23. // >>> Now
  24. var now = generateConfig.getNow();
  25. var _useTimeInfo = useTimeInfo(generateConfig, showTime, now),
  26. _useTimeInfo2 = _slicedToArray(_useTimeInfo, 1),
  27. getValidTime = _useTimeInfo2[0];
  28. // ======================== Extra =========================
  29. var extraNode = renderExtraFooter === null || renderExtraFooter === void 0 ? void 0 : renderExtraFooter(mode);
  30. // ======================== Ranges ========================
  31. var nowDisabled = disabledDate(now, {
  32. type: mode
  33. });
  34. var onInternalNow = function onInternalNow() {
  35. if (!nowDisabled) {
  36. var validateNow = getValidTime(now);
  37. onNow(validateNow);
  38. }
  39. };
  40. var nowPrefixCls = "".concat(prefixCls, "-now");
  41. var nowBtnPrefixCls = "".concat(nowPrefixCls, "-btn");
  42. var presetNode = showNow && /*#__PURE__*/React.createElement("li", {
  43. className: nowPrefixCls
  44. }, /*#__PURE__*/React.createElement("a", {
  45. className: classNames(nowBtnPrefixCls, nowDisabled && "".concat(nowBtnPrefixCls, "-disabled")),
  46. "aria-disabled": nowDisabled,
  47. onClick: onInternalNow
  48. }, internalMode === 'date' ? locale.today : locale.now));
  49. // >>> OK
  50. var okNode = needConfirm && /*#__PURE__*/React.createElement("li", {
  51. className: "".concat(prefixCls, "-ok")
  52. }, /*#__PURE__*/React.createElement(Button, {
  53. disabled: invalid,
  54. onClick: onSubmit
  55. }, locale.ok));
  56. var rangeNode = (presetNode || okNode) && /*#__PURE__*/React.createElement("ul", {
  57. className: "".concat(prefixCls, "-ranges")
  58. }, presetNode, okNode);
  59. // ======================== Render ========================
  60. if (!extraNode && !rangeNode) {
  61. return null;
  62. }
  63. return /*#__PURE__*/React.createElement("div", {
  64. className: "".concat(prefixCls, "-footer")
  65. }, extraNode && /*#__PURE__*/React.createElement("div", {
  66. className: "".concat(prefixCls, "-footer-extra")
  67. }, extraNode), rangeNode);
  68. }