@yuntijs/ui
Version:
☁️ Yunti UI - an open-source UI component library for building Cloud Native web apps
57 lines • 2.74 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
var _excluded = ["menuExtra", "popupRender"];
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; }
import { Dropdown as AntDropdown, Flex } from 'antd';
import React, { useCallback } from 'react';
import { useStyles } from "./style";
import { jsx as _jsx } from "react/jsx-runtime";
import { jsxs as _jsxs } from "react/jsx-runtime";
var YuntiDropdown = function YuntiDropdown(_ref) {
var menuExtra = _ref.menuExtra,
popupRender = _ref.popupRender,
props = _objectWithoutProperties(_ref, _excluded);
var _ref2 = menuExtra || {},
_ref2$position = _ref2.position,
position = _ref2$position === void 0 ? 'top' : _ref2$position,
_ref2$divider = _ref2.divider,
divider = _ref2$divider === void 0 ? false : _ref2$divider,
content = _ref2.content;
var _useStyles = useStyles({
divider: divider,
position: position
}),
styles = _useStyles.styles,
cx = _useStyles.cx;
var handlePopupRender = useCallback(function (menu) {
var borderLessMenu = /*#__PURE__*/React.cloneElement(menu, {
className: cx(styles.menu)
});
if (!content) {
if (popupRender) {
return /*#__PURE__*/_jsx(Flex, {
className: styles.menuWrapper,
vertical: true,
children: popupRender(borderLessMenu)
});
}
return menu;
}
var extra = /*#__PURE__*/_jsx(Flex, {
align: "center",
className: styles.menuExtra,
children: content
});
return /*#__PURE__*/_jsxs(Flex, {
className: styles.menuWrapper,
vertical: true,
children: [position === 'top' && extra, borderLessMenu, position === 'bottom' && extra]
});
}, [content, cx, popupRender, position, styles.menu, styles.menuExtra, styles.menuWrapper]);
return /*#__PURE__*/_jsx(AntDropdown, _objectSpread({
popupRender: handlePopupRender
}, props));
};
export var Dropdown = YuntiDropdown;
Dropdown.Button = AntDropdown.Button;