box-ui-elements-mlh
Version:
71 lines (63 loc) • 2.57 kB
JavaScript
/**
*
* @file Open With dropdown menu item
* @author Box
*/
import * as React from 'react';
import { FormattedMessage } from 'react-intl';
import classNames from 'classnames';
import MenuItem from '../../components/menu/MenuItem';
import messages from '../common/messages';
import { OPEN_WITH_MENU_ITEM_ICON_SIZE } from '../../constants';
import getIcon from './IconFileMap';
import utils from './openWithUtils';
import './OpenWithDropdownMenuItem.scss';
function getErrorMessage() {
var disabledReasons = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var message; // Use the first disabled reason as the description if the integration is disabled.
var code = disabledReasons[0];
var defaultErrorMessage = /*#__PURE__*/React.createElement(FormattedMessage, messages.errorOpenWithDescription);
switch (code) {
case 'blocked_by_shield_access_policy':
message = /*#__PURE__*/React.createElement(FormattedMessage, messages.boxEditErrorBlockedByPolicy);
break;
case 'collaborators_hidden':
message = defaultErrorMessage;
break;
default:
message = disabledReasons[0] || defaultErrorMessage;
}
return message;
}
var OpenWithDropdownMenuItem = function OpenWithDropdownMenuItem(_ref) {
var integration = _ref.integration,
_onClick = _ref.onClick;
var displayName = integration.displayName,
displayDescription = integration.displayDescription,
isDisabled = integration.isDisabled,
extension = integration.extension,
disabledReasons = integration.disabledReasons;
var Icon = getIcon(displayName);
var description = isDisabled ? getErrorMessage(disabledReasons) : displayDescription;
var className = classNames({
'bcow-box-tools-uninstalled': utils.isDisabledBecauseBoxToolsIsNotInstalled(integration)
});
return /*#__PURE__*/React.createElement(MenuItem, {
className: className,
isDisabled: isDisabled,
onClick: function onClick() {
return _onClick(integration);
}
}, /*#__PURE__*/React.createElement(Icon, {
dimension: OPEN_WITH_MENU_ITEM_ICON_SIZE,
extension: extension,
height: OPEN_WITH_MENU_ITEM_ICON_SIZE,
width: OPEN_WITH_MENU_ITEM_ICON_SIZE
}), /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("p", {
className: "bcow-menu-item-title"
}, displayName), /*#__PURE__*/React.createElement("p", {
className: "bcow-menu-item-description"
}, description)));
};
export default OpenWithDropdownMenuItem;
//# sourceMappingURL=OpenWithDropdownMenuItem.js.map