Skip to content

Commit

Permalink
refactor: extract isClient and isNumber isBoolean (element-plus#12504)
Browse files Browse the repository at this point in the history
* refactor: extract isClient and isNumber isBoolean

* test: update test

* refactor: extract isClient to browser
  • Loading branch information
btea authored Apr 20, 2023
1 parent 0f4aeaf commit 105d79b
Show file tree
Hide file tree
Showing 37 changed files with 84 additions and 59 deletions.
2 changes: 1 addition & 1 deletion packages/components/cascader-panel/src/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@ import {
watch,
} from 'vue'
import { cloneDeep, flattenDeep, isEqual } from 'lodash-unified'
import { isClient } from '@vueuse/core'
import {
castArray,
focusNode,
getSibling,
isClient,
isEmpty,
scrollIntoView,
unique,
Expand Down
10 changes: 8 additions & 2 deletions packages/components/cascader/src/cascader.vue
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@
import { computed, nextTick, onMounted, ref, useAttrs, watch } from 'vue'
import { isPromise } from '@vue/shared'
import { cloneDeep, debounce } from 'lodash-unified'
import { isClient, useCssVar, useResizeObserver } from '@vueuse/core'
import { useCssVar, useResizeObserver } from '@vueuse/core'
import ElCascaderPanel from '@element-plus/components/cascader-panel'
import ElInput from '@element-plus/components/input'
import ElTooltip from '@element-plus/components/tooltip'
Expand All @@ -199,7 +199,13 @@ import ElIcon from '@element-plus/components/icon'
import { useFormItem, useFormSize } from '@element-plus/components/form'
import { ClickOutside as vClickoutside } from '@element-plus/directives'
import { useLocale, useNamespace } from '@element-plus/hooks'
import { debugWarn, focusNode, getSibling, isKorean } from '@element-plus/utils'
import {
debugWarn,
focusNode,
getSibling,
isClient,
isKorean,
} from '@element-plus/utils'
import {
CHANGE_EVENT,
EVENT_CODE,
Expand Down
2 changes: 1 addition & 1 deletion packages/components/color-picker/src/utils/draggable.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { isClient } from '@vueuse/core'
import { isClient } from '@element-plus/utils'

let isDragging = false

Expand Down
4 changes: 2 additions & 2 deletions packages/components/dialog/src/use-dialog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
ref,
watch,
} from 'vue'
import { isClient, useTimeoutFn } from '@vueuse/core'
import { useTimeoutFn } from '@vueuse/core'

import {
defaultNamespace,
Expand All @@ -15,7 +15,7 @@ import {
useZIndex,
} from '@element-plus/hooks'
import { UPDATE_MODEL_EVENT } from '@element-plus/constants'
import { addUnit } from '@element-plus/utils'
import { addUnit, isClient } from '@element-plus/utils'
import { useGlobalConfig } from '@element-plus/components/config-provider'

import type { CSSProperties, Ref, SetupContext } from 'vue'
Expand Down
4 changes: 2 additions & 2 deletions packages/components/image-viewer/src/image-viewer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -91,11 +91,11 @@ import {
shallowRef,
watch,
} from 'vue'
import { isNumber, useEventListener } from '@vueuse/core'
import { useEventListener } from '@vueuse/core'
import { throttle } from 'lodash-unified'
import { useLocale, useNamespace, useZIndex } from '@element-plus/hooks'
import { EVENT_CODE } from '@element-plus/constants'
import { keysOf } from '@element-plus/utils'
import { isNumber, keysOf } from '@element-plus/utils'
import ElIcon from '@element-plus/components/icon'
import {
ArrowLeft,
Expand Down
3 changes: 2 additions & 1 deletion packages/components/image/src/image.vue
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,12 @@ import {
useAttrs as useRawAttrs,
watch,
} from 'vue'
import { isClient, useEventListener, useThrottleFn } from '@vueuse/core'
import { useEventListener, useThrottleFn } from '@vueuse/core'
import { useAttrs, useLocale, useNamespace } from '@element-plus/hooks'
import ImageViewer from '@element-plus/components/image-viewer'
import {
getScrollContainer,
isClient,
isElement,
isInContainer,
isString,
Expand Down
3 changes: 2 additions & 1 deletion packages/components/input/src/input.vue
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ import {
useSlots,
watch,
} from 'vue'
import { isClient, useResizeObserver } from '@vueuse/core'
import { useResizeObserver } from '@vueuse/core'
import { isNil } from 'lodash-unified'
import { ElIcon } from '@element-plus/components/icon'
import {
Expand All @@ -168,6 +168,7 @@ import {
NOOP,
ValidateComponentsMap,
debugWarn,
isClient,
isKorean,
isObject,
} from '@element-plus/utils'
Expand Down
10 changes: 7 additions & 3 deletions packages/components/loading/src/service.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
// @ts-nocheck
import { nextTick } from 'vue'
import { isString } from '@vue/shared'
import { isClient } from '@vueuse/core'
import { addClass, getStyle, removeClass } from '@element-plus/utils'
import {
addClass,
getStyle,
isClient,
isString,
removeClass,
} from '@element-plus/utils'
import { createLoadingComponent } from './loading'

import type { UseNamespaceReturn, UseZIndexReturn } from '@element-plus/hooks'
Expand Down
2 changes: 1 addition & 1 deletion packages/components/message-box/src/messageBox.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { createVNode, render } from 'vue'
import { isClient } from '@vueuse/core'
import {
debugWarn,
hasOwn,
isClient,
isElement,
isFunction,
isObject,
Expand Down
2 changes: 1 addition & 1 deletion packages/components/message/src/message.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { isClient } from '@vueuse/core'
import {
buildProps,
definePropType,
iconPropType,
isClient,
mutable,
} from '@element-plus/utils'
import type { AppContext, ExtractPropTypes, VNode } from 'vue'
Expand Down
2 changes: 1 addition & 1 deletion packages/components/message/src/method.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { createVNode, render } from 'vue'
import { isClient } from '@vueuse/core'
import {
debugWarn,
isClient,
isElement,
isFunction,
isNumber,
Expand Down
9 changes: 7 additions & 2 deletions packages/components/notification/src/notify.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
import { createVNode, render } from 'vue'
import { isClient } from '@vueuse/core'
import { debugWarn, isElement, isString, isVNode } from '@element-plus/utils'
import {
debugWarn,
isClient,
isElement,
isString,
isVNode,
} from '@element-plus/utils'
import NotificationConstructor from './notification.vue'
import { notificationTypes } from './notification'

Expand Down
3 changes: 2 additions & 1 deletion packages/components/popper/src/utils.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { isClient, unrefElement } from '@vueuse/core'
import { unrefElement } from '@vueuse/core'
import { isClient } from '@element-plus/utils'

import type { ComponentPublicInstance } from 'vue'
import type { MaybeRef } from '@vueuse/core'
Expand Down
4 changes: 2 additions & 2 deletions packages/components/scrollbar/src/thumb.vue
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@

<script lang="ts" setup>
import { computed, inject, onBeforeUnmount, ref, toRef } from 'vue'
import { isClient, useEventListener } from '@vueuse/core'
import { throwError } from '@element-plus/utils'
import { useEventListener } from '@vueuse/core'
import { isClient, throwError } from '@element-plus/utils'
import { useNamespace } from '@element-plus/hooks'
import { scrollbarContextKey } from './constants'
import { BAR_MAP, renderThumbStyle } from './util'
Expand Down
4 changes: 2 additions & 2 deletions packages/components/select/src/select.vue
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ import {
toRefs,
unref,
} from 'vue'
import { isIOS, useResizeObserver } from '@vueuse/core'
import { useResizeObserver } from '@vueuse/core'
import { placements } from '@popperjs/core'
import { ClickOutside } from '@element-plus/directives'
import { useFocus, useLocale, useNamespace } from '@element-plus/hooks'
Expand All @@ -314,7 +314,7 @@ import ElScrollbar from '@element-plus/components/scrollbar'
import ElTag, { tagProps } from '@element-plus/components/tag'
import ElIcon from '@element-plus/components/icon'
import { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'
import { iconPropType, isValidComponentSize } from '@element-plus/utils'
import { iconPropType, isIOS, isValidComponentSize } from '@element-plus/utils'
import { ArrowDown, CircleClose } from '@element-plus/icons-vue'
import ElOption from './option.vue'
import ElSelectMenu from './select-dropdown.vue'
Expand Down
2 changes: 1 addition & 1 deletion packages/components/select/src/useSelect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import {
} from 'vue'
import { isObject, toRawType } from '@vue/shared'
import { get, isEqual, debounce as lodashDebounce } from 'lodash-unified'
import { isClient } from '@vueuse/core'
import {
CHANGE_EVENT,
EVENT_CODE,
Expand All @@ -20,6 +19,7 @@ import {
import {
debugWarn,
getComponentSize,
isClient,
isFunction,
isKorean,
isNumber,
Expand Down
3 changes: 1 addition & 2 deletions packages/components/table/src/table-body/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ import {
onUnmounted,
watch,
} from 'vue'
import { isClient } from '@vueuse/core'
import { addClass, removeClass } from '@element-plus/utils'
import { addClass, isClient, removeClass } from '@element-plus/utils'
import { useNamespace } from '@element-plus/hooks'
import useLayoutObserver from '../layout-observer'
import { removePopper } from '../util'
Expand Down
3 changes: 1 addition & 2 deletions packages/components/table/src/table-header/event-helper.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
// @ts-nocheck
import { getCurrentInstance, inject, ref } from 'vue'
import { isClient } from '@vueuse/core'
import { addClass, hasClass, removeClass } from '@element-plus/utils'
import { addClass, hasClass, isClient, removeClass } from '@element-plus/utils'
import { TABLE_INJECTION_KEY } from '../tokens'
import type { TableHeaderProps } from '.'
import type { TableColumnCtx } from '../table-column/defaults'
Expand Down
3 changes: 1 addition & 2 deletions packages/components/table/src/table-layout.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
// @ts-nocheck
import { isRef, nextTick, ref } from 'vue'
import { isClient } from '@vueuse/core'
import { hasOwn } from '@element-plus/utils'
import { hasOwn, isClient } from '@element-plus/utils'
import { parseHeight } from './util'
import type { Ref } from 'vue'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ import {
resolveDynamicComponent,
unref,
} from 'vue'
import { isClient } from '@vueuse/core'
import {
getScrollBarWidth,
hasOwn,
isClient,
isNumber,
isString,
} from '@element-plus/utils'
Expand Down
3 changes: 1 addition & 2 deletions packages/components/virtual-list/src/builders/build-list.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ import {
resolveDynamicComponent,
unref,
} from 'vue'
import { isClient } from '@vueuse/core'
import { hasOwn, isNumber, isString } from '@element-plus/utils'
import { hasOwn, isClient, isNumber, isString } from '@element-plus/utils'
import { useNamespace } from '@element-plus/hooks'
import { useCache } from '../hooks/use-cache'
import useWheel from '../hooks/use-wheel'
Expand Down
3 changes: 1 addition & 2 deletions packages/directives/click-outside/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { isClient } from '@vueuse/core'
import { isElement } from '@element-plus/utils'
import { isClient, isElement } from '@element-plus/utils'

import type {
ComponentPublicInstance,
Expand Down
2 changes: 1 addition & 1 deletion packages/hooks/use-escape-keydown/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { onBeforeUnmount, onMounted } from 'vue'
import { isClient } from '@vueuse/core'
import { isClient } from '@element-plus/utils'
import { EVENT_CODE } from '@element-plus/constants'

let registeredEscapeHandlers: ((e: KeyboardEvent) => void)[] = []
Expand Down
4 changes: 2 additions & 2 deletions packages/hooks/use-floating/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { isRef, onMounted, ref, unref, watchEffect } from 'vue'
import { isClient, unrefElement } from '@vueuse/core'
import { unrefElement } from '@vueuse/core'
import { isNil } from 'lodash-unified'
import { arrow as arrowCore, computePosition } from '@floating-ui/dom'
import { buildProps, keysOf } from '@element-plus/utils'
import { buildProps, isClient, keysOf } from '@element-plus/utils'

import type { Ref, ToRefs } from 'vue'
import type {
Expand Down
3 changes: 1 addition & 2 deletions packages/hooks/use-id/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { computed, getCurrentInstance, inject, unref } from 'vue'
import { isClient } from '@vueuse/core'
import { debugWarn } from '@element-plus/utils'
import { debugWarn, isClient } from '@element-plus/utils'
import { useGetDerivedNamespace } from '../use-namespace'

import type { InjectionKey, Ref } from 'vue'
Expand Down
2 changes: 1 addition & 1 deletion packages/hooks/use-lockscreen/index.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { isRef, onScopeDispose, watch } from 'vue'
import { computed } from '@vue/reactivity'
import { isClient } from '@vueuse/core'
import {
addClass,
getScrollBarWidth,
getStyle,
hasClass,
isClient,
removeClass,
throwError,
} from '@element-plus/utils'
Expand Down
8 changes: 6 additions & 2 deletions packages/hooks/use-model-toggle/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
import { computed, getCurrentInstance, onMounted, watch } from 'vue'
import { isFunction } from '@vue/shared'
import { isClient } from '@vueuse/core'
import { buildProp, definePropType, isBoolean } from '@element-plus/utils'
import {
buildProp,
definePropType,
isBoolean,
isClient,
} from '@element-plus/utils'
import type { ExtractPropType } from '@element-plus/utils'
import type { RouteLocationNormalizedLoaded } from 'vue-router'

Expand Down
2 changes: 1 addition & 1 deletion packages/hooks/use-popper-container/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { computed, onBeforeMount } from 'vue'
import { isClient } from '@vueuse/core'
import { isClient } from '@element-plus/utils'
import { useGetDerivedNamespace } from '../use-namespace'
import { useIdInjection } from '../use-id'

Expand Down
7 changes: 5 additions & 2 deletions packages/hooks/use-teleport/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import { Teleport, h, onUnmounted, ref } from 'vue'
import { NOOP } from '@vue/shared'
import { isClient } from '@vueuse/core'
import { createGlobalNode, removeGlobalNode } from '@element-plus/utils'
import {
createGlobalNode,
isClient,
removeGlobalNode,
} from '@element-plus/utils'

import type { Ref, VNode } from 'vue'

Expand Down
15 changes: 9 additions & 6 deletions packages/utils/__tests__/types.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import * as vue from 'vue'
import * as vueShared from '@vue/shared'
import * as vueuse from '@vueuse/core'
import { describe, expect, it } from 'vitest'
import {
isArray,
Expand Down Expand Up @@ -30,15 +29,19 @@ describe('types', () => {
expect(isSymbol).toBe(vueShared.isSymbol)
})

it('re-export from vueuse', () => {
expect(isBoolean).toBe(vueuse.isBoolean)
expect(isNumber).toBe(vueuse.isNumber)
})

it('re-export from vue', () => {
expect(isVNode).toBe(vue.isVNode)
})

it('isBoolean and isNumber should work', () => {
expect(isBoolean(true)).toBe(true)
expect(isBoolean(false)).toBe(true)
expect(isBoolean('true')).toBe(false)
expect(isBoolean('false')).toBe(false)
expect(isNumber(0)).toBe(true)
expect(isNumber('0')).toBe(false)
})

it('isUndefined should work', () => {
expect(isUndefined(undefined)).toBe(true)
expect(isUndefined(null)).toBe(false)
Expand Down
4 changes: 3 additions & 1 deletion packages/utils/browser.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import { isClient } from '@vueuse/core'
import { isClient, isIOS } from '@vueuse/core'

export const isFirefox = (): boolean =>
isClient && /firefox/i.test(window.navigator.userAgent)

export { isClient, isIOS }
2 changes: 1 addition & 1 deletion packages/utils/dom/position.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { isClient } from '@vueuse/core'
import { isClient } from '../browser'

export const isInContainer = (
el?: Element,
Expand Down
2 changes: 1 addition & 1 deletion packages/utils/dom/scroll.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { isClient } from '@vueuse/core'
import { isClient } from '../browser'
import { getStyle } from './style'

export const isScroll = (el: HTMLElement, isVertical?: boolean): boolean => {
Expand Down
Loading

0 comments on commit 105d79b

Please sign in to comment.