From c59af44e2aaeb05cf129f8278bb38da47467a9d5 Mon Sep 17 00:00:00 2001 From: anghunk Date: Fri, 6 Feb 2026 17:22:46 +0800 Subject: [PATCH] =?UTF-8?q?feat(widget):=20=E6=B7=BB=E5=8A=A0=E8=AF=84?= =?UTF-8?q?=E8=AE=BA=E5=9B=BE=E7=89=87=E7=81=AF=E7=AE=B1=E9=A2=84=E8=A7=88?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 ImagePreview 组件用于全屏查看评论中的图片 - 在功能设置中添加图片灯箱模式开关选项 - 扩展媒体元素样式限制,支持视频和 iframe 的尺寸控制 - 更新前后端 API 以支持 enableImageLightbox 配置项 - 优化设置页面布局,使用卡片式分组展示功能项 --- cwd-admin/src/api/admin.ts | 3 +- cwd-admin/src/styles/components/setting.less | 16 ++++ cwd-admin/src/styles/markdown.css | 5 +- cwd-admin/src/views/SettingsView/index.vue | 51 +++++++---- cwd-api/src/api/admin/featureSettings.ts | 5 ++ cwd-api/src/utils/featureSettings.ts | 18 +++- docs/widget/src/components/ImagePreview.js | 76 ++++++++++++++++ docs/widget/src/core/CWDComments.js | 33 +++++++ docs/widget/src/styles/main.css | 94 +++++++++++++++++++- 9 files changed, 281 insertions(+), 20 deletions(-) create mode 100644 docs/widget/src/components/ImagePreview.js diff --git a/cwd-admin/src/api/admin.ts b/cwd-admin/src/api/admin.ts index 1aa5531..9abb92f 100644 --- a/cwd-admin/src/api/admin.ts +++ b/cwd-admin/src/api/admin.ts @@ -130,6 +130,7 @@ export type LikeStatsResponse = { export type FeatureSettingsResponse = { enableCommentLike: boolean; enableArticleLike: boolean; + enableImageLightbox: boolean; commentPlaceholder?: string; visibleDomains?: string[]; }; @@ -333,7 +334,7 @@ export function fetchFeatureSettings(): Promise { return get('/admin/settings/features'); } -export function saveFeatureSettings(data: { enableCommentLike?: boolean; enableArticleLike?: boolean; commentPlaceholder?: string; visibleDomains?: string[] }): Promise<{ message: string }> { +export function saveFeatureSettings(data: { enableCommentLike?: boolean; enableArticleLike?: boolean; enableImageLightbox?: boolean; commentPlaceholder?: string; visibleDomains?: string[] }): Promise<{ message: string }> { return put<{ message: string }>('/admin/settings/features', data); } diff --git a/cwd-admin/src/styles/components/setting.less b/cwd-admin/src/styles/components/setting.less index 89630dc..e27dcd0 100644 --- a/cwd-admin/src/styles/components/setting.less +++ b/cwd-admin/src/styles/components/setting.less @@ -279,4 +279,20 @@ .tab-fade-leave-to { opacity: 0; transform: translateY(4px); +} + +.form-item-flex { + display: flex; + align-items: center; + justify-content: space-between; + gap: 10px; +} + +.feature { + .bg { + margin-bottom: 15px; + background: var(--bg-sider); + padding: 10px; + border-radius: 5px; + } } \ No newline at end of file diff --git a/cwd-admin/src/styles/markdown.css b/cwd-admin/src/styles/markdown.css index 7688ee9..c0199a8 100644 --- a/cwd-admin/src/styles/markdown.css +++ b/cwd-admin/src/styles/markdown.css @@ -114,9 +114,12 @@ background: var(--cwd-bg-secondary, #f6f8fa); } -.cell-content-text img { +.cell-content-text img, +.cell-content-text video, +.cell-content-text iframe { max-width: 100%; height: auto; + max-height: 200px; } /* 兼容其他框架导入的样式 */ diff --git a/cwd-admin/src/views/SettingsView/index.vue b/cwd-admin/src/views/SettingsView/index.vue index b197107..b8faf77 100644 --- a/cwd-admin/src/views/SettingsView/index.vue +++ b/cwd-admin/src/views/SettingsView/index.vue @@ -207,39 +207,54 @@