UNPKG

tdesign-react

Version:
424 lines (416 loc) 16.5 kB
/** * tdesign v1.11.6 * (c) 2025 tdesign * @license MIT */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var toConsumableArray = require('../../_chunks/dep-f500d2b7.js'); var slicedToArray = require('../../_chunks/dep-48e1db8c.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-6b4846c3.js'); require('../../_chunks/dep-56a79f9c.js'); require('../../_chunks/dep-5b35215f.js'); require('../../config-provider/ConfigProvider.js'); require('../../config-provider/ConfigContext.js'); require('../../_chunks/dep-fa2097c1.js'); require('../../_chunks/dep-f6f16bd8.js'); require('dayjs'); require('../../_chunks/dep-59bb0827.js'); require('../../_chunks/dep-68f8743f.js'); require('../../_chunks/dep-a8d0483a.js'); require('../../_chunks/dep-6e34d7d7.js'); require('../../_chunks/dep-d45b3350.js'); require('../../_chunks/dep-ec3beb8d.js'); require('../../_chunks/dep-b7e21379.js'); require('../../_chunks/dep-73937edb.js'); require('../../_chunks/dep-8d4e8f1c.js'); require('../../_chunks/dep-1d022321.js'); require('../../_chunks/dep-ab08e148.js'); require('../../_chunks/dep-9df70348.js'); require('../../_chunks/dep-af16359b.js'); require('../../_chunks/dep-e11afe29.js'); require('../../_chunks/dep-346ac5f4.js'); require('../../_chunks/dep-612ec5c9.js'); require('../../_chunks/dep-4d25d6c0.js'); require('../../_chunks/dep-496c0353.js'); require('../../_chunks/dep-1f530d81.js'); require('../../_chunks/dep-a4bc3144.js'); require('../../_chunks/dep-535a3b69.js'); require('../../_chunks/dep-d11b328f.js'); require('../../_chunks/dep-48ac011e.js'); require('../../_chunks/dep-c4eb94d2.js'); require('../../_chunks/dep-d5a77c7c.js'); require('../../_chunks/dep-b7847924.js'); require('../../_chunks/dep-0d35f53a.js'); require('../../_chunks/dep-d8727aa2.js'); require('../../_chunks/dep-440a0ba0.js'); require('../../select/base/Select.js'); require('../../_chunks/dep-da07bc8c.js'); require('classnames'); require('../../_util/helper.js'); require('../../_chunks/dep-3b342ce7.js'); require('../../_chunks/dep-dc26f226.js'); require('../../_chunks/dep-02a1b59c.js'); require('../../_chunks/dep-35df84a1.js'); require('../../_chunks/dep-fe42fca8.js'); require('../../_chunks/dep-4546f1ae.js'); require('../../hooks/useControlled.js'); require('../../_util/noop.js'); require('../../_util/forwardRefWithStatics.js'); require('hoist-non-react-statics'); require('../../select/util/helper.js'); require('../../select/base/OptionGroup.js'); require('../../select/defaultProps.js'); require('../../hooks/useDefaultProps.js'); require('../../select/base/Option.js'); require('../../hooks/useDomRefCallback.js'); require('../../hooks/useRipple.js'); require('../../hooks/useAnimation.js'); require('../../_util/setStyle.js'); require('../../_util/dom.js'); require('raf'); require('../../_util/easing.js'); require('../../_chunks/dep-3c8023f1.js'); require('../../_chunks/dep-82a8b824.js'); require('../../_chunks/dep-32cacffb.js'); require('../../_chunks/dep-476b268c.js'); require('../../common/FakeArrow.js'); require('../../loading/index.js'); require('../../loading/Loading.js'); require('../../common/Portal.js'); require('react-dom'); require('../../hooks/useLayoutEffect.js'); require('../../_chunks/dep-c43c91af.js'); require('../../_chunks/dep-9ecc1939.js'); require('../../loading/defaultProps.js'); require('../../loading/plugin.js'); require('../../_util/react-render.js'); require('../../_chunks/dep-e9660f30.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('react-popper'); require('../../popup/hooks/useTrigger.js'); require('react-is'); require('../../popup/utils/ref.js'); require('../../_util/composeRefs.js'); require('../../popup/utils/transition.js'); require('../../hooks/useMutationObserver.js'); require('../../hooks/useLatest.js'); require('../../_chunks/dep-4dcb7805.js'); require('../../_chunks/dep-3d31346e.js'); require('../../_chunks/dep-bf176c49.js'); require('../../_chunks/dep-30d1d019.js'); require('../../_chunks/dep-a817745a.js'); require('../../hooks/useWindowSize.js'); require('../../popup/defaultProps.js'); require('../../hooks/useAttach.js'); require('../../popup/PopupPlugin.js'); require('@popperjs/core'); 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('../../_util/parseTNode.js'); require('../../_chunks/dep-fca46a1f.js'); require('../../input/useLengthLimit.js'); require('../../_chunks/dep-42a29965.js'); require('../../_chunks/dep-1edabb9f.js'); require('../../_chunks/dep-6dccca61.js'); require('../../_chunks/dep-345a6333.js'); require('../../_chunks/dep-53a1df7e.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/useTagScroll.js'); require('../../tag-input/useTagList.js'); require('../../tag/index.js'); require('../../tag/Tag.js'); require('tinycolor2'); require('../../tag/defaultProps.js'); require('../../tag/CheckTag.js'); require('../../_chunks/dep-90f4ef78.js'); require('../../tag/CheckTagGroup.js'); require('../../tag-input/useHover.js'); require('../../tag-input/defaultProps.js'); require('../../select-input/useOverlayInnerStyle.js'); require('../../select-input/defaultProps.js'); require('../../select/base/PopupContent.js'); require('../../select/hooks/usePanelVirtualScroll.js'); require('../../hooks/useVirtualScroll.js'); require('../../hooks/useResizeObserver.js'); require('../../select/hooks/useOptions.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-8b01d649.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-fec02fc8.js'); require('../../_chunks/dep-775c9851.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; 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; return ((_yearOptions$find = yearOptions.find(function (option) { return option.value - year <= 9 && option.value - year >= 0; })) === null || _yearOptions$find === void 0 ? void 0 : _yearOptions$find.value) || year; }, [yearOptions, year]); 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