style: 调整消息操作使其打开菜单时能够锁定选中样式

release/desktop
moonrailgun 3 years ago
parent 49e02112ce
commit 9642f2c436

@ -1,4 +1,4 @@
import React, { useMemo } from 'react'; import React, { useMemo, useState } from 'react';
import { import {
ChatMessage, ChatMessage,
formatShortTime, formatShortTime,
@ -24,6 +24,7 @@ import { Icon } from '@iconify/react';
import { Divider, Dropdown, Menu } from 'antd'; import { Divider, Dropdown, Menu } from 'antd';
import { UserName } from '@/components/UserName'; import { UserName } from '@/components/UserName';
import './item.less'; import './item.less';
import clsx from 'clsx';
/** /**
* *
@ -111,11 +112,17 @@ MessageQuote.displayName = 'MessageQuote';
const NormalMessage: React.FC<ChatMessageItemProps> = React.memo((props) => { const NormalMessage: React.FC<ChatMessageItemProps> = React.memo((props) => {
const { showAvatar, payload } = props; const { showAvatar, payload } = props;
const userInfo = useCachedUserInfo(payload.author ?? ''); const userInfo = useCachedUserInfo(payload.author ?? '');
const [isActionBtnActive, setIsActionBtnActive] = useState(false);
const actions = useChatMessageItemAction(payload); const actions = useChatMessageItemAction(payload);
return ( return (
<div className="chat-message-item flex px-2 group hover:bg-black hover:bg-opacity-10 relative"> <div
className={clsx('chat-message-item flex px-2 group relative', {
'bg-black bg-opacity-10': isActionBtnActive,
'hover:bg-black hover:bg-opacity-10': !isActionBtnActive,
})}
>
{/* 头像 */} {/* 头像 */}
<div className="w-18 flex items-start justify-center pt-0.5"> <div className="w-18 flex items-start justify-center pt-0.5">
{showAvatar ? ( {showAvatar ? (
@ -149,8 +156,22 @@ const NormalMessage: React.FC<ChatMessageItemProps> = React.memo((props) => {
</div> </div>
{/* 操作 */} {/* 操作 */}
<Dropdown overlay={actions} placement="bottomLeft" trigger={['click']}> <Dropdown
<div className="opacity-0 group-hover:opacity-100 bg-white dark:bg-black bg-opacity-80 hover:bg-opacity-100 rounded px-0.5 absolute right-2 cursor-pointer w-6 h-6 -top-3 flex justify-center items-center shadow-sm"> overlay={actions}
placement="bottomLeft"
trigger={['click']}
onVisibleChange={setIsActionBtnActive}
>
<div
className={clsx(
'bg-white dark:bg-black rounded px-0.5 absolute right-2 cursor-pointer w-6 h-6 -top-3 flex justify-center items-center shadow-sm',
{
'opacity-0 group-hover:opacity-100 bg-opacity-80 hover:bg-opacity-100':
!isActionBtnActive,
'opacity-100 bg-opacity-100': isActionBtnActive,
}
)}
>
<Icon icon="mdi:dots-horizontal" /> <Icon icon="mdi:dots-horizontal" />
</div> </div>
</Dropdown> </Dropdown>

Loading…
Cancel
Save