From 9e3c1c554faad5dd5c7990931b960071e0027e35 Mon Sep 17 00:00:00 2001 From: CrescentLeaf Date: Sat, 24 Jan 2026 00:11:19 +0800 Subject: [PATCH] ui(client): add insertHtml for MduiPatchedTextArea --- client/env.d.ts | 3 ++- client/ui/MduiPatchedTextAreaElement.ts | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/client/env.d.ts b/client/env.d.ts index 5417aa5..8a63341 100644 --- a/client/env.d.ts +++ b/client/env.d.ts @@ -6,8 +6,9 @@ declare global { namespace React { namespace JSX { interface IntrinsicElements { - 'input-element': { + 'mdui-patched-textarea': { 'value'?: string + insertHtml: (html: string) => void } & React.DetailedHTMLProps, HTMLElement> } } diff --git a/client/ui/MduiPatchedTextAreaElement.ts b/client/ui/MduiPatchedTextAreaElement.ts index e782baa..5843589 100644 --- a/client/ui/MduiPatchedTextAreaElement.ts +++ b/client/ui/MduiPatchedTextAreaElement.ts @@ -60,6 +60,9 @@ export default class MduiPatchedTextAreaElement extends HTMLElement { this._lastValue = this.value || '' this.dispatchEvent(new Event('change', { bubbles: true })) } + // 消除
对 placeholder 的影响 + if (this.value == '') + this.value = '' }) this.inputDiv.addEventListener('paste', (e: ClipboardEvent) => { e.preventDefault() @@ -101,6 +104,11 @@ export default class MduiPatchedTextAreaElement extends HTMLElement { set value(v) { this.inputDiv && (this.inputDiv.textContent = v) } + insertHtml(html: string) { + this.inputDiv?.focus() + + document.execCommand('insertHTML', false, html) + } } customElements.define('mdui-patched-textarea', MduiPatchedTextAreaElement)