UNPKG

tdesign-react

Version:
157 lines (153 loc) 6.82 kB
/** * tdesign v1.13.2 * (c) 2025 tdesign * @license MIT */ import { _ as _defineProperty } from '../../_chunks/dep-8618a2f1.js'; import { _ as _slicedToArray } from '../../_chunks/dep-118954e6.js'; import React, { useState, useMemo, useEffect, useCallback } from 'react'; import dayjs from 'dayjs'; import { S as SinglePanel, D as DEFAULT_FORMAT, a as DEFAULT_STEPS } from '../../_chunks/dep-f68b991f.js'; import { l as log } from '../../_chunks/dep-d104053f.js'; import useConfig from '../../hooks/useConfig.js'; import { Button } from '../../button/index.js'; import { useTimePickerTextConfig } from '../hooks/useTimePickerTextConfig.js'; import '../../_chunks/dep-c37cc2fd.js'; import '../../_chunks/dep-61f5e3d1.js'; import 'classnames'; import '../../_chunks/dep-62293021.js'; import '../../_chunks/dep-09955460.js'; import 'lodash-es'; import '../../_util/noop.js'; import '../../hooks/useDebounce.js'; import '../../hooks/usePersistFn.js'; import '../../hooks/usePropsRef.js'; import '../../config-provider/ConfigContext.js'; import '../../_chunks/dep-698f8ddd.js'; import '../../button/Button.js'; import '../../_chunks/dep-30ed04a0.js'; import '../../hooks/useDomRefCallback.js'; import '../../hooks/useRipple.js'; import '../../_chunks/dep-fab491d8.js'; import '../../hooks/useAnimation.js'; import '../../_chunks/dep-82b8abc2.js'; import '../../loading/index.js'; import '../../loading/Loading.js'; import '../../common/Portal.js'; import 'react-dom'; import '../../hooks/useLayoutEffect.js'; import '../../loading/gradient.js'; import '../../_chunks/dep-ce8ef9b5.js'; import '../../_chunks/dep-132961ab.js'; import '../../loading/defaultProps.js'; import '../../hooks/useDefaultProps.js'; import '../../loading/plugin.js'; import '../../_util/react-render.js'; import '../../_chunks/dep-e78f641d.js'; import '../../common/PluginContainer.js'; import '../../config-provider/ConfigProvider.js'; import '../../button/defaultProps.js'; import '../../_util/parseTNode.js'; import '../../locale/LocalReceiver.js'; 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; } var TimePickerPanel = function TimePickerPanel(props) { var _props$format = props.format, format = _props$format === void 0 ? DEFAULT_FORMAT : _props$format, _props$steps = props.steps, steps = _props$steps === void 0 ? DEFAULT_STEPS : _props$steps, handleConfirmClick = props.handleConfirmClick, isFooterDisplay = props.isFooterDisplay, onChange = props.onChange, value = props.value, _props$isShowPanel = props.isShowPanel, isShowPanel = _props$isShowPanel === void 0 ? true : _props$isShowPanel, _props$presets = props.presets, presets = _props$presets === void 0 ? null : _props$presets; var _useState = useState(false), _useState2 = _slicedToArray(_useState, 2), triggerScroll = _useState2[0], toggleTriggerScroll = _useState2[1]; var _useConfig = useConfig(), classPrefix = _useConfig.classPrefix; var TEXT_CONFIG = useTimePickerTextConfig(); var panelClassName = "".concat(classPrefix, "-time-picker__panel"); var showNowTimeBtn = !!steps.filter(function (v) { return Number(v) > 1; }).length; var defaultValue = useMemo(function () { var formattedValue = dayjs(value, format); if (value && formattedValue.isValid()) { return formattedValue.format(format); } return dayjs().hour(0).minute(0).second(0).format(format); }, [value, format]); useEffect(function () { if (isShowPanel) toggleTriggerScroll(true); }, [isShowPanel]); var resetTriggerScroll = useCallback(function () { toggleTriggerScroll(false); }, [toggleTriggerScroll]); var handlePresetClick = function handlePresetClick(presetValue) { var presetVal = typeof presetValue === "function" ? presetValue() : presetValue; if (typeof props.activeIndex === "number") { if (Array.isArray(presetVal)) { var _props$onChange; (_props$onChange = props.onChange) === null || _props$onChange === void 0 || _props$onChange.call(props, presetVal[props.activeIndex]); } else { log.error("TimePicker", "preset: ".concat(presets, " \u9884\u8BBE\u503C\u5FC5\u987B\u662F\u6570\u7EC4!")); } } else { var _props$onChange2; (_props$onChange2 = props.onChange) === null || _props$onChange2 === void 0 || _props$onChange2.call(props, presetVal); } }; var renderFooter = function renderFooter() { if (presets) { return Object.keys(presets).map(function (preset) { return /* @__PURE__ */React.createElement(Button, { key: preset, theme: "primary", size: "small", variant: "text", onClick: function onClick() { handlePresetClick(presets[preset]); } }, preset); }); } return !showNowTimeBtn ? /* @__PURE__ */React.createElement(Button, { theme: "primary", variant: "text", size: "small", onClick: function onClick() { onChange === null || onChange === void 0 || onChange(dayjs().format(format)); } }, TEXT_CONFIG.nowTime) : null; }; return /* @__PURE__ */React.createElement("div", { className: panelClassName }, /* @__PURE__ */React.createElement("div", { className: "".concat(panelClassName, "-section-body") }, /* @__PURE__ */React.createElement(SinglePanel, _objectSpread(_objectSpread({}, props), {}, { onChange: onChange, format: format, steps: steps, value: dayjs(value, format).isValid() ? value : defaultValue, triggerScroll: triggerScroll, isVisible: isShowPanel, resetTriggerScroll: resetTriggerScroll }))), isFooterDisplay ? /* @__PURE__ */React.createElement("div", { className: "".concat(panelClassName, "-section-footer") }, /* @__PURE__ */React.createElement(Button, { size: "small", theme: "primary", variant: "base", disabled: !props.value, onClick: function onClick() { handleConfirmClick === null || handleConfirmClick === void 0 || handleConfirmClick(defaultValue); } }, TEXT_CONFIG.confirm), renderFooter()) : null); }; export { TimePickerPanel as default }; //# sourceMappingURL=TimePickerPanel.js.map