mirror of https://github.com/msgbyte/tailchat
feat: 增加新组件 CopyableText
parent
9f8e5c7a6f
commit
6424199be2
@ -0,0 +1,34 @@
|
||||
import React from 'react';
|
||||
import type { ComponentStory, ComponentMeta } from '@storybook/react';
|
||||
import { CopyableText } from '.';
|
||||
|
||||
export default {
|
||||
title: 'Tailchat/CopyableText',
|
||||
component: CopyableText,
|
||||
argTypes: {
|
||||
config: {
|
||||
description: '见: https://ant.design/components/typography-cn#copyable',
|
||||
defaultValue: true,
|
||||
},
|
||||
},
|
||||
} as ComponentMeta<typeof CopyableText>;
|
||||
|
||||
const Template: ComponentStory<typeof CopyableText> = (args) => (
|
||||
<div>
|
||||
可复制文本: <CopyableText {...args} />
|
||||
<- 点击此处复制
|
||||
</div>
|
||||
);
|
||||
|
||||
export const Default = Template.bind({});
|
||||
Default.args = {
|
||||
children: 'Foo',
|
||||
};
|
||||
|
||||
export const WithConfig = Template.bind({});
|
||||
WithConfig.args = {
|
||||
children: 'Foo',
|
||||
config: {
|
||||
text: 'Bar',
|
||||
},
|
||||
};
|
@ -0,0 +1,25 @@
|
||||
import React from 'react';
|
||||
import { Typography } from 'antd';
|
||||
import type { BlockProps } from 'antd/lib/typography/Base';
|
||||
|
||||
interface CopyableTextProps extends React.PropsWithChildren {
|
||||
className?: string;
|
||||
style?: React.CSSProperties;
|
||||
config?: BlockProps['copyable'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 可复制的文本
|
||||
*/
|
||||
export const CopyableText: React.FC<CopyableTextProps> = React.memo((props) => {
|
||||
return (
|
||||
<Typography.Text
|
||||
className={props.className}
|
||||
style={props.style}
|
||||
copyable={props.config ?? true}
|
||||
>
|
||||
{props.children}
|
||||
</Typography.Text>
|
||||
);
|
||||
});
|
||||
CopyableText.displayName = 'CopyableText';
|
Loading…
Reference in New Issue