UNPKG

@atlaskit/profilecard

Version:

A React component to display a card with user information.

240 lines (239 loc) 11.2 kB
"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' } });