mirror of
https://gitee.com/HuLaSpark/HuLa.git
synced 2024-11-29 18:28:30 +08:00
fix(layout): 🐛 修复选择了图片不显示在输入框中的bug
This commit is contained in:
parent
56d79ccc8b
commit
c7cdac69ce
@ -95,7 +95,7 @@ import { useCommon } from '@/hooks/useCommon.ts'
|
|||||||
import { WebviewWindow } from '@tauri-apps/api/webviewWindow'
|
import { WebviewWindow } from '@tauri-apps/api/webviewWindow'
|
||||||
import { emit } from '@tauri-apps/api/event'
|
import { emit } from '@tauri-apps/api/event'
|
||||||
|
|
||||||
const { open, onChange } = useFileDialog()
|
const { open, onChange, reset } = useFileDialog()
|
||||||
const MsgInputRef = ref()
|
const MsgInputRef = ref()
|
||||||
const msgInputDom = ref()
|
const msgInputDom = ref()
|
||||||
const emojiShow = ref()
|
const emojiShow = ref()
|
||||||
@ -111,7 +111,7 @@ const emojiHandle = (item: string) => {
|
|||||||
const { range } = getEditorRange()!
|
const { range } = getEditorRange()!
|
||||||
range?.collapse(false)
|
range?.collapse(false)
|
||||||
// 插入表情
|
// 插入表情
|
||||||
insertNode(MsgEnum.TEXT, item)
|
insertNode(MsgEnum.TEXT, item, MsgInputRef.value.messageInputDom)
|
||||||
triggerInputEvent(msgInputDom.value)
|
triggerInputEvent(msgInputDom.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -145,6 +145,7 @@ onChange((files) => {
|
|||||||
FileOrVideoPaste(file, MsgEnum.FILE, MsgInputRef.value.messageInputDom)
|
FileOrVideoPaste(file, MsgEnum.FILE, MsgInputRef.value.messageInputDom)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
reset()
|
||||||
})
|
})
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
@ -87,7 +87,7 @@ export const useCommon = () => {
|
|||||||
* @param { MsgEnum } type 插入的类型
|
* @param { MsgEnum } type 插入的类型
|
||||||
* @param dom dom节点
|
* @param dom dom节点
|
||||||
*/
|
*/
|
||||||
const insertNode = (type: MsgEnum, dom: any) => {
|
const insertNode = (type: MsgEnum, dom: any, target: HTMLElement) => {
|
||||||
const { selection, range } = getEditorRange()!
|
const { selection, range } = getEditorRange()!
|
||||||
// 删除选中的内容
|
// 删除选中的内容
|
||||||
range?.deleteContents()
|
range?.deleteContents()
|
||||||
@ -258,7 +258,7 @@ export const useCommon = () => {
|
|||||||
range?.insertNode(spaceNode)
|
range?.insertNode(spaceNode)
|
||||||
range?.collapse(false)
|
range?.collapse(false)
|
||||||
} else {
|
} else {
|
||||||
range?.insertNode(dom)
|
target.appendChild(dom)
|
||||||
}
|
}
|
||||||
// 将光标移到选中范围的最后面
|
// 将光标移到选中范围的最后面
|
||||||
selection?.collapseToEnd()
|
selection?.collapseToEnd()
|
||||||
@ -279,7 +279,7 @@ export const useCommon = () => {
|
|||||||
img.style.maxWidth = '140px'
|
img.style.maxWidth = '140px'
|
||||||
img.style.marginRight = '6px'
|
img.style.marginRight = '6px'
|
||||||
// 插入图片
|
// 插入图片
|
||||||
insertNode(MsgEnum.IMAGE, img)
|
insertNode(MsgEnum.IMAGE, img, dom)
|
||||||
triggerInputEvent(dom)
|
triggerInputEvent(dom)
|
||||||
}
|
}
|
||||||
nextTick(() => {}).then(() => {
|
nextTick(() => {}).then(() => {
|
||||||
@ -298,7 +298,7 @@ export const useCommon = () => {
|
|||||||
// 使用函数
|
// 使用函数
|
||||||
createFileOrVideoDom(file).then((imgTag) => {
|
createFileOrVideoDom(file).then((imgTag) => {
|
||||||
// 将生成的img标签插入到页面中
|
// 将生成的img标签插入到页面中
|
||||||
insertNode(type, imgTag)
|
insertNode(type, imgTag, dom)
|
||||||
triggerInputEvent(dom)
|
triggerInputEvent(dom)
|
||||||
})
|
})
|
||||||
nextTick(() => {}).then(() => {
|
nextTick(() => {}).then(() => {
|
||||||
@ -340,7 +340,7 @@ export const useCommon = () => {
|
|||||||
} else {
|
} else {
|
||||||
// 如果没有文件,而是文本,处理纯文本粘贴
|
// 如果没有文件,而是文本,处理纯文本粘贴
|
||||||
const plainText = e.clipboardData.getData('text/plain')
|
const plainText = e.clipboardData.getData('text/plain')
|
||||||
insertNode(MsgEnum.TEXT, plainText)
|
insertNode(MsgEnum.TEXT, plainText, dom)
|
||||||
triggerInputEvent(dom)
|
triggerInputEvent(dom)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ export const useMsgInput = (messageInputDom: Ref) => {
|
|||||||
if (clipboardItem.types.includes('text/plain')) {
|
if (clipboardItem.types.includes('text/plain')) {
|
||||||
// 如果是文本,使用 readText() 读取文本内容
|
// 如果是文本,使用 readText() 读取文本内容
|
||||||
navigator.clipboard.readText().then((text) => {
|
navigator.clipboard.readText().then((text) => {
|
||||||
insertNode(MsgEnum.TEXT, text)
|
insertNode(MsgEnum.TEXT, text, {} as HTMLElement)
|
||||||
triggerInputEvent(messageInputDom.value)
|
triggerInputEvent(messageInputDom.value)
|
||||||
})
|
})
|
||||||
} else if (clipboardItem.types.find((type) => type.startsWith('image/'))) {
|
} else if (clipboardItem.types.find((type) => type.startsWith('image/'))) {
|
||||||
@ -122,7 +122,11 @@ export const useMsgInput = (messageInputDom: Ref) => {
|
|||||||
if (messageInputDom.value) {
|
if (messageInputDom.value) {
|
||||||
nextTick().then(() => {
|
nextTick().then(() => {
|
||||||
messageInputDom.value.focus()
|
messageInputDom.value.focus()
|
||||||
insertNode(MsgEnum.REPLY, { accountName: accountName, content: event.message.body.content })
|
insertNode(
|
||||||
|
MsgEnum.REPLY,
|
||||||
|
{ accountName: accountName, content: event.message.body.content },
|
||||||
|
{} as HTMLElement
|
||||||
|
)
|
||||||
triggerInputEvent(messageInputDom.value)
|
triggerInputEvent(messageInputDom.value)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -277,7 +281,7 @@ export const useMsgInput = (messageInputDom: Ref) => {
|
|||||||
if (!isWindows && chat.value.sendKey === 'Enter' && e.metaKey && e.key === 'Enter') {
|
if (!isWindows && chat.value.sendKey === 'Enter' && e.metaKey && e.key === 'Enter') {
|
||||||
// 就进行换行操作
|
// 就进行换行操作
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
insertNode(MsgEnum.TEXT, '\n')
|
insertNode(MsgEnum.TEXT, '\n', {} as HTMLElement)
|
||||||
triggerInputEvent(messageInputDom.value)
|
triggerInputEvent(messageInputDom.value)
|
||||||
}
|
}
|
||||||
if (msgInput.value === '' || msgInput.value.trim() === '' || ait.value) {
|
if (msgInput.value === '' || msgInput.value.trim() === '' || ait.value) {
|
||||||
@ -313,7 +317,7 @@ export const useMsgInput = (messageInputDom: Ref) => {
|
|||||||
range?.setStart(textNode, <number>expRes?.index)
|
range?.setStart(textNode, <number>expRes?.index)
|
||||||
/** 设置范围的结束位置为光标的位置 */
|
/** 设置范围的结束位置为光标的位置 */
|
||||||
range?.setEnd(textNode, endOffset!)
|
range?.setEnd(textNode, endOffset!)
|
||||||
insertNode(MsgEnum.AIT, item.name)
|
insertNode(MsgEnum.AIT, item.name, {} as HTMLElement)
|
||||||
triggerInputEvent(messageInputDom.value)
|
triggerInputEvent(messageInputDom.value)
|
||||||
ait.value = false
|
ait.value = false
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user