@antdp/antdp-ui
Version:
基于antd封装的组件
130 lines • 4.28 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import { DownOutlined } from '@ant-design/icons';
import { AuthorizedBtn } from '@antdp/authorized';
import { Badge, Button, Dropdown, Menu } from 'antd';
import classNames from 'classnames';
import React, { useEffect, useState } from 'react';
import { getMenusItems } from '../utils';
import './index.css';
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
var ButtonGroupPro = props => {
var {
button,
className
} = props;
var [menuDropdownLabel, setmenuDropdownLabel] = useState({
label: '',
key: undefined
});
var [ButtonandDropdown, setButtonandDropdown] = useState(false);
useEffect(() => {
button && button.length > 0 && button.map(item => {
if (item.ButtonandDropdown) {
setButtonandDropdown(true);
}
});
}, []);
var handleMenuClick = function handleMenuClick(menus, idx, e) {
if (menus === void 0) {
menus = [];
}
menus.forEach((menu, index) => {
if (String(index) === (e == null ? void 0 : e.key) && menu.onClick) {
setmenuDropdownLabel({
label: menu.label,
key: idx
});
menu.onClick();
}
});
};
var renderMenu = function renderMenu(menus, idx) {
if (menus === void 0) {
menus = [];
}
var items = getMenusItems(menus);
return /*#__PURE__*/_jsx(Menu, {
items: items || [],
onClick: e => handleMenuClick(menus, idx, e)
});
};
return /*#__PURE__*/_jsx("div", {
className: classNames('antdp-ButtonGroup', className),
children: button && button.length > 0 && button.map((item, idx) => {
var props = _extends({
key: idx,
size: 'middle',
type: item.type || 'default',
onClick: item.onClick,
disabled: item.disabled,
style: {
margin: ButtonandDropdown ? '0 0 0 -3px' : "0px " + (idx === button.length - 1 ? 0 : 12) + "px 0px 0px"
}
}, item);
var buttondom = /*#__PURE__*/_jsx(Button, _extends({}, props, {
children: item.label
}));
var badgeaParams = item.badge && item.badge === 'dot' ? {
dot: true
} : {
count: item.badge
};
// Menu多选菜单
if (item.menu && item.menu.length > 0) {
var DropdownButtonDom = /*#__PURE__*/_jsxs(Button, {
size: "middle",
type: props.type || 'default',
style: {
margin: ButtonandDropdown ? '0 0 0 -3px' : "0px " + (idx === button.length - 1 ? 0 : 12) + "px 0px 0px"
},
children: [menuDropdownLabel.key === idx ? menuDropdownLabel.label : item.label, ' ', /*#__PURE__*/_jsx(DownOutlined, {})]
});
return item.path ? /*#__PURE__*/_jsx("div", {
children: /*#__PURE__*/_jsx(Dropdown, {
dropdownRender: () => renderMenu(item.menu, idx),
children: DropdownButtonDom
})
}, idx) : /*#__PURE__*/_jsx(Dropdown, {
dropdownRender: () => renderMenu(item.menu, idx),
children: DropdownButtonDom
}, idx);
}
// 自定义render
if (item.render) {
return item.path ? /*#__PURE__*/_jsx(AuthorizedBtn, {
path: item.path,
children: item.render(item.label)
}, idx) : /*#__PURE__*/_jsx("span", {
children: item.render(item.label)
}, idx);
}
// 单独Button
if (item.path) {
return item.badge ? /*#__PURE__*/_jsx(AuthorizedBtn, {
path: item.path,
children: /*#__PURE__*/_jsx(Badge, _extends({}, badgeaParams, {
style: {
marginTop: '15px'
},
children: buttondom
}))
}, idx) : /*#__PURE__*/_jsx(AuthorizedBtn, {
path: item.path,
children: buttondom
}, idx);
} else {
return item.badge ? /*#__PURE__*/_jsx("span", {
children: /*#__PURE__*/_jsx(Badge, _extends({}, badgeaParams, {
style: {
marginTop: '15px'
},
children: buttondom
}))
}, idx) : /*#__PURE__*/_jsx(Button, _extends({}, props, {
children: item.label
}));
}
})
});
};
export default ButtonGroupPro;