Skip to content

Commit b47892c

Browse files
✨ feat: Add new props and import MessageModal component
- Add "text" and "placeholder" props to EditableMessage component - Add "placeholder" and "text" props to MessageModal component - Modify rendering and behavior based on new props The changes introduce new props to the EditableMessage and MessageModal components, allowing for more customization and improved functionality. The import of the MessageModal component enables its usage in the codebase.
1 parent 389761e commit b47892c

File tree

2 files changed

+30
-11
lines changed

2 files changed

+30
-11
lines changed

src/EditableMessage/index.tsx

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import useControlledState from 'use-merge-value';
33

44
import Markdown from '@/Markdown';
55
import MessageInput from '@/MessageInput';
6-
import MessageModal from '@/MessageModal';
6+
import MessageModal, { type MessageModalProps } from '@/MessageModal';
77

88
export interface EditableMessageProps {
99
/**
@@ -61,6 +61,7 @@ export interface EditableMessageProps {
6161
*/
6262
markdown?: CSSProperties;
6363
};
64+
text?: MessageModalProps['text'];
6465
/**
6566
* @title The current text value
6667
*/
@@ -80,6 +81,7 @@ const EditableMessage = memo<EditableMessageProps>(
8081
showEditWhenEmpty = false,
8182
styles,
8283
editButtonSize,
84+
text,
8385
}) => {
8486
const [isEdit, setTyping] = useControlledState(false, {
8587
onChange: onEditingChange,
@@ -121,17 +123,20 @@ const EditableMessage = memo<EditableMessageProps>(
121123
/>
122124
) : (
123125
<Markdown className={classNames?.markdown} style={styles?.markdown}>
124-
{value}
126+
{value || placeholder}
125127
</Markdown>
126128
)}
127129
<MessageModal
128130
editing={isEdit}
129-
onChange={(text) => {
130-
onChange?.(text);
131-
}}
131+
onChange={(text) => onChange?.(text)}
132132
onEditingChange={setTyping}
133-
onOpenChange={setExpand}
133+
onOpenChange={(e) => {
134+
setExpand(e);
135+
setTyping(false);
136+
}}
134137
open={expand}
138+
placeholder={placeholder}
139+
text={text}
135140
value={value}
136141
/>
137142
</>

src/MessageModal/index.tsx

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,21 @@ export interface MessageModalProps {
3333
* @default false
3434
*/
3535
open?: boolean;
36+
placeholder?: string;
37+
text?: {
38+
cancel?: string;
39+
confirm?: string;
40+
edit?: string;
41+
title?: string;
42+
};
3643
/**
3744
* @description The value of the message content
3845
*/
3946
value: string;
4047
}
4148

4249
const MessageModal = memo<MessageModalProps>(
43-
({ editing, open, onOpenChange, onEditingChange, value, onChange }) => {
50+
({ editing, open, onOpenChange, onEditingChange, placeholder, value, onChange, text }) => {
4451
const { styles } = useStyles();
4552

4653
const [isEdit, setTyping] = useControlledState(false, {
@@ -55,19 +62,19 @@ const MessageModal = memo<MessageModalProps>(
5562

5663
return (
5764
<Modal
58-
cancelText={'Cancel'}
65+
cancelText={text?.cancel || 'Cancel'}
5966
className={styles.modal}
6067
closeIcon={<Icon icon={X} />}
6168
footer={isEdit ? null : undefined}
62-
okText={'Edit'}
69+
okText={text?.edit || 'Edit'}
6370
onCancel={() => setExpand(false)}
6471
onOk={() => {
6572
setTyping(true);
6673
}}
6774
open={expand}
6875
title={
6976
<Flexbox align={'center'} gap={4} horizontal>
70-
Prompt
77+
{text?.title || 'Prompt'}
7178
</Flexbox>
7279
}
7380
width={800}
@@ -81,9 +88,16 @@ const MessageModal = memo<MessageModalProps>(
8188
setTyping(false);
8289
onChange?.(text);
8390
}}
91+
placeholder={placeholder}
92+
text={{
93+
cancel: text?.cancel,
94+
confirm: text?.confirm,
95+
}}
8496
/>
8597
) : (
86-
<Markdown className={styles.body}>{value}</Markdown>
98+
<Markdown className={styles.body} style={value ? {} : { opacity: 0.5 }}>
99+
{String(value || placeholder)}
100+
</Markdown>
87101
)}
88102
</Modal>
89103
);

0 commit comments

Comments
 (0)