UNPKG

tdesign-react

Version:
429 lines (421 loc) 16.9 kB
/** * tdesign v1.15.1 * (c) 2025 tdesign * @license MIT */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var toConsumableArray = require('../../_chunks/dep-e4e1901e.js'); var slicedToArray = require('../../_chunks/dep-8e4d656d.js'); var React = require('react'); var locale_LocalReceiver = require('../../locale/LocalReceiver.js'); var hooks_useConfig = require('../../hooks/useConfig.js'); var select_index = require('../../select/index.js'); var pagination_index = require('../../pagination/index.js'); require('../../_chunks/dep-00b49251.js'); require('../../_chunks/dep-0006fcfa.js'); require('../../_chunks/dep-667ac7af.js'); require('../../_chunks/dep-4ed9eda4.js'); require('../../_chunks/dep-25585736.js'); require('../../_chunks/dep-64577888.js'); require('../../_chunks/dep-62e73936.js'); require('../../config-provider/ConfigProvider.js'); require('../../config-provider/ConfigContext.js'); require('../../_chunks/dep-1df1dad8.js'); require('../../_chunks/dep-5b5ab11b.js'); require('dayjs'); require('../../_chunks/dep-f32c03f1.js'); require('../../_chunks/dep-31c4bc3d.js'); require('../../_chunks/dep-eea2872a.js'); require('../../_chunks/dep-71455db7.js'); require('../../_chunks/dep-9e5a468d.js'); require('../../_chunks/dep-ec8d2dca.js'); require('../../_chunks/dep-fc596d16.js'); require('../../_chunks/dep-f26edb7b.js'); require('../../_chunks/dep-f33c1939.js'); require('../../_chunks/dep-21ece627.js'); require('../../_chunks/dep-25e4aa84.js'); require('../../_chunks/dep-e1fbe1c3.js'); require('../../_chunks/dep-df2b541f.js'); require('../../_chunks/dep-edd366db.js'); require('../../_chunks/dep-a56c4939.js'); require('../../_chunks/dep-6c297e20.js'); require('../../_chunks/dep-b7ad4d54.js'); require('../../_chunks/dep-a2cb9299.js'); require('../../_chunks/dep-f981815b.js'); require('../../_chunks/dep-ab2f63ec.js'); require('../../_chunks/dep-a48c7e8b.js'); require('../../_chunks/dep-3d4656ee.js'); require('../../_chunks/dep-0ffc9d96.js'); require('../../_chunks/dep-efe6d243.js'); require('../../_chunks/dep-4b18243f.js'); require('../../_chunks/dep-bff2c990.js'); require('../../select/base/Select.js'); require('../../_chunks/dep-8fa3a4c2.js'); require('classnames'); require('../../_util/composeRefs.js'); require('../../_util/forwardRefWithStatics.js'); require('hoist-non-react-statics'); require('../../_util/helper.js'); require('../../_chunks/dep-840b1644.js'); require('../../_chunks/dep-255ceed8.js'); require('../../_chunks/dep-79629634.js'); require('../../_chunks/dep-66114ce9.js'); require('../../_chunks/dep-62d1dd66.js'); require('../../_chunks/dep-7a148045.js'); require('../../_util/noop.js'); require('../../_util/parseTNode.js'); require('../../_chunks/dep-59671c87.js'); require('../../common/FakeArrow.js'); require('../../hooks/useControlled.js'); require('../../hooks/useDefaultProps.js'); require('../../loading/index.js'); require('../../loading/Loading.js'); require('../../_chunks/dep-381fa848.js'); require('../../common/Portal.js'); require('react-dom'); require('../../hooks/useLayoutEffect.js'); require('../../loading/gradient.js'); require('../../_chunks/dep-dc4ce063.js'); require('../../_chunks/dep-002fcc1e.js'); require('../../_chunks/dep-2ffa3ff1.js'); require('../../hooks/useDomRefCallback.js'); require('../../loading/defaultProps.js'); require('../../loading/plugin.js'); require('../../_util/react-render.js'); require('../../_chunks/dep-65ef8e09.js'); require('../../common/PluginContainer.js'); require('../../select-input/index.js'); require('../../select-input/SelectInput.js'); require('../../popup/index.js'); require('../../popup/Popup.js'); require('react-transition-group'); require('../../_util/ref.js'); require('react-is'); require('../../_util/isFragment.js'); require('../../hooks/useAnimation.js'); require('../../hooks/useAttach.js'); require('../../hooks/useMutationObserver.js'); require('../../hooks/useLatest.js'); require('../../_chunks/dep-eb6d55c1.js'); require('../../_chunks/dep-014b9b78.js'); require('../../_chunks/dep-abdd786a.js'); require('../../_chunks/dep-a231fdc5.js'); require('../../_chunks/dep-cf14666e.js'); require('../../hooks/usePopper.js'); require('@popperjs/core'); require('react-fast-compare'); require('../../hooks/useWindowSize.js'); require('../../popup/defaultProps.js'); require('../../popup/hooks/useTrigger.js'); require('../../_util/listener.js'); require('../../popup/utils/transition.js'); require('../../popup/PopupPlugin.js'); require('../../select-input/useSingle.js'); require('../../input/index.js'); require('../../input/Input.js'); require('tdesign-icons-react'); require('../../hooks/useGlobalIcon.js'); require('../../input/InputGroup.js'); require('../../input/defaultProps.js'); require('../../input/useLengthLimit.js'); require('../../_chunks/dep-1e4197a4.js'); require('../../_chunks/dep-3398c1f2.js'); require('../../_chunks/dep-e57bdc8f.js'); require('../../_chunks/dep-22b1740a.js'); require('../../_chunks/dep-373af7a2.js'); require('../../_chunks/dep-fc29b8b5.js'); require('../../select-input/useMultiple.js'); require('../../tag-input/index.js'); require('../../tag-input/TagInput.js'); require('../../hooks/useDragSorter.js'); require('../../hooks/useEventCallback.js'); require('../../tag-input/defaultProps.js'); require('../../tag-input/useHover.js'); require('../../tag-input/useTagList.js'); require('../../tag/index.js'); require('../../tag/Tag.js'); require('../../_chunks/dep-4d5c26af.js'); require('../../tag/defaultProps.js'); require('../../tag/CheckTag.js'); require('../../_chunks/dep-4406837c.js'); require('../../tag/CheckTagGroup.js'); require('../../tag-input/useTagScroll.js'); require('../../select-input/useOverlayInnerStyle.js'); require('../../select-input/defaultProps.js'); require('../../select/defaultProps.js'); require('../../_chunks/dep-e83bd2ab.js'); require('../../select/base/OptionGroup.js'); require('../../select/base/Option.js'); require('../../hooks/useRipple.js'); require('../../_chunks/dep-0c8c9057.js'); require('../../select/base/PopupContent.js'); require('../../select/hooks/usePanelVirtualScroll.js'); require('../../hooks/useVirtualScroll.js'); require('../../pagination/Pagination.js'); require('../../input-number/index.js'); require('../../input-number/InputNumber.js'); require('../../button/index.js'); require('../../button/Button.js'); require('../../button/defaultProps.js'); require('../../input-number/useInputNumber.js'); require('../../_chunks/dep-e75d22fc.js'); require('../../_chunks/dep-221787fe.js'); require('../../hooks/useCommonClassName.js'); require('../../input-number/defaultProps.js'); require('../../input-adornment/InputAdornment.js'); require('../../pagination/hooks/useBoundaryJumper.js'); require('../../pagination/hooks/usePrevNextJumper.js'); require('../../pagination/hooks/usePageNumber.js'); require('../../pagination/hooks/useTotal.js'); require('../../pagination/validators.js'); require('../../pagination/defaultProps.js'); require('../../_chunks/dep-d5e8c967.js'); require('../../_chunks/dep-9a375a19.js'); require('../../_chunks/dep-d915c90f.js'); require('../../pagination/PaginationMini.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var React__default = /*#__PURE__*/_interopDefaultLegacy(React); var useDatePickerLocalConfig = function useDatePickerLocalConfig() { var _useLocaleReceiver = locale_LocalReceiver.useLocaleReceiver("datePicker"), _useLocaleReceiver2 = slicedToArray._slicedToArray(_useLocaleReceiver, 2), local = _useLocaleReceiver2[0], t = _useLocaleReceiver2[1]; return { months: t(local.months), nextYear: t(local.nextYear), preYear: t(local.preYear), nextMonth: t(local.nextMonth), preMonth: t(local.preMonth), preDecade: t(local.preDecade), nextDecade: t(local.nextDecade), now: t(local.now) }; }; var DatePickerHeader = function DatePickerHeader(props) { var _useConfig = hooks_useConfig["default"](), classPrefix = _useConfig.classPrefix; var mode = props.mode, year = props.year, month = props.month, onMonthChange = props.onMonthChange, onYearChange = props.onYearChange, onJumperClick = props.onJumperClick, partial = props.partial, _props$internalYear = props.internalYear, internalYear = _props$internalYear === void 0 ? [] : _props$internalYear; var _useDatePickerLocalCo = useDatePickerLocalConfig(), now = _useDatePickerLocalCo.now, months = _useDatePickerLocalCo.months, preMonth = _useDatePickerLocalCo.preMonth, preYear = _useDatePickerLocalCo.preYear, nextMonth = _useDatePickerLocalCo.nextMonth, nextYear = _useDatePickerLocalCo.nextYear, preDecade = _useDatePickerLocalCo.preDecade, nextDecade = _useDatePickerLocalCo.nextDecade; var scrollAnchorRef = React.useRef("default"); var monthOptions = months.map(function (item, index) { return { label: item, value: index }; }); var initOptions = React.useCallback(function (year2) { var options = []; if (mode === "year") { var extraYear = year2 % 10; var minYear = year2 - extraYear - 100; var maxYear = year2 - extraYear + 100; for (var i = minYear; i <= maxYear; i += 10) { options.push({ label: "".concat(i, " - ").concat(i + 9), value: i + 9 }); } } else { options.push({ label: "".concat(year2), value: year2 }); for (var _i = 1; _i <= 10; _i++) { options.push({ label: "".concat(year2 + _i), value: year2 + _i }); options.unshift({ label: "".concat(year2 - _i), value: year2 - _i }); } } return options; }, [mode]); var _useState = React.useState(function () { return initOptions(year); }), _useState2 = slicedToArray._slicedToArray(_useState, 2), yearOptions = _useState2[0], setYearOptions = _useState2[1]; var nearestYear = React.useMemo(function () { var _yearOptions$find; var extraYear = partial === "end" && mode === "year" && internalYear[1] - internalYear[0] <= 9 ? 9 : 0; return ((_yearOptions$find = yearOptions.find(function (option) { return option.value - (year + extraYear) <= 9 && option.value - (year + extraYear) >= 0; })) === null || _yearOptions$find === void 0 ? void 0 : _yearOptions$find.value) || year; }, [yearOptions, year, mode, partial, internalYear]); React.useEffect(function () { var yearRange = initOptions(year); setYearOptions(yearRange); }, [initOptions, year]); function loadMoreYear(year2, type) { var options = []; if (mode === "year") { var extraYear = year2 % 10; if (type === "add") { for (var i = year2 - extraYear + 10; i <= year2 - extraYear + 50; i += 10) { options.push({ label: "".concat(i, " - ").concat(i + 9), value: i }); } } else { for (var _i2 = year2 - extraYear - 1; _i2 > year2 - extraYear - 50; _i2 -= 10) { options.unshift({ label: "".concat(_i2 - 9, " - ").concat(_i2), value: _i2 }); } } } else if (type === "add") { for (var _i3 = year2 + 1; _i3 <= year2 + 10; _i3++) { options.push({ label: "".concat(_i3), value: _i3 }); } } else { for (var _i4 = year2 - 1; _i4 > year2 - 10; _i4--) { options.unshift({ label: "".concat(_i4), value: _i4 }); } } return options; } var labelMap = { year: { prev: preDecade, current: now, next: nextDecade }, month: { prev: preYear, current: now, next: nextYear }, date: { prev: preMonth, current: now, next: nextMonth } }; var headerClassName = "".concat(classPrefix, "-date-picker__header"); var showMonthPicker = mode === "date" || mode === "week"; function handlePanelTopClick(e) { var _e$stopPropagation, _e$nativeEvent, _e$nativeEvent$stopIm; e === null || e === void 0 || (_e$stopPropagation = e.stopPropagation) === null || _e$stopPropagation === void 0 || _e$stopPropagation.call(e); e === null || e === void 0 || (_e$nativeEvent = e.nativeEvent) === null || _e$nativeEvent === void 0 || (_e$nativeEvent$stopIm = _e$nativeEvent.stopImmediatePropagation) === null || _e$nativeEvent$stopIm === void 0 || _e$nativeEvent$stopIm.call(_e$nativeEvent); var firstYear = yearOptions[0].value; var options = loadMoreYear(firstYear, "reduce"); setYearOptions([].concat(toConsumableArray._toConsumableArray(options), toConsumableArray._toConsumableArray(yearOptions))); } function handlePanelBottomClick(e) { var _e$stopPropagation2, _e$nativeEvent2; e === null || e === void 0 || (_e$stopPropagation2 = e.stopPropagation) === null || _e$stopPropagation2 === void 0 || _e$stopPropagation2.call(e); e === null || e === void 0 || (_e$nativeEvent2 = e.nativeEvent) === null || _e$nativeEvent2 === void 0 || _e$nativeEvent2.stopImmediatePropagation(); var lastYear = yearOptions.slice(-1)[0].value; var options = loadMoreYear(lastYear, "add"); setYearOptions([].concat(toConsumableArray._toConsumableArray(yearOptions), toConsumableArray._toConsumableArray(options))); } function handleScroll(_ref) { var e = _ref.e; if (e.target.scrollTop === 0) { handlePanelTopClick(); scrollAnchorRef.current = "top"; } else if (e.target.scrollTop === e.target.scrollHeight - e.target.clientHeight) { handlePanelBottomClick(); scrollAnchorRef.current = "bottom"; } } function handleUpdateScrollTop(content) { if (scrollAnchorRef.current === "top") { content.scrollTop = 30 * 10; } else if (scrollAnchorRef.current === "bottom") { content.scrollTop = content.scrollHeight - 30 * 10; } else { var firstSelectedNode = content.querySelector(".".concat(classPrefix, "-is-selected")); if (firstSelectedNode) { var _getComputedStyle = getComputedStyle(firstSelectedNode), paddingBottom = _getComputedStyle.paddingBottom; var _getComputedStyle2 = getComputedStyle(content), marginBottom = _getComputedStyle2.marginBottom; var elementBottomHeight = parseInt(paddingBottom, 10) + parseInt(marginBottom, 10); var updateValue = firstSelectedNode.offsetTop - content.offsetTop - (content.clientHeight - firstSelectedNode.clientHeight) + elementBottomHeight; content.scrollTop = updateValue; } } } return /* @__PURE__ */React__default["default"].createElement("div", { className: headerClassName }, /* @__PURE__ */React__default["default"].createElement("div", { className: "".concat(headerClassName, "-controller") }, showMonthPicker && /* @__PURE__ */React__default["default"].createElement(select_index.Select, { className: "".concat(headerClassName, "-controller-month"), value: month, options: monthOptions, onChange: function onChange(val) { return onMonthChange(val); }, popupProps: { attach: function attach(triggerElement) { return triggerElement.parentNode; }, overlayClassName: "".concat(headerClassName, "-controller-month-popup") } }), /* @__PURE__ */React__default["default"].createElement(select_index.Select, { className: "".concat(headerClassName, "-controller-year"), value: mode === "year" ? nearestYear : year, options: yearOptions, onChange: function onChange(val) { return onYearChange(val); }, onPopupVisibleChange: function onPopupVisibleChange(visible) { if (!visible) scrollAnchorRef.current = "default"; }, popupProps: { onScroll: handleScroll, updateScrollTop: handleUpdateScrollTop, attach: function attach(triggerElement) { return triggerElement.parentNode; }, overlayClassName: "".concat(headerClassName, "-controller-year-popup") }, panelTopContent: /* @__PURE__ */React__default["default"].createElement("div", { className: "".concat(classPrefix, "-select-option"), onClick: handlePanelTopClick }, "..."), panelBottomContent: /* @__PURE__ */React__default["default"].createElement("div", { className: "".concat(classPrefix, "-select-option"), onClick: handlePanelBottomClick }, "...") })), /* @__PURE__ */React__default["default"].createElement(pagination_index.PaginationMini, { tips: labelMap[mode], size: "small", onChange: onJumperClick })); }; DatePickerHeader.displayName = "DatePickerHeader"; var DateHeader = /*#__PURE__*/React__default["default"].memo(DatePickerHeader); exports["default"] = DateHeader; //# sourceMappingURL=Header.js.map