UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

53 lines (52 loc) 4.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ContextMenu = exports.ControlledContextMenu = void 0; var tslib_1 = require("tslib"); var react_1 = tslib_1.__importStar(require("react")); var dropdown_1 = (0, tslib_1.__importDefault)(require("antd/lib/dropdown")); var menu_1 = (0, tslib_1.__importDefault)(require("antd/lib/menu")); var icons_1 = require("@ant-design/icons"); var antd_1 = require("antd"); var ControlledContextMenu = function (props) { var menuItems = props.menuItems, visible = props.visible, children = props.children, onVisibleChange = props.onVisibleChange, onItemClick = props.onItemClick, clearFormat = props.clearFormat, onCheckboxChange = props.onCheckboxChange; var _a = (0, react_1.useState)([]), selectedKeys = _a[0], setSelectedKeys = _a[1]; (0, react_1.useEffect)(function () { if (!visible) { setSelectedKeys([]); } }, [visible]); var menu = (react_1.default.createElement(menu_1.default, { selectable: true, multiple: true, subMenuOpenDelay: 0.5, selectedKeys: selectedKeys }, menuItems.map(function (item, index) { if (item.children) { return (react_1.default.createElement(menu_1.default.SubMenu, { onTitleClick: function () { return onItemClick(item.id); }, key: item.id, title: item.title, popupClassName: 'amisSubMenu' }, item.children.map(function (item, index) { var id = index + "_" + item.id; return (react_1.default.createElement(menu_1.default.Item, { key: id, onClick: function () { setSelectedKeys(function (keys) { return keys.includes(id) ? keys.filter(function (key) { return key != id; }) : keys.concat(id); }); } }, react_1.default.createElement("div", null, item.title), selectedKeys.some(function (item) { return item.includes(id); }) && react_1.default.createElement(icons_1.CheckOutlined, { style: { color: '#3574ee' } }))); }), react_1.default.createElement(menu_1.default.Item, { style: { textAlign: 'center', color: '#3574ee', borderTop: '1px solid #eee' }, onClick: function () { var ids = selectedKeys.sort(function (a, b) { return a.localeCompare(b, undefined, { numeric: true }); }).map(function (id) { var start = id.indexOf('_') + 1; return id.substring(start, id.length); }).join(','); onItemClick(ids); } }, "\u786E\u5B9A\u590D\u5236"))); } if (item.isCheckbox) { return react_1.default.createElement(menu_1.default.Item, { key: index }, react_1.default.createElement(antd_1.Checkbox, { checked: clearFormat, onChange: onCheckboxChange }, item.title)); } return react_1.default.createElement(menu_1.default.Item, { key: index, onClick: function () { return onItemClick(item.id); } }, item.title); }))); return (react_1.default.createElement(dropdown_1.default, { overlay: menu, trigger: ["contextMenu"], visible: visible, destroyPopupOnHide: true, onVisibleChange: onVisibleChange, overlayStyle: { display: visible ? 'block' : 'none' } }, children)); }; exports.ControlledContextMenu = ControlledContextMenu; var ContextMenu = function (props) { var menuItems = props.menuItems, children = props.children; var menu = react_1.default.createElement(menu_1.default, null, menuItems.map(function (item, index) { return (react_1.default.createElement(menu_1.default.Item, { key: index, onClick: function (e) { return props.onItemClick(item.id); } }, item.icon && react_1.default.createElement("span", { className: item.icon, style: { marginRight: '10px' } }), item.title)); })); return (react_1.default.createElement(dropdown_1.default, { overlay: menu, trigger: ["contextMenu"] }, children)); }; exports.ContextMenu = ContextMenu; //# sourceMappingURL=./renderers/Lion/components/LionContextMenu/index.js.map