From 0072f4fe022278a5de79a9afae90fbea22dce253 Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Sun, 27 Sep 2020 17:11:43 +0800 Subject: [PATCH] chore: expose utils in entry file --- src/calendar/components/Month.js | 4 +--- src/calendar/index.js | 4 +--- src/circle/index.js | 9 +++++++-- src/collapse-item/index.js | 3 +-- src/count-down/index.js | 3 +-- src/count-down/utils.ts | 2 +- src/coupon/index.js | 3 +-- src/datetime-picker/DatePicker.js | 11 ++++++++--- src/datetime-picker/TimePicker.js | 12 ++++++++---- src/field/index.js | 7 ++++--- src/image-preview/ImagePreviewItem.js | 3 +-- src/index-bar/index.js | 9 +++++---- src/list/index.js | 3 +-- src/notice-bar/index.js | 9 ++++++--- src/number-keyboard/index.js | 3 +-- src/overlay/index.js | 3 +-- src/picker/PickerColumn.js | 4 +--- src/picker/index.js | 4 +--- src/pull-refresh/index.js | 4 +--- src/rate/index.js | 3 +-- src/search/index.js | 3 +-- src/slider/index.js | 8 ++++++-- src/stepper/index.js | 15 ++++++++++----- src/sticky/index.js | 11 +++++++---- src/swipe-cell/index.js | 4 +--- src/swipe/index.js | 12 +++++++----- src/tabs/index.js | 18 ++++++++++-------- src/tabs/utils.ts | 9 ++++----- src/utils/create/component.ts | 2 +- src/utils/create/i18n.ts | 3 +-- src/utils/dom/reset-scroll.ts | 15 --------------- src/utils/dom/scroll.ts | 12 ++++++++++++ src/utils/index.ts | 10 ++++++++-- 33 files changed, 120 insertions(+), 105 deletions(-) delete mode 100644 src/utils/dom/reset-scroll.ts diff --git a/src/calendar/components/Month.js b/src/calendar/components/Month.js index c76a58c08..fdcdfb8f0 100644 --- a/src/calendar/components/Month.js +++ b/src/calendar/components/Month.js @@ -1,9 +1,7 @@ import { ref, computed, watch, nextTick } from 'vue'; // Utils -import { createNamespace, addUnit } from '../../utils'; -import { unitToPx } from '../../utils/format/unit'; -import { setScrollTop } from '../../utils/dom/scroll'; +import { addUnit, unitToPx, setScrollTop, createNamespace } from '../../utils'; import { getMonthEndDay } from '../../datetime-picker/utils'; import { t, diff --git a/src/calendar/index.js b/src/calendar/index.js index 35fc859ef..69cc13105 100644 --- a/src/calendar/index.js +++ b/src/calendar/index.js @@ -1,10 +1,8 @@ import { ref, watch, reactive, computed, onMounted, onActivated } from 'vue'; // Utils -import { pick } from '../utils'; -import { raf } from '../utils/dom/raf'; +import { raf, pick, getScrollTop } from '../utils'; import { isDate } from '../utils/validate/date'; -import { getScrollTop } from '../utils/dom/scroll'; import { t, bem, diff --git a/src/circle/index.js b/src/circle/index.js index eda32ae15..c64f1c738 100644 --- a/src/circle/index.js +++ b/src/circle/index.js @@ -1,6 +1,11 @@ import { watch, computed } from 'vue'; -import { createNamespace, isObject, getSizeStyle } from '../utils'; -import { raf, cancelRaf } from '../utils/dom/raf'; +import { + raf, + isObject, + cancelRaf, + getSizeStyle, + createNamespace, +} from '../utils'; import { BLUE, WHITE } from '../utils/constant'; const [createComponent, bem] = createNamespace('circle'); diff --git a/src/collapse-item/index.js b/src/collapse-item/index.js index 01b7362ce..fae66a2de 100644 --- a/src/collapse-item/index.js +++ b/src/collapse-item/index.js @@ -1,8 +1,7 @@ import { ref, watch, computed, nextTick } from 'vue'; // Utils -import { createNamespace } from '../utils'; -import { raf, doubleRaf } from '../utils/dom/raf'; +import { raf, doubleRaf, createNamespace } from '../utils'; // Composition import { useParent } from '../composition/use-relation'; diff --git a/src/count-down/index.js b/src/count-down/index.js index 708ab78f1..33a135b1a 100644 --- a/src/count-down/index.js +++ b/src/count-down/index.js @@ -8,8 +8,7 @@ import { } from 'vue'; // Utils -import { createNamespace } from '../utils'; -import { raf, cancelRaf } from '../utils/dom/raf'; +import { raf, cancelRaf, createNamespace } from '../utils'; import { isSameSecond, parseTimeData, parseFormat } from './utils'; // Composition diff --git a/src/count-down/utils.ts b/src/count-down/utils.ts index 63c17264e..3ab764c2c 100644 --- a/src/count-down/utils.ts +++ b/src/count-down/utils.ts @@ -1,4 +1,4 @@ -import { padZero } from '../utils/format/string'; +import { padZero } from '../utils'; export type TimeData = { days: number; diff --git a/src/coupon/index.js b/src/coupon/index.js index b2dcd50c9..43638463f 100644 --- a/src/coupon/index.js +++ b/src/coupon/index.js @@ -1,7 +1,6 @@ import { computed } from 'vue'; -import { createNamespace } from '../utils'; +import { padZero, createNamespace } from '../utils'; import { RED } from '../utils/constant'; -import { padZero } from '../utils/format/string'; import Checkbox from '../checkbox'; const [createComponent, bem, t] = createNamespace('coupon'); diff --git a/src/datetime-picker/DatePicker.js b/src/datetime-picker/DatePicker.js index 4046ae1ff..d0f67a7a4 100644 --- a/src/datetime-picker/DatePicker.js +++ b/src/datetime-picker/DatePicker.js @@ -1,11 +1,16 @@ import { ref, watch, computed, nextTick, onMounted } from 'vue'; -import { createNamespace, pick } from '../utils'; + +// Utils import { isDate } from '../utils/validate/date'; -import { padZero } from '../utils/format/string'; +import { pick, padZero, createNamespace } from '../utils'; import { times, sharedProps, getTrueValue, getMonthEndDay } from './utils'; + +// Composition +import { useExpose } from '../composition/use-expose'; + +// Components import Picker from '../picker'; import { pickerProps } from '../picker/shared'; -import { useExpose } from '../composition/use-expose'; const currentYear = new Date().getFullYear(); const [createComponent] = createNamespace('date-picker'); diff --git a/src/datetime-picker/TimePicker.js b/src/datetime-picker/TimePicker.js index f42d48327..37cce832c 100644 --- a/src/datetime-picker/TimePicker.js +++ b/src/datetime-picker/TimePicker.js @@ -1,11 +1,15 @@ import { ref, watch, computed, nextTick, onMounted } from 'vue'; -import { createNamespace, pick } from '../utils'; -import { range } from '../utils/format/number'; -import { padZero } from '../utils/format/string'; + +// Utils +import { pick, range, padZero, createNamespace } from '../utils'; import { times, sharedProps } from './utils'; + +// Composition +import { useExpose } from '../composition/use-expose'; + +// Components import Picker from '../picker'; import { pickerProps } from '../picker/shared'; -import { useExpose } from '../composition/use-expose'; const [createComponent] = createNamespace('time-picker'); diff --git a/src/field/index.js b/src/field/index.js index 78b963d6f..8878c7140 100644 --- a/src/field/index.js +++ b/src/field/index.js @@ -9,15 +9,16 @@ import { } from 'vue'; // Utils -import { resetScroll } from '../utils/dom/reset-scroll'; -import { formatNumber } from '../utils/format/number'; -import { trigger, preventDefault } from '../utils/dom/event'; import { isDef, + trigger, addUnit, isObject, isPromise, isFunction, + resetScroll, + formatNumber, + preventDefault, createNamespace, } from '../utils'; diff --git a/src/image-preview/ImagePreviewItem.js b/src/image-preview/ImagePreviewItem.js index ab6e9f5dc..a208514a8 100644 --- a/src/image-preview/ImagePreviewItem.js +++ b/src/image-preview/ImagePreviewItem.js @@ -2,8 +2,7 @@ import { watch, computed, reactive } from 'vue'; // Utils import { bem } from './shared'; -import { range } from '../utils/format/number'; -import { preventDefault } from '../utils/dom/event'; +import { range, preventDefault } from '../utils'; // Composition import { useTouch } from '../composition/use-touch'; diff --git a/src/index-bar/index.js b/src/index-bar/index.js index 0c7ae2647..bc03a8f88 100644 --- a/src/index-bar/index.js +++ b/src/index-bar/index.js @@ -1,15 +1,16 @@ import { ref, computed, watch, nextTick } from 'vue'; // Utils -import { createNamespace, isDef } from '../utils'; -import { isHidden } from '../utils/dom/style'; -import { preventDefault } from '../utils/dom/event'; import { + isDef, + isHidden, getScrollTop, getElementTop, + preventDefault, + createNamespace, getRootScrollTop, setRootScrollTop, -} from '../utils/dom/scroll'; +} from '../utils'; // Composition import { useScrollParent, useEventListener } from '@vant/use'; diff --git a/src/list/index.js b/src/list/index.js index 92b2dfd6a..77081bc61 100644 --- a/src/list/index.js +++ b/src/list/index.js @@ -1,8 +1,7 @@ import { ref, watch, nextTick, onUpdated, onMounted } from 'vue'; // Utils -import { createNamespace } from '../utils'; -import { isHidden } from '../utils/dom/style'; +import { isHidden, createNamespace } from '../utils'; // Composition import { useScrollParent, useEventListener } from '@vant/use'; diff --git a/src/notice-bar/index.js b/src/notice-bar/index.js index 6aae64252..41a739232 100644 --- a/src/notice-bar/index.js +++ b/src/notice-bar/index.js @@ -1,8 +1,11 @@ -import { ref, reactive, nextTick, onActivated, watch } from 'vue'; -import { createNamespace, isDef } from '../utils'; -import { doubleRaf } from '../utils/dom/raf'; +import { ref, watch, reactive, nextTick, onActivated } from 'vue'; +import { isDef, doubleRaf, createNamespace } from '../utils'; + +// Composition import { useRect } from '../composition/use-rect'; import { useEventListener } from '@vant/use'; + +// Components import Icon from '../icon'; const [createComponent, bem] = createNamespace('notice-bar'); diff --git a/src/number-keyboard/index.js b/src/number-keyboard/index.js index 7549fb2e7..5fc6901d8 100644 --- a/src/number-keyboard/index.js +++ b/src/number-keyboard/index.js @@ -1,6 +1,5 @@ import { ref, watch, computed, Teleport, Transition } from 'vue'; -import { createNamespace } from '../utils'; -import { stopPropagation } from '../utils/dom/event'; +import { createNamespace, stopPropagation } from '../utils'; import { useClickAway } from '@vant/use'; import Key from './Key'; diff --git a/src/overlay/index.js b/src/overlay/index.js index 3b08d6c93..c24f62411 100644 --- a/src/overlay/index.js +++ b/src/overlay/index.js @@ -1,6 +1,5 @@ import { Transition } from 'vue'; -import { createNamespace, isDef, noop } from '../utils'; -import { preventDefault } from '../utils/dom/event'; +import { noop, isDef, preventDefault, createNamespace } from '../utils'; import { useLazyRender } from '../composition/use-lazy-render'; const [createComponent, bem] = createNamespace('overlay'); diff --git a/src/picker/PickerColumn.js b/src/picker/PickerColumn.js index 07dafe75a..407e8d743 100644 --- a/src/picker/PickerColumn.js +++ b/src/picker/PickerColumn.js @@ -2,10 +2,8 @@ import { reactive, ref, watch } from 'vue'; import { PICKER_KEY } from './shared'; // Utils -import { range } from '../utils/format/number'; import { deepClone } from '../utils/deep-clone'; -import { createNamespace, isObject } from '../utils'; -import { preventDefault } from '../utils/dom/event'; +import { range, isObject, createNamespace, preventDefault } from '../utils'; // Composition import { useTouch } from '../composition/use-touch'; diff --git a/src/picker/index.js b/src/picker/index.js index ee342439e..f68c0bc9e 100644 --- a/src/picker/index.js +++ b/src/picker/index.js @@ -2,10 +2,8 @@ import { ref, watch, computed } from 'vue'; import { pickerProps, PICKER_KEY, DEFAULT_ITEM_HEIGHT } from './shared'; // Utils -import { createNamespace } from '../utils'; -import { preventDefault } from '../utils/dom/event'; +import { unitToPx, preventDefault, createNamespace } from '../utils'; import { BORDER_UNSET_TOP_BOTTOM } from '../utils/constant'; -import { unitToPx } from '../utils/format/unit'; // Composition import { useExpose } from '../composition/use-expose'; diff --git a/src/pull-refresh/index.js b/src/pull-refresh/index.js index 0b03040a3..7bb5fabcf 100644 --- a/src/pull-refresh/index.js +++ b/src/pull-refresh/index.js @@ -1,9 +1,7 @@ import { ref, watch, reactive, nextTick } from 'vue'; // Utils -import { createNamespace } from '../utils'; -import { getScrollTop } from '../utils/dom/scroll'; -import { preventDefault } from '../utils/dom/event'; +import { preventDefault, getScrollTop, createNamespace } from '../utils'; // Composition import { useScrollParent } from '@vant/use'; diff --git a/src/rate/index.js b/src/rate/index.js index 34caa9fc2..a1983853d 100644 --- a/src/rate/index.js +++ b/src/rate/index.js @@ -1,8 +1,7 @@ import { computed } from 'vue'; // Utils -import { createNamespace, addUnit } from '../utils'; -import { preventDefault } from '../utils/dom/event'; +import { addUnit, createNamespace, preventDefault } from '../utils'; // Composition import { useRefs } from '../composition/use-refs'; diff --git a/src/search/index.js b/src/search/index.js index 9e4eefebc..2631bc937 100644 --- a/src/search/index.js +++ b/src/search/index.js @@ -1,6 +1,5 @@ // Utils -import { createNamespace, pick } from '../utils'; -import { preventDefault } from '../utils/dom/event'; +import { pick, createNamespace, preventDefault } from '../utils'; // Components import Field from '../field'; diff --git a/src/slider/index.js b/src/slider/index.js index 5cd14cc40..bc0bcc98e 100644 --- a/src/slider/index.js +++ b/src/slider/index.js @@ -1,9 +1,13 @@ import { ref, computed } from 'vue'; // Utils -import { createNamespace, addUnit, getSizeStyle } from '../utils'; +import { + addUnit, + getSizeStyle, + preventDefault, + createNamespace, +} from '../utils'; import { deepClone } from '../utils/deep-clone'; -import { preventDefault } from '../utils/dom/event'; // Composition import { useRect } from '../composition/use-rect'; diff --git a/src/stepper/index.js b/src/stepper/index.js index 291a4637d..888a51a3d 100644 --- a/src/stepper/index.js +++ b/src/stepper/index.js @@ -1,11 +1,16 @@ -import { ref, computed, watch } from 'vue'; +import { ref, watch, computed } from 'vue'; // Utils import { isNaN } from '../utils/validate/number'; -import { formatNumber } from '../utils/format/number'; -import { resetScroll } from '../utils/dom/reset-scroll'; -import { preventDefault } from '../utils/dom/event'; -import { createNamespace, isDef, addUnit, getSizeStyle } from '../utils'; +import { + isDef, + addUnit, + resetScroll, + formatNumber, + getSizeStyle, + preventDefault, + createNamespace, +} from '../utils'; // Composition import { useLinkField } from '../composition/use-link-field'; diff --git a/src/sticky/index.js b/src/sticky/index.js index 7f1425ac5..d1943290d 100644 --- a/src/sticky/index.js +++ b/src/sticky/index.js @@ -1,10 +1,13 @@ import { ref, reactive, computed } from 'vue'; // Utils -import { isHidden } from '../utils/dom/style'; -import { unitToPx } from '../utils/format/unit'; -import { createNamespace } from '../utils'; -import { getScrollTop, getElementTop } from '../utils/dom/scroll'; +import { + isHidden, + unitToPx, + getScrollTop, + getElementTop, + createNamespace, +} from '../utils'; // Composition import { useScrollParent, useEventListener } from '@vant/use'; diff --git a/src/swipe-cell/index.js b/src/swipe-cell/index.js index c216c96ca..e8cef67c2 100644 --- a/src/swipe-cell/index.js +++ b/src/swipe-cell/index.js @@ -1,9 +1,7 @@ import { ref, reactive, computed } from 'vue'; // Utils -import { createNamespace } from '../utils'; -import { range } from '../utils/format/number'; -import { preventDefault } from '../utils/dom/event'; +import { range, createNamespace, preventDefault } from '../utils'; import { callInterceptor } from '../utils/interceptor'; // Composition diff --git a/src/swipe/index.js b/src/swipe/index.js index 52a9200cf..24ae589e8 100644 --- a/src/swipe/index.js +++ b/src/swipe/index.js @@ -10,11 +10,13 @@ import { } from 'vue'; // Utils -import { createNamespace } from '../utils'; -import { range } from '../utils/format/number'; -import { isHidden } from '../utils/dom/style'; -import { doubleRaf } from '../utils/dom/raf'; -import { preventDefault } from '../utils/dom/event'; +import { + range, + isHidden, + doubleRaf, + preventDefault, + createNamespace, +} from '../utils'; // Composition import { usePageVisibility, useWindowSize } from '@vant/use'; diff --git a/src/tabs/index.js b/src/tabs/index.js index 64712e378..9aac35608 100644 --- a/src/tabs/index.js +++ b/src/tabs/index.js @@ -9,22 +9,24 @@ import { } from 'vue'; // Utils -import { createNamespace, isDef, addUnit } from '../utils'; -import { scrollLeftTo, scrollTopTo } from './utils'; -import { route } from '../composition/use-route'; -import { isHidden } from '../utils/dom/style'; -import { unitToPx } from '../utils/format/unit'; -import { BORDER_TOP_BOTTOM } from '../utils/constant'; -import { callInterceptor } from '../utils/interceptor'; import { + isDef, + addUnit, + isHidden, + unitToPx, getVisibleTop, getElementTop, + createNamespace, getVisibleHeight, setRootScrollTop, -} from '../utils/dom/scroll'; +} from '../utils'; +import { scrollLeftTo, scrollTopTo } from './utils'; +import { BORDER_TOP_BOTTOM } from '../utils/constant'; +import { callInterceptor } from '../utils/interceptor'; // Composition import { useWindowSize, useScrollParent, useEventListener } from '@vant/use'; +import { route } from '../composition/use-route'; import { useRefs } from '../composition/use-refs'; import { useExpose } from '../composition/use-expose'; import { useChildren } from '../composition/use-relation'; diff --git a/src/tabs/utils.ts b/src/tabs/utils.ts index 6cb21aa9d..f42afd070 100644 --- a/src/tabs/utils.ts +++ b/src/tabs/utils.ts @@ -1,14 +1,13 @@ -import { raf, cancelRaf } from '../utils/dom/raf'; -import { getScrollTop, setScrollTop } from '../utils/dom/scroll'; +import { raf, cancelRaf, getScrollTop, setScrollTop } from '../utils'; -let scrollLeftRafId: number; +let rafId: number; export function scrollLeftTo( scroller: HTMLElement, to: number, duration: number ) { - cancelRaf(scrollLeftRafId); + cancelRaf(rafId); let count = 0; const from = scroller.scrollLeft; @@ -18,7 +17,7 @@ export function scrollLeftTo( scroller.scrollLeft += (to - from) / frames; if (++count < frames) { - scrollLeftRafId = raf(animate); + rafId = raf(animate); } } diff --git a/src/utils/create/component.ts b/src/utils/create/component.ts index a264b0a36..72fcaab29 100644 --- a/src/utils/create/component.ts +++ b/src/utils/create/component.ts @@ -1,8 +1,8 @@ /** * Create a basic component with common options */ -import { camelize } from '../format/string'; import { App, defineComponent, ComponentOptionsWithObjectProps } from 'vue'; +import { camelize } from '..'; export function createComponent(name: string) { return function (sfc: ComponentOptionsWithObjectProps) { diff --git a/src/utils/create/i18n.ts b/src/utils/create/i18n.ts index 37da6501d..69a1040db 100644 --- a/src/utils/create/i18n.ts +++ b/src/utils/create/i18n.ts @@ -1,5 +1,4 @@ -import { get, isFunction } from '..'; -import { camelize } from '../format/string'; +import { get, camelize, isFunction } from '..'; import locale from '../../locale'; export function createI18N(name: string) { diff --git a/src/utils/dom/reset-scroll.ts b/src/utils/dom/reset-scroll.ts deleted file mode 100644 index acf27992a..000000000 --- a/src/utils/dom/reset-scroll.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Hack for iOS12 page scroll - * https://developers.weixin.qq.com/community/develop/doc/00044ae90742f8c82fb78fcae56800 - */ - -import { isIOS as checkIsIOS } from '../validate/system'; -import { getRootScrollTop, setRootScrollTop } from './scroll'; - -const isIOS = checkIsIOS(); - -export function resetScroll() { - if (isIOS) { - setRootScrollTop(getRootScrollTop()); - } -} diff --git a/src/utils/dom/scroll.ts b/src/utils/dom/scroll.ts index b7c3838dd..60e354838 100644 --- a/src/utils/dom/scroll.ts +++ b/src/utils/dom/scroll.ts @@ -1,3 +1,5 @@ +import { isIOS as checkIsIOS } from '../validate/system'; + type ScrollElement = HTMLElement | Window; function isWindow(val: unknown): val is Window { @@ -56,3 +58,13 @@ export function getVisibleTop(el: ScrollElement) { } return el.getBoundingClientRect().top; } + +const isIOS = checkIsIOS(); + +// hack for iOS12 page scroll +// see: https://developers.weixin.qq.com/community/develop/doc/00044ae90742f8c82fb78fcae56800 +export function resetScroll() { + if (isIOS) { + setRootScrollTop(getRootScrollTop()); + } +} diff --git a/src/utils/index.ts b/src/utils/index.ts index 9f23bc865..55c2d802b 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,5 +1,11 @@ -export { addUnit, getSizeStyle } from './format/unit'; -export { createNamespace } from './create'; +export * from './create'; +export * from './format/unit'; +export * from './format/number'; +export * from './format/string'; +export * from './dom/raf'; +export * from './dom/style'; +export * from './dom/event'; +export * from './dom/scroll'; // eslint-disable-next-line @typescript-eslint/no-empty-function export function noop() {}