Commit fa18365c211ea9819f1ffcf18ad6435c527aab49
1 parent
feadf64e
chore: 移除 useTimeoutFn文件,使用 vueuse
Showing
11 changed files
with
48 additions
and
93 deletions
packages/hooks/src/index.ts
src/components/Container/src/LazyContainer.vue
@@ -19,8 +19,8 @@ | @@ -19,8 +19,8 @@ | ||
19 | <script lang="ts"> | 19 | <script lang="ts"> |
20 | import type { PropType } from 'vue'; | 20 | import type { PropType } from 'vue'; |
21 | import { defineComponent, reactive, onMounted, ref, toRef, toRefs } from 'vue'; | 21 | import { defineComponent, reactive, onMounted, ref, toRef, toRefs } from 'vue'; |
22 | + import { useTimeoutFn } from '@vben/hooks'; | ||
22 | import { Skeleton } from 'ant-design-vue'; | 23 | import { Skeleton } from 'ant-design-vue'; |
23 | - import { useTimeoutFn } from '/@/hooks/core/useTimeout'; | ||
24 | import { useIntersectionObserver } from '/@/hooks/event/useIntersectionObserver'; | 24 | import { useIntersectionObserver } from '/@/hooks/event/useIntersectionObserver'; |
25 | 25 | ||
26 | interface State { | 26 | interface State { |
src/components/Container/src/collapse/CollapseContainer.vue
@@ -2,10 +2,10 @@ | @@ -2,10 +2,10 @@ | ||
2 | import { ref, unref, defineComponent, type PropType, type ExtractPropTypes } from 'vue'; | 2 | import { ref, unref, defineComponent, type PropType, type ExtractPropTypes } from 'vue'; |
3 | import { isNil } from 'lodash-es'; | 3 | import { isNil } from 'lodash-es'; |
4 | import { Skeleton } from 'ant-design-vue'; | 4 | import { Skeleton } from 'ant-design-vue'; |
5 | + import { useTimeoutFn } from '@vben/hooks'; | ||
5 | import { CollapseTransition } from '/@/components/Transition'; | 6 | import { CollapseTransition } from '/@/components/Transition'; |
6 | import CollapseHeader from './CollapseHeader.vue'; | 7 | import CollapseHeader from './CollapseHeader.vue'; |
7 | import { triggerWindowResize } from '/@/utils/event'; | 8 | import { triggerWindowResize } from '/@/utils/event'; |
8 | - import { useTimeoutFn } from '/@/hooks/core/useTimeout'; | ||
9 | import { useDesign } from '/@/hooks/web/useDesign'; | 9 | import { useDesign } from '/@/hooks/web/useDesign'; |
10 | 10 | ||
11 | const collapseContainerProps = { | 11 | const collapseContainerProps = { |
src/components/Menu/src/useOpenKeys.ts
1 | import { MenuModeEnum } from '/@/enums/menuEnum'; | 1 | import { MenuModeEnum } from '/@/enums/menuEnum'; |
2 | import type { Menu as MenuType } from '/@/router/types'; | 2 | import type { Menu as MenuType } from '/@/router/types'; |
3 | import type { MenuState } from './types'; | 3 | import type { MenuState } from './types'; |
4 | - | ||
5 | import { computed, Ref, toRaw, unref } from 'vue'; | 4 | import { computed, Ref, toRaw, unref } from 'vue'; |
6 | - | 5 | +import { useTimeoutFn } from '@vben/hooks'; |
7 | import { uniq } from 'lodash-es'; | 6 | import { uniq } from 'lodash-es'; |
8 | import { useMenuSetting } from '/@/hooks/setting/useMenuSetting'; | 7 | import { useMenuSetting } from '/@/hooks/setting/useMenuSetting'; |
9 | import { getAllParentPath } from '/@/router/helper/menuHelper'; | 8 | import { getAllParentPath } from '/@/router/helper/menuHelper'; |
10 | -import { useTimeoutFn } from '/@/hooks/core/useTimeout'; | ||
11 | 9 | ||
12 | export function useOpenKeys( | 10 | export function useOpenKeys( |
13 | menuState: MenuState, | 11 | menuState: MenuState, |
@@ -22,22 +20,23 @@ export function useOpenKeys( | @@ -22,22 +20,23 @@ export function useOpenKeys( | ||
22 | return; | 20 | return; |
23 | } | 21 | } |
24 | const native = unref(getIsMixSidebar); | 22 | const native = unref(getIsMixSidebar); |
25 | - useTimeoutFn( | ||
26 | - () => { | ||
27 | - const menuList = toRaw(menus.value); | ||
28 | - if (menuList?.length === 0) { | ||
29 | - menuState.openKeys = []; | ||
30 | - return; | ||
31 | - } | ||
32 | - if (!unref(accordion)) { | ||
33 | - menuState.openKeys = uniq([...menuState.openKeys, ...getAllParentPath(menuList, path)]); | ||
34 | - } else { | ||
35 | - menuState.openKeys = getAllParentPath(menuList, path); | ||
36 | - } | ||
37 | - }, | ||
38 | - 16, | ||
39 | - !native, | ||
40 | - ); | 23 | + const handle = () => { |
24 | + const menuList = toRaw(menus.value); | ||
25 | + if (menuList?.length === 0) { | ||
26 | + menuState.openKeys = []; | ||
27 | + return; | ||
28 | + } | ||
29 | + if (!unref(accordion)) { | ||
30 | + menuState.openKeys = uniq([...menuState.openKeys, ...getAllParentPath(menuList, path)]); | ||
31 | + } else { | ||
32 | + menuState.openKeys = getAllParentPath(menuList, path); | ||
33 | + } | ||
34 | + }; | ||
35 | + if (native) { | ||
36 | + handle(); | ||
37 | + } else { | ||
38 | + useTimeoutFn(handle, 16); | ||
39 | + } | ||
41 | } | 40 | } |
42 | 41 | ||
43 | const getOpenKeys = computed(() => { | 42 | const getOpenKeys = computed(() => { |
src/components/Modal/src/hooks/useModalDrag.ts
1 | import { Ref, unref, watchEffect } from 'vue'; | 1 | import { Ref, unref, watchEffect } from 'vue'; |
2 | -import { useTimeoutFn } from '/@/hooks/core/useTimeout'; | 2 | +import { useTimeoutFn } from '@vben/hooks'; |
3 | 3 | ||
4 | export interface UseModalDragMoveContext { | 4 | export interface UseModalDragMoveContext { |
5 | draggable: Ref<boolean>; | 5 | draggable: Ref<boolean>; |
src/components/SimpleMenu/src/useOpenKeys.ts
1 | import type { Menu as MenuType } from '/@/router/types'; | 1 | import type { Menu as MenuType } from '/@/router/types'; |
2 | import type { MenuState } from './types'; | 2 | import type { MenuState } from './types'; |
3 | - | ||
4 | import { computed, Ref, toRaw, unref } from 'vue'; | 3 | import { computed, Ref, toRaw, unref } from 'vue'; |
5 | - | ||
6 | import { uniq } from 'lodash-es'; | 4 | import { uniq } from 'lodash-es'; |
7 | import { getAllParentPath } from '/@/router/helper/menuHelper'; | 5 | import { getAllParentPath } from '/@/router/helper/menuHelper'; |
8 | - | ||
9 | -import { useTimeoutFn } from '/@/hooks/core/useTimeout'; | 6 | +import { useTimeoutFn } from '@vben/hooks'; |
10 | import { useDebounceFn } from '@vueuse/core'; | 7 | import { useDebounceFn } from '@vueuse/core'; |
11 | 8 | ||
12 | export function useOpenKeys( | 9 | export function useOpenKeys( |
@@ -20,25 +17,27 @@ export function useOpenKeys( | @@ -20,25 +17,27 @@ export function useOpenKeys( | ||
20 | async function setOpenKeys(path: string) { | 17 | async function setOpenKeys(path: string) { |
21 | const native = !mixSider.value; | 18 | const native = !mixSider.value; |
22 | const menuList = toRaw(menus.value); | 19 | const menuList = toRaw(menus.value); |
23 | - useTimeoutFn( | ||
24 | - () => { | ||
25 | - if (menuList?.length === 0) { | ||
26 | - menuState.activeSubMenuNames = []; | ||
27 | - menuState.openNames = []; | ||
28 | - return; | ||
29 | - } | ||
30 | - const keys = getAllParentPath(menuList, path); | ||
31 | 20 | ||
32 | - if (!unref(accordion)) { | ||
33 | - menuState.openNames = uniq([...menuState.openNames, ...keys]); | ||
34 | - } else { | ||
35 | - menuState.openNames = keys; | ||
36 | - } | ||
37 | - menuState.activeSubMenuNames = menuState.openNames; | ||
38 | - }, | ||
39 | - 30, | ||
40 | - native, | ||
41 | - ); | 21 | + const handle = () => { |
22 | + if (menuList?.length === 0) { | ||
23 | + menuState.activeSubMenuNames = []; | ||
24 | + menuState.openNames = []; | ||
25 | + return; | ||
26 | + } | ||
27 | + const keys = getAllParentPath(menuList, path); | ||
28 | + | ||
29 | + if (!unref(accordion)) { | ||
30 | + menuState.openNames = uniq([...menuState.openNames, ...keys]); | ||
31 | + } else { | ||
32 | + menuState.openNames = keys; | ||
33 | + } | ||
34 | + menuState.activeSubMenuNames = menuState.openNames; | ||
35 | + }; | ||
36 | + if (native) { | ||
37 | + handle(); | ||
38 | + } else { | ||
39 | + useTimeoutFn(handle, 30); | ||
40 | + } | ||
42 | } | 41 | } |
43 | 42 | ||
44 | const getOpenKeys = computed(() => { | 43 | const getOpenKeys = computed(() => { |
src/components/Table/src/hooks/useDataSource.ts
@@ -11,7 +11,7 @@ import { | @@ -11,7 +11,7 @@ import { | ||
11 | Ref, | 11 | Ref, |
12 | watchEffect, | 12 | watchEffect, |
13 | } from 'vue'; | 13 | } from 'vue'; |
14 | -import { useTimeoutFn } from '/@/hooks/core/useTimeout'; | 14 | +import { useTimeoutFn } from '@vben/hooks'; |
15 | import { buildUUID } from '/@/utils/uuid'; | 15 | import { buildUUID } from '/@/utils/uuid'; |
16 | import { isFunction, isBoolean, isObject } from '/@/utils/is'; | 16 | import { isFunction, isBoolean, isObject } from '/@/utils/is'; |
17 | import { get, cloneDeep, merge } from 'lodash-es'; | 17 | import { get, cloneDeep, merge } from 'lodash-es'; |
src/components/Verify/src/DragVerify.vue
1 | <script lang="tsx"> | 1 | <script lang="tsx"> |
2 | import type { Ref } from 'vue'; | 2 | import type { Ref } from 'vue'; |
3 | import { defineComponent, ref, computed, unref, reactive, watch, watchEffect } from 'vue'; | 3 | import { defineComponent, ref, computed, unref, reactive, watch, watchEffect } from 'vue'; |
4 | - import { useTimeoutFn } from '/@/hooks/core/useTimeout'; | 4 | + import { useTimeoutFn } from '@vben/hooks'; |
5 | import { useEventListener } from '/@/hooks/event/useEventListener'; | 5 | import { useEventListener } from '/@/hooks/event/useEventListener'; |
6 | import { basicProps } from './props'; | 6 | import { basicProps } from './props'; |
7 | import { getSlot } from '/@/utils/helper/tsxHelper'; | 7 | import { getSlot } from '/@/utils/helper/tsxHelper'; |
src/components/Verify/src/ImgRotate.vue
1 | <script lang="tsx"> | 1 | <script lang="tsx"> |
2 | import type { MoveData, DragVerifyActionType } from './typing'; | 2 | import type { MoveData, DragVerifyActionType } from './typing'; |
3 | import { defineComponent, computed, unref, reactive, watch, ref } from 'vue'; | 3 | import { defineComponent, computed, unref, reactive, watch, ref } from 'vue'; |
4 | - import { useTimeoutFn } from '/@/hooks/core/useTimeout'; | 4 | + import { useTimeoutFn } from '@vben/hooks'; |
5 | import BasicDragVerify from './DragVerify.vue'; | 5 | import BasicDragVerify from './DragVerify.vue'; |
6 | import { hackCss } from '/@/utils/domUtils'; | 6 | import { hackCss } from '/@/utils/domUtils'; |
7 | import { rotateProps } from './props'; | 7 | import { rotateProps } from './props'; |
src/hooks/core/useTimeout.ts deleted
100644 → 0
1 | -import { ref, watch } from 'vue'; | ||
2 | -import { tryOnUnmounted } from '@vueuse/core'; | ||
3 | -import { isFunction } from '/@/utils/is'; | ||
4 | - | ||
5 | -export function useTimeoutFn(handle: Fn<any>, wait: number, native = false) { | ||
6 | - if (!isFunction(handle)) { | ||
7 | - throw new Error('handle is not Function!'); | ||
8 | - } | ||
9 | - | ||
10 | - const { readyRef, stop, start } = useTimeoutRef(wait); | ||
11 | - if (native) { | ||
12 | - handle(); | ||
13 | - } else { | ||
14 | - watch( | ||
15 | - readyRef, | ||
16 | - (maturity) => { | ||
17 | - maturity && handle(); | ||
18 | - }, | ||
19 | - { immediate: false }, | ||
20 | - ); | ||
21 | - } | ||
22 | - return { readyRef, stop, start }; | ||
23 | -} | ||
24 | - | ||
25 | -export function useTimeoutRef(wait: number) { | ||
26 | - const readyRef = ref(false); | ||
27 | - | ||
28 | - let timer: TimeoutHandle; | ||
29 | - function stop(): void { | ||
30 | - readyRef.value = false; | ||
31 | - timer && window.clearTimeout(timer); | ||
32 | - } | ||
33 | - function start(): void { | ||
34 | - stop(); | ||
35 | - timer = setTimeout(() => { | ||
36 | - readyRef.value = true; | ||
37 | - }, wait); | ||
38 | - } | ||
39 | - | ||
40 | - start(); | ||
41 | - | ||
42 | - tryOnUnmounted(stop); | ||
43 | - | ||
44 | - return { readyRef, stop, start }; | ||
45 | -} |
src/hooks/web/useECharts.ts
1 | import type { EChartsOption } from 'echarts'; | 1 | import type { EChartsOption } from 'echarts'; |
2 | import type { Ref } from 'vue'; | 2 | import type { Ref } from 'vue'; |
3 | -import { useTimeoutFn } from '/@/hooks/core/useTimeout'; | 3 | +import { useTimeoutFn } from '@vben/hooks'; |
4 | import { tryOnUnmounted, useDebounceFn } from '@vueuse/core'; | 4 | import { tryOnUnmounted, useDebounceFn } from '@vueuse/core'; |
5 | import { unref, nextTick, watch, computed, ref } from 'vue'; | 5 | import { unref, nextTick, watch, computed, ref } from 'vue'; |
6 | import { useEventListener } from '/@/hooks/event/useEventListener'; | 6 | import { useEventListener } from '/@/hooks/event/useEventListener'; |