@choerodon/master
Version:
A package of Master for Choerodon platform.
148 lines (131 loc) • 6.09 kB
JavaScript
import "choerodon-ui/lib/dropdown/style";
import _Dropdown from "choerodon-ui/lib/dropdown";
import "choerodon-ui/lib/button/style";
import _Button from "choerodon-ui/lib/button";
import "choerodon-ui/pro/lib/tooltip/style";
import _Tooltip from "choerodon-ui/pro/lib/tooltip";
import "choerodon-ui/lib/icon/style";
import _Icon from "choerodon-ui/lib/icon";
import "choerodon-ui/lib/menu/style";
import _Menu from "choerodon-ui/lib/menu";
var _excluded = ["data", "placement", "getPopupContainer", "disabled", "organizationId", "type", "style", "className"];
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
import React, { cloneElement } from 'react';
import { observer } from 'mobx-react';
import { get } from 'lodash';
import classNames from 'classnames';
import { Permission } from "../permission";
import "./index.less";
var Item = _Menu.Item;
var prefixCls = 'c7ncd-action';
var menuItemDisabeldStyle = {
color: 'rgba(15, 19, 88, 0.25)',
cursor: 'not-allowed',
backgroundColor: 'rgb(246, 246, 249)'
};
/**
* 三点图标组件,权限校验 + 下拉
* @param {*} props
* @return {*}
*/
var Action = function Action(props) {
var data = props.data,
placement = props.placement,
getPopupContainer = props.getPopupContainer,
dropDownDisabled = props.disabled,
organizationId = props.organizationId,
type = props.type,
style = props.style,
className = props.className,
restProps = _objectWithoutProperties(props, _excluded);
var cls = classNames(prefixCls, className);
var handleClick = function handleClick(arg) {
var _arg$domEvent;
(_arg$domEvent = arg.domEvent) === null || _arg$domEvent === void 0 ? void 0 : _arg$domEvent.stopPropagation();
var action = arg.item.props.action;
if (typeof action === 'function') {
action();
}
};
var getAllService = function getAllService() {
if (!data) return [];
return data.reduce(function (list, _ref) {
var _ref$service = _ref.service,
service = _ref$service === void 0 ? [] : _ref$service;
return list.concat(service);
}, []);
};
var renderMenu = function renderMenu() {
return data ? /*#__PURE__*/React.createElement(_Menu, {
onClick: handleClick,
style: {
minWidth: 80
}
}, data.map(function (item, i) {
return renderMenuItem(item, i);
})) : '';
};
var renderMenuItem = function renderMenuItem(_ref2, i) {
var service = _ref2.service,
text = _ref2.text,
action = _ref2.action,
icon = _ref2.icon,
disabled = _ref2.disabled,
tooltipsConfig = _ref2.tooltipsConfig;
var item = /*#__PURE__*/React.createElement(Item, {
action: disabled ? function () {} : action,
style: disabled ? menuItemDisabeldStyle : {},
className: "".concat(prefixCls, "-menu-item")
}, /*#__PURE__*/React.createElement(_Tooltip, Object.assign({
style: {
width: '100%'
}
}, tooltipsConfig), /*#__PURE__*/React.createElement("span", {
className: "".concat(prefixCls, "-menu-item-content")
}, icon && /*#__PURE__*/React.createElement(_Icon, {
type: icon
}), text)));
return /*#__PURE__*/React.createElement(Permission, {
service: service,
organizationId: organizationId,
key: i,
defaultChildren: /*#__PURE__*/cloneElement(item, {
style: {
display: 'none'
}
}),
type: type
}, item);
};
if (!data || !get(data, 'length')) {
return null;
}
return /*#__PURE__*/React.createElement(Permission, {
service: getAllService(),
organizationId: organizationId,
type: type
}, /*#__PURE__*/React.createElement(_Dropdown, {
overlay: renderMenu(),
className: cls,
trigger: ['click'],
placement: placement,
getPopupContainer: getPopupContainer,
disabled: dropDownDisabled
}, /*#__PURE__*/React.createElement(_Button, Object.assign({
size: 'small',
shape: "circle",
style: _objectSpread({
color: '#5365EA'
}, style),
icon: "more_vert",
onClick: function onClick(e) {
return e && e.stopPropagation();
},
className: cls
}, restProps))));
};
export default observer(Action);