fastlion-amis
Version:
一种MIS页面生成工具
53 lines (52 loc) • 4.11 kB
JavaScript
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
;