element-plus
Version:
A Component Library for Vue 3
25 lines (20 loc) • 558 B
text/typescript
import {
addResizeListener,
removeResizeListener,
} from '@element-plus/utils/resize-event'
import type { ObjectDirective, DirectiveBinding } from 'vue'
declare interface ResizeEl extends HTMLElement {
_handleResize?: () => void
}
const Resize: ObjectDirective = {
beforeMount(el: ResizeEl, binding: DirectiveBinding) {
el._handleResize = () => {
el && binding.value?.(el)
}
addResizeListener(el, el._handleResize)
},
beforeUnmount(el: ResizeEl) {
removeResizeListener(el, el._handleResize)
},
}
export default Resize