Skip to content

Commit 44257f6

Browse files
feat: add support for passing array of messages
1 parent 7ad343d commit 44257f6

5 files changed

Lines changed: 51 additions & 8 deletions

File tree

apps/demo/src/Views/Ui/components/Message.tsx

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export const MessageDemo = () => {
2525
default: "-",
2626
description: t("message.table.propDescription.message"),
2727
prop: "message",
28-
type: "string | ReactNode",
28+
type: "string | string[] | ReactNode",
2929
},
3030
{
3131
default: "-",
@@ -75,6 +75,28 @@ export const MessageDemo = () => {
7575
<CodeBlock exampleCode="<Message message={<b>Season sale: Up to 50% off selected items!</b>} />" />
7676
</Section>
7777

78+
<Section title={t("message.usage.arrayMessage")}>
79+
<Message
80+
message={[
81+
t("message.contents.content1"),
82+
t("message.contents.content2"),
83+
t("message.contents.content3"),
84+
]}
85+
enableClose={true}
86+
/>
87+
<CodeBlock
88+
exampleCode="<Message
89+
message={
90+
[
91+
'Season Sale: Enjoy massive discounts with up to 50% off on a wide range of selected items — from fashion to electronics, don’t miss out on these limited-time offers!',
92+
'New features just launched! Check them out!',
93+
'New Year, New You: Start fresh with our services!'
94+
]}
95+
enableClose={true}
96+
/>"
97+
/>
98+
</Section>
99+
78100
<Section title={t("message.usage.icons.icon")}>
79101
<Message
80102
message={t("message.contents.content2")}

apps/demo/src/locales/en/ui.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@
216216
},
217217
"message": {
218218
"contents": {
219-
"content1": "Season sale: Up to 50% off selected items!",
219+
"content1": "Season Sale: Enjoy massive discounts with up to 50% off on a wide range of selected items — from fashion to electronics, don’t miss out on these limited-time offers!",
220220
"content2": "New features just launched! Check them out!",
221221
"content3": "New Year, New You: Start fresh with our services!",
222222
"content4": "We value your feedback: take our quick survey!",
@@ -245,6 +245,7 @@
245245
},
246246
"title": "Message",
247247
"usage": {
248+
"arrayMessage": "Array of message",
248249
"basic": "Basic",
249250
"customMessage": "Custom message",
250251
"enableClose": "Enable close",

apps/demo/src/locales/fr/ui.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@
216216
},
217217
"message": {
218218
"contents": {
219-
"content1": "Season sale: Up to 50% off selected items! (fr)",
219+
"content1": "Season Sale: Enjoy massive discounts with up to 50% off on a wide range of selected items — from fashion to electronics, don’t miss out on these limited-time offers! (fr)",
220220
"content2": "New features just launched! Check them out! (fr)",
221221
"content3": "New Year, New You: Start fresh with our services! (fr)",
222222
"content4": "We value your feedback: take our quick survey! (fr)",
@@ -245,12 +245,13 @@
245245
},
246246
"title": "Message (fr)",
247247
"usage": {
248+
"arrayMessage": "Array of message (fr)",
248249
"basic": "Basic (fr)",
249250
"customMessage": "Custom message (fr)",
250251
"enableClose": "Enable close (fr)",
251252
"hideIcon": "Hide default icon (fr)",
252253
"icons": {
253-
"customIcon": "Icon slot (fr)",
254+
"customIcon": "Custom icon (fr)",
254255
"icon": "Icon (fr)"
255256
},
256257
"severity": "Severity (fr)"

packages/ui/src/Message/index.tsx

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import { ReactNode, useState } from "react";
22

33
type MessageProperties = {
44
enableClose?: boolean;
5-
icon?: string | ReactNode;
6-
message: string | ReactNode;
5+
icon?: ReactNode;
6+
message: string[] | ReactNode;
77
onClose?: () => void;
88
severity?: "info" | "success" | "warning" | "danger";
99
showIcon?: boolean;
@@ -54,7 +54,17 @@ const Message = ({
5454

5555
const renderMessageContent = () => {
5656
if (typeof message === "string") {
57-
return <span className="message-content">{message}</span>;
57+
return <span>{message}</span>;
58+
}
59+
60+
if (Array.isArray(message)) {
61+
return (
62+
<ul>
63+
{message.map((message_, index) => (
64+
<li key={index}>{message_}</li>
65+
))}
66+
</ul>
67+
);
5868
}
5969

6070
return message;
@@ -63,7 +73,7 @@ const Message = ({
6373
return (
6474
<div className={`message ${severity}`}>
6575
{showIcon && renderIcon()}
66-
{renderMessageContent()}
76+
<div className="message-content">{renderMessageContent()}</div>
6777
{enableClose && (
6878
<span className="close-message" onClick={handleClose}>
6979
<i className="pi pi-times"></i>

packages/ui/src/assets/css/message.css

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,15 @@
1212
flex: 1;
1313
}
1414

15+
.message-content ul {
16+
display: flex;
17+
flex-direction: column;
18+
gap: 0.5rem;
19+
list-style-type: disc;
20+
margin: 0 1rem;
21+
padding: 0;
22+
}
23+
1524
.message .close-message {
1625
color: var(--color);
1726
cursor: pointer;

0 commit comments

Comments
 (0)