From 1fe271549ec3dd4e0ca4abd98678247a4f8830f7 Mon Sep 17 00:00:00 2001 From: kooriookami <38392315+kooriookami@users.noreply.github.com> Date: Thu, 1 Jul 2021 09:29:00 +0800 Subject: [PATCH] feat: add resize directive (#2167) * feat: add resize directive * fix: update --- packages/directives/index.ts | 1 + packages/directives/resize/index.ts | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 packages/directives/resize/index.ts diff --git a/packages/directives/index.ts b/packages/directives/index.ts index 1285e865a1..47d0493648 100644 --- a/packages/directives/index.ts +++ b/packages/directives/index.ts @@ -2,3 +2,4 @@ export { default as ClickOutside } from './click-outside' export { default as RepeatClick } from './repeat-click' export { default as TrapFocus } from './trap-focus' export { default as Mousewheel } from './mousewheel' +export { default as Resize } from './resize' diff --git a/packages/directives/resize/index.ts b/packages/directives/resize/index.ts new file mode 100644 index 0000000000..96730922e9 --- /dev/null +++ b/packages/directives/resize/index.ts @@ -0,0 +1,17 @@ +import { addResizeListener, removeResizeListener } from '@element-plus/utils/resize-event' + +import type { ObjectDirective } from 'vue' + +const Resize: ObjectDirective = { + beforeMount(el, binding) { + el._handleResize = () => { + el && binding.value?.() + } + addResizeListener(el, el._handleResize) + }, + beforeUnmount(el) { + removeResizeListener(el, el._handleResize) + }, +} + +export default Resize