@atlaskit/profilecard
Version:
A React component to display a card with user information.
240 lines (239 loc) • 11.2 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.AgentActions = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _react = _interopRequireWildcard(require("react"));
var _reactIntlNext = require("react-intl-next");
var _new = _interopRequireWildcard(require("@atlaskit/button/new"));
var _dropdownMenu = _interopRequireWildcard(require("@atlaskit/dropdown-menu"));
var _showMoreHorizontalMore = _interopRequireDefault(require("@atlaskit/icon/core/migration/show-more-horizontal--more"));
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
var _primitives = require("@atlaskit/primitives");
var _rovoAgentComponents = require("@atlaskit/rovo-agent-components");
var _AgentDeleteConfirmationModal = require("./AgentDeleteConfirmationModal");
var _excluded = ["triggerRef"];
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
var chatToAgentButtonContainer = (0, _primitives.xcss)({
width: '100%'
});
var chatToAgentButtonWrapper = (0, _primitives.xcss)({
display: 'flex',
justifyContent: 'center',
lineHeight: '20px',
fontWeight: 'font.weight.medium'
});
var chatPillButtonInlineStyles = (0, _primitives.xcss)({
paddingInline: 'space.025'
});
var chatPillTextStyles = (0, _primitives.xcss)({
wordBreak: 'break-word',
textAlign: 'left',
whiteSpace: 'pre-wrap'
});
var chatPillIconWrapper = (0, _primitives.xcss)({
minWidth: '20px',
height: '20px'
});
var actionsWrapperStyles = (0, _primitives.xcss)({
borderTop: '1px',
borderTopStyle: 'solid',
borderColor: 'color.border',
padding: 'space.200',
marginBlockStart: 'space.200',
color: 'color.text'
});
var buildAgentActions = function buildAgentActions(_ref) {
var onDuplicateAgent = _ref.onDuplicateAgent,
onCopyAgent = _ref.onCopyAgent,
isForgeAgent = _ref.isForgeAgent;
return isForgeAgent ? [{
text: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, messages.actionCopyLink),
onClick: onCopyAgent
}] : [{
text: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, messages.actionDuplicate),
onClick: onDuplicateAgent
}, {
text: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, messages.actionCopyLink),
onClick: onCopyAgent
}];
};
var buildAgentSettings = function buildAgentSettings(_ref2) {
var onEditAgent = _ref2.onEditAgent,
onDeleteAgent = _ref2.onDeleteAgent;
return [{
text: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, messages.actionEdit),
onClick: onEditAgent
}, {
text: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, messages.actionDelete),
onClick: onDeleteAgent
}];
};
var AgentActions = exports.AgentActions = function AgentActions(_ref3) {
var isAgentCreatedByCurrentUser = _ref3.isAgentCreatedByCurrentUser,
onEditAgent = _ref3.onEditAgent,
onDeleteAgent = _ref3.onDeleteAgent,
onDuplicateAgent = _ref3.onDuplicateAgent,
onCopyAgent = _ref3.onCopyAgent,
onChatClick = _ref3.onChatClick,
onViewFullProfileClick = _ref3.onViewFullProfileClick,
agent = _ref3.agent,
resourceClient = _ref3.resourceClient;
var _useIntl = (0, _reactIntlNext.useIntl)(),
formatMessage = _useIntl.formatMessage;
var _useState = (0, _react.useState)(false),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
isDeleteModalOpen = _useState2[0],
setIsDeleteModalOpen = _useState2[1];
var isForgeAgent = agent.creator_type === 'FORGE' || agent.creator_type === 'THIRD_PARTY';
var loadAgentPermissions = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
var _yield$resourceClient, _yield$resourceClient2, AGENT_UPDATE, AGENT_DEACTIVATE;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return resourceClient.getRovoAgentPermissions(agent.id);
case 2:
_yield$resourceClient = _context.sent;
_yield$resourceClient2 = _yield$resourceClient.permissions;
AGENT_UPDATE = _yield$resourceClient2.AGENT_UPDATE;
AGENT_DEACTIVATE = _yield$resourceClient2.AGENT_DEACTIVATE;
return _context.abrupt("return", {
isEditEnabled: AGENT_UPDATE.permitted,
isDeleteEnabled: AGENT_DEACTIVATE.permitted
});
case 7:
case "end":
return _context.stop();
}
}, _callee);
})), [agent.id, resourceClient]);
var agentActions = buildAgentActions({
onDuplicateAgent: onDuplicateAgent,
onCopyAgent: onCopyAgent,
isForgeAgent: agent.creator_type === 'FORGE' || agent.creator_type === 'THIRD_PARTY'
});
var agentSetting = buildAgentSettings({
onEditAgent: onEditAgent,
onDeleteAgent: function onDeleteAgent() {
setIsDeleteModalOpen(true);
}
});
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_primitives.Inline, {
space: "space.100",
xcss: actionsWrapperStyles
}, /*#__PURE__*/_react.default.createElement(_primitives.Box, {
xcss: chatToAgentButtonContainer
}, /*#__PURE__*/_react.default.createElement(_new.default, {
shouldFitContainer: true,
onClick: function onClick(e) {
e.stopPropagation();
onChatClick();
}
}, /*#__PURE__*/_react.default.createElement(_primitives.Box, {
xcss: chatToAgentButtonWrapper
}, /*#__PURE__*/_react.default.createElement(_primitives.Inline, {
space: "space.050",
xcss: chatPillButtonInlineStyles
}, /*#__PURE__*/_react.default.createElement(_primitives.Box, {
xcss: chatPillIconWrapper
}, /*#__PURE__*/_react.default.createElement(_rovoAgentComponents.ChatPillIcon, null)), /*#__PURE__*/_react.default.createElement(_primitives.Box, {
xcss: chatPillTextStyles
}, formatMessage(messages.actionChatToAgent)))))), (0, _platformFeatureFlags.fg)('rovo_use_agent_permissions') ? /*#__PURE__*/_react.default.createElement(_rovoAgentComponents.AgentDropdownMenu, {
agentId: agent.id,
isAgentCreatedByUser: isAgentCreatedByCurrentUser !== null && isAgentCreatedByCurrentUser !== void 0 ? isAgentCreatedByCurrentUser : false,
onDeleteAgent: function onDeleteAgent() {
return setIsDeleteModalOpen(true);
},
onEditAgent: onEditAgent,
onDuplicateAgent: onDuplicateAgent,
onCopyAgent: onCopyAgent,
isForgeAgent: isForgeAgent,
loadAgentPermissions: loadAgentPermissions,
loadPermissionsOnMount: true,
onViewAgentFullProfileClick: onViewFullProfileClick,
doesAgentHaveIdentityAccountId: !!agent.identity_account_id,
shouldTriggerStopPropagation: true
}) : /*#__PURE__*/_react.default.createElement(_dropdownMenu.default, {
trigger: function trigger(_ref5) {
var triggerRef = _ref5.triggerRef,
props = (0, _objectWithoutProperties2.default)(_ref5, _excluded);
return /*#__PURE__*/_react.default.createElement(_primitives.Box, null, /*#__PURE__*/_react.default.createElement(_new.IconButton, (0, _extends2.default)({}, props, {
icon: _showMoreHorizontalMore.default,
label: "more",
ref: triggerRef,
onClick: function onClick(e) {
var _props$onClick;
e.stopPropagation();
(_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props, e);
}
})));
},
placement: "bottom-end"
}, /*#__PURE__*/_react.default.createElement(_dropdownMenu.DropdownItemGroup, null, agentActions.map(function (_ref6, idx) {
var text = _ref6.text,
_onClick = _ref6.onClick;
return /*#__PURE__*/_react.default.createElement(_dropdownMenu.DropdownItem, {
key: idx,
onClick: function onClick(e) {
e.stopPropagation();
_onClick === null || _onClick === void 0 || _onClick();
}
}, text);
})), isAgentCreatedByCurrentUser && /*#__PURE__*/_react.default.createElement(_dropdownMenu.DropdownItemGroup, {
hasSeparator: true
}, agentSetting.map(function (_ref7, idx) {
var text = _ref7.text,
_onClick2 = _ref7.onClick;
return /*#__PURE__*/_react.default.createElement(_dropdownMenu.DropdownItem, {
key: idx,
onClick: function onClick(e) {
e.stopPropagation();
_onClick2 === null || _onClick2 === void 0 || _onClick2();
}
}, text);
})))), /*#__PURE__*/_react.default.createElement(_AgentDeleteConfirmationModal.AgentDeleteConfirmationModal, {
isOpen: isDeleteModalOpen,
onClose: function onClose() {
setIsDeleteModalOpen(false);
},
onSubmit: onDeleteAgent,
agentId: agent.id,
agentName: agent.name
}));
};
var messages = (0, _reactIntlNext.defineMessages)({
actionChatToAgent: {
id: 'ptc-directory.agent-profile.action.dropdown.chat-to-agent.nonfinal',
defaultMessage: 'Chat to Agent',
description: 'Text for the "chat to agent" action to chat to the agent'
},
actionDelete: {
id: 'ptc-directory.agent-profile.action.dropdown.delete.nonfinal',
defaultMessage: 'Delete Agent',
description: 'Text for the "Delete" action to delete an agent'
},
actionEdit: {
id: 'ptc-directory.agent-profile.action.dropdown.edit.nonfinal',
defaultMessage: 'Edit Agent',
description: 'Text for the "Edit" action to edit an agent'
},
actionCopyLink: {
id: 'ptc-directory.agent-profile.action.dropdown.copy-link.nonfinal',
defaultMessage: 'Copy link',
description: 'Text for the Copy link of an agent'
},
actionDuplicate: {
id: 'ptc-directory.agent-profile.action.dropdown.duplicate.nonfinal',
defaultMessage: 'Duplicate Agent',
description: 'Text for the Duplicate Agent action to create a duplicate'
}
});