From 750fdc9fe7b8a8a8819898ff6e06da44b99de43a Mon Sep 17 00:00:00 2001 From: haoxr <1490493387@qq.com> Date: Wed, 22 Mar 2023 22:44:31 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=A7=BB=E9=99=A4=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89`debounce`=E5=92=8C`clickoutside`=E6=8C=87?= =?UTF-8?q?=E4=BB=A4=EF=BC=8C=E5=90=8E=E7=BB=AD=E9=80=9A=E8=BF=87`vueuse`?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Former-commit-id: 850159c0d1e72301639b64b043ec57beb3de70ea --- src/directive/ClickOutside/index.ts | 52 ----------------------------- src/directive/Debounce/index.ts | 15 --------- src/directive/index.ts | 2 -- 3 files changed, 69 deletions(-) delete mode 100644 src/directive/ClickOutside/index.ts delete mode 100644 src/directive/Debounce/index.ts diff --git a/src/directive/ClickOutside/index.ts b/src/directive/ClickOutside/index.ts deleted file mode 100644 index fe47a2b1..00000000 --- a/src/directive/ClickOutside/index.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { Directive } from 'vue'; - -declare type NoNameFUnctionReturnVoid = () => void; - -export const clickOutside: Directive = - (() => { - const checkIfClickedInside = ( - event: Event, - element: HTMLElement, - callBackFn: NoNameFUnctionReturnVoid - ) => { - console.log('element', element); - const isInside = event.composedPath().includes(element); - - if (isInside) { - return false; - } else { - callBackFn(); - } - }; - - const allListeners: { - element: HTMLElement; - listener: (e: Event) => void; - }[] = []; - - return { - created(element) { - element.dataset.clicked = 'false'; - }, - - mounted(element, binding) { - const myListener = (e: Event) => { - checkIfClickedInside(e, element, binding.value); - }; - allListeners.push({ element, listener: myListener }); - window.addEventListener('click', myListener); - }, - - unmounted(element) { - const eventIndex = allListeners.findIndex( - listener => listener.element === element - ); - - if (eventIndex !== -1) { - const listener = allListeners[eventIndex].listener; - window.removeEventListener('click', listener); - allListeners.splice(eventIndex, 1); - } - } - }; - })(); diff --git a/src/directive/Debounce/index.ts b/src/directive/Debounce/index.ts deleted file mode 100644 index 7e1de783..00000000 --- a/src/directive/Debounce/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Directive } from 'vue'; - -/** - * 按钮防抖 - */ -export const deBounce: Directive = { - mounted(el: HTMLElement) { - el.addEventListener('click', () => { - el.classList.add('is-disabled'); - setTimeout(() => { - el.classList.remove('is-disabled'); - }, 2000); - }); - } -}; diff --git a/src/directive/index.ts b/src/directive/index.ts index 259708af..39edd276 100644 --- a/src/directive/index.ts +++ b/src/directive/index.ts @@ -1,3 +1 @@ export { hasPerm, hasRole } from './permission'; -export { clickOutside } from './ClickOutside'; -export { deBounce } from './Debounce';