UNPKG

@oceanbase/ui

Version:

The UI library based on OceanBase Design

639 lines (637 loc) 32.7 kB
var _excluded = ["selects", "value", "defaultValue", "defaultQuickValue", "hasRewind", "hasPlay", "hasSync", "hasForward", "hasZoomOut", "hasTagInPicker", "pastOnly", "simpleMode", "hideYear", "hideSecond", "autoCalcRange", "history", "onChange", "disabledDate", "locale", "size", "stickRangeName", "tooltipProps", "isMoment", "rules", "tip", "autoAdjustOverflow", "overlayClassName", "overlayStyle", "getPopupContainer"]; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } import React, { useEffect, useRef, useState, useImperativeHandle, useMemo } from 'react'; import { Button, DatePicker, Divider, Dropdown, Flex, Menu, Radio, Space, Tooltip, message, theme } from '@oceanbase/design'; import { LeftOutlined, RightOutlined, ZoomOutOutlined, SyncOutlined, ArrowLeftOutlined, CopyOutlined, DeleteOutlined } from '@oceanbase/icons'; import dayjs from 'dayjs'; import { findIndex, isEqual as _isEqual, isNil, noop, omit } from 'lodash'; import moment from 'moment'; import classNames from 'classnames'; import LocaleWrapper from "../locale/LocaleWrapper"; import { getPrefix } from "../_util"; import { CUSTOMIZE, DATE_TIME_FORMAT, NEAR_1_MINUTES, NEAR_30_MINUTES, NEAR_1_HOURS, NEAR_3_HOURS, NEAR_6_HOURS, TODAY, YEAR_DATE_TIME_FORMAT, LAST_3_DAYS, DATE_TIME_SECOND_FORMAT, YEAR_DATE_TIME_SECOND_FORMAT, DATE_TIME_FORMAT_CN, DATE_TIME_SECOND_FORMAT_CN, YEAR_DATE_TIME_FORMAT_CN, YEAR_DATE_TIME_SECOND_FORMAT_CN } from "./constant"; import InternalPickerPanel from "./PickerPanel"; import zhCN from "./locale/zh-CN"; import "./index.less"; import { useClickAway } from 'ahooks'; import { useLocalStorageState } from '@oceanbase/util'; import { jsx as _jsx } from "react/jsx-runtime"; import { jsxs as _jsxs } from "react/jsx-runtime"; var DefaultMaxHistoryCapacity = 20; var prefix = getPrefix('date-ranger'); var Ranger = /*#__PURE__*/React.forwardRef(function (props, ref) { var _selects$; var _props$selects = props.selects, selects = _props$selects === void 0 ? [NEAR_1_MINUTES, NEAR_30_MINUTES, NEAR_1_HOURS, NEAR_3_HOURS, NEAR_6_HOURS, TODAY, LAST_3_DAYS] : _props$selects, value = props.value, defaultValue = props.defaultValue, defaultQuickValue = props.defaultQuickValue, _props$hasRewind = props.hasRewind, hasRewind = _props$hasRewind === void 0 ? true : _props$hasRewind, _props$hasPlay = props.hasPlay, hasPlay = _props$hasPlay === void 0 ? false : _props$hasPlay, _props$hasSync = props.hasSync, hasSync = _props$hasSync === void 0 ? true : _props$hasSync, _props$hasForward = props.hasForward, hasForward = _props$hasForward === void 0 ? true : _props$hasForward, _props$hasZoomOut = props.hasZoomOut, hasZoomOut = _props$hasZoomOut === void 0 ? false : _props$hasZoomOut, _props$hasTagInPicker = props.hasTagInPicker, hasTagInPicker = _props$hasTagInPicker === void 0 ? false : _props$hasTagInPicker, _props$pastOnly = props.pastOnly, pastOnly = _props$pastOnly === void 0 ? false : _props$pastOnly, _props$simpleMode = props.simpleMode, simpleMode = _props$simpleMode === void 0 ? false : _props$simpleMode, _props$hideYear = props.hideYear, hideYear = _props$hideYear === void 0 ? false : _props$hideYear, _props$hideSecond = props.hideSecond, hideSecond = _props$hideSecond === void 0 ? false : _props$hideSecond, _props$autoCalcRange = props.autoCalcRange, autoCalcRange = _props$autoCalcRange === void 0 ? false : _props$autoCalcRange, _props$history = props.history, historyProp = _props$history === void 0 ? false : _props$history, _props$onChange = props.onChange, onChange = _props$onChange === void 0 ? noop : _props$onChange, disabledDate = props.disabledDate, locale = props.locale, size = props.size, _props$stickRangeName = props.stickRangeName, stickRangeName = _props$stickRangeName === void 0 ? false : _props$stickRangeName, tooltipProps = props.tooltipProps, isMomentProps = props.isMoment, rules = props.rules, tip = props.tip, autoAdjustOverflow = props.autoAdjustOverflow, overlayClassName = props.overlayClassName, overlayStyle = props.overlayStyle, getPopupContainer = props.getPopupContainer, rest = _objectWithoutProperties(props, _excluded); var _theme$useToken = theme.useToken(), token = _theme$useToken.token; var isCn = locale.antLocale === 'zh-cn'; var isEN = locale.antLocale === 'en'; // 是否为 moment 时间对象 var isMoment = moment.isMoment(defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue[0]) || moment.isMoment(defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue[1]) || moment.isMoment(value === null || value === void 0 ? void 0 : value[0]) || moment.isMoment(value === null || value === void 0 ? void 0 : value[1]) || isMomentProps; var defaultRangeName = value || defaultValue ? CUSTOMIZE : defaultQuickValue !== null && defaultQuickValue !== void 0 ? defaultQuickValue : selects === null || selects === void 0 || (_selects$ = selects[0]) === null || _selects$ === void 0 ? void 0 : _selects$.name; var _useState = useState(defaultRangeName), _useState2 = _slicedToArray(_useState, 2), rangeName = _useState2[0], setRangeName = _useState2[1]; var _useState3 = useState(function () { var _ref, _selects$find; var initValue = (_ref = value !== null && value !== void 0 ? value : defaultValue) !== null && _ref !== void 0 ? _ref : (_selects$find = selects.find(function (item) { return item.name === defaultRangeName; })) === null || _selects$find === void 0 ? void 0 : _selects$find.range(isMoment ? moment() : dayjs()); if (onChange) { onChange(initValue); } return initValue; }), _useState4 = _slicedToArray(_useState3, 2), innerValue = _useState4[0], setInnerValue = _useState4[1]; var _useState5 = useState(false), _useState6 = _slicedToArray(_useState5, 2), open = _useState6[0], setOpen = _useState6[1]; var _useState7 = useState(false), _useState8 = _slicedToArray(_useState7, 2), tooltipOpen = _useState8[0], setTooltipOpen = _useState8[1]; var _useState9 = useState(false), _useState10 = _slicedToArray(_useState9, 2), backRadioFocused = _useState10[0], setBackRadioFocused = _useState10[1]; var _useState11 = useState(false), _useState12 = _slicedToArray(_useState11, 2), historyMenuVisible = _useState12[0], setHistoryMenuVisible = _useState12[1]; var rangeRef = useRef(null); var popRef = useRef(null); var labelRef = useRef(null); // 没有 selects 时,回退到普通 RangePicker, 当前时间选项为自定义时,应该显示 RangePicker var _useState13 = useState(rangeName !== CUSTOMIZE), _useState14 = _slicedToArray(_useState13, 2), isPlay = _useState14[0], setIsPlay = _useState14[1]; var history = useMemo(function () { if (historyProp) { return { capacity: _typeof(historyProp) === 'object' ? historyProp.capacity : DefaultMaxHistoryCapacity }; } return false; }, [historyProp]); var _useLocalStorageState = useLocalStorageState('ob-design-date-ranger-local-storage-range-history-state', { defaultValue: [], listenStorageChange: true }), _useLocalStorageState2 = _slicedToArray(_useLocalStorageState, 2), rangeHistory = _useLocalStorageState2[0], setRangeHistory = _useLocalStorageState2[1]; var updateRangeHistory = function updateRangeHistory(range) { if (!range) { return; } if (range.length < 2 || !history) { return; } var formattedValue = [range[0].format(YEAR_DATE_TIME_SECOND_FORMAT_CN), range[1].format(YEAR_DATE_TIME_SECOND_FORMAT_CN)]; if (rangeHistory.find(function (item) { return _isEqual(item, formattedValue); })) { return; } var updatedValue = [formattedValue].concat(_toConsumableArray(rangeHistory)); if (updatedValue.length > history.capacity) { updatedValue.splice(0, history.capacity); } setRangeHistory(updatedValue); }; var delRangeHistory = function delRangeHistory(range) { var updatedValue = rangeHistory.filter(function (item) { return !_isEqual(item, range); }); setRangeHistory(updatedValue); }; var compare = function compare(m1, m2) { if (Array.isArray(m1) && !Array.isArray(m2)) return false; if (Array.isArray(m2) && !Array.isArray(m1)) return false; return value[0] === innerValue[0] || value[1] === innerValue[1]; }; useClickAway(function () { closeTooltip(); }, [].concat(_toConsumableArray(!simpleMode || !isPlay ? [rangeRef] : []), [popRef, labelRef])); useEffect(function () { if (isNil(value) && isNil(innerValue)) return; // FIXME: 当前存在值的时候赋空值给组件,不好处理先 workaround 绕过,后面再想一个整体的方案 if (isNil(value) && !isNil(innerValue)) return; var isEqual = compare(value, innerValue); // 前后时间有差异时,进行赋值 if (!isEqual) { setInnerValue(value); if (!stickRangeName) { setRangeName(CUSTOMIZE); } } }, [value, stickRangeName]); var closeTooltip = function closeTooltip() { setOpen(false); setTooltipOpen(false); }; var handleNameChange = function handleNameChange(name) { if (name !== CUSTOMIZE) { closeTooltip(); } setRangeName(name); }; var rangeChange = function rangeChange(range) { setInnerValue(range); onChange(range); updateRangeHistory(range); }; var datePickerChange = function datePickerChange(range) { rangeChange(range); setRangeName(CUSTOMIZE); }; var disabledFuture = function disabledFuture(current) { var futureDay = moment.isMoment(current) ? moment().endOf('day') : dayjs().endOf('day'); // 禁止选择未来日期 return current && futureDay && current > futureDay; }; var startTime = innerValue === null || innerValue === void 0 ? void 0 : innerValue[0]; var endTime = innerValue === null || innerValue === void 0 ? void 0 : innerValue[1]; var differenceMs = endTime === null || endTime === void 0 ? void 0 : endTime.diff(startTime); var differenceSeconds = endTime === null || endTime === void 0 ? void 0 : endTime.diff(startTime, 'seconds'); var differenceMinutes = endTime === null || endTime === void 0 ? void 0 : endTime.diff(startTime, 'minutes'); var differenceHours = endTime === null || endTime === void 0 ? void 0 : endTime.diff(startTime, 'hours'); var differenceDays = endTime === null || endTime === void 0 ? void 0 : endTime.diff(startTime, 'days'); var differenceWeeks = endTime === null || endTime === void 0 ? void 0 : endTime.diff(startTime, 'weeks'); var differenceMonths = endTime === null || endTime === void 0 ? void 0 : endTime.diff(startTime, 'months'); var differenceYears = endTime === null || endTime === void 0 ? void 0 : endTime.diff(startTime, 'years'); var getCustomizeRangeLabel = function getCustomizeRangeLabel() { if (!autoCalcRange) { return locale.customize; } if (differenceYears > 0) { return "".concat(differenceYears, "y"); } if (differenceMonths > 0) { return "".concat(differenceMonths, "mon"); } if (differenceWeeks > 0) { return "".concat(differenceWeeks, "w"); } if (differenceDays > 0) { return "".concat(differenceDays, "d"); } if (differenceHours > 0) { return "".concat(differenceHours, "h"); } if (differenceMinutes > 0) { return "".concat(differenceMinutes, "m"); } return "".concat(differenceSeconds, "s"); }; var getCustomizeLabel = function getCustomizeLabel() { if (differenceYears > 0) { return isEN ? "Nearly ".concat(differenceYears, " years") : "\u8FD1 ".concat(differenceYears, " \u5E74"); } if (differenceMonths > 0) { return isEN ? "Nearly ".concat(differenceMonths, " months") : "\u8FD1 ".concat(differenceMonths, " \u6708"); } if (differenceWeeks > 0) { return isEN ? "Nearly ".concat(differenceWeeks, " weeks") : "\u8FD1 ".concat(differenceWeeks, " \u5468"); } if (differenceHours > 0) { return isEN ? "Nearly ".concat(differenceHours, " hours") : "\u8FD1 ".concat(differenceHours, " \u5C0F\u65F6"); } if (differenceMinutes > 0) { return isEN ? "Nearly ".concat(differenceMinutes, " minutes") : "\u8FD1 ".concat(differenceMinutes, " \u5206"); } return isEN ? "Nearly ".concat(differenceSeconds, " seconds") : "\u8FD1 ".concat(differenceSeconds, " \u79D2"); }; var getHistoryTitle = function getHistoryTitle() { return isEN ? 'History records' : '历史记录'; }; var setNow = function setNow() { var selected = selects.find(function (item) { return item.name === rangeName; }); if (selected !== null && selected !== void 0 && selected.range) { rangeChange(selected.range(isMoment ? moment() : dayjs())); } if (rangeName === CUSTOMIZE) { var eTime = isMoment ? moment() : dayjs(); rangeChange([eTime === null || eTime === void 0 ? void 0 : eTime.clone().subtract(differenceMs), eTime]); } }; useImperativeHandle(ref, function () { return { updateCurrentTime: setNow }; }); var currentRange = selects.find(function (_item) { return _item.name === rangeName; }); var rangeLabel = rangeName === CUSTOMIZE ? getCustomizeRangeLabel() : currentRange === null || currentRange === void 0 ? void 0 : currentRange.rangeLabel; var label = rangeName === CUSTOMIZE ? getCustomizeLabel() : isEN ? currentRange.enLabel || currentRange.label : currentRange.label; var thisYear = new Date().getFullYear(); var isThisYear = (startTime === null || startTime === void 0 ? void 0 : startTime.year()) === thisYear && (endTime === null || endTime === void 0 ? void 0 : endTime.year()) === thisYear; var rangeNameIndex = findIndex(selects, function (item) { return item.name === rangeName; }); var nextRangeItem = rangeNameIndex === -1 ? selects.find(function (item) { var _ref2 = item.range(isMoment ? moment() : dayjs()), _ref3 = _slicedToArray(_ref2, 2), s = _ref3[0], e = _ref3[1]; // 自定义模式下,对比毫秒来选出比当前范围大一级的 rangeItem var diffMs = e.diff(s); return diffMs > differenceMs; }) : selects[rangeNameIndex + 1]; return /*#__PURE__*/_jsxs(Space, { className: classNames(rest.className, _defineProperty(_defineProperty(_defineProperty({}, prefix, true), "".concat(prefix, "-show-range"), true), "".concat(prefix, "-back-radio-focused"), backRadioFocused)), style: rest.style, children: [/*#__PURE__*/_jsxs(Space, { size: 0, children: [/*#__PURE__*/_jsxs("div", { className: classNames("".concat(prefix, "-wrapper"), _defineProperty({}, "".concat(prefix, "-wrapper-has-jumper"), hasRewind || hasForward)), children: [/*#__PURE__*/_jsx(Dropdown, { trigger: ['click'], open: open, placement: rest.placement, autoAdjustOverflow: autoAdjustOverflow, getPopupContainer: getPopupContainer // 关闭后进行销毁,才可以将 Tooltip 进行同步关闭 , destroyOnHidden: true, onOpenChange: function onOpenChange(o) { if (o === false && tooltipOpen) { return; } setOpen(o); }, popupRender: function popupRender(originNode) { return /*#__PURE__*/_jsxs("div", { ref: popRef, className: classNames("".concat(prefix, "-dropdown-picker"), overlayClassName), style: overlayStyle, children: [/*#__PURE__*/_jsxs(Flex, { vertical: true, justify: "space-between", children: [!historyMenuVisible && /*#__PURE__*/_jsx("div", { className: "options", children: originNode }), history && historyMenuVisible && /*#__PURE__*/_jsxs("div", { className: "history", children: [/*#__PURE__*/_jsxs(Button, { type: "link", style: { paddingLeft: 8, color: token.colorTextBase }, onClick: function onClick(e) { setHistoryMenuVisible(false); e.stopPropagation(); }, children: [/*#__PURE__*/_jsx(ArrowLeftOutlined, { color: token.colorTextLabel }), getHistoryTitle()] }), /*#__PURE__*/_jsx(Menu, { onClick: function onClick(_ref4) { var rangeString = _ref4.key; var vList = rangeString.split(',').map(function (v) { return v.trim(); }); rangeChange(vList.map(function (v) { return isMoment ? moment(v) : dayjs(v); })); handleNameChange(CUSTOMIZE); }, style: { maxHeight: 480, overflowY: 'auto' }, items: rangeHistory.map(function (range) { return { key: String(range), label: /*#__PURE__*/_jsxs(Flex, { className: "".concat(prefix, "-history-menu-item"), vertical: true, children: [/*#__PURE__*/_jsxs("span", { children: [(isMoment ? moment(range[0]) : dayjs(range[0])).format(YEAR_DATE_TIME_SECOND_FORMAT_CN), "~"] }), /*#__PURE__*/_jsx("span", { children: (isMoment ? moment(range[1]) : dayjs(range[1])).format(YEAR_DATE_TIME_SECOND_FORMAT_CN) }), /*#__PURE__*/_jsxs(Space, { className: "".concat(prefix, "-menu-text-btn-wrapper"), children: [/*#__PURE__*/_jsx(Button, { className: "".concat(prefix, "-menu-text-btn"), type: "text", color: "default", variant: "filled", size: "small", onClick: function onClick(e) { e.stopPropagation(); var vList = range.map(function (v) { return v; }); var text = "".concat(vList.join('~')); navigator.clipboard.writeText(text); message.success(text); }, children: /*#__PURE__*/_jsx(CopyOutlined, {}) }), /*#__PURE__*/_jsx(Button, { className: "".concat(prefix, "-menu-text-btn"), type: "text", color: "default", variant: "filled", size: "small", onClick: function onClick(e) { e.stopPropagation(); delRangeHistory(range); }, children: /*#__PURE__*/_jsx(DeleteOutlined, {}) })] })] }, String(range)) }; }) })] }), history && !historyMenuVisible && /*#__PURE__*/_jsxs(Button, { type: "link", style: { width: 'max-content' }, onClick: function onClick(e) { setHistoryMenuVisible(true); e.stopPropagation(); }, children: [getHistoryTitle(), /*#__PURE__*/_jsx(RightOutlined, {})] })] }), /*#__PURE__*/_jsx(Divider, { type: "vertical", style: { height: 'auto', margin: '0px 4px 0px 0px' } }), /*#__PURE__*/_jsx(InternalPickerPanel, { defaultValue: innerValue || [] // @ts-ignore , locale: locale, disabledDate: pastOnly ? disabledFuture : disabledDate, tip: tip, isMoment: isMoment, rules: rules, hideSecond: hideSecond, onOk: function onOk(vList) { setIsPlay(false); handleNameChange(CUSTOMIZE); rangeChange(vList.map(function (v) { return isMoment ? moment(v) : dayjs(v); })); closeTooltip(); }, onCancel: function onCancel() { closeTooltip(); } })] }); }, menu: { selectable: true, defaultSelectedKeys: [rangeName], onClick: function onClick(_ref5) { var key = _ref5.key, domEvent = _ref5.domEvent; var selected = selects.find(function (_item) { return _item.name === key; }); // 存在快捷选项切换为极简模式 if (selected !== null && selected !== void 0 && selected.range) { handleNameChange(key); setIsPlay(true); rangeChange(selected.range(isMoment ? moment() : dayjs())); } }, items: selects.filter(function (item) { return !!item; }).map(function (item) { return { key: item.name, label: /*#__PURE__*/_jsxs(Space, { size: 8, style: { minWidth: 100 }, children: [hasTagInPicker && /*#__PURE__*/_jsx("span", { className: "".concat(prefix, "-label"), children: item.rangeLabel }), isEN ? item.enLabel || item.label : item.label] }) }; }) }, children: /*#__PURE__*/_jsxs(Space, { ref: labelRef, size: 0, onClick: function onClick() { setOpen(true); setTooltipOpen(true); }, children: [/*#__PURE__*/_jsx("span", { className: "".concat(prefix, "-label"), style: { marginLeft: 8 }, children: rangeLabel }), simpleMode && isPlay && /*#__PURE__*/_jsx("div", { className: "".concat(prefix, "-play"), children: label })] }) }), (!simpleMode || !isPlay) && /*#__PURE__*/_jsx("span", { ref: rangeRef, onClick: function onClick() { setOpen(true); setTooltipOpen(true); }, children: /*#__PURE__*/_jsx(DatePicker.RangePicker, _objectSpread(_objectSpread({ className: classNames("".concat(prefix, "-picker")), style: { // pointerEvents: 'none', border: 0 }, format: function format(v) { // format 会影响布局,原先采用 v.year() === new Date().getFullYear() 进行判断,value 一共会传入三次(range0 range1 now), 会传入最新的时间导致判断异常 if (hideYear && isThisYear) { return hideSecond ? v.format(isCn ? DATE_TIME_FORMAT_CN : DATE_TIME_FORMAT) : v.format(isCn ? DATE_TIME_SECOND_FORMAT_CN : DATE_TIME_SECOND_FORMAT); } return hideSecond ? v.format(isCn ? YEAR_DATE_TIME_FORMAT_CN : YEAR_DATE_TIME_FORMAT) : v.format(isCn ? YEAR_DATE_TIME_SECOND_FORMAT_CN : YEAR_DATE_TIME_SECOND_FORMAT); } // @ts-ignore , value: innerValue, onChange: datePickerChange, allowClear: false, size: size, suffixIcon: null // 透传 props 到 antd Ranger }, omit(rest, 'value', 'onChange', 'style', 'className')), {}, { open: false })) })] }), /*#__PURE__*/_jsxs(Radio.Group, { value: isPlay ? 'play' : '', className: "".concat(prefix, "-playback-control"), buttonStyle: "solid", children: [hasRewind && /*#__PURE__*/_jsx(Tooltip, { title: locale.jumpBack, getPopupContainer: function getPopupContainer(trigger) { return trigger.parentNode; }, children: /*#__PURE__*/_jsx(Radio.Button, { value: "stepBack", style: { paddingInline: 8, borderInlineStart: 0, borderTopLeftRadius: 0, borderBottomLeftRadius: 0 }, onMouseEnter: function onMouseEnter() { return setBackRadioFocused(true); }, onMouseLeave: function onMouseLeave() { return setBackRadioFocused(false); }, onClick: function onClick() { if (isPlay) { setIsPlay(false); } if (startTime && endTime) { var newStartTime = startTime.clone().subtract(differenceMs, 'milliseconds'); var newEndTime = startTime === null || startTime === void 0 ? void 0 : startTime.clone(); rangeChange([newStartTime, newEndTime]); } }, children: /*#__PURE__*/_jsx(LeftOutlined, {}) }) }), hasForward && /*#__PURE__*/_jsx(Tooltip, { title: locale.jumpForward, getPopupContainer: function getPopupContainer(trigger) { return trigger.parentNode; }, children: /*#__PURE__*/_jsx(Radio.Button, { value: "stepForward", style: { paddingInline: 8, borderInlineStart: 0, borderTopLeftRadius: 0, borderBottomLeftRadius: 0 } // disabled={isPlay} , onClick: function onClick() { if (startTime && endTime) { var newStartTime = endTime.clone(); var newEndTime = endTime.clone().add(differenceMs); if (newEndTime.isBefore(new Date())) { rangeChange([newStartTime, newEndTime]); } else { setIsPlay(true); setNow(); } } }, children: /*#__PURE__*/_jsx(RightOutlined, {}) }) })] })] }), hasSync && rangeName !== CUSTOMIZE && /*#__PURE__*/_jsx(Button, { style: { paddingInline: 8, color: token.colorTextSecondary }, onClick: function onClick() { setNow(); }, children: /*#__PURE__*/_jsx(SyncOutlined, {}) }), hasZoomOut && /*#__PURE__*/_jsx(Button, { disabled: !nextRangeItem, style: { color: token.colorTextSecondary }, onClick: function onClick() { setIsPlay(true); if (nextRangeItem) { setRangeName(nextRangeItem.name); rangeChange(nextRangeItem.range(isMoment ? moment() : dayjs())); return; } }, icon: /*#__PURE__*/_jsx(ZoomOutOutlined, {}) })] }); }); export default LocaleWrapper({ componentName: 'DateRanger', defaultLocale: zhCN })(Ranger);