UNPKG

tdesign-react

Version:
141 lines (137 loc) 6.21 kB
/** * tdesign v1.16.2 * (c) 2025 tdesign * @license MIT */ import { _ as _defineProperty } from '../_chunks/dep-d67deb2c.js'; import { _ as _slicedToArray } from '../_chunks/dep-10d5731f.js'; import React, { useState, isValidElement } from 'react'; import classNames from 'classnames'; import { omit } from 'lodash-es'; import { Popup } from '../popup/index.js'; import DropdownMenu from './DropdownMenu.js'; import DropdownItem from './DropdownItem.js'; import { dropdownDefaultProps } from './defaultProps.js'; import useConfig from '../hooks/useConfig.js'; import useDropdownOptions from './hooks/useDropdownOptions.js'; import useDefaultProps from '../hooks/useDefaultProps.js'; import '../_chunks/dep-8abcbcbc.js'; import '../_chunks/dep-74a10cfb.js'; import '../popup/Popup.js'; import 'react-transition-group'; import '../_chunks/dep-ca8d3fa0.js'; import '../common/Portal.js'; import 'react-dom'; import '../hooks/useLayoutEffect.js'; import '../hooks/useAnimation.js'; import '../config-provider/ConfigContext.js'; import '../locale/zh_CN.js'; import '../_chunks/dep-751cada9.js'; import 'dayjs'; import '../_chunks/dep-37c4dbb1.js'; import '../hooks/useAttach.js'; import '../hooks/useControlled.js'; import '../_util/noop.js'; import '../hooks/useMutationObserver.js'; import '../hooks/useLatest.js'; import '../hooks/usePopper.js'; import '../_chunks/dep-a3a3e527.js'; import 'react-fast-compare'; import '@popperjs/core'; import '../hooks/useWindowSize.js'; import '../popup/defaultProps.js'; import '../popup/hooks/useTrigger.js'; import '../_util/listener.js'; import '../_util/ref.js'; import 'react-is'; import '../_util/isFragment.js'; import '../popup/utils/transition.js'; import '../popup/PopupPlugin.js'; import '../_chunks/dep-d26972d5.js'; import '../_util/react-render.js'; import '../common/PluginContainer.js'; import '../config-provider/index.js'; import '../config-provider/ConfigProvider.js'; import '../config-provider/type.js'; import '../popup/style/css.js'; import '../popup/type.js'; import 'tdesign-icons-react'; import '../divider/index.js'; import '../divider/Divider.js'; import '../_chunks/dep-ed34fbd4.js'; import '../_chunks/dep-624e7b27.js'; import '../divider/defaultProps.js'; import '../divider/style/css.js'; import '../divider/type.js'; import '../hooks/useGlobalIcon.js'; import '../hooks/useDomRefCallback.js'; import '../hooks/useRipple.js'; import '../_chunks/dep-79351403.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 Dropdown = function Dropdown(originalProps) { var props = useDefaultProps(originalProps, dropdownDefaultProps); var _props$popupProps = props.popupProps, popupProps = _props$popupProps === void 0 ? {} : _props$popupProps, disabled = props.disabled, placement = props.placement, trigger = props.trigger, className = props.className, children = props.children, hideAfterItemClick = props.hideAfterItemClick, propsOptions = props.options, style = props.style; var arrayChildren = React.Children.toArray(children); var _useConfig = useConfig(), classPrefix = _useConfig.classPrefix; var _useState = useState(false), _useState2 = _slicedToArray(_useState, 2), isPopupVisible = _useState2[0], togglePopupVisible = _useState2[1]; var dropdownClass = "".concat(classPrefix, "-dropdown"); var options = useDropdownOptions(arrayChildren, propsOptions); var handleMenuClick = function handleMenuClick(data, context) { var _props$onClick; if (hideAfterItemClick) { var _popupProps$onVisible; togglePopupVisible(false); popupProps === null || popupProps === void 0 || (_popupProps$onVisible = popupProps.onVisibleChange) === null || _popupProps$onVisible === void 0 || _popupProps$onVisible.call(popupProps, false, context); } (_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props, data, context); }; var handleVisibleChange = function handleVisibleChange(visible, context) { var _popupProps$onVisible2; if (disabled || !options.length) return; togglePopupVisible(visible); popupProps === null || popupProps === void 0 || (_popupProps$onVisible2 = popupProps.onVisibleChange) === null || _popupProps$onVisible2 === void 0 || _popupProps$onVisible2.call(popupProps, visible, context); }; var renderContent = /* @__PURE__ */React.createElement(DropdownMenu, _objectSpread(_objectSpread({}, props), {}, { options: options, onClick: handleMenuClick })); var popupParams = _objectSpread(_objectSpread({ disabled: disabled, placement: placement, trigger: trigger, showArrow: false, content: renderContent }, omit(popupProps, "onVisibleChange")), {}, { overlayInnerClassName: classNames(dropdownClass, className, popupProps === null || popupProps === void 0 ? void 0 : popupProps.overlayInnerClassName), overlayInnerStyle: style }); var child = arrayChildren === null || arrayChildren === void 0 ? void 0 : arrayChildren[0]; var dropDownTrigger = /*#__PURE__*/isValidElement(child) ? /*#__PURE__*/React.cloneElement(child, { disabled: disabled }) : child; return /* @__PURE__ */React.createElement(Popup, _objectSpread({ expandAnimation: true, destroyOnClose: true, visible: isPopupVisible, onVisibleChange: handleVisibleChange }, popupParams), dropDownTrigger); }; Dropdown.DropdownItem = DropdownItem; Dropdown.DropdownMenu = DropdownMenu; Dropdown.displayName = "Dropdown"; export { Dropdown as default }; //# sourceMappingURL=Dropdown.js.map