feat: 输入框addon增加打开动画,并移除表情面板的内边距

pull/64/head
moonrailgun 3 years ago
parent d9acf3b679
commit c6ac1a800d

@ -5,12 +5,14 @@ import {
} from '@/plugin/common'; } from '@/plugin/common';
import { Icon } from 'tailchat-design'; import { Icon } from 'tailchat-design';
import { Dropdown, Menu } from 'antd'; import { Dropdown, Menu } from 'antd';
import React from 'react'; import React, { useState } from 'react';
import { t } from 'tailchat-shared'; import { t } from 'tailchat-shared';
import { useChatInputActionContext } from './context'; import { useChatInputActionContext } from './context';
import { uploadMessageImage } from './utils'; import { uploadMessageImage } from './utils';
import clsx from 'clsx';
export const ChatInputAddon: React.FC = React.memo(() => { export const ChatInputAddon: React.FC = React.memo(() => {
const [open, setOpen] = useState(false);
const actionContext = useChatInputActionContext(); const actionContext = useChatInputActionContext();
if (actionContext === null) { if (actionContext === null) {
return null; return null;
@ -50,11 +52,21 @@ export const ChatInputAddon: React.FC = React.memo(() => {
); );
return ( return (
<Dropdown overlay={menu} placement="topRight" trigger={['click']}> <Dropdown
<Icon overlay={menu}
className="text-2xl cursor-pointer" open={open}
icon="mdi:plus-circle-outline" onOpenChange={setOpen}
/> placement="topRight"
trigger={['click']}
>
<div>
<Icon
className={clsx('text-2xl cursor-pointer transition transform', {
'rotate-45': open,
})}
icon="mdi:plus-circle-outline"
/>
</div>
</Dropdown> </Dropdown>
); );
}); });

@ -0,0 +1,9 @@
.chat-message-input_action-popover {
.ant-popover-inner {
background-color: transparent;
.ant-popover-inner-content {
padding: 0;
}
}
}

@ -1,8 +1,9 @@
import { Icon } from 'tailchat-design'; import { Icon } from 'tailchat-design';
import { Dropdown, Popover } from 'antd'; import { Popover } from 'antd';
import React, { useCallback, useState } from 'react'; import React, { useCallback, useState } from 'react';
import { useChatInputActionContext } from './context'; import { useChatInputActionContext } from './context';
import { EmojiPanel } from '@/components/Emoji'; import { EmojiPanel } from '@/components/Emoji';
import './Emotion.less';
export const ChatInputEmotion: React.FC = React.memo(() => { export const ChatInputEmotion: React.FC = React.memo(() => {
const actionContext = useChatInputActionContext(); const actionContext = useChatInputActionContext();
@ -18,13 +19,15 @@ export const ChatInputEmotion: React.FC = React.memo(() => {
[appendMsg] [appendMsg]
); );
const menu = <EmojiPanel onSelect={handleSelect} />; const content = <EmojiPanel onSelect={handleSelect} />;
return ( return (
<Popover <Popover
open={visible} open={visible}
onOpenChange={setVisible} onOpenChange={setVisible}
content={menu} content={content}
overlayClassName="chat-message-input_action-popover"
showArrow={false}
placement="topRight" placement="topRight"
trigger={['click']} trigger={['click']}
> >

Loading…
Cancel
Save