UNPKG

@uimkit/uikit-react

Version:

<img style="width:64px" src="https://mgmt.uimkit.chat/media/img/avatar.png"/>

95 lines (92 loc) 5.63 kB
import React__default, { useRef, useState } from 'react'; import 'tslib'; import '../../context/TranslationContext.js'; import { useUIKit } from '../../context/UIKitContext.js'; import '../../context/ComponentContext.js'; import '../../context/ChatActionContext.js'; import '../../context/MessageInputContext.js'; import '../../context/UIMessageContext.js'; import '../../context/ChatStateContext.js'; import { Avatar } from '../Avatar/Avatar.js'; import { Icon } from '../Icon/Icon.js'; import { IconTypes } from '../Icon/type.js'; import { Plugins } from '../Plugins/index.js'; import { usePinConversation } from '../../hooks/usePinConversation.js'; import { useDeleteConversation } from '../../hooks/useDeleteConversation.js'; import '../../types/models.js'; import '../../types/events.js'; import 'react-redux'; import 'redux'; import '../../store/rootReducer.js'; import '../../store/accounts/actions.js'; import '../../store/accounts/selectors.js'; import '../../node_modules/.pnpm/invariant@2.2.4/node_modules/invariant/invariant.js'; import 'i18next'; import '../../store/conversations/actions.js'; import '../../node_modules/.pnpm/lodash.flatten@4.4.0/node_modules/lodash.flatten/index.js'; import '../../node_modules/.pnpm/lodash.some@4.6.0/node_modules/lodash.some/index.js'; import '../../store/messages/actions.js'; import '../../store/contacts/actions.js'; import 'dayjs'; function UIConversationPreviewContent(props) { var conversation = props.conversation, _a = props.Avatar, Avatar$1 = _a === void 0 ? Avatar : _a, displayImage = props.displayImage, displayTitle = props.displayTitle, displayMessage = props.displayMessage, displayTime = props.displayTime, unread = props.unread, active = props.active, setActiveConversation = props.setActiveConversation; var conversationPreviewButton = useRef(null); var activeClass = active ? 'conversation-preview-content--active' : ''; var unreadClass = unread && unread >= 1 ? 'conversation-preview-content--unread' : ''; var pinClass = conversation.pinned ? 'conversation-preview-content--pin' : ''; var _b = useState(false), isHover = _b[0], setIsHover = _b[1]; var onSelectConversation = function () { if (setActiveConversation) { setActiveConversation(conversation); } if (conversationPreviewButton === null || conversationPreviewButton === void 0 ? void 0 : conversationPreviewButton.current) { conversationPreviewButton.current.blur(); } }; var handleMouseEnter = function () { setIsHover(true); }; var handleMouseLeave = function () { setIsHover(false); }; var activeConversation = useUIKit('UIConversationPreviewContent').activeConversation; var pinConversation = usePinConversation().mutate; var deleteConversation = useDeleteConversation().mutate; var moreHandle = function (type) { var id = conversation.id, pinned = conversation.pinned; switch (type) { case 'pin': pinConversation(id, !pinned); break; case 'delete': deleteConversation(id); if (conversation.id === activeConversation.id) { setActiveConversation(null); } break; } }; return (React__default.createElement("button", { type: "button", "aria-selected": active, role: "option", className: "conversation-preview-container ".concat(activeClass, " ").concat(unreadClass, " ").concat(pinClass), onClick: onSelectConversation, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, ref: conversationPreviewButton }, React__default.createElement("div", { className: "avatar" }, React__default.createElement(Avatar$1, { image: displayImage, name: conversation.name, size: 40 })), React__default.createElement("div", { className: "content" }, React__default.createElement("div", { className: "title" }, displayTitle), React__default.createElement("div", { className: "message" }, displayMessage)), React__default.createElement("div", { className: "external" }, unread ? (React__default.createElement("div", { className: "unread" }, unread <= 99 ? unread : '99+')) : (React__default.createElement("div", { className: "unread" })), !isHover ? (React__default.createElement("div", { className: "time" }, displayTime)) : (React__default.createElement("div", { className: "".concat(isHover ? 'more--hover' : 'more') }, React__default.createElement(Plugins, { customClass: "more-handle-box", plugins: [ React__default.createElement("div", { role: "presentation", className: "more-handle-item", onClick: function (e) { e.stopPropagation(); moreHandle('pin'); } }, !conversation.pinned ? '置顶' : '取消置顶'), React__default.createElement("div", { className: "more-handle-item", style: { color: '#FF584C' }, onClick: function (e) { e.stopPropagation(); moreHandle('delete'); }, role: "presentation" }, "\u5220\u9664"), ], showNumber: 0, MoreIcon: (React__default.createElement(Icon, { className: "icon-more", width: 16, height: 16, type: IconTypes.MORE })) })))))); } export { UIConversationPreviewContent }; //# sourceMappingURL=UIConversationPreviewContent.js.map