18 lines
502 B
JavaScript
Executable File
Vendored
18 lines
502 B
JavaScript
Executable File
Vendored
import { watchEffect } from 'vue'
|
|
|
|
export const useAutoresizeTextarea = (element) => {
|
|
|
|
const resizeTextarea = () => {
|
|
element.value.style.height = 'auto'
|
|
element.value.style.height = element.value.scrollHeight + 'px'
|
|
}
|
|
|
|
watchEffect(onInvalidate => {
|
|
if (! element.value) return
|
|
resizeTextarea()
|
|
element.value.addEventListener('input', resizeTextarea)
|
|
|
|
onInvalidate(() => element.value?.removeEventListener('input', resizeTextarea))
|
|
})
|
|
}
|