mirror of
https://github.com/element-plus/element-plus.git
synced 2026-03-13 07:51:17 +08:00
* refactor(utils-v2): migrate utils * refactor(utils-v2): migrate utils * refactor(utils-v2): migrate utils * refactor(utils): remove * refactor(utils): rename * refactor(utils): move EVENT_CODE to constants * refactor: remove generic
33 lines
772 B
TypeScript
33 lines
772 B
TypeScript
import { ref } from 'vue'
|
|
import { isFunction } from '@vue/shared'
|
|
import { isKorean } from '@element-plus/utils'
|
|
|
|
export function useInput(handleInput: (event: InputEvent) => void) {
|
|
const isComposing = ref(false)
|
|
|
|
const handleCompositionStart = () => {
|
|
isComposing.value = true
|
|
}
|
|
|
|
const handleCompositionUpdate = (event) => {
|
|
const text = event.target.value
|
|
const lastCharacter = text[text.length - 1] || ''
|
|
isComposing.value = !isKorean(lastCharacter)
|
|
}
|
|
|
|
const handleCompositionEnd = (event) => {
|
|
if (isComposing.value) {
|
|
isComposing.value = false
|
|
if (isFunction(handleInput)) {
|
|
handleInput(event)
|
|
}
|
|
}
|
|
}
|
|
|
|
return {
|
|
handleCompositionStart,
|
|
handleCompositionUpdate,
|
|
handleCompositionEnd,
|
|
}
|
|
}
|