style(admin): 预览外链去箭头emoji
This commit is contained in:
@@ -44,6 +44,8 @@ export default function ArticleEditor() {
|
||||
const [cover, setCover] = React.useState("");
|
||||
const [video, setVideo] = React.useState("");
|
||||
const [link, setLink] = React.useState("");
|
||||
const [cardMode, setCardMode] = React.useState("small");
|
||||
const [isPublic, setIsPublic] = React.useState(true);
|
||||
const [html, setHtml] = React.useState("");
|
||||
const [editor, setEditor] = React.useState<IDomEditor | null>(null);
|
||||
const [busy, setBusy] = React.useState(false);
|
||||
@@ -63,6 +65,7 @@ export default function ArticleEditor() {
|
||||
contentApi.getOne(id).then((r) => {
|
||||
setCat(r.type || "policy"); setTitle(r.title || ""); setAuthor(r.publisher_name || "");
|
||||
setCover(r.cover || ""); setVideo(r.video || ""); setLink(r.link || ""); setHtml(r.body || "");
|
||||
setCardMode(r.card_mode || "small"); setIsPublic(r.is_public !== false);
|
||||
}).catch((e) => setErr((e as Error).message || "加载失败"));
|
||||
return () => { if (editor) editor.destroy(); };
|
||||
}, [id]);
|
||||
@@ -79,6 +82,7 @@ export default function ArticleEditor() {
|
||||
type: cat, title, body: html,
|
||||
cover, video, link,
|
||||
publisher_name: author,
|
||||
card_mode: cardMode, is_public: isPublic,
|
||||
status,
|
||||
summary: stripHtml(html).slice(0, 80),
|
||||
};
|
||||
@@ -138,6 +142,17 @@ export default function ArticleEditor() {
|
||||
<SelectTrigger className="w-28 h-8"><SelectValue /></SelectTrigger>
|
||||
<SelectContent>{CATS.map((c) => <SelectItem key={c.value} value={c.value}>{c.label}</SelectItem>)}</SelectContent>
|
||||
</Select>
|
||||
<Select value={cardMode} onValueChange={setCardMode}>
|
||||
<SelectTrigger className="w-28 h-8"><SelectValue /></SelectTrigger>
|
||||
<SelectContent>
|
||||
<SelectItem value="small">小图模式</SelectItem>
|
||||
<SelectItem value="big">大图模式</SelectItem>
|
||||
</SelectContent>
|
||||
</Select>
|
||||
<label className="flex items-center gap-2 text-sm">
|
||||
<input type="checkbox" checked={isPublic} onChange={(e) => setIsPublic(e.target.checked)} />
|
||||
公开(C端展示)
|
||||
</label>
|
||||
<Input className="h-8" placeholder="视频 URL(可选,卡片播放角标)" value={video} onChange={(e) => setVideo(e.target.value)} />
|
||||
<Input className="h-8" placeholder="外链(可选)" value={link} onChange={(e) => setLink(e.target.value)} />
|
||||
</div>
|
||||
@@ -175,7 +190,7 @@ export default function ArticleEditor() {
|
||||
<div className="text-sm text-muted-foreground">{author || "云超服"}</div>
|
||||
<div className="prose max-w-none" dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(html || "") }} />
|
||||
{video && <div className="text-sm text-muted-foreground"><video className="w-full" src={video} controls /></div>}
|
||||
{link && <a className="text-emerald-500" href={link} target="_blank" rel="noreferrer">原文链接 ↗</a>}
|
||||
{link && <a className="text-emerald-500" href={link} target="_blank" rel="noreferrer">原文链接</a>}
|
||||
</div>
|
||||
</DialogContent>
|
||||
</Dialog>
|
||||
|
||||
Reference in New Issue
Block a user