UNPKG

tdesign-react

Version:
135 lines (131 loc) 6.01 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, 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-c37cc2fd.js'; import '../_chunks/dep-61f5e3d1.js'; import '../popup/Popup.js'; import 'react-transition-group'; import '../_util/ref.js'; import 'react-is'; import '../_util/isFragment.js'; import '../_chunks/dep-82b8abc2.js'; import '../common/Portal.js'; import 'react-dom'; import '../hooks/useLayoutEffect.js'; import '../hooks/useAnimation.js'; import '../config-provider/ConfigContext.js'; import '../_chunks/dep-698f8ddd.js'; import '../_chunks/dep-09955460.js'; import 'dayjs'; 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-132961ab.js'; import '@popperjs/core'; import 'react-fast-compare'; import '../hooks/useWindowSize.js'; import '../popup/defaultProps.js'; import '../popup/hooks/useTrigger.js'; import '../_util/composeRefs.js'; import '../_util/listener.js'; import '../popup/utils/transition.js'; import '../popup/PopupPlugin.js'; import '../_chunks/dep-e78f641d.js'; import '../_util/react-render.js'; import '../common/PluginContainer.js'; import '../config-provider/ConfigProvider.js'; import 'tdesign-icons-react'; import '../divider/index.js'; import '../divider/Divider.js'; import '../_chunks/dep-30ed04a0.js'; import '../divider/defaultProps.js'; import '../hooks/useGlobalIcon.js'; import '../hooks/useDomRefCallback.js'; import '../hooks/useRipple.js'; import '../_chunks/dep-fab491d8.js'; import '../_util/helper.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