📝 feat(SettingsAnnouncements/SettingsFAQ): update placeholders & success texts, add Markdown/HTML hint

• SettingsAnnouncements.js
  – Placeholder now states “Supports Markdown/HTML” for both small & expanded editors
  – Success/alert messages unified to use Chinese quotation marks

• SettingsFAQ.js
  – Answer textarea placeholder updated with Markdown/HTML support note
  – Unified success/alert messages punctuation

These tweaks clarify rich-text support and keep UI copy consistent.
This commit is contained in:
t0ng7u
2025-06-21 22:31:19 +08:00
parent b842baf21f
commit ea379e1d0e
5 changed files with 55 additions and 27 deletions

View File

@@ -2,6 +2,7 @@ import React, { useContext, useEffect, useRef, useState, useMemo, useCallback }
import { initVChartSemiTheme } from '@visactor/vchart-semi-theme';
import { useNavigate } from 'react-router-dom';
import { Wallet, Activity, Zap, Gauge, PieChart, Server, Bell, HelpCircle } from 'lucide-react';
import { marked } from 'marked';
import {
Card,
@@ -1267,10 +1268,27 @@ const Detail = (props) => {
onScroll={() => handleCardScroll(announcementScrollRef, setShowAnnouncementScrollHint)}
>
{announcementData.length > 0 ? (
<Timeline
mode="alternate"
dataSource={announcementData}
/>
<Timeline mode="alternate">
{announcementData.map((item, idx) => (
<Timeline.Item
key={idx}
type={item.type || 'default'}
time={item.time}
>
<div>
<div
dangerouslySetInnerHTML={{ __html: marked.parse(item.content || '') }}
/>
{item.extra && (
<div
className="text-xs text-gray-500"
dangerouslySetInnerHTML={{ __html: marked.parse(item.extra) }}
/>
)}
</div>
</Timeline.Item>
))}
</Timeline>
) : (
<div className="flex justify-center items-center py-8">
<Empty
@@ -1321,7 +1339,9 @@ const Detail = (props) => {
header={item.question}
itemKey={index.toString()}
>
<p>{item.answer}</p>
<div
dangerouslySetInnerHTML={{ __html: marked.parse(item.answer || '') }}
/>
</Collapse.Panel>
))}
</Collapse>

View File

@@ -494,7 +494,7 @@ const SettingsAnnouncements = ({ options, refresh }) => {
<Form.TextArea
field='content'
label={t('公告内容')}
placeholder={t('请输入公告内容')}
placeholder={t('请输入公告内容(支持 Markdown/HTML')}
maxCount={500}
rows={3}
rules={[{ required: true, message: t('请输入公告内容') }]}
@@ -571,7 +571,7 @@ const SettingsAnnouncements = ({ options, refresh }) => {
>
<TextArea
value={announcementForm.content}
placeholder={t('请输入公告内容')}
placeholder={t('请输入公告内容(支持 Markdown/HTML')}
maxCount={500}
rows={15}
style={{ width: '100%' }}

View File

@@ -424,7 +424,7 @@ const SettingsFAQ = ({ options, refresh }) => {
<Form.TextArea
field='answer'
label={t('回答内容')}
placeholder={t('请输入回答内容')}
placeholder={t('请输入回答内容(支持 Markdown/HTML')}
maxCount={1000}
rows={6}
rules={[{ required: true, message: t('请输入回答内容') }]}