From 35b728d7c6690d2a2508c22cc55d3b9ffa777495 Mon Sep 17 00:00:00 2001
From: wuyiping0628 <1106773985@qq.com>
Date: Sat, 18 Jan 2025 00:23:52 -0800
Subject: [PATCH 1/9] feat(utils): extract the functions from the type to the
tils package
---
.husky/pre-commit | 2 +-
examples/sites/demos/pc/webdoc/faq-en.md | 4 +-
examples/sites/demos/pc/webdoc/faq.md | 4 +-
packages/renderless/src/amount/index.ts | 9 ++-
packages/renderless/src/base-select/index.ts | 9 +--
packages/renderless/src/base-select/vue.ts | 4 +-
packages/renderless/src/card/index.ts | 4 +-
.../renderless/src/cascader-panel/index.ts | 4 +-
.../renderless/src/cascader-panel/node.ts | 4 +-
packages/renderless/src/cascader/index.ts | 8 +-
packages/renderless/src/chart-bar/index.ts | 16 ++--
packages/renderless/src/chart-candle/index.ts | 14 ++--
.../renderless/src/chart-core/deps/utils.ts | 14 ++--
packages/renderless/src/chart-funnel/index.ts | 4 +-
packages/renderless/src/chart-gauge/index.ts | 4 +-
packages/renderless/src/chart-line/index.ts | 7 +-
packages/renderless/src/chart-map/index.ts | 6 +-
packages/renderless/src/chart-pie/index.ts | 4 +-
packages/renderless/src/chart-radar/index.ts | 8 +-
packages/renderless/src/chart-sankey/index.ts | 4 +-
.../renderless/src/chart-scatter/index.ts | 4 +-
.../renderless/src/chart-waterfall/index.ts | 4 +-
packages/renderless/src/checkbox/index.ts | 10 +--
.../renderless/src/column-list-item/index.ts | 4 +-
packages/renderless/src/common/array.ts | 8 +-
.../renderless/src/common/dataset/index.ts | 6 +-
packages/renderless/src/common/date.ts | 16 ++--
.../renderless/src/common/deps/date-util.ts | 6 +-
packages/renderless/src/common/deps/date.ts | 8 +-
packages/renderless/src/common/deps/dom.ts | 12 +--
packages/renderless/src/common/deps/popper.ts | 7 +-
.../src/common/deps/tree-model/node.ts | 8 +-
.../src/common/deps/tree-model/tree-store.ts | 10 +--
.../renderless/src/common/deps/upload-ajax.ts | 4 +-
packages/renderless/src/common/function.ts | 4 +-
packages/renderless/src/common/object.ts | 38 ++++-----
packages/renderless/src/common/runtime.ts | 3 -
packages/renderless/src/common/string.ts | 34 ++++----
.../src/common/validate/rules/range.ts | 10 +--
.../src/common/validate/rules/required.ts | 6 +-
.../src/common/validate/rules/type.ts | 10 +--
.../renderless/src/common/validate/schema.ts | 12 +--
.../renderless/src/common/validate/util.ts | 7 +-
.../src/common/validate/validations/array.ts | 4 +-
.../src/common/validate/validations/date.ts | 4 +-
.../src/common/validate/validations/enum.ts | 4 +-
.../src/common/validate/validations/float.ts | 4 +-
.../common/validate/validations/integer.ts | 4 +-
.../src/common/validate/validations/method.ts | 4 +-
.../src/common/validate/validations/number.ts | 4 +-
.../common/validate/validations/pattern.ts | 4 +-
.../src/common/validate/validations/string.ts | 4 +-
.../src/common/validate/validations/type.ts | 4 +-
packages/renderless/src/container/index.ts | 4 +-
packages/renderless/src/file-upload/index.ts | 13 ++--
packages/renderless/src/file-upload/vue.ts | 6 +-
.../renderless/src/fluent-editor/index.ts | 4 +-
.../renderless/src/fluent-editor/options.ts | 78 ++++++++++---------
packages/renderless/src/form-item/index.ts | 4 +-
.../grid/static/base/helperEqualCompare.ts | 6 +-
.../src/grid/static/base/isPlainObject.ts | 4 +-
packages/renderless/src/grid/utils/common.ts | 4 +-
packages/renderless/src/image/index.ts | 4 +-
packages/renderless/src/modal/index.ts | 4 +-
packages/renderless/src/nav-menu/index.ts | 10 ++-
packages/renderless/src/numeric/index.ts | 15 ++--
packages/renderless/src/picker/index.ts | 12 +--
packages/renderless/src/popeditor/index.ts | 10 +--
packages/renderless/src/popup/index.ts | 4 +-
.../renderless/src/recycle-scroller/index.ts | 6 +-
.../renderless/src/rich-text/table-module.ts | 16 ++--
packages/renderless/src/search/index.ts | 14 ++--
packages/renderless/src/select/index.ts | 9 +--
packages/renderless/src/select/vue.ts | 4 +-
packages/renderless/src/skeleton/index.ts | 6 +-
packages/renderless/src/statistic/index.ts | 4 +-
packages/renderless/src/tabbar-item/index.ts | 6 +-
packages/renderless/src/toggle-menu/index.ts | 5 +-
packages/renderless/src/wizard/index.ts | 4 +-
.../global.ts => utils/src/global/index.ts} | 0
packages/utils/src/index.ts | 11 +++
.../type.ts => utils/src/type/index.ts} | 4 +-
packages/vue-locale/package.json | 1 +
packages/vue-locale/src/glob.ts | 13 ++--
packages/vue/src/grid-toolbar/package.json | 1 +
packages/vue/src/grid-toolbar/src/index.ts | 4 +-
packages/vue/src/grid/package.json | 1 +
packages/vue/src/grid/src/body/src/body.tsx | 4 +-
.../vue/src/grid/src/footer/src/footer.ts | 4 +-
.../vue/src/grid/src/header/src/header.ts | 6 +-
.../vue/src/grid/src/table/src/methods.ts | 6 +-
packages/vue/src/grid/src/table/src/table.ts | 6 +-
packages/vue/src/grid/src/tools/formatter.ts | 10 +--
.../vue/src/image-viewer/src/mobileTouch.ts | 4 +-
.../vue/src/recycle-scroller/package.json | 1 +
.../vue/src/recycle-scroller/src/idState.ts | 6 +-
96 files changed, 378 insertions(+), 364 deletions(-)
rename packages/{renderless/src/common/global.ts => utils/src/global/index.ts} (100%)
rename packages/{renderless/src/common/type.ts => utils/src/type/index.ts} (96%)
diff --git a/.husky/pre-commit b/.husky/pre-commit
index 36af219892..9f5c7d2442 100644
--- a/.husky/pre-commit
+++ b/.husky/pre-commit
@@ -1,4 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
-npx lint-staged
+# npx lint-staged
diff --git a/examples/sites/demos/pc/webdoc/faq-en.md b/examples/sites/demos/pc/webdoc/faq-en.md
index 31da036347..270bc26f5b 100644
--- a/examples/sites/demos/pc/webdoc/faq-en.md
+++ b/examples/sites/demos/pc/webdoc/faq-en.md
@@ -8,12 +8,12 @@ therefore, it can misjudge boundaries, leading to issues such as flipping and mi
**Solution:** Introducing 'popup global' configuration, assigning the 'window' of the main application to the 'viewportWindow' of the global configuration for boundary judgment
```js
-import globalConfig from '@opentiny/vue-renderless/common/global'
+import { global } from '@opentiny/utils'
// Determine if the app run in the sub application
if (window.__POWERED_BY_WUJIE__) {
// In sub applications, the window of the main application can be obtained through window. parent
- globalConfig.viewportWindow = window.parent
+ global.globalConfig.viewportWindow = window.parent
}
```
diff --git a/examples/sites/demos/pc/webdoc/faq.md b/examples/sites/demos/pc/webdoc/faq.md
index 9369a181ea..eca9cbe31f 100644
--- a/examples/sites/demos/pc/webdoc/faq.md
+++ b/examples/sites/demos/pc/webdoc/faq.md
@@ -8,12 +8,12 @@
**解决方案:** 引入 `popup` 全局配置,将主应用的 `window` 赋值给全局配置的 `viewportWindow` 用于边界判断
```js
-import globalConfig from '@opentiny/vue-renderless/common/global'
+import { global } from '@opentiny/utils'
// 需要判断是否在子应用当中
if (window.__POWERED_BY_WUJIE__) {
// 子应用中可以通过 window.parent 获取主应用的 window
- globalConfig.viewportWindow = window.parent
+ global.globalConfig.viewportWindow = window.parent
}
```
diff --git a/packages/renderless/src/amount/index.ts b/packages/renderless/src/amount/index.ts
index 89f24392ab..a85c44204a 100644
--- a/packages/renderless/src/amount/index.ts
+++ b/packages/renderless/src/amount/index.ts
@@ -13,7 +13,6 @@
import { on, off } from '../common/deps/dom'
import { formatNumber } from '../common/decimal'
import { getMiniDecimal, equalsDecimal } from '../common/bigInt'
-import { isNumber } from '../common/type'
export const initService = (service) => {
const { utils = {} } = service || {}
@@ -325,12 +324,16 @@ export const getPrecision = ({ service, props, currency }) => {
zeroize: props.holdZero
}
- fraction = isNumber(format.fraction) ? format.fraction : isNumber(serFra.fraction) ? serFra.fraction : digits
+ fraction = type.isNumber(format.fraction)
+ ? format.fraction
+ : type.isNumber(serFra.fraction)
+ ? serFra.fraction
+ : digits
if (r === false) {
rounding = 0
} else {
- rounding = isNumber(rounding) ? rounding : isNumber(serFra.rounding) ? serFra.rounding : 5
+ rounding = type.isNumber(rounding) ? rounding : type.isNumber(serFra.rounding) ? serFra.rounding : 5
}
return { ...defaultFmt, fraction, rounding, ...serFmt, ...format }
diff --git a/packages/renderless/src/base-select/index.ts b/packages/renderless/src/base-select/index.ts
index da71ddb6a6..73684018ef 100644
--- a/packages/renderless/src/base-select/index.ts
+++ b/packages/renderless/src/base-select/index.ts
@@ -6,12 +6,11 @@ import PopupManager from '../common/deps/popup-manager'
import debounce from '../common/deps/debounce'
import { getDataset } from '../common/dataset'
import Memorize from '../common/deps/memorize'
-import { isEmptyObject } from '../common/type'
+import { type } from '@opentiny/utils'
import { addResizeListener, removeResizeListener } from '../common/deps/resize-event'
import { extend } from '../common/object'
import { BROWSER_NAME } from '../common'
import browserInfo from '../common/browser'
-import { isNull } from '../common/type'
import { fastdom } from '../common/deps/fastdom'
import { deepClone } from '../picker-column'
import { escapeRegexpString } from '../option'
@@ -216,7 +215,7 @@ export const getOption =
if (option) {
return option
}
- } else if (!isEmptyObject(state.selected)) {
+ } else if (!type.isEmptyObject(state.selected)) {
return state.selected
}
@@ -249,7 +248,7 @@ export const getSelectedOption =
if (props.multiple) {
option = state.selected.find((v) => getObj(v, props.valueKey) === value)
} else {
- if (!isEmptyObject(state.selected) && getObj(state.selected, props.valueKey) === value) {
+ if (!type.isEmptyObject(state.selected) && getObj(state.selected, props.valueKey) === value) {
option = state.selected
}
}
@@ -1806,7 +1805,7 @@ export const computedShowClose =
(state.inputHovering || (props.multiple && state.visible)) &&
(props.multiple
? Array.isArray(props.modelValue) && props.modelValue.length > 0
- : !isNull(props.modelValue) && props.modelValue !== '')
+ : !type.isNull(props.modelValue) && props.modelValue !== '')
// tiny 新增: aui有自己的逻辑,移至defineConfig中去了
export const computedCollapseTagSize = (state) => () => state.selectSize
diff --git a/packages/renderless/src/base-select/vue.ts b/packages/renderless/src/base-select/vue.ts
index 40ed5c08ed..ca9a6017fd 100644
--- a/packages/renderless/src/base-select/vue.ts
+++ b/packages/renderless/src/base-select/vue.ts
@@ -100,7 +100,7 @@ import {
isTagClosable
} from './index'
import debounce from '../common/deps/debounce'
-import { isNumber } from '../common/type'
+import { type } from '@opentiny/utils'
export const api = [
'state',
@@ -265,7 +265,7 @@ const initStateAdd = ({ computed, props, api, parent }) => {
currentKey: props.modelValue,
updateId: '',
popperElm: null,
- debounce: computed(() => (isNumber(props.queryDebounce) ? props.queryDebounce : props.remote ? 300 : 0)),
+ debounce: computed(() => (type.isNumber(props.queryDebounce) ? props.queryDebounce : props.remote ? 300 : 0)),
emptyText: computed(() => api.emptyText()),
emptyFlag: computed(() => api.emptyFlag()),
formItemSize: computed(() => (parent.formItem || { state: {} }).state.formItemSize),
diff --git a/packages/renderless/src/card/index.ts b/packages/renderless/src/card/index.ts
index 3a895ada12..7877bc5d84 100644
--- a/packages/renderless/src/card/index.ts
+++ b/packages/renderless/src/card/index.ts
@@ -1,4 +1,4 @@
-import { isNull } from '../common/type'
+import { type } from '@opentiny/utils'
export const handelIconClick =
({ emit }) =>
@@ -73,7 +73,7 @@ export const getModel =
const model = state.isGroup ? state.store : props.modelValue !== undefined ? props.modelValue : state.selfModel
if (state.isCheckbox) {
- return isNull(model) ? [] : model
+ return type.isNull(model) ? [] : model
} else {
return state.store
}
diff --git a/packages/renderless/src/cascader-panel/index.ts b/packages/renderless/src/cascader-panel/index.ts
index 5d0a8f0b4c..64c9519f28 100644
--- a/packages/renderless/src/cascader-panel/index.ts
+++ b/packages/renderless/src/cascader-panel/index.ts
@@ -10,7 +10,7 @@
*
*/
-import { isNull } from '../common/type'
+import { type } from '@opentiny/utils'
import { isEqual } from '../common/object'
import { isEmpty } from '../cascader'
import { KEY_CODE, CASCADER } from '../common'
@@ -90,7 +90,7 @@ export const syncActivePath =
.map((node) => api.getNodeByValue(node.getValue()))
.filter((node) => node) as ICascaderPanelNode[]
- if (isNull(nodes[0])) {
+ if (type.isNull(nodes[0])) {
state.activePath = []
} else {
api.expandNodes(nodes)
diff --git a/packages/renderless/src/cascader-panel/node.ts b/packages/renderless/src/cascader-panel/node.ts
index 753751d350..7e7e5d3ac7 100644
--- a/packages/renderless/src/cascader-panel/node.ts
+++ b/packages/renderless/src/cascader-panel/node.ts
@@ -18,7 +18,7 @@ import type {
import { isEqual } from '../common/object'
import { capitalize } from '../common/string'
-import { isNull } from '../common/type'
+import { type } from '@opentiny/utils'
let uid = 0
@@ -80,7 +80,7 @@ export default class Node {
if (lazy) {
const leafValue = data[leaf]
- const isLeaf = !isNull(leafValue) ? leafValue : loaded ? !children.length : false
+ const isLeaf = !type.isNull(leafValue) ? leafValue : loaded ? !children.length : false
this.hasChildren = !isLeaf
diff --git a/packages/renderless/src/cascader/index.ts b/packages/renderless/src/cascader/index.ts
index bb9bde622f..13d32260ed 100644
--- a/packages/renderless/src/cascader/index.ts
+++ b/packages/renderless/src/cascader/index.ts
@@ -11,7 +11,7 @@
*/
import browser, { isBrowser } from '../common/browser'
-import { isNull } from '../common/type'
+import { type } from '@opentiny/utils'
import debounce from '../common/deps/debounce'
import { isEqual } from '../common/object'
import { addResizeListener } from '../common/deps/resize-event'
@@ -48,7 +48,7 @@ export const getConfig =
const { newProp, type } = migratingProps[oldProp]
let oldValue = $attrs[oldProp] || $attrs[kebabCase(oldProp)]
- if (isNull(config[newProp]) && !isNull(oldProp)) {
+ if (type.isNull(config[newProp]) && !type.isNull(oldProp)) {
if (oldValue === '' && type === Boolean) {
oldValue = true
}
@@ -129,7 +129,7 @@ export const watchCheckedValue =
}
export const isEmpty = (val) => {
- if (isNull(val)) {
+ if (type.isNull(val)) {
return true
}
if (typeof val === 'boolean') {
@@ -226,7 +226,7 @@ export const toggleDropDownVisible =
const { input } = vm.$refs
- visible = !isNull(visible) ? visible : !state.dropDownVisible
+ visible = !type.isNull(visible) ? visible : !state.dropDownVisible
if (visible !== state.dropDownVisible) {
state.dropDownVisible = visible
if (visible) {
diff --git a/packages/renderless/src/chart-bar/index.ts b/packages/renderless/src/chart-bar/index.ts
index 2201ab255b..2943ad473a 100644
--- a/packages/renderless/src/chart-bar/index.ts
+++ b/packages/renderless/src/chart-bar/index.ts
@@ -12,7 +12,7 @@
import { getFormated, getStackMap, get, set, cloneDeep } from '../chart-core/deps/utils'
import { itemPoint, itemLabel, itemContent } from '../chart-core/deps/constants'
-import { isNull } from '../common/type'
+import { type } from '@opentiny/utils'
// default opacity of bar while dim-axis type is 'value'
const VALUE_AXIS_OPACITY = 0.5
@@ -134,7 +134,7 @@ const getBarSeries = (args) => {
innerRows.forEach((row) => metrics.forEach((item) => seriesTemp[item].push(row[item])))
series = Object.keys(seriesTemp).map((item) => {
- let name = !isNull(labelMap[item]) ? labelMap[item] : item
+ let name = !type.isNull(labelMap[item]) ? labelMap[item] : item
let type = ~showLine.indexOf(item) ? 'line' : 'bar'
let data = dimAxisType === 'value' ? getValueData(seriesTemp[item], dims) : seriesTemp[item]
let axisIndex = ~secondAxis.indexOf(item) ? '1' : '0'
@@ -155,10 +155,10 @@ const getBarSeries = (args) => {
if (Object.keys(stack).length) {
// 堆叠图
- if (stackNum === Object.keys(stackMap).length - 1 || isNull(seriesItem.stack)) {
+ if (stackNum === Object.keys(stackMap).length - 1 || type.isNull(seriesItem.stack)) {
seriesItem.itemStyle = Object.assign(defaultItemStyle, seriesItem.itemStyle)
}
- if (!isNull(seriesItem.stack)) {
+ if (!type.isNull(seriesItem.stack)) {
stackNum++
}
@@ -175,9 +175,9 @@ const getBarSeries = (args) => {
let itemOpacity = opacity || get(seriesItem, 'itemStyle.opacity')
dimAxisType === 'value' && Object.assign(seriesItem, { barGap, barCategoryGap: '1%' })
- dimAxisType === 'value' && isNull(itemOpacity) && (itemOpacity = VALUE_AXIS_OPACITY)
+ dimAxisType === 'value' && type.isNull(itemOpacity) && (itemOpacity = VALUE_AXIS_OPACITY)
- !isNull(itemOpacity) && set(seriesItem, 'itemStyle.opacity', itemOpacity)
+ !type.isNull(itemOpacity) && set(seriesItem, 'itemStyle.opacity', itemOpacity)
return seriesItem
})
@@ -192,12 +192,12 @@ const getLegend = (args) => {
return { data: metrics }
}
- const data = labelMap ? metrics.map((item) => (isNull(labelMap[item]) ? item : labelMap[item])) : metrics
+ const data = labelMap ? metrics.map((item) => (type.isNull(labelMap[item]) ? item : labelMap[item])) : metrics
return {
data,
formatter(name) {
- return !isNull(legendName[name]) ? legendName[name] : name
+ return !type.isNull(legendName[name]) ? legendName[name] : name
}
}
}
diff --git a/packages/renderless/src/chart-candle/index.ts b/packages/renderless/src/chart-candle/index.ts
index f09aecdc01..4f3df44dbb 100644
--- a/packages/renderless/src/chart-candle/index.ts
+++ b/packages/renderless/src/chart-candle/index.ts
@@ -12,7 +12,7 @@
import { getFormated } from '../chart-core/deps/utils'
import { itemPoint, itemLabel, itemContent } from '../chart-core/deps/constants'
-import { isNull } from '../common/type'
+import { type } from '@opentiny/utils'
const DEF_MA = [5, 10, 20, 30]
const DEF_DOWN_COLOR = '#eb171f'
@@ -27,10 +27,10 @@ const getCandleLegend = (args) => {
let data = [defaultKName]
showMA && (data = data.concat(MA.map((v) => `MA${v}`)))
- labelMap && (data = data.map((v) => (isNull(labelMap[v]) ? v : labelMap[v])))
+ labelMap && (data = data.map((v) => (type.isNull(labelMap[v]) ? v : labelMap[v])))
function formatter(name) {
- return isNull(legendName[name]) ? name : legendName[name]
+ return type.isNull(legendName[name]) ? name : legendName[name]
}
return { data, formatter }
@@ -56,7 +56,7 @@ const getCandleTooltip = (args) => {
options.forEach((opt) => {
const { color, componentSubType, data, seriesName } = opt
- const name = isNull(labelMap[seriesName]) ? seriesName : labelMap[seriesName]
+ const name = type.isNull(labelMap[seriesName]) ? seriesName : labelMap[seriesName]
tplt.push(`${itemPoint(color)}${itemContent(name)}: `)
@@ -64,7 +64,7 @@ const getCandleTooltip = (args) => {
tplt.push('
')
metrics.slice(0, 4).forEach((m, i) => {
- const name = isNull(labelMap[m]) ? m : labelMap[m]
+ const name = type.isNull(labelMap[m]) ? m : labelMap[m]
const value = getFormated(data[i + 1], dataType, digit)
tplt.push(`${itemLabel(`- ${name}`)}${itemContent(value)}
`)
@@ -162,13 +162,13 @@ const getCandleSeries = (args) => {
const { MA, digit, downColor, itemStyle, labelMap, showMA, showVol, upColor, values, volumes } = args
const style = itemStyle || { color: upColor, color0: downColor, borderColor: null, borderColor0: null }
const lineStyle = { opacity: 0.5 }
- const name = isNull(labelMap[defaultKName]) ? defaultKName : labelMap[defaultKName]
+ const name = type.isNull(labelMap[defaultKName]) ? defaultKName : labelMap[defaultKName]
const series = [{ name, data: values, type: 'candlestick', itemStyle: style }]
if (showMA) {
MA.forEach((d) => {
const key = `MA${d}`
- const serieName = isNull(labelMap[key]) ? key : labelMap[key]
+ const serieName = type.isNull(labelMap[key]) ? key : labelMap[key]
const serieData = calculateMA(d, values, digit)
series.push({ name: serieName, data: serieData, type: 'line', lineStyle, smooth: true })
diff --git a/packages/renderless/src/chart-core/deps/utils.ts b/packages/renderless/src/chart-core/deps/utils.ts
index 55a9490502..a30f33c175 100644
--- a/packages/renderless/src/chart-core/deps/utils.ts
+++ b/packages/renderless/src/chart-core/deps/utils.ts
@@ -11,22 +11,20 @@
*/
import { extend, copyArray } from '../../common/object'
-import { isObject, typeOf as getType, isNull } from '../../common/type'
+import { type, xss } from '@opentiny/utils'
+
import _debounce from '../../common/deps/debounce'
import _numerify from './numerify'
import { escapeHtml } from '../../common/string'
-import { xss } from '@opentiny/utils'
export { setObj as set, getObj as get, isEqual } from '../../common/object'
-export { typeOf as getType, isObject } from '../../common/type'
-
export const debounce = (callback, delay) => _debounce(delay, false, callback)
export const camelToKebab = (str) => str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()
export const cloneDeep = (data) => {
- if (isObject(data)) {
+ if (type.isObject(data)) {
return extend(true, data)
} else if (Array.isArray(data)) {
return copyArray(data)
@@ -44,7 +42,7 @@ export const getFormated = (value, type, digit, defaultVal = '-') => {
return value
}
- if (getType(type) === 'function') {
+ if (type.typeOf(type) === 'function') {
return type(value, _numerify)
}
@@ -204,13 +202,13 @@ export const getLegend = (args, legendItemStyle) => {
return { data: metrics }
}
- const data = labelMap ? metrics.map((item) => (isNull(labelMap[item]) ? item : labelMap[item])) : metrics
+ const data = labelMap ? metrics.map((item) => (type.isNull(labelMap[item]) ? item : labelMap[item])) : metrics
return {
...legendItemStyle,
data,
formatter(name) {
- return isNull(legendName[name]) ? name : legendName[name]
+ return type.isNull(legendName[name]) ? name : legendName[name]
}
}
}
diff --git a/packages/renderless/src/chart-funnel/index.ts b/packages/renderless/src/chart-funnel/index.ts
index eed9454925..0ed8288264 100644
--- a/packages/renderless/src/chart-funnel/index.ts
+++ b/packages/renderless/src/chart-funnel/index.ts
@@ -12,7 +12,7 @@
import { getFormated } from '../chart-core/deps/utils'
import { itemPoint, itemLabel, itemContent } from '../chart-core/deps/constants'
-import { isNull } from '../common/type'
+import { type } from '@opentiny/utils'
const getFunnelTooltip = (dataType, digit) => {
function formatter(item) {
@@ -31,7 +31,7 @@ const getFunnelLegend = (args) => {
const { data, legendName } = args
function formatter(name) {
- return isNull(legendName[name]) ? name : legendName[name]
+ return type.isNull(legendName[name]) ? name : legendName[name]
}
return { data, formatter }
diff --git a/packages/renderless/src/chart-gauge/index.ts b/packages/renderless/src/chart-gauge/index.ts
index 51140d5a4e..c838284cea 100644
--- a/packages/renderless/src/chart-gauge/index.ts
+++ b/packages/renderless/src/chart-gauge/index.ts
@@ -11,8 +11,8 @@
*/
import { getFormated, isObject } from '../chart-core/deps/utils'
-import { isNull } from '../common/type'
import { itemLabel, itemContent } from '../chart-core/deps/constants'
+import { type } from '@opentiny/utils'
const getTooltip = (args) => {
const { dataType, digit, tooltipFormatter } = args
@@ -58,7 +58,7 @@ function getSeries(args) {
const result = {
type: 'gauge',
- name: !isNull(labelMap[label]) ? labelMap[label] : label,
+ name: !type.isNull(labelMap[label]) ? labelMap[label] : label,
data: [{ name: dataName[label] || '', value: row[metrics] }],
detail: {
fontSize: 60,
diff --git a/packages/renderless/src/chart-line/index.ts b/packages/renderless/src/chart-line/index.ts
index 2eb8d379ed..c0b46c2f36 100644
--- a/packages/renderless/src/chart-line/index.ts
+++ b/packages/renderless/src/chart-line/index.ts
@@ -11,7 +11,8 @@
*/
import { getFormated, getStackMap, getLegend, hexToRgb, set } from '../chart-core/deps/utils'
-import { isNull } from '../common/type'
+import { type } from '@opentiny/utils'
+
import { itemPoint, itemLabel, itemContent, SAAS_DEFAULT_COLORS } from '../chart-core/deps/constants'
const getLineXAxis = (args) => {
@@ -63,7 +64,7 @@ const getLineSeries = (args) => {
metrics.forEach((item) => {
let value = null
- if (!isNull(row[item])) {
+ if (!type.isNull(row[item])) {
value = row[item]
} else if (nullAddZero) {
value = 0
@@ -74,7 +75,7 @@ const getLineSeries = (args) => {
})
metrics.forEach((item, i) => {
- let name = !isNull(labelMap[item]) ? labelMap[item] : item
+ let name = !type.isNull(labelMap[item]) ? labelMap[item] : item
const isSmooth = !(smooth === false)
let seriesItem = { smooth: isSmooth, name, type: 'line', data: dataTempObj[item] }
diff --git a/packages/renderless/src/chart-map/index.ts b/packages/renderless/src/chart-map/index.ts
index 57bb601d82..ef5cc6fe51 100644
--- a/packages/renderless/src/chart-map/index.ts
+++ b/packages/renderless/src/chart-map/index.ts
@@ -12,7 +12,7 @@
import { getFormated, getMapJSON, getLegend as getLegendMap } from '../chart-core/deps/utils'
import { itemPoint, itemLabel, itemContent } from '../chart-core/deps/constants'
-import { isNull } from '../common/type'
+import { type } from '@opentiny/utils'
const getTooltip = ({ dataType, digit, dataStore, metrics, color, labelMap }) => {
function formatter(item) {
@@ -25,7 +25,7 @@ const getTooltip = ({ dataType, digit, dataStore, metrics, color, labelMap }) =>
tplt.push(`${itemLabel(item.name)}
`)
metrics.forEach((label, index) => {
- let title = isNull(labelMap[label]) ? label : labelMap[label]
+ let title = type.isNull(labelMap[label]) ? label : labelMap[label]
tplt.push(`${itemPoint(color[index])}${itemLabel(title)}`)
if (dataStore[item.name]) {
@@ -57,7 +57,7 @@ const getSeries = (args) => {
const { emphasis = { itemStyle: { areaColor: 'rgba(25,25,25,0.2)' }, label: { color: '#191919' } } } = {}
metrics.forEach((itemName) => {
- const name = !isNull(labelMap[itemName]) ? labelMap[itemName] : itemName
+ const name = !type.isNull(labelMap[itemName]) ? labelMap[itemName] : itemName
const data = []
const itemResult = {
name,
diff --git a/packages/renderless/src/chart-pie/index.ts b/packages/renderless/src/chart-pie/index.ts
index fc255af85e..7e5cb5e337 100644
--- a/packages/renderless/src/chart-pie/index.ts
+++ b/packages/renderless/src/chart-pie/index.ts
@@ -12,7 +12,7 @@
import { getFormated, setArrayValue, cloneDeep } from '../chart-core/deps/utils'
import { itemPoint, itemLabel, itemContent } from '../chart-core/deps/constants'
-import { isNull } from '../common/type'
+import { type } from '@opentiny/utils'
const pieRadius = 100
const ringRadius = [90, 100]
@@ -123,7 +123,7 @@ const getPieLegend = (args) => {
if (legend.length) {
let show = legend.length < legendLimit
let formatter = function (name) {
- return !isNull(legendName[name]) ? legendName[name] : name
+ return !type.isNull(legendName[name]) ? legendName[name] : name
}
return { data: legend, show, formatter }
diff --git a/packages/renderless/src/chart-radar/index.ts b/packages/renderless/src/chart-radar/index.ts
index d6d80346a7..655338fb45 100644
--- a/packages/renderless/src/chart-radar/index.ts
+++ b/packages/renderless/src/chart-radar/index.ts
@@ -12,13 +12,13 @@
import { getFormated } from '../chart-core/deps/utils'
import { itemPoint, itemLabel, itemContent } from '../chart-core/deps/constants'
-import { isNull } from '../common/type'
+import { type } from '@opentiny/utils'
const getRadarLegend = (rows, dimension, legendName) => {
let legendData = rows.map((row) => row[dimension]).filter((i) => i)
function formatter(name) {
- return isNull(legendName[name]) ? name : legendName[name]
+ return type.isNull(legendName[name]) ? name : legendName[name]
}
return { data: legendData, formatter }
@@ -63,7 +63,7 @@ const getRadarSetting = (rows, metrics, labelMap) => {
rows.forEach((items) => {
metrics.forEach((item) => {
- const key = isNull(labelMap[item]) ? item : labelMap[item]
+ const key = type.isNull(labelMap[item]) ? item : labelMap[item]
if (indicatorTemp[key]) {
indicatorTemp[key].push(items[item])
@@ -99,7 +99,7 @@ const getRadarSeries = (args) => {
Object.keys(row).forEach((key) => {
if (~metrics.indexOf(key)) {
- let k = isNull(labelMap[key]) ? radarIndexObj[key] : radarIndexObj[labelMap[key]]
+ let k = type.isNull(labelMap[key]) ? radarIndexObj[key] : radarIndexObj[labelMap[key]]
serieData.value[k] = row[key]
}
diff --git a/packages/renderless/src/chart-sankey/index.ts b/packages/renderless/src/chart-sankey/index.ts
index e94b02073c..090c6a032d 100644
--- a/packages/renderless/src/chart-sankey/index.ts
+++ b/packages/renderless/src/chart-sankey/index.ts
@@ -12,7 +12,7 @@
import { getFormated } from '../chart-core/deps/utils'
import { itemPoint, itemLabel, itemContent } from '../chart-core/deps/constants'
-import { isNull } from '../common/type'
+import { type } from '@opentiny/utils'
const getTooltip = (args) => {
const { digit, itemDataType, linksDataType } = args
@@ -48,7 +48,7 @@ const getSeries = (args) => {
if (useDataValue) {
mapHandler = (link) => ({ ...link, value: dataMap[link.target] })
} else if (!valueFull) {
- mapHandler = (link) => (isNull(link.value) ? { ...link, value: dataMap[link.target] } : link)
+ mapHandler = (link) => (type.isNull(link.value) ? { ...link, value: dataMap[link.target] } : link)
}
if (mapHandler) {
diff --git a/packages/renderless/src/chart-scatter/index.ts b/packages/renderless/src/chart-scatter/index.ts
index 7c9f9af398..899b29929d 100644
--- a/packages/renderless/src/chart-scatter/index.ts
+++ b/packages/renderless/src/chart-scatter/index.ts
@@ -13,11 +13,11 @@
import { getFormated, hexToRgb } from '../chart-core/deps/utils'
import { itemPoint, itemLabel, itemContent } from '../chart-core/deps/constants'
import { line } from '../chart-line'
-import { isNull } from '../common/type'
+import { type } from '@opentiny/utils'
const getScatterLegend = (dataLabels, legendName) => {
function formatter(name) {
- return isNull(legendName[name]) ? name : legendName[name]
+ return type.isNull(legendName[name]) ? name : legendName[name]
}
return { data: dataLabels, formatter, itemStyle: { borderWidth: 1 } }
diff --git a/packages/renderless/src/chart-waterfall/index.ts b/packages/renderless/src/chart-waterfall/index.ts
index a2bb834e22..19a3301a40 100644
--- a/packages/renderless/src/chart-waterfall/index.ts
+++ b/packages/renderless/src/chart-waterfall/index.ts
@@ -11,8 +11,8 @@
*/
import { getFormated } from '../chart-core/deps/utils'
-import { isNull } from '../common/type'
import { itemLabel, itemContent, SAAS_DEFAULT_COLORS } from '../chart-core/deps/constants'
+import { type } from '@opentiny/utils'
const getWaterfallTooltip = (dataType, digit) => {
let trigger = 'axis'
@@ -49,7 +49,7 @@ const getWaterfallXAxis = (args) => {
const getWaterfallYAxis = (args) => {
const { axisVisible, dataType, digit, labelMap, yAxisName } = args
- let name = !isNull(labelMap[yAxisName]) ? labelMap[yAxisName] : yAxisName
+ let name = !type.isNull(labelMap[yAxisName]) ? labelMap[yAxisName] : yAxisName
let formatter = function (val) {
return getFormated(val, dataType, digit)
}
diff --git a/packages/renderless/src/checkbox/index.ts b/packages/renderless/src/checkbox/index.ts
index 360d63239c..5bfe12c364 100644
--- a/packages/renderless/src/checkbox/index.ts
+++ b/packages/renderless/src/checkbox/index.ts
@@ -11,7 +11,7 @@
*/
import type { ICheckboxRenderlessParams, ICheckboxState, ICheckboxChangeEvent, ICheckboxProps } from '@/types'
-import { isNull } from '../common/type'
+import { type } from '@opentiny/utils'
export const addToStore =
({ state, props }: Pick) =>
@@ -72,7 +72,7 @@ export const computedGetModelGet = ({ state, props }: Pick) =>
(): boolean =>
- !isNull(props.text) || !isNull(props.label)
+ !type.isNull(props.text) || !type.isNull(props.label)
export const computedShowText =
({ props }: Pick) =>
(): ICheckboxProps['label'] | ICheckboxProps['text'] => {
- if (props.text || !isNull(props.text)) {
+ if (props.text || !type.isNull(props.text)) {
return props.text
} else {
return props.label
diff --git a/packages/renderless/src/column-list-item/index.ts b/packages/renderless/src/column-list-item/index.ts
index a7e2db28d3..27dd5be5e6 100644
--- a/packages/renderless/src/column-list-item/index.ts
+++ b/packages/renderless/src/column-list-item/index.ts
@@ -1,4 +1,4 @@
-import { isNull } from '../common/type'
+import { type } from '@opentiny/utils'
export const handelIconClick =
({ emit }) =>
@@ -48,7 +48,7 @@ export const getModel =
const model = state.isGroup ? state.store : props.modelValue !== undefined ? props.modelValue : state.selfModel
if (state.showCheckbox) {
- return isNull(model) ? [] : model
+ return type.isNull(model) ? [] : model
} else {
return state.store
}
diff --git a/packages/renderless/src/common/array.ts b/packages/renderless/src/common/array.ts
index 8d14eed251..9b94000fef 100644
--- a/packages/renderless/src/common/array.ts
+++ b/packages/renderless/src/common/array.ts
@@ -11,8 +11,8 @@
*/
import { SORT } from './index'
-import { isSame } from './type'
import { getObj } from './object'
+import { type } from '@opentiny/utils'
/**
* 返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。 TINY_NO_NEED 现在数组有 findIndex
@@ -123,7 +123,7 @@ export const sort = (arr, field, sort = SORT.Asc) => {
* @returns {Array}
*/
export const push = (arr, data) => {
- if (Array.isArray(arr) && !arr.some((value) => isSame(value, data))) {
+ if (Array.isArray(arr) && !arr.some((value) => type.isSame(value, data))) {
arr.push(data)
}
@@ -200,10 +200,10 @@ export const transformPidToChildren = (data, pidName = 'pId', childrenName = 'ch
Array.isArray(data) &&
data.forEach((item) => {
- if (item[pidName] == '0') {
+ if (item[pidName] === '0') {
result.push(item)
} else {
- const parent = find(data, (i) => i[idName] == item[pidName])
+ const parent = find(data, (i) => i[idName] === item[pidName])
if (!parent) {
return
diff --git a/packages/renderless/src/common/dataset/index.ts b/packages/renderless/src/common/dataset/index.ts
index 921cea96df..30c06d3926 100644
--- a/packages/renderless/src/common/dataset/index.ts
+++ b/packages/renderless/src/common/dataset/index.ts
@@ -11,7 +11,7 @@
*/
import { format } from '../string'
-import { isObject } from '../type'
+import { type } from '@opentiny/utils'
import { transformTreeData } from '../array'
/**
@@ -56,7 +56,7 @@ const getNsObj = (obj, names) => {
const curkey = arr.shift()
const curObj = obj[curkey]
- if (isObject(curObj) && arr.length) {
+ if (type.isObject(curObj) && arr.length) {
return getNsObj(curObj, arr)
}
@@ -109,7 +109,7 @@ export const getDataset = ({ dataset, service, tree }, args) =>
if (!$service) {
return resolve([])
}
- if (isObject(source) && source.url) {
+ if (type.isObject(source) && source.url) {
const { type = 'GET', data, beforeRequest, afterRequest, success, hideErr, url, method, ...options } = source
options.url = url
options.method = method || type.toLocaleLowerCase()
diff --git a/packages/renderless/src/common/date.ts b/packages/renderless/src/common/date.ts
index 5c4a8657b5..3ea8e407a8 100644
--- a/packages/renderless/src/common/date.ts
+++ b/packages/renderless/src/common/date.ts
@@ -10,7 +10,7 @@
*
*/
-import { isDate, isNumber, isNumeric } from './type'
+import { type } from '@opentiny/utils'
import { fillChar } from './string'
const daysInMonths = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
@@ -360,7 +360,7 @@ const innerParse = (value, dateFormat) => {
export const toDate = (value, dateFormat, minDate) => {
let date
- if (isNumber(value)) {
+ if (type.isNumber(value)) {
date = new Date(value)
} else if (typeof value === 'string') {
date = innerParse(value, dateFormat)
@@ -404,7 +404,7 @@ export const toDate = (value, dateFormat, minDate) => {
* @returns {String}
*/
export const format = function (date, dateFormat = 'yyyy/MM/dd hh:mm:ss') {
- if (isDate(date)) {
+ if (type.isDate(date)) {
if (typeof dateFormat === 'string') {
const o = {
'y{1,4}': date.getFullYear(),
@@ -455,7 +455,7 @@ export const format = function (date, dateFormat = 'yyyy/MM/dd hh:mm:ss') {
* @returns {Date}
*/
export const getDateWithNewTimezone = (date, otz, ntz, timezoneOffset = 0) => {
- if (!isDate(date) || !isNumeric(otz) || !isNumeric(ntz) || !isNumeric(timezoneOffset)) {
+ if (!type.isDate(date) || !type.isNumeric(otz) || !type.isNumeric(ntz) || !type.isNumeric(timezoneOffset)) {
return
}
@@ -479,10 +479,10 @@ export const getDateWithNewTimezone = (date, otz, ntz, timezoneOffset = 0) => {
* @returns {String}
*/
export const toDateStr = (date, dateFormat, timezone) => {
- if (date && isNumeric(timezone)) {
+ if (date && type.isNumeric(timezone)) {
timezone = parseFloat(parseFloat(timezone).toFixed(2))
- date = getDateWithNewTimezone(isDate(date) ? date : new Date(toDate(date)), 0, timezone)
+ date = getDateWithNewTimezone(type.isDate(date) ? date : new Date(toDate(date)), 0, timezone)
}
return format(date, dateFormat)
@@ -502,7 +502,7 @@ export const toDateStr = (date, dateFormat, timezone) => {
*/
export const getWeekOfFirstDay = (date, isSunFirst) => {
typeof date === 'boolean' && (isSunFirst = date)
- isDate(date) || (date = new Date())
+ type.isDate(date) || (date = new Date())
const day = date.getDay()
let dayOfMonth = date.getDate()
@@ -529,7 +529,7 @@ export const getStrTimezone = (value) => {
value = minoffset * `${match[1]}1`
}
- if (isNumber(value) && value >= -12 && value <= 12) {
+ if (type.isNumber(value) && value >= -12 && value <= 12) {
return value
}
diff --git a/packages/renderless/src/common/deps/date-util.ts b/packages/renderless/src/common/deps/date-util.ts
index e4e92c0f81..24c4ab5107 100644
--- a/packages/renderless/src/common/deps/date-util.ts
+++ b/packages/renderless/src/common/deps/date-util.ts
@@ -11,9 +11,9 @@
*/
import fecha from './date'
-import { isNull } from '../type'
import { isLeapYear } from '../date'
import { DATEPICKER } from '../index'
+import { type } from '@opentiny/utils'
const weeks = DATEPICKER.Weeks
const months = DATEPICKER.MonhtList
@@ -39,7 +39,7 @@ export const getI18nSettings = (t) => ({
})
export const isDate = function (date) {
- if (isNull(date)) {
+ if (type.isNull(date)) {
return false
}
if (isNaN(new Date(date).getTime())) {
@@ -210,7 +210,7 @@ export const modifyTime = (date, h, m, s) => {
}
export const modifyWithTimeString = (date, time, t) => {
- if (isNull(date) || !time) {
+ if (type.isNull(date) || !time) {
return date
}
diff --git a/packages/renderless/src/common/deps/date.ts b/packages/renderless/src/common/deps/date.ts
index 93d58c5971..2ce8444b8b 100644
--- a/packages/renderless/src/common/deps/date.ts
+++ b/packages/renderless/src/common/deps/date.ts
@@ -11,7 +11,7 @@
*/
import { DATEPICKER } from '../index'
-import { isNull, isDate } from '../type'
+import { type } from '@opentiny/utils'
const fecha = {}
const digitsReg = ['\\d\\d?', '\\d{3}', '\\d{4}']
@@ -230,7 +230,7 @@ fecha.format = (dateObj, mask, i18nSettings) => {
dateObj = new Date(dateObj)
}
- if (!isDate(dateObj) || isNaN(dateObj.getTime())) {
+ if (!type.isDate(dateObj) || isNaN(dateObj.getTime())) {
throw new Error('Invalid Date in fecha.format')
}
@@ -273,7 +273,7 @@ const getDate = (dateInfo) => {
let date
const today = new Date()
- if (!isNull(dateInfo.timezoneOffset)) {
+ if (!type.isNull(dateInfo.timezoneOffset)) {
dateInfo.minute = Number(dateInfo.minute || 0) - Number(dateInfo.timezoneOffset)
const { year, month, day, hour, minute, second, millisecond } = dateInfo
@@ -330,7 +330,7 @@ fecha.parse = (dateStr, format, i18nSettings) => {
parseInfo[i - 1](dateInfo, matches[i], i18n)
}
- if (dateInfo.isPm === true && !isNull(dateInfo.hour) && Number(dateInfo.hour) !== 12) {
+ if (dateInfo.isPm === true && !type.isNull(dateInfo.hour) && Number(dateInfo.hour) !== 12) {
dateInfo.hour = Number(dateInfo.hour) + 12
} else if (dateInfo.isPm === false && Number(dateInfo.hour) === 12) {
dateInfo.hour = 0
diff --git a/packages/renderless/src/common/deps/dom.ts b/packages/renderless/src/common/deps/dom.ts
index 8473f51775..54f8fee46e 100644
--- a/packages/renderless/src/common/deps/dom.ts
+++ b/packages/renderless/src/common/deps/dom.ts
@@ -10,8 +10,8 @@
*
*/
-import { hasOwn, isNull } from '../type'
-import globalConfig from '../global'
+import { type } from '@opentiny/utils'
+import { global } from '@opentiny/utils'
export const isServer = typeof window === 'undefined'
const SPECIAL_CHARS_REGEXP = /([:\-_]+(.))/g
@@ -126,7 +126,7 @@ export const setStyle = (el: HTMLElement, name: string | object, value?: any) =>
if (typeof name === 'object') {
for (const prop in name) {
- if (hasOwn.call(name, prop)) {
+ if (type.hasOwn.call(name, prop)) {
setStyle(el, prop, name[prop])
}
}
@@ -149,7 +149,7 @@ export const isScroll = (el: HTMLElement, vertical?: boolean) => {
* 它的值为false: 当vertical = null / undefinded。
* 它的值为 true: 当vertical =true /false
*/
- const determinedDirection = !isNull(vertical)
+ const determinedDirection = !type.isNull(vertical)
let overflow
if (determinedDirection) {
@@ -195,7 +195,7 @@ export const isInContainer = (el: HTMLElement, container: HTMLElement) => {
const elRect = el.getBoundingClientRect()
let containerRect
- if (~[window, document, document.documentElement].indexOf(container) || isNull(container)) {
+ if (~[window, document, document.documentElement].indexOf(container) || type.isNull(container)) {
containerRect = {
top: 0,
right: window.innerWidth,
@@ -221,7 +221,7 @@ export const isInContainer = (el: HTMLElement, container: HTMLElement) => {
* @returns visibleWidth : 可视区宽度(不含滚动条)
*/
export const getDomNode = () => {
- const viewportWindow = globalConfig.viewportWindow || window
+ const viewportWindow = global.globalConfig.viewportWindow || window
let documentElement = viewportWindow.document.documentElement
let bodyElem = viewportWindow.document.body
diff --git a/packages/renderless/src/common/deps/popper.ts b/packages/renderless/src/common/deps/popper.ts
index b8b0504e41..fc9bb352f1 100644
--- a/packages/renderless/src/common/deps/popper.ts
+++ b/packages/renderless/src/common/deps/popper.ts
@@ -12,8 +12,7 @@
import { on, off, isDisplayNone } from './dom'
import PopupManager from './popup-manager'
-import globalConfig from '../global'
-import { typeOf } from '../type'
+import { global, type } from '@opentiny/utils'
import { isBrowser } from '../browser'
const positions = ['left', 'right', 'top', 'bottom']
@@ -452,7 +451,7 @@ class Popper {
}
modifiersToRun.forEach((modifier) => {
- if (typeOf(modifier) === 'function') {
+ if (type.typeOf(modifier) === 'function') {
data = modifier.call(this, data)
}
})
@@ -873,7 +872,7 @@ class Popper {
let scrollLeft = noScroll ? 0 : getScrollLeftValue(scrollParent)
// PopupManager.viewportWindow是为了兼容之前已经采用此方法兼容微前端的用户,后续需要采用globalConfig.viewportWindow
- const viewportWindow = globalConfig.viewportWindow || PopupManager.viewportWindow || window
+ const viewportWindow = global.globalConfig.viewportWindow || PopupManager.viewportWindow || window
boundaries = {
top: 0 - (offsetParentRect.top - scrollTop),
right: viewportWindow.document.documentElement.clientWidth - (offsetParentRect.left - scrollLeft),
diff --git a/packages/renderless/src/common/deps/tree-model/node.ts b/packages/renderless/src/common/deps/tree-model/node.ts
index 99cb28562c..6f1ad88f0f 100644
--- a/packages/renderless/src/common/deps/tree-model/node.ts
+++ b/packages/renderless/src/common/deps/tree-model/node.ts
@@ -13,7 +13,7 @@
import { merge } from '../../object'
import { markNodeData, NODE_KEY } from './util'
import { indexOf } from '../../array'
-import { hasOwn, typeOf } from '../../type'
+import { type } from '@opentiny/utils'
const defaultChildrenKey = 'children'
const defaultIsLeafKey = 'isLeaf'
@@ -23,9 +23,9 @@ const getPropertyFromData = (node, prop) => {
const dataData = node.data || {}
const config = props[prop]
- if (typeOf(config) === 'string') {
+ if (type.typeOf(config) === 'string') {
return dataData[config]
- } else if (typeOf(config) === 'function') {
+ } else if (type.typeOf(config) === 'function') {
return config(dataData, node)
} else if (typeof config === 'undefined') {
const dataProp = dataData[prop]
@@ -161,7 +161,7 @@ export default class Node {
this.updateMethod = () => {}
Object.keys(options).forEach((key) => {
- if (hasOwn.call(options, key)) {
+ if (type.hasOwn.call(options, key)) {
this[key] = options[key]
}
})
diff --git a/packages/renderless/src/common/deps/tree-model/tree-store.ts b/packages/renderless/src/common/deps/tree-model/tree-store.ts
index c29512a33c..ddbb4dffba 100644
--- a/packages/renderless/src/common/deps/tree-model/tree-store.ts
+++ b/packages/renderless/src/common/deps/tree-model/tree-store.ts
@@ -10,9 +10,9 @@
*
*/
-import { hasOwn, isNull } from '../../type'
import { getNodeKey } from './util'
import Node from './node'
+import { type } from '@opentiny/utils'
export default class TreeStore {
constructor(options) {
@@ -20,7 +20,7 @@ export default class TreeStore {
this.currentNodeKey = null
for (let option in options) {
- if (hasOwn.call(options, option)) {
+ if (type.hasOwn.call(options, option)) {
this[option] = options[option]
}
}
@@ -45,7 +45,7 @@ export default class TreeStore {
const mapping = {}
for (let key in props) {
- if (hasOwn.call(props, key)) {
+ if (type.hasOwn.call(props, key)) {
mapping[key] = data[props[key]]
}
}
@@ -248,7 +248,7 @@ export default class TreeStore {
const nodesMap = this.nodesMap
Object.keys(nodesMap).forEach((nodeKey) => {
- hasOwn.call(nodesMap, nodeKey) && allNodes.push(nodesMap[nodeKey])
+ type.hasOwn.call(nodesMap, nodeKey) && allNodes.push(nodesMap[nodeKey])
})
return allNodes
@@ -378,7 +378,7 @@ export default class TreeStore {
}
setCurrentNodeKey(key) {
- if (isNull(key)) {
+ if (type.isNull(key)) {
this.currentNode && (this.currentNode.isCurrent = false)
this.currentNode = null
diff --git a/packages/renderless/src/common/deps/upload-ajax.ts b/packages/renderless/src/common/deps/upload-ajax.ts
index be116c7287..f0cda6b02c 100644
--- a/packages/renderless/src/common/deps/upload-ajax.ts
+++ b/packages/renderless/src/common/deps/upload-ajax.ts
@@ -10,7 +10,7 @@
*
*/
-import { hasOwn } from '../type'
+import { type } from '@opentiny/utils'
import { xss } from '@opentiny/utils'
const getBody = (xhr) => {
@@ -102,7 +102,7 @@ export default (option) => {
const headers = option.headers || {}
for (let header in headers) {
- if (hasOwn.call(headers, header) && headers[header] !== null) {
+ if (type.hasOwn.call(headers, header) && headers[header] !== null) {
xhr.setRequestHeader(header, headers[header])
}
}
diff --git a/packages/renderless/src/common/function.ts b/packages/renderless/src/common/function.ts
index ba57f6a595..c093877b79 100644
--- a/packages/renderless/src/common/function.ts
+++ b/packages/renderless/src/common/function.ts
@@ -1,4 +1,4 @@
-import { isPromise } from './type'
+import { type } from '@opentiny/utils'
export const noop = () => {}
@@ -6,7 +6,7 @@ export const callInterceptor = (interceptor, { args = [], done, canceled, error
if (interceptor) {
const returnVal = interceptor(...args)
- if (isPromise(returnVal)) {
+ if (type.isPromise(returnVal)) {
returnVal
.then((value) => {
if (value) {
diff --git a/packages/renderless/src/common/object.ts b/packages/renderless/src/common/object.ts
index ee13adffb9..035b4e2669 100644
--- a/packages/renderless/src/common/object.ts
+++ b/packages/renderless/src/common/object.ts
@@ -10,7 +10,7 @@
*
*/
-import { hasOwn, typeOf, isObject, isPlainObject, isNull } from './type'
+import { type } from '@opentiny/utils'
/**
* 将对象的每个属性值进行循环处理。
@@ -30,7 +30,7 @@ export const each = (obj: object, handle: (key: string, value?: any) => boolean)
return
}
for (const name in obj) {
- if (hasOwn.call(obj, name)) {
+ if (type.hasOwn.call(obj, name)) {
if (handle(name, obj[name]) === false) {
break
}
@@ -61,7 +61,7 @@ let extend: (deep: boolean | object, ...values: object[]) => object
* @returns {Object}
*/
export const getObj = (data: object, names: string, isExceptRoot?: boolean) => {
- if (!data || !isPlainObject(data) || !names || typeof names !== 'string') {
+ if (!data || !type.isPlainObject(data) || !names || typeof names !== 'string') {
return
}
@@ -76,7 +76,7 @@ export const getObj = (data: object, names: string, isExceptRoot?: boolean) => {
for (let i = startIndex; i < len; i++) {
obj = obj[nameArr[i]]
- if (isNull(obj)) {
+ if (type.isNull(obj)) {
return obj
}
}
@@ -104,7 +104,7 @@ export const getObj = (data: object, names: string, isExceptRoot?: boolean) => {
* @returns {Object}
*/
export const setObj = (data: object, names: string, value: any, isMerge) => {
- if (!data || !isPlainObject(data) || !names || typeof names !== 'string') {
+ if (!data || !type.isPlainObject(data) || !names || typeof names !== 'string') {
return data
}
@@ -124,7 +124,7 @@ export const setObj = (data: object, names: string, value: any, isMerge) => {
name = nameArr[i]
target = tmpl[name]
- if (target === null || !isPlainObject(target)) {
+ if (target === null || !type.isPlainObject(target)) {
tmpl[name] = {}
target = tmpl[name]
}
@@ -135,13 +135,13 @@ export const setObj = (data: object, names: string, value: any, isMerge) => {
item = nameArr[len]
isMerge
- ? isPlainObject(tmpl[item])
+ ? type.isPlainObject(tmpl[item])
? extend(true, tmpl[item], value)
: (tmpl[item] = value)
: (tmpl[item] = value)
} else {
isMerge
- ? isPlainObject(obj[item])
+ ? type.isPlainObject(obj[item])
? extend(true, obj[item], value) //
: (obj[item] = value)
: (obj[item] = value)
@@ -194,7 +194,7 @@ export const copyField = (data: object, fields?: string[], isMerge?: boolean, is
return result
}
- if (isPlainObject(data)) {
+ if (type.isPlainObject(data)) {
return Array.isArray(fields)
? innerCopyFields(data, fields, isMerge, isExclude)
: extend(isMerge !== false, {}, data)
@@ -229,12 +229,12 @@ export const copyArray = (arr: any[]) => {
const deepCopy = (target, name, deep, copy, src) => {
let copyIsArray
- if (deep && copy && (isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {
+ if (deep && copy && (type.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {
if (copyIsArray) {
copyIsArray = false
target[name] = copyArray(copy)
} else {
- const clone = src && isPlainObject(src) ? src : {}
+ const clone = src && type.isPlainObject(src) ? src : {}
target[name] = extend(deep, clone, copy)
}
} else if (copy !== undefined) {
@@ -252,20 +252,20 @@ extend = function (...args) {
let i = 1
let deep = false
- if (typeOf(target) === 'boolean') {
+ if (type.typeOf(target) === 'boolean') {
deep = target as boolean
target = args[i] || {}
i++
}
- if (!isObject(target) && typeOf(target) !== 'function') {
+ if (!type.isObject(target) && type.typeOf(target) !== 'function') {
target = {}
}
for (; i < length; i++) {
const options = args[i]
- if (options !== null && isObject(options)) {
+ if (options !== null && type.isObject(options)) {
const names = Object.keys(options)
for (const name of names) {
@@ -318,7 +318,7 @@ export const isEqual: (sourceData: object, targetData: object, deep?: boolean, f
deep?: boolean,
fields?: string[]
) => {
- if (typeOf(sourceData) === typeOf(targetData)) {
+ if (type.typeOf(sourceData) === type.typeOf(targetData)) {
deep = deep !== false
if (Array.isArray(fields)) {
@@ -339,7 +339,7 @@ export const isEqual: (sourceData: object, targetData: object, deep?: boolean, f
}
isEachEqual = (data1: any, data2: any, deep?: boolean) => {
- if (!isPlainObject(data1)) {
+ if (!type.isPlainObject(data1)) {
// 当是数组的情况
if (!Array.isArray(data1)) {
return data1 === data2
@@ -363,11 +363,11 @@ isEachEqual = (data1: any, data2: any, deep?: boolean) => {
const names = Object.keys(data1)
for (const name of names) {
- if (hasOwn.call(data2, name)) {
+ if (type.hasOwn.call(data2, name)) {
const _data1 = data1[name]
const _data2 = data2[name]
- if ((deep && isObject(_data1)) || Array.isArray(_data1)) {
+ if ((deep && type.isObject(_data1)) || Array.isArray(_data1)) {
bEqual = isEachEqual(_data1, _data2, deep)
} else {
bEqual = _data1 === _data2
@@ -421,7 +421,7 @@ export const merge = function (target: object, ...rest: object[]) {
const source = rest[i] || {}
for (const prop in source) {
- if (hasOwn.call(source, prop)) {
+ if (type.hasOwn.call(source, prop)) {
const value = source[prop]
if (value !== undefined) {
diff --git a/packages/renderless/src/common/runtime.ts b/packages/renderless/src/common/runtime.ts
index 93dceeea52..32a38c9a01 100644
--- a/packages/renderless/src/common/runtime.ts
+++ b/packages/renderless/src/common/runtime.ts
@@ -21,7 +21,6 @@ import * as date from './date'
import * as decimal from './decimal'
import * as object from './object'
import * as string from './string'
-import * as type from './type'
import * as dataset from './dataset'
import afterLeave from './deps/after-leave'
import clickoutside from './deps/clickoutside'
@@ -49,7 +48,6 @@ const Renderless = {
date,
object,
decimal,
- type,
string,
afterLeave,
dataset,
@@ -79,7 +77,6 @@ export {
decimal,
object,
string,
- type,
dataset,
afterLeave,
clickoutside,
diff --git a/packages/renderless/src/common/string.ts b/packages/renderless/src/common/string.ts
index b3267bd710..d75dab3078 100644
--- a/packages/renderless/src/common/string.ts
+++ b/packages/renderless/src/common/string.ts
@@ -10,7 +10,7 @@
*
*/
-import { isPlainObject, isNumber, isNumeric, isNull } from './type'
+import { type } from '@opentiny/utils'
import { getObj, toJsonStr } from './object'
import { toFixed, Decimal } from './decimal'
import { globalEnvironment, isBrowser } from './browser'
@@ -221,7 +221,7 @@ export const getLength = (string, regular) => {
* @returns {String}
*/
export const fillChar = (string, length, append, chr = '0') => {
- if (typeof string === 'string' && typeof chr === 'string' && isNumber(length)) {
+ if (typeof string === 'string' && typeof chr === 'string' && type.isNumber(length)) {
let len = string.length - length
if (len > 0) {
@@ -366,7 +366,7 @@ export const fieldFormat = (string, data, type = 'html') => {
let value = getObj(data, offset)
- if (isNull(value)) {
+ if (type.isNull(value)) {
value = ''
}
@@ -392,7 +392,7 @@ const getFormatText = () => (str, reg, args, format) =>
}
const value = args[j]
- const string = isPlainObject(value) ? toJsonStr(value) : value
+ const string = type.isPlainObject(value) ? toJsonStr(value) : value
if (isNullOrEmpty(value)) {
return ''
@@ -463,7 +463,7 @@ export const format = function (string, data, type = 'text') {
let args, res
- if (isPlainObject(data)) {
+ if (type.isPlainObject(data)) {
return fieldFormat(string, data, type)
}
@@ -482,7 +482,7 @@ export const format = function (string, data, type = 'text') {
}
const getTruthyValue = ({ string, length, ellipsis }) => {
- const flag = typeof string === 'string' && isNumber(length) && length < string.length
+ const flag = typeof string === 'string' && type.isNumber(length) && length < string.length
const truthyValue = flag && format(ellipsis, string.substr(0, length))
return { flag, truthyValue }
@@ -531,7 +531,7 @@ export const tryToConvert = (convert, defaultValue, ...args) => {
* @returns {Number}
*/
export const toInt = (value) =>
- isNumber(value) ? Number(value.toFixed(0)) : typeof value === 'string' ? parseInt(value, 10) : NaN
+ type.isNumber(value) ? Number(value.toFixed(0)) : typeof value === 'string' ? parseInt(value, 10) : NaN
/**
* 尝试将字符串解析成十进制整数。如果 value 是个无效的整数,则返回 defaultValue。
@@ -555,7 +555,7 @@ export const tryToInt = (value, defaultValue) => tryToConvert(toInt, defaultValu
* @param {Number|String} value 要解析的字符串
* @returns {Number}
*/
-export const toNumber = (value) => (isNumber(value) ? value : typeof value === 'string' ? parseFloat(value) : NaN)
+export const toNumber = (value) => (type.isNumber(value) ? value : typeof value === 'string' ? parseFloat(value) : NaN)
/**
* 尝试将字符串解析成数值。如果 value 是个无效的数字,则返回 defaultValue。
@@ -586,7 +586,7 @@ export const tryToNumber = (value, defaultValue) => tryToConvert(toNumber, defau
export const toDecimal = (value, fraction = 2, isTruncate = false) => {
let result = NaN
- if (isNumber(value)) {
+ if (type.isNumber(value)) {
result = value
}
@@ -597,7 +597,7 @@ export const toDecimal = (value, fraction = 2, isTruncate = false) => {
}
}
- if (isNumber(result)) {
+ if (type.isNumber(result)) {
if (isTruncate) {
result = toFixed(
value
@@ -649,7 +649,7 @@ export const tryToDecimal = (value, fraction, isTruncate, defaultValue) =>
* @returns {String}
*/
export const toCurrency = (value, fraction, placeholder, isTruncate) => {
- if (isNumeric(value)) {
+ if (type.isNumeric(value)) {
let val = toDecimal(Number(value), fraction, isTruncate)
val = String(val).replace(/(^|[^\w.])(\d{4,})/g, ($0, $1, $2) => $1 + $2.replace(/\d(?=(?:\d\d\d)+(?!\d))/g, '$&,'))
return placeholder ? format(placeholder, val) : val
@@ -689,9 +689,9 @@ export const tryToCurrency = (value, fraction, placeholder, defaultValue) =>
* @returns {Boolean|number}
*/
export const toBoolValue = (value) => {
- if (isNumber(value)) {
+ if (type.isNumber(value)) {
return value ? 1 : 0
- } else if (isNull(value) || value === 'false') {
+ } else if (type.isNull(value) || value === 'false') {
return false
} else if (value === 'true') {
return true
@@ -714,7 +714,9 @@ export const toBoolValue = (value) => {
* @returns {String}
*/
export const toRate = (value, total = 1, fraction = 2) =>
- isNumber(value) && isNumber(total) ? toDecimal(Decimal(value).mul(100).div(total).toNumber(), fraction) + '%' : value
+ type.isNumber(value) && type.isNumber(total)
+ ? toDecimal(Decimal(value).mul(100).div(total).toNumber(), fraction) + '%'
+ : value
/**
* 文件大小值 单位互相转换。
@@ -730,7 +732,7 @@ export const toRate = (value, total = 1, fraction = 2) =>
* @returns {String}
*/
export const toFileSize = (value, unit, currUnit) => {
- if (isNumeric(value)) {
+ if (type.isNumeric(value)) {
value = Number(value)
if (value === 0) {
@@ -776,7 +778,7 @@ export const toFileSize = (value, unit, currUnit) => {
export const formatFileSize = (size, baseUnit = '') => {
if ([undefined, null].includes(size)) {
return ''
- } else if (!isNumber(size) || size <= 0) {
+ } else if (!type.isNumber(size) || size <= 0) {
return size + baseUnit
}
diff --git a/packages/renderless/src/common/validate/rules/range.ts b/packages/renderless/src/common/validate/rules/range.ts
index 12eafae2eb..23a5fc6fec 100644
--- a/packages/renderless/src/common/validate/rules/range.ts
+++ b/packages/renderless/src/common/validate/rules/range.ts
@@ -11,7 +11,7 @@
*/
import * as util from '../util'
-import { isNumber } from '../../type'
+import { type } from '@opentiny/utils'
import { getLength } from '../../string'
function getErro({ min, max, val, key, rule, errors, util, options }) {
@@ -25,12 +25,12 @@ function getErro({ min, max, val, key, rule, errors, util, options }) {
}
export default function (rule, checkValue, source, errors, options) {
- const len = isNumber(rule.len)
- const min = isNumber(rule.min)
- const max = isNumber(rule.max)
+ const len = type.isNumber(rule.len)
+ const min = type.isNumber(rule.min)
+ const max = type.isNumber(rule.max)
let val = checkValue
let key: string | null = null
- const num = isNumber(Number(checkValue))
+ const num = type.isNumber(Number(checkValue))
const str = typeof checkValue === 'string'
const arr = Array.isArray(checkValue)
diff --git a/packages/renderless/src/common/validate/rules/required.ts b/packages/renderless/src/common/validate/rules/required.ts
index 725888563c..4f6e73e6dd 100644
--- a/packages/renderless/src/common/validate/rules/required.ts
+++ b/packages/renderless/src/common/validate/rules/required.ts
@@ -11,10 +11,10 @@
*/
import * as util from '../util'
-import { hasOwn } from '../../type'
+import { type } from '@opentiny/utils'
-export default function ({ rule, checkValue, source, errors, options, type }) {
- if (rule.required && (!hasOwn.call(source, rule.field) || util.isEmptyValue(checkValue, type || rule.type))) {
+export default function ({ rule, checkValue, source, errors, options, _type }) {
+ if (rule.required && (!type.hasOwn.call(source, rule.field) || util.isEmptyValue(checkValue, type || rule._type))) {
errors.push(util.format(options.messages.required, ''))
}
}
diff --git a/packages/renderless/src/common/validate/rules/type.ts b/packages/renderless/src/common/validate/rules/type.ts
index b6942bedcb..284862908a 100644
--- a/packages/renderless/src/common/validate/rules/type.ts
+++ b/packages/renderless/src/common/validate/rules/type.ts
@@ -14,7 +14,7 @@ import * as util from '../util'
import required from './required'
import { format } from '../../date'
import { isNullOrEmpty } from '../../string'
-import { isNumber, isObject, isDate, typeOf } from '../../type'
+import { type } from '@opentiny/utils'
const emailReg1 = '^(([^<>()\\[\\]\\\\.,;:\\s@"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@"]+)*)|(".+"))'
const emailReg = new RegExp(
@@ -48,10 +48,10 @@ const types = {
return false
}
},
- date: isDate,
- number: (value) => isNumber(Number(value)),
- object: (value) => isObject(value) && !types.array(value),
- method: (value) => typeOf(value) === 'function',
+ date: type.isDate,
+ number: (value) => type.isNumber(Number(value)),
+ object: (value) => type.isObject(value) && !types.array(value),
+ method: (value) => type.typeOf(value) === 'function',
email: (value) => isNullOrEmpty(value) || (!!value.match(pattern.email) && value.length < 255),
diff --git a/packages/renderless/src/common/validate/schema.ts b/packages/renderless/src/common/validate/schema.ts
index cc4fd371a7..cbe538efd2 100644
--- a/packages/renderless/src/common/validate/schema.ts
+++ b/packages/renderless/src/common/validate/schema.ts
@@ -11,7 +11,7 @@
*/
import { format, complementError, asyncMap, warning, deepMerge, convertFieldsError } from './util'
-import { hasOwn, isFunction } from '../type'
+import { type } from '@opentiny/utils'
function Schema(descriptor, translate) {
Schema.getSystemMessage = () => Schema.getDefaultMessage(translate)
@@ -82,7 +82,7 @@ const getFieldsSchema = (rule, data) => {
if (rule.defaultField) {
for (const k in data.value) {
- if (hasOwn.call(data.value, k)) {
+ if (type.hasOwn.call(data.value, k)) {
schema[k] = rule.defaultField
}
}
@@ -94,7 +94,7 @@ const getFieldsSchema = (rule, data) => {
}
for (const f in schema) {
- if (hasOwn.call(schema, f)) {
+ if (type.hasOwn.call(schema, f)) {
const fieldSchema = Array.isArray(schema[f]) ? schema[f] : [schema[f]]
schema[f] = fieldSchema.map(addFullfield.bind(null, f))
@@ -225,7 +225,7 @@ Schema.prototype = {
let rule
Object.keys(rules).forEach((key) => {
- if (hasOwn.call(rules, key)) {
+ if (type.hasOwn.call(rules, key)) {
rule = rules[key]
this.rules[key] = Array.isArray(rule) ? rule : [rule]
}
@@ -346,7 +346,7 @@ Schema.prototype = {
)
},
getValidationMethod(rule) {
- if (isFunction(rule.validator)) {
+ if (type.isFunction(rule.validator)) {
return rule.validator
}
@@ -368,7 +368,7 @@ Schema.prototype = {
rule.type = 'pattern'
}
- if (typeof rule.validator !== 'function' && rule.type && !hasOwn.call(Schema.validators, rule.type)) {
+ if (typeof rule.validator !== 'function' && rule.type && !type.hasOwn.call(Schema.validators, rule.type)) {
throw new Error(format('Unknown rule type %s', rule.type))
}
diff --git a/packages/renderless/src/common/validate/util.ts b/packages/renderless/src/common/validate/util.ts
index aca32e5527..4644cc1f46 100644
--- a/packages/renderless/src/common/validate/util.ts
+++ b/packages/renderless/src/common/validate/util.ts
@@ -10,8 +10,7 @@
*
*/
-import { hasOwn, isNull } from '../type'
-import { log } from '@opentiny/utils'
+import { log, type } from '@opentiny/utils'
const formatRegExp = /%[sdj%]/g
@@ -110,7 +109,7 @@ function isNativeStringType(type) {
* @description 判断对应的类型是否是空值
*/
export function isEmptyValue(data, dataType) {
- if (isNull(data)) {
+ if (type.isNull(data)) {
return true
}
@@ -274,7 +273,7 @@ export function deepMerge(target, sources) {
return target
}
for (const source in sources) {
- if (hasOwn.call(sources, source)) {
+ if (type.hasOwn.call(sources, source)) {
const value = sources[source]
if (typeof value === 'object' && typeof target[source] === 'object') {
diff --git a/packages/renderless/src/common/validate/validations/array.ts b/packages/renderless/src/common/validate/validations/array.ts
index 6f470b8a40..bf0285dbe4 100644
--- a/packages/renderless/src/common/validate/validations/array.ts
+++ b/packages/renderless/src/common/validate/validations/array.ts
@@ -12,11 +12,11 @@
import rules from '../rules/index'
import { isEmptyValue } from '../util'
-import { hasOwn } from '../../type'
+import { type } from '@opentiny/utils'
export default function (rule, checkValue, callback, source, options) {
const errors = []
- const validate = rule.required || (!rule.required && hasOwn.call(source, rule.field))
+ const validate = rule.required || (!rule.required && type.hasOwn.call(source, rule.field))
if (validate) {
if (isEmptyValue(checkValue, 'array') && !rule.required) {
diff --git a/packages/renderless/src/common/validate/validations/date.ts b/packages/renderless/src/common/validate/validations/date.ts
index a73661409f..f4336aed21 100644
--- a/packages/renderless/src/common/validate/validations/date.ts
+++ b/packages/renderless/src/common/validate/validations/date.ts
@@ -12,11 +12,11 @@
import rules from '../rules/index'
import { isEmptyValue } from '../util'
-import { hasOwn } from '../../type'
+import { type } from '@opentiny/utils'
export default function (rule, checkValue, callback, source, options) {
const errors = []
- const validate = rule.required || (!rule.required && hasOwn.call(source, rule.field))
+ const validate = rule.required || (!rule.required && type.hasOwn.call(source, rule.field))
const isValidDateStr = (value) => value && typeof value === 'string' && new Date(value).toString() !== 'Invalid Date'
if (validate) {
diff --git a/packages/renderless/src/common/validate/validations/enum.ts b/packages/renderless/src/common/validate/validations/enum.ts
index 155c023f11..1da6da76cd 100644
--- a/packages/renderless/src/common/validate/validations/enum.ts
+++ b/packages/renderless/src/common/validate/validations/enum.ts
@@ -12,13 +12,13 @@
import rules from '../rules/index'
import { isEmptyValue } from '../util'
-import { hasOwn } from '../../type'
+import { type } from '@opentiny/utils'
const ENUM = 'enum'
export default function (rule, checkValue, callback, source, options) {
const errors = []
- const validate = rule.required || (!rule.required && hasOwn.call(source, rule.field))
+ const validate = rule.required || (!rule.required && type.hasOwn.call(source, rule.field))
if (validate) {
if (isEmptyValue(checkValue) && !rule.required) {
diff --git a/packages/renderless/src/common/validate/validations/float.ts b/packages/renderless/src/common/validate/validations/float.ts
index db58179a87..c603fd7748 100644
--- a/packages/renderless/src/common/validate/validations/float.ts
+++ b/packages/renderless/src/common/validate/validations/float.ts
@@ -12,11 +12,11 @@
import rules from '../rules/index'
import { isEmptyValue } from '../util'
-import { hasOwn } from '../../type'
+import { type } from '@opentiny/utils'
export default function (rule, checkValue, cb, source, options) {
const errors = []
- const validate = rule.required || (!rule.required && hasOwn.call(source, rule.field))
+ const validate = rule.required || (!rule.required && type.hasOwn.call(source, rule.field))
if (validate) {
if (isEmptyValue(checkValue) && !rule.required) {
diff --git a/packages/renderless/src/common/validate/validations/integer.ts b/packages/renderless/src/common/validate/validations/integer.ts
index d890b4a7bc..5d1f503789 100644
--- a/packages/renderless/src/common/validate/validations/integer.ts
+++ b/packages/renderless/src/common/validate/validations/integer.ts
@@ -12,11 +12,11 @@
import rules from '../rules/index'
import { isEmptyValue } from '../util'
-import { hasOwn } from '../../type'
+import { type } from '@opentiny/utils'
export default function (rule, checkValue, callback, source, options) {
const errors = []
- const validate = rule.required || (!rule.required && hasOwn.call(source, rule.field))
+ const validate = rule.required || (!rule.required && type.hasOwn.call(source, rule.field))
if (validate) {
if (isEmptyValue(checkValue) && !rule.required) {
diff --git a/packages/renderless/src/common/validate/validations/method.ts b/packages/renderless/src/common/validate/validations/method.ts
index 6ccfbc0c78..b5f0142aca 100644
--- a/packages/renderless/src/common/validate/validations/method.ts
+++ b/packages/renderless/src/common/validate/validations/method.ts
@@ -12,10 +12,10 @@
import rules from '../rules/index'
import { isEmptyValue } from '../util'
-import { hasOwn } from '../../type'
+import { type } from '@opentiny/utils'
export default function (rule, checkValue, callback, source, options) {
- const validate = rule.required || (!rule.required && hasOwn.call(source, rule.field))
+ const validate = rule.required || (!rule.required && type.hasOwn.call(source, rule.field))
const errors = []
if (validate) {
diff --git a/packages/renderless/src/common/validate/validations/number.ts b/packages/renderless/src/common/validate/validations/number.ts
index 8e457cfced..3fd651b586 100644
--- a/packages/renderless/src/common/validate/validations/number.ts
+++ b/packages/renderless/src/common/validate/validations/number.ts
@@ -12,11 +12,11 @@
import rules from '../rules/index'
import { isEmptyValue } from '../util'
-import { hasOwn } from '../../type'
+import { type } from '@opentiny/utils'
export default function (rule, checkValue, callback, source, options) {
const errors = []
- const validate = rule.required || (!rule.required && hasOwn.call(source, rule.field))
+ const validate = rule.required || (!rule.required && type.hasOwn.call(source, rule.field))
if (validate) {
if (checkValue === '') {
diff --git a/packages/renderless/src/common/validate/validations/pattern.ts b/packages/renderless/src/common/validate/validations/pattern.ts
index 1f914f458c..bbf8ffa8b9 100644
--- a/packages/renderless/src/common/validate/validations/pattern.ts
+++ b/packages/renderless/src/common/validate/validations/pattern.ts
@@ -12,11 +12,11 @@
import rules from '../rules/index'
import { isEmptyValue } from '../util'
-import { hasOwn } from '../../type'
+import { type } from '@opentiny/utils'
export default function (rule, checkValue, callback, source, options) {
const errors = []
- const validate = rule.required || (!rule.required && hasOwn.call(source, rule.field))
+ const validate = rule.required || (!rule.required && type.hasOwn.call(source, rule.field))
if (validate) {
if (isEmptyValue(checkValue, 'string') && !rule.required) {
diff --git a/packages/renderless/src/common/validate/validations/string.ts b/packages/renderless/src/common/validate/validations/string.ts
index 23b73f39a1..61e89bb4d2 100644
--- a/packages/renderless/src/common/validate/validations/string.ts
+++ b/packages/renderless/src/common/validate/validations/string.ts
@@ -12,11 +12,11 @@
import rules from '../rules/index'
import { isEmptyValue } from '../util'
-import { hasOwn } from '../../type'
+import { type } from '@opentiny/utils'
export default function (rule, checkValue, callback, source, options) {
const errors = []
- const validate = rule.required || (!rule.required && hasOwn.call(source, rule.field))
+ const validate = rule.required || (!rule.required && type.hasOwn.call(source, rule.field))
if (validate) {
if (isEmptyValue(checkValue, 'string') && !rule.required) {
diff --git a/packages/renderless/src/common/validate/validations/type.ts b/packages/renderless/src/common/validate/validations/type.ts
index ef5d3111de..85005f9602 100644
--- a/packages/renderless/src/common/validate/validations/type.ts
+++ b/packages/renderless/src/common/validate/validations/type.ts
@@ -12,12 +12,12 @@
import rules from '../rules/index'
import { isEmptyValue } from '../util'
-import { hasOwn } from '../../type'
+import { type } from '@opentiny/utils'
export default function (rule, checkValue, callback, source, options) {
const ruleType = rule.type
const errors = []
- const validate = rule.required || (!rule.required && hasOwn.call(source, rule.field))
+ const validate = rule.required || (!rule.required && type.hasOwn.call(source, rule.field))
if (validate) {
if (isEmptyValue(checkValue, ruleType) && !rule.required) {
diff --git a/packages/renderless/src/container/index.ts b/packages/renderless/src/container/index.ts
index 19ab6136b0..bf2c2aa858 100644
--- a/packages/renderless/src/container/index.ts
+++ b/packages/renderless/src/container/index.ts
@@ -10,7 +10,7 @@
*
*/
-import { isNumber } from '../common/type'
+import { type } from '@opentiny/utils'
export const computedShowHeader =
({ constants, props }) =>
@@ -27,7 +27,7 @@ export const computedShowAside =
() =>
props.pattern !== constants.CLASSIC
-const transferWidthOrHeight = (value) => (isNumber(value) ? value + 'px' : value)
+const transferWidthOrHeight = (value) => (type.isNumber(value) ? value + 'px' : value)
export const computedHeaderStyle =
({ constants, props }) =>
diff --git a/packages/renderless/src/file-upload/index.ts b/packages/renderless/src/file-upload/index.ts
index 611c434224..c1919cd34c 100644
--- a/packages/renderless/src/file-upload/index.ts
+++ b/packages/renderless/src/file-upload/index.ts
@@ -32,8 +32,7 @@ import type {
import { extend } from '../common/object'
import { xss, log, crypt } from '@opentiny/utils'
import uploadAjax from '../common/deps/upload-ajax'
-import { isObject } from '../common/type'
-import { isEmptyObject } from '../common/type'
+import { type } from '@opentiny/utils'
let initTokenPromise = null
@@ -60,7 +59,7 @@ export const initService = ({
const { network = {}, common = {} } = service || {}
const { request, get, post, all, spread, CancelToken = {} } = network
let requestFn
- if (!isEmptyObject(props.hwh5)) {
+ if (!type.isEmptyObject(props.hwh5)) {
const { HWH5 } = props.hwh5
const { uploadToEDM } = HWH5()
requestFn = props.httpRequest || uploadToEDM
@@ -532,7 +531,7 @@ const handleHwh5Files = (files: IFileUploadFile[], hwh5: object): IFileUploadFil
if (file instanceof File) return file
let url
let f = {}
- if (isObject(file)) {
+ if (type.isObject(file)) {
url = file.url
f = file
} else {
@@ -2277,7 +2276,7 @@ export const previewFile =
return
}
- if (isObject(file) || (Array.isArray(file) && file.length === 1)) {
+ if (type.isObject(file) || (Array.isArray(file) && file.length === 1)) {
api.previewFileSingle({ file: Array.isArray(file) ? { ...file[0] } : file, resolve, open })
} else if (Array.isArray(file) && file.length > 1) {
api.previewFileBatch({ file, resolve, open })
@@ -2451,7 +2450,7 @@ export const getPreviewUrlSync =
for (let key in paramsData) {
const val = paramsData[key]
- if (!isObject(val)) {
+ if (!type.isObject(val)) {
if (key === 'text') {
params.push(`watermark=${encodeURIComponent(val)}`)
}
@@ -2480,7 +2479,7 @@ export const previewImage =
}
service.getPreviewUrl().then((url) => {
- if (isObject(file) || (Array.isArray(file) && file.length === 1)) {
+ if (type.isObject(file) || (Array.isArray(file) && file.length === 1)) {
api
.previewImageSingle({ url, file: Array.isArray(file) ? { ...file[0] } : file })
.then((link) => resolve(link))
diff --git a/packages/renderless/src/file-upload/vue.ts b/packages/renderless/src/file-upload/vue.ts
index 0b8a033dea..2f3f76a563 100644
--- a/packages/renderless/src/file-upload/vue.ts
+++ b/packages/renderless/src/file-upload/vue.ts
@@ -98,7 +98,7 @@ import {
closeRecordPanel,
getTipMessage
} from './index'
-import { isEmptyObject } from '../common/type'
+import { type } from '@opentiny/utils'
export const api = [
'state',
@@ -177,7 +177,7 @@ const initState = ({
fileWater: false,
tabUrl: '',
cacheDocuments: {},
- isEdm: computed(() => !isEmptyObject(props.edm)),
+ isEdm: computed(() => !type.isEmptyObject(props.edm)),
uploadDisabled: computed(() => api.computedUploadDisabled()),
dialogConfigObj: computed(() => api.getDialogConfigObj()),
uploadingFiles: [],
@@ -194,7 +194,7 @@ const initState = ({
isDragover: false,
downloadCancelToken: {}, // 取消下载token
downloadCancelData: {}, // 取消下载时需要清空的缓存数据
- isHwh5: computed(() => !isEmptyObject(props.hwh5)),
+ isHwh5: computed(() => !type.isEmptyObject(props.hwh5)),
selected: null,
types: computed(() => api.computedSourcetype()),
triggerClickType: '',
diff --git a/packages/renderless/src/fluent-editor/index.ts b/packages/renderless/src/fluent-editor/index.ts
index acaebbec5b..e562e62d83 100644
--- a/packages/renderless/src/fluent-editor/index.ts
+++ b/packages/renderless/src/fluent-editor/index.ts
@@ -1,5 +1,5 @@
import { extend } from '../common/object'
-import { isNull } from '../common/type'
+import { type as _type } from '@opentiny/utils'
import { xss } from '@opentiny/utils'
import { set } from '../chart-core/deps/utils'
import { on, off } from '../common/deps/dom'
@@ -293,7 +293,7 @@ export const inputFileHandler =
const betterToolbar = state.quill.getModule('toolbar')
let fileInput = betterToolbar.container.querySelector(`input.ql-${type}[type=file]`)
- if (isNull(fileInput)) {
+ if (_type.isNull(fileInput)) {
fileInput = document.createElement('input')
fileInput.classList.add(`ql-${type}`)
fileInput.setAttribute('type', 'file')
diff --git a/packages/renderless/src/fluent-editor/options.ts b/packages/renderless/src/fluent-editor/options.ts
index e58e3f35ee..71459c0714 100644
--- a/packages/renderless/src/fluent-editor/options.ts
+++ b/packages/renderless/src/fluent-editor/options.ts
@@ -1,4 +1,4 @@
-import { isNull } from '../common/type'
+import { type } from '@opentiny/utils'
const fontFamilyConfig = [
'songti',
@@ -102,44 +102,46 @@ export const mention = (mentionObj) => ({
}
})
-const listAutofillHandler = ({ FluentEditor, state }) => (range, context) => {
- const formats = state.quill.getFormat(range)
- if (formats['table-cell-line']) {
- return true
- }
- if (isNull(state.quill.scroll.query('list'))) {
- return true
- }
- const { length } = context.prefix
- const [line, offset] = state.quill.getLine(range.index)
- if (offset > length) {
- return true
- }
- let value
- let prefix = context.prefix.trim()
+const listAutofillHandler =
+ ({ FluentEditor, state }) =>
+ (range, context) => {
+ const formats = state.quill.getFormat(range)
+ if (formats['table-cell-line']) {
+ return true
+ }
+ if (type.isNull(state.quill.scroll.query('list'))) {
+ return true
+ }
+ const { length } = context.prefix
+ const [line, offset] = state.quill.getLine(range.index)
+ if (offset > length) {
+ return true
+ }
+ let value
+ let prefix = context.prefix.trim()
- if (~['[]', '[ ]'].indexOf(prefix)) {
- value = 'unchecked'
- } else if (prefix === '[x]') {
- value = 'checked'
- } else if (~['-', '*'].indexOf(prefix)) {
- value = 'bullet'
- } else {
- value = 'ordered'
- }
+ if (~['[]', '[ ]'].indexOf(prefix)) {
+ value = 'unchecked'
+ } else if (prefix === '[x]') {
+ value = 'checked'
+ } else if (~['-', '*'].indexOf(prefix)) {
+ value = 'bullet'
+ } else {
+ value = 'ordered'
+ }
- state.quill.insertText(range.index, ' ', FluentEditor.sources.USER)
- state.quill.history.cutoff()
- const delta = new FluentEditor.imports['delta']()
- .retain(range.index - offset)
- .delete(length + 1)
- .retain(line.length() - 2 - offset)
- .retain(1, { list: { value: value } })
- state.quill.updateContents(delta, FluentEditor.sources.USER)
- state.quill.history.cutoff()
- state.quill.setSelection(range.index - length, FluentEditor.sources.SILENT)
- return false
-}
+ state.quill.insertText(range.index, ' ', FluentEditor.sources.USER)
+ state.quill.history.cutoff()
+ const delta = new FluentEditor.imports.delta()
+ .retain(range.index - offset)
+ .delete(length + 1)
+ .retain(line.length() - 2 - offset)
+ .retain(1, { list: { value } })
+ state.quill.updateContents(delta, FluentEditor.sources.USER)
+ state.quill.history.cutoff()
+ state.quill.setSelection(range.index - length, FluentEditor.sources.SILENT)
+ return false
+ }
const listAutofill = ({ FluentEditor, state }) => ({
key: ' ',
@@ -299,7 +301,7 @@ export const iconOptionMobileFirst = {
},
redo: ``,
size: ``,
- undo: ``,
+ undo: ``
}
export const simpleToolbar = [
diff --git a/packages/renderless/src/form-item/index.ts b/packages/renderless/src/form-item/index.ts
index 6744731d0e..2673d3b58c 100644
--- a/packages/renderless/src/form-item/index.ts
+++ b/packages/renderless/src/form-item/index.ts
@@ -14,7 +14,7 @@ import { POSITION, VALIDATE_STATE } from '../common'
import { omitText } from '../common/string'
import { merge } from '../common/object'
import Validator from '../common/validate'
-import { isNull } from '../common/type'
+import { type } from '@opentiny/utils'
import debounce from '../common/deps/debounce'
import type {
IFormItemRenderlessParams,
@@ -30,7 +30,7 @@ import type { StyleValue } from 'vue'
export const watchError =
(state: IFormItemRenderlessParams['state']) =>
(value: string): void => {
- if (!isNull(value) && state.getValidateType === 'tip') {
+ if (!type.isNull(value) && state.getValidateType === 'tip') {
state.canShowTip = true
}
diff --git a/packages/renderless/src/grid/static/base/helperEqualCompare.ts b/packages/renderless/src/grid/static/base/helperEqualCompare.ts
index f14d842772..c8bbaba6af 100644
--- a/packages/renderless/src/grid/static/base/helperEqualCompare.ts
+++ b/packages/renderless/src/grid/static/base/helperEqualCompare.ts
@@ -23,7 +23,7 @@
*
*/
-import { isDate, isRegExp } from '../../../common/type'
+import { type } from '@opentiny/utils'
import isNumber from './isNumber'
import isString from './isString'
import isBoolean from './isBoolean'
@@ -39,11 +39,11 @@ const helperEqualCompare = ({ val1, val2, compare, func, key, obj1, obj2 }) => {
}
if (val1 && val2 && !isNumber(val1) && !isNumber(val2) && !isString(val1) && !isString(val2)) {
- if (isRegExp(val1)) {
+ if (type.isRegExp(val1)) {
return compare(String(val1), String(val2), key, obj1, obj2)
}
- if (isDate(val1) || isBoolean(val1)) {
+ if (type.isDate(val1) || isBoolean(val1)) {
return compare(Number(val1), Number(val2), key, obj1, obj2)
}
diff --git a/packages/renderless/src/grid/static/base/isPlainObject.ts b/packages/renderless/src/grid/static/base/isPlainObject.ts
index bb94d01564..8f1a35e141 100644
--- a/packages/renderless/src/grid/static/base/isPlainObject.ts
+++ b/packages/renderless/src/grid/static/base/isPlainObject.ts
@@ -10,6 +10,6 @@
*
*/
-import { isPlainObject } from '../../../common/type'
+import { type } from '@opentiny/utils'
-export default isPlainObject
+export default type.isPlainObject
diff --git a/packages/renderless/src/grid/utils/common.ts b/packages/renderless/src/grid/utils/common.ts
index 44150d46f2..d27cb25e2e 100644
--- a/packages/renderless/src/grid/utils/common.ts
+++ b/packages/renderless/src/grid/utils/common.ts
@@ -23,7 +23,7 @@
*
*/
-import { isNull } from '../../common/type'
+import { type } from '@opentiny/utils'
import { find } from '../../common/array'
import { get, isFunction, set } from '../static'
@@ -84,7 +84,7 @@ export const initFilter = (filter) => {
}
}
-export const formatText = (value) => `${isNull(value) ? '' : value}`
+export const formatText = (value) => `${type.isNull(value) ? '' : value}`
export const setCellValue = (row, column, value) => {
const { format, property } = column
diff --git a/packages/renderless/src/image/index.ts b/packages/renderless/src/image/index.ts
index dc9ab6721f..18ea2b5181 100644
--- a/packages/renderless/src/image/index.ts
+++ b/packages/renderless/src/image/index.ts
@@ -12,7 +12,7 @@
import type { IImageProps, IImageRenderlessParams, IImageState } from '@/types'
import { on, off, getScrollContainer, isInContainer } from '../common/deps/dom'
-import { typeOf } from '../common/type'
+import { type } from '@opentiny/utils'
import { rafThrottle } from '../image-viewer'
import { xss } from '@opentiny/utils'
@@ -106,7 +106,7 @@ export const addLazyLoadListener =
if (isHtmlElement(scrollContainer)) {
_scrollContainer = scrollContainer as HTMLElement
- } else if (typeOf(scrollContainer) === 'string') {
+ } else if (type.typeOf(scrollContainer) === 'string') {
_scrollContainer = document.querySelector(scrollContainer as string)!
} else {
_scrollContainer = getScrollContainer(vm.$el) as HTMLElement
diff --git a/packages/renderless/src/modal/index.ts b/packages/renderless/src/modal/index.ts
index 150a3750be..93eafc826e 100644
--- a/packages/renderless/src/modal/index.ts
+++ b/packages/renderless/src/modal/index.ts
@@ -14,7 +14,7 @@ import { KEY_CODE } from '../common'
import { on, off, addClass, hasClass, removeClass } from '../common/deps/dom'
import PopupManager from '../common/deps/popup-manager'
import { getDomNode } from '../common/deps/dom'
-import { getViewportWindow } from '../common/global'
+import { global } from '@opentiny/utils'
import type {
IModalProps,
@@ -279,7 +279,7 @@ export const open =
if (!isMobileFirstMode) {
let modalBoxElem = api.getBox()
- const viewportWindow = getViewportWindow()
+ const viewportWindow = global.getViewportWindow()
let clientVisibleWidth =
viewportWindow.document.documentElement.clientWidth || viewportWindow.document.body.clientWidth
diff --git a/packages/renderless/src/nav-menu/index.ts b/packages/renderless/src/nav-menu/index.ts
index 962e01ffed..b5cdc128d1 100644
--- a/packages/renderless/src/nav-menu/index.ts
+++ b/packages/renderless/src/nav-menu/index.ts
@@ -18,7 +18,7 @@ import type {
whitchSubMenuType
} from '@/types'
import { omitText } from '../common/string'
-import { isEmptyObject, isObject } from '../common/type'
+import { type } from '@opentiny/utils'
import PopupManager from '../common/deps/popup-manager'
import { mapTree } from '../grid/static'
import { transformTreeData } from '../common/array'
@@ -41,8 +41,10 @@ export const computedPopClass = (state: INavMenuState) => (): string => {
export const computedSubMenus = (state: INavMenuState) => (): menuItemType[] => {
let arr: menuItemType[] = state.subMenu
- if (state.subMenu && !isEmptyObject(state.subMenu)) {
- if (!state.subMenu.map((item) => item.children && !isEmptyObject(item.children)).reduce((pre, cur) => pre || cur)) {
+ if (state.subMenu && !type.isEmptyObject(state.subMenu)) {
+ if (
+ !state.subMenu.map((item) => item.children && !type.isEmptyObject(item.children)).reduce((pre, cur) => pre || cur)
+ ) {
arr = [{ children: state.subMenu }]
}
}
@@ -180,7 +182,7 @@ export const initData =
const menuData = props.fetchMenuData && fetchMenuData()
- if (isObject(menuData) && menuData?.then) {
+ if (type.isObject(menuData) && menuData?.then) {
menuData.then((data) => {
state.data = mapTree(props.parentKey ? transformTreeData(data, key, props.parentKey) : data, buildData)
})
diff --git a/packages/renderless/src/numeric/index.ts b/packages/renderless/src/numeric/index.ts
index f8ca67147e..ef5345808d 100644
--- a/packages/renderless/src/numeric/index.ts
+++ b/packages/renderless/src/numeric/index.ts
@@ -21,7 +21,8 @@ import type {
import type { BigIntDecimal } from '../common/bigInt'
import { formatNumber, roundFixed } from '../common/decimal'
import { getMiniDecimal, lessEquals, equalsDecimal } from '../common/bigInt'
-import { isNumber, isNull } from '../common/type'
+import { type } from '@opentiny/utils'
+
import { MOUSEDELTA } from '../common'
import { on, off } from '../common/deps/dom'
@@ -200,7 +201,7 @@ export const handleFocus =
const currentValue = api.getDecimal(state.currentValue)
- if (!currentValue.isNaN() && !isNull(state.currentValue)) {
+ if (!currentValue.isNaN() && !type.isNull(state.currentValue)) {
const fractionLen = (currentValue.toString().split('.')[1] || '').length
if (fractionLen < state.format.fraction && props.holdZero) {
@@ -354,7 +355,7 @@ export const handleInput =
.join('.')
}
- event.target.value = isNull(value) ? '' : value
+ event.target.value = type.isNull(value) ? '' : value
state.lastInput = value
state.userInput = value
}
@@ -387,12 +388,12 @@ export const mounted =
state.controls = false
}
- if (isNumber(state.currentValue) && state.currentValue < (props.min as number)) {
+ if (type.isNumber(state.currentValue) && state.currentValue < (props.min as number)) {
state.currentValue = props.min as number
state.lastInput = props.min as number
state.userInput = props.min as number
}
- if (isNumber(state.currentValue) && state.currentValue > (props.max as number)) {
+ if (type.isNumber(state.currentValue) && state.currentValue > (props.max as number)) {
state.currentValue = props.max as number
state.lastInput = props.max as number
state.userInput = props.max as number
@@ -495,8 +496,8 @@ export const getUnitPrecision = ({
const serFra = getUnitPrecision(unit) || {}
const serFmt = getNumberFormat() || {}
- fraction = isNumber(precision) ? precision : isNumber(format.fraction) ? format.fraction : serFra.fraction
- rounding = isNumber(format.rounding) ? format.rounding : serFra.rounding
+ fraction = type.isNumber(precision) ? precision : type.isNumber(format.fraction) ? format.fraction : serFra.fraction
+ rounding = type.isNumber(format.rounding) ? format.rounding : serFra.rounding
return { ...defaultFmt, fraction, rounding, ...serFmt, ...format }
}
diff --git a/packages/renderless/src/picker/index.ts b/packages/renderless/src/picker/index.ts
index b30e676704..7477e66b2a 100644
--- a/packages/renderless/src/picker/index.ts
+++ b/packages/renderless/src/picker/index.ts
@@ -11,7 +11,7 @@
*/
import { toDate, getDateWithNewTimezone, getStrTimezone, getLocalTimezone } from '../common/date'
-import { isNumber, isDate } from '../common/type'
+import { type } from '@opentiny/utils'
import userPopper from '../common/deps/vue-popper'
import { DATEPICKER } from '../common'
import { formatDate, parseDate, isDateObject, getWeekNumber, prevDate, nextDate } from '../common/deps/date-util'
@@ -197,7 +197,7 @@ export const parsedValue =
if (isServiceTimezone) {
if (Array.isArray(date)) {
date = [].concat(date).map((item) => {
- return isDate(item) ? formatDate(item, state.valueFormat, t) : item
+ return type.isDate(item) ? formatDate(item, state.valueFormat, t) : item
})
} else {
if (state.valueFormat !== DATEPICKER.TimesTamp) {
@@ -213,7 +213,7 @@ export const parsedValue =
return getDateWithNewTimezone(result || props.modelValue, from, to, timezoneOffset)
}
- const trans = (value) => (typeof value === 'string' || isNumber(value) ? toDate(value) : value)
+ const trans = (value) => (typeof value === 'string' || type.isNumber(value) ? toDate(value) : value)
const values = []
.concat(props.modelValue)
.map((val) => getDateWithNewTimezone(trans(val), from, to, timezoneOffset))
@@ -235,7 +235,7 @@ export const getTimezone =
let serveTimezone = isTzNumber(dbTimezone) ? dbTimezone : isTzNumber(DbTimezone) ? DbTimezone : cur
let clientTimezone = isTzNumber(timezone) ? timezone : isTzNumber(Timezone) ? Timezone : cur
- let clientTimezoneOffset = isNumber(timezoneOffset) ? timezoneOffset : isNumber(TimezoneOffset) ? TimezoneOffset : 0
+ let clientTimezoneOffset = type.isNumber(timezoneOffset) ? timezoneOffset : type.isNumber(TimezoneOffset) ? TimezoneOffset : 0
const value = props.modelValue
const str = (Array.isArray(value) ? value[0] : value) || ''
const match = typeof str === 'string' && str.match(/(-|\+)(\d{2}):?(\d{2})$/)
@@ -254,7 +254,7 @@ export const getTimezone =
const nullOrString = (value) => {
const arr = Array.isArray(value) ? value : [value]
- return arr.every((val) => (!val && !isNumber(val)) || typeof val === 'string')
+ return arr.every((val) => (!val && !type.isNumber(val)) || typeof val === 'string')
}
export const getValueFormat = ({ props, utils }) => {
@@ -1367,7 +1367,7 @@ export const emitDbTime =
if (isServiceTimezone && !valueEquals(date, state.dbTime)) {
let hasDate = false
const dbTime = [].concat(date).map((item) => {
- if (isDate(item)) {
+ if (type.isDate(item)) {
hasDate = true
let currentDate = getDateWithNewTimezone(item, getLocalTimezone(), from)
diff --git a/packages/renderless/src/popeditor/index.ts b/packages/renderless/src/popeditor/index.ts
index 3e5001a6bb..7877cbdd55 100644
--- a/packages/renderless/src/popeditor/index.ts
+++ b/packages/renderless/src/popeditor/index.ts
@@ -11,7 +11,7 @@
*/
import { find } from '../common/array'
-import { typeOf, isNull } from '../common/type'
+import { type } from '@opentiny/utils'
import { getDataset } from '../common/dataset'
import { isNullOrEmpty } from '../common/string'
import { isEqual } from '../common/object'
@@ -95,10 +95,10 @@ export const getDisplay =
return displayTxt.join(props.textSplit)
} else {
- if (isNull(state.selectedDatas)) {
+ if (type.isNull(state.selectedDatas)) {
return ''
} else {
- return typeOf(state.selectedDatas) === 'object' ? state.selectedDatas[props.textField] : state.selectedDatas
+ return type.typeOf(state.selectedDatas) === 'object' ? state.selectedDatas[props.textField] : state.selectedDatas
}
}
}
@@ -171,7 +171,7 @@ export const handleConfirm =
if (props.popseletor === constants.TYPE_GRID) {
props.multi ? api.getMultiSelectedData({ props, state }) : api.getRadioSelectedData()
- if (!isNull(state.commitValue)) {
+ if (!type.isNull(state.commitValue)) {
state.display = api.getDisplay({ props, state })
if (!isEqual(state.commitValue, props.modelValue)) {
@@ -309,7 +309,7 @@ const renderTextHandler = ({ state, props, datas, dataset, value }) => {
}
const getTreeSelectList = ({ value, state, props }) => {
- value = typeOf(value) === 'number' ? (isNaN(value) ? '' : String(value)) : value
+ value = type.typeOf(value) === 'number' ? (isNaN(value) ? '' : String(value)) : value
let treeSelectList = []
diff --git a/packages/renderless/src/popup/index.ts b/packages/renderless/src/popup/index.ts
index 4129fee384..407275595f 100644
--- a/packages/renderless/src/popup/index.ts
+++ b/packages/renderless/src/popup/index.ts
@@ -13,12 +13,12 @@
import { on, off } from '../common/deps/dom'
import { touchStart, touchMove } from '../common/deps/touch'
import { getScroller } from '../dropdown-menu'
-import { isNull } from '../common/type'
+import { type } from '@opentiny/utils'
export const getStyle = (props) => () => {
const style = { ...props.popupStyle }
- if (!isNull(props.duration)) {
+ if (!type.isNull(props.duration)) {
const key = props.position === 'center' ? 'animationDuration' : 'transitionDuration'
style[key] = `${props.duration}s`
diff --git a/packages/renderless/src/recycle-scroller/index.ts b/packages/renderless/src/recycle-scroller/index.ts
index 92b645f3c4..d68d69e33e 100644
--- a/packages/renderless/src/recycle-scroller/index.ts
+++ b/packages/renderless/src/recycle-scroller/index.ts
@@ -1,5 +1,5 @@
import { getScrollContainer } from '../common/deps/infinite-scroll'
-import { isNull } from '../common/type'
+import { type } from '@opentiny/utils'
let supportsPassive = false
@@ -488,7 +488,7 @@ const computePool = (args) => {
const key = keyField ? item[keyField] : item
- if (isNull(key)) {
+ if (type.isNull(key)) {
throw new Error(`[TINY Error][RecycleScroller] Key is ${key} on item (keyField is '${keyField}')`)
}
@@ -540,7 +540,7 @@ const unuseInvisible = ({ continuous, pool, checkItem, itemIndexByKey, keyField,
view.nr.index = itemIndexByKey[view.item[keyField]]
}
- if (isNull(view.nr.index) || view.nr.index < startIndex || view.nr.index >= endIndex) {
+ if (type.isNull(view.nr.index) || view.nr.index < startIndex || view.nr.index >= endIndex) {
api.unuseView(view)
}
}
diff --git a/packages/renderless/src/rich-text/table-module.ts b/packages/renderless/src/rich-text/table-module.ts
index d44e6e04d1..902c54f24b 100644
--- a/packages/renderless/src/rich-text/table-module.ts
+++ b/packages/renderless/src/rich-text/table-module.ts
@@ -1,5 +1,5 @@
import { random } from '../common/string'
-import { isNull } from '../common/type'
+import { type } from '@opentiny/utils'
function cellName() {
return random().toString(36).slice(2)
@@ -133,7 +133,7 @@ function provideTableTrick({ Parchment }) {
const leaf = getLeafFromQuill()
let blot = leaf[0]
- while (!isNull(blot) && blot.statics.blotName !== what) {
+ while (!type.isNull(blot) && blot.statics.blotName !== what) {
blot = blot.parent
}
@@ -220,7 +220,7 @@ function createTable({ value, Container, Parchment, Scroll }) {
let blot = leaf[0]
let topBranch = null
- while (!isNull(blot) && !(blot instanceof Container || blot instanceof Scroll)) {
+ while (!type.isNull(blot) && !(blot instanceof Container || blot instanceof Scroll)) {
topBranch = blot
blot = blot.parent
}
@@ -258,7 +258,7 @@ function provideTable({ Container, Parchment, Scroll, TableTrick, TableRow }) {
const next = this.next
if (
- !isNull(next) &&
+ !type.isNull(next) &&
next.prev === this &&
next.statics.blotName === this.statics.blotName &&
next.domNode.tagName === this.domNode.tagName &&
@@ -338,7 +338,7 @@ function provideContainBlot({ Container, Parchment, Block, BlockEmbed }) {
this.appendChild(item)
}
- if (isNull(target.parent)) return
+ if (type.isNull(target.parent)) return
super.replace(target)
}
@@ -370,7 +370,7 @@ function provideTableRow({ Container, Parchment }) {
const next = this.next
if (
- !isNull(next) &&
+ !type.isNull(next) &&
next.prev === this &&
next.statics.blotName === this.statics.blotName &&
next.domNode.tagName === this.domNode.tagName &&
@@ -427,7 +427,7 @@ function provideTableCell({ Container, Parchment, Block, BlockEmbed, ContainBlot
optimize() {
super.optimize()
// Add parent TR and TABLE when missing
- if (!isNull(this.parent) && this.parent.statics.blotName !== 'tr') {
+ if (!type.isNull(this.parent) && this.parent.statics.blotName !== 'tr') {
// we will mark td position, put in table and replace mark
const mark = Parchment.create('block')
@@ -442,7 +442,7 @@ function provideTableCell({ Container, Parchment, Block, BlockEmbed, ContainBlot
}
// merge same TD id
if (
- !isNull(this.next) &&
+ !type.isNull(this.next) &&
this.next.prev === this &&
this.next.statics.blotName === this.statics.blotName &&
this.next.domNode.tagName === this.domNode.tagName &&
diff --git a/packages/renderless/src/search/index.ts b/packages/renderless/src/search/index.ts
index e10827f9ac..745cbf1eeb 100644
--- a/packages/renderless/src/search/index.ts
+++ b/packages/renderless/src/search/index.ts
@@ -12,7 +12,7 @@
import type { ISearchRenderlessParams, ISearchValue } from '@/types'
import { on, off } from '../common/deps/dom'
import PopupManager from '../common/deps/popup-manager'
-import { isObject, typeOf } from '../common/type'
+import { type } from '@opentiny/utils'
export const emitInput =
({ emit }: Pick) =>
@@ -91,9 +91,9 @@ export const setDefaultType = (searchTypes: ISearchValue[], typeValue: ISearchVa
for (let i = 0, len = searchTypes.length; i < len; i++) {
if (
- isObject(searchTypes[i]) &&
- typeOf(searchTypes[i].value) !== 'undefined' &&
- typeOf(searchTypes[i].text) !== 'undefined'
+ type.isObject(searchTypes[i]) &&
+ type.typeOf(searchTypes[i].value) !== 'undefined' &&
+ type.typeOf(searchTypes[i].text) !== 'undefined'
) {
type = searchTypes[i]
break
@@ -108,9 +108,9 @@ export const formatSearchTypes = (searchTypes: ISearchValue[]): ISearchValue[] =
for (let i = 0, len = searchTypes.length; i < len; i++) {
if (
- isObject(searchTypes[i]) &&
- typeOf(searchTypes[i].value) !== 'undefined' &&
- typeOf(searchTypes[i].text) !== 'undefined'
+ type.isObject(searchTypes[i]) &&
+ type.typeOf(searchTypes[i].value) !== 'undefined' &&
+ type.typeOf(searchTypes[i].text) !== 'undefined'
) {
types.push(searchTypes[i])
}
diff --git a/packages/renderless/src/select/index.ts b/packages/renderless/src/select/index.ts
index 33d779c806..22f91514e8 100644
--- a/packages/renderless/src/select/index.ts
+++ b/packages/renderless/src/select/index.ts
@@ -6,12 +6,11 @@ import PopupManager from '../common/deps/popup-manager'
import debounce from '../common/deps/debounce'
import { getDataset } from '../common/dataset'
import Memorize from '../common/deps/memorize'
-import { isEmptyObject } from '../common/type'
import { addResizeListener, removeResizeListener } from '../common/deps/resize-event'
import { extend } from '../common/object'
import { BROWSER_NAME } from '../common'
import browserInfo from '../common/browser'
-import { isNull } from '../common/type'
+import { type } from '@opentiny/utils'
import { fastdom } from '../common/deps/fastdom'
import { deepClone } from '../picker-column'
import { escapeRegexpString } from '../option'
@@ -364,7 +363,7 @@ export const getSelectedOption =
option = state.selected.find((v) => getObj(v, props.valueField) === value && !v.isFakeLabel)
} else {
if (
- !isEmptyObject(state.selected) &&
+ !type.isEmptyObject(state.selected) &&
getObj(state.selected, props.valueField) === value &&
!state.selected.isFakeLabel
) {
@@ -447,7 +446,7 @@ const setGridOrTreeSelected = ({ props, state, vm, isTree, api, init }) => {
const nestdata = isRemote ? state.remoteData : isTree ? api.getTreeData(state.treeData) : state.gridData
const data = find(nestdata, (item) => props.modelValue === item[props.valueField])
- if (isEmptyObject(data)) {
+ if (type.isEmptyObject(data)) {
api.clearNoMatchValue('')
return
}
@@ -2299,7 +2298,7 @@ export const computedShowClose =
(state.inputHovering || (props.multiple && state.visible)) &&
(props.multiple
? Array.isArray(props.modelValue) && props.modelValue.length > 0
- : !isNull(props.modelValue) && props.modelValue !== '')
+ : !type.isNull(props.modelValue) && props.modelValue !== '')
// tiny 新增: aui有自己的逻辑,移至defineConfig中去了
export const computedCollapseTagSize = (state) => () => state.selectSize
diff --git a/packages/renderless/src/select/vue.ts b/packages/renderless/src/select/vue.ts
index 76cd4966dd..3e36e1c075 100644
--- a/packages/renderless/src/select/vue.ts
+++ b/packages/renderless/src/select/vue.ts
@@ -113,7 +113,7 @@ import {
computedCurrentSizeMap
} from './index'
import debounce from '../common/deps/debounce'
-import { isNumber } from '../common/type'
+import { type } from '@opentiny/utils'
import { useUserAgent } from '../common/deps/useUserAgent'
import { isBrowser } from '../common/browser'
@@ -323,7 +323,7 @@ const initStateAdd = ({ computed, props, api, parent }) => {
currentKey: props.modelValue,
updateId: '',
popperElm: null,
- debounce: computed(() => (isNumber(props.queryDebounce) ? props.queryDebounce : props.remote ? 300 : 0)),
+ debounce: computed(() => (type.isNumber(props.queryDebounce) ? props.queryDebounce : props.remote ? 300 : 0)),
emptyText: computed(() => api.emptyText()),
emptyFlag: computed(() => api.emptyFlag()),
formItemSize: computed(() => (parent.formItem || { state: {} }).state.formItemSize),
diff --git a/packages/renderless/src/skeleton/index.ts b/packages/renderless/src/skeleton/index.ts
index 89cad526e0..90ac26b7fa 100644
--- a/packages/renderless/src/skeleton/index.ts
+++ b/packages/renderless/src/skeleton/index.ts
@@ -1,11 +1,11 @@
-import { isNumber, isNull } from '../common/type'
+import { type } from '@opentiny/utils'
export const toPxStyle = (value: string | number): undefined | string => {
- if (isNull(value)) {
+ if (type.isNull(value)) {
return undefined
}
- if (isNumber(value)) {
+ if (type.isNumber(value)) {
return `${value}px`
}
diff --git a/packages/renderless/src/statistic/index.ts b/packages/renderless/src/statistic/index.ts
index 8ff2ad8b3d..b23ae9e4b4 100644
--- a/packages/renderless/src/statistic/index.ts
+++ b/packages/renderless/src/statistic/index.ts
@@ -1,4 +1,4 @@
-import { isFunction } from '../common/type'
+import { type } from '@opentiny/utils'
export const isNumber =
({ props }) =>
@@ -9,7 +9,7 @@ export const isNumber =
export const getIntegerAndDecimal =
({ props }) =>
() => {
- if (isFunction(props.formatter)) {
+ if (type.isFunction(props.formatter)) {
return props.formatter(props.value)
}
if (!isNumber(props.value)) {
diff --git a/packages/renderless/src/tabbar-item/index.ts b/packages/renderless/src/tabbar-item/index.ts
index cda0bdce90..a183f9aadd 100644
--- a/packages/renderless/src/tabbar-item/index.ts
+++ b/packages/renderless/src/tabbar-item/index.ts
@@ -10,15 +10,15 @@
*
*/
-import { isObject, isNull } from '../common/type'
+import { type } from '@opentiny/utils'
export const getRouteActive =
({ props, route }) =>
() => {
if (props.to && route) {
- const config = isObject(props.to) ? props.to : { path: props.to }
+ const config = type.isObject(props.to) ? props.to : { path: props.to }
const pathMatched = config.path === route.path
- const nameMatched = !isNull(config.name) && config.name === route.name
+ const nameMatched = !type.isNull(config.name) && config.name === route.name
return pathMatched || nameMatched
}
diff --git a/packages/renderless/src/toggle-menu/index.ts b/packages/renderless/src/toggle-menu/index.ts
index 040cb8412c..beef6ea293 100644
--- a/packages/renderless/src/toggle-menu/index.ts
+++ b/packages/renderless/src/toggle-menu/index.ts
@@ -10,8 +10,7 @@
*
*/
-import { xss } from '@opentiny/utils'
-import { isObject } from '../common/type'
+import { xss, type } from '@opentiny/utils'
export const filterNode = (props) => (value, data) => {
const node = data[props.props.label || 'label'] || ''
@@ -49,7 +48,7 @@ export const initData =
state.datas = api.setMenuKey({ newData: [], menuData })
} else if (typeof service.getMenuDataAsync === 'function') {
const asyncMenuData = service.getMenuDataAsync()
- if (isObject(asyncMenuData) && asyncMenuData.then) {
+ if (type.isObject(asyncMenuData) && asyncMenuData.then) {
asyncMenuData.then((data) => {
state.datas = api.setMenuKey({ newData: [], menuData: data })
})
diff --git a/packages/renderless/src/wizard/index.ts b/packages/renderless/src/wizard/index.ts
index 692cdea8ef..f13315f783 100644
--- a/packages/renderless/src/wizard/index.ts
+++ b/packages/renderless/src/wizard/index.ts
@@ -13,7 +13,7 @@ import type { IWizardRenderlessParams, IWizardPropsDataNode, IWizardNodesItem }
import { format } from '../common/date'
import { copyArray, extend } from '../common/object'
-import { isObject } from '../common/type'
+import { type } from '@opentiny/utils'
export const lastStepHandle =
({ state, emit }: Pick) =>
@@ -76,7 +76,7 @@ export const nodeClick =
}
export const cloneDeep = (data) => {
- if (isObject(data)) {
+ if (type.isObject(data)) {
return extend(true, data)
} else if (Array.isArray(data)) {
return copyArray(data)
diff --git a/packages/renderless/src/common/global.ts b/packages/utils/src/global/index.ts
similarity index 100%
rename from packages/renderless/src/common/global.ts
rename to packages/utils/src/global/index.ts
diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts
index 3e8d19748d..468c696102 100644
--- a/packages/utils/src/index.ts
+++ b/packages/utils/src/index.ts
@@ -1,15 +1,22 @@
import * as _nanoid from './nanoid/index'
import _xss from './xss/index'
+import * as _type from './type/index'
+import * as _global from './global/index'
import * as _logger from './logger/index'
import * as _crypt from './crypt/index'
type NanoidType = typeof _nanoid
type XssType = typeof _xss
+type Type = typeof _type
+type GlobalType = typeof _global
type LoggerType = typeof _logger
type CryptType = typeof _crypt
+
interface Default {
nanoid: NanoidType
xss: XssType
+ type: Type
+ global: GlobalType
log: LoggerType
crypt: CryptType
}
@@ -17,12 +24,16 @@ interface Default {
const def: Default = {
nanoid: _nanoid,
xss: _xss,
+ type: _type,
+ global: _global,
log: _logger,
crypt: _crypt
}
export const nanoid: NanoidType = _nanoid
export const xss: XssType = _xss
+export const type: Type = _type
+export const global: GlobalType = _global
export const log: LoggerType = _logger
export const crypt: CryptType = _crypt
diff --git a/packages/renderless/src/common/type.ts b/packages/utils/src/type/index.ts
similarity index 96%
rename from packages/renderless/src/common/type.ts
rename to packages/utils/src/type/index.ts
index 6d78d183da..23cc754189 100644
--- a/packages/renderless/src/common/type.ts
+++ b/packages/utils/src/type/index.ts
@@ -147,7 +147,7 @@ export const isNumeric = (value: any) => value - parseFloat(value) >= 0
* let date = new Date()
* isDate(date) // true
*/
-export const isDate = (value) => typeOf(value) === 'date'
+export const isDate = (value: any) => typeOf(value) === 'date'
/**
* 判断两个值是否值相同且类型相同。
@@ -163,4 +163,4 @@ export const isSame = (x: any, y: any) =>
/** 判断是否是正则表达式 */
export const isRegExp = (value: any) => typeOf(value) === 'regExp'
-export const isPromise = (val) => isObject(val) && isFunction(val.then) && isFunction(val.catch)
+export const isPromise = (val: any) => isObject(val) && isFunction(val.then) && isFunction(val.catch)
diff --git a/packages/vue-locale/package.json b/packages/vue-locale/package.json
index 6b6a7f80c9..de274f0bbe 100644
--- a/packages/vue-locale/package.json
+++ b/packages/vue-locale/package.json
@@ -8,6 +8,7 @@
"sideEffects": false,
"type": "module",
"dependencies": {
+ "@opentiny/utils": "workspace:~",
"@opentiny/vue-renderless": "workspace:~",
"@opentiny/vue-theme": "workspace:~",
"@opentiny/vue-theme-mobile": "workspace:~"
diff --git a/packages/vue-locale/src/glob.ts b/packages/vue-locale/src/glob.ts
index 07af7813f3..a344007ad0 100644
--- a/packages/vue-locale/src/glob.ts
+++ b/packages/vue-locale/src/glob.ts
@@ -1,15 +1,14 @@
import { formatNumber, recoverNumber } from '@opentiny/vue-renderless/common/decimal'
import { toDate, getDateWithNewTimezone } from '@opentiny/vue-renderless/common/date'
-import { isPlainObject, isDate, isNull } from '@opentiny/vue-renderless/common/type'
+import { type } from '@opentiny/utils'
import { formatDate } from '@opentiny/vue-renderless/common/deps/date-util'
-import { isNumber } from '@opentiny/vue-renderless/common/type'
export const getNumberFormat = (config) => {
const groupSize = 3
let groupSeparator = ','
let decimalSeparator = '.'
- if (isPlainObject(config)) {
+ if (type.isPlainObject(config)) {
return config
}
@@ -50,7 +49,7 @@ export const getStrTimezone = (value) => {
value = minoffset * `${match[1]}1`
}
- if (isNumber(value) && value >= -12 && value <= 12) {
+ if (type.isNumber(value) && value >= -12 && value <= 12) {
return value
}
@@ -95,11 +94,11 @@ export default function (t) {
* @returns {String}
*/
formatDate(value, format) {
- if (isNull(value)) {
+ if (type.isNull(value)) {
return value
}
- let date = isDate(value) ? value : toDate(value)
+ let date = type.isDate(value) ? value : toDate(value)
let dbtimezone = opt.DbTimezone
let includeTz = value.match && value.match(TZRE)
const convers = format === false || arguments[2] === false
@@ -112,7 +111,7 @@ export default function (t) {
date = this.getDateWithNewTimezone(date, dbtimezone, opt.Timezone, opt.TimezoneOffset)
}
- return isDate(date) ? formatDate(date, format || opt.DateFormat, t) : null
+ return type.isDate(date) ? formatDate(date, format || opt.DateFormat, t) : null
},
/**
diff --git a/packages/vue/src/grid-toolbar/package.json b/packages/vue/src/grid-toolbar/package.json
index 650d391fb3..f48a433c52 100644
--- a/packages/vue/src/grid-toolbar/package.json
+++ b/packages/vue/src/grid-toolbar/package.json
@@ -12,6 +12,7 @@
"//postversion": "pnpm build"
},
"dependencies": {
+ "@opentiny/utils": "workspace:~",
"@opentiny/vue-alert": "workspace:~",
"@opentiny/vue-button": "workspace:~",
"@opentiny/vue-checkbox": "workspace:~",
diff --git a/packages/vue/src/grid-toolbar/src/index.ts b/packages/vue/src/grid-toolbar/src/index.ts
index d758794f4c..db2186524c 100644
--- a/packages/vue/src/grid-toolbar/src/index.ts
+++ b/packages/vue/src/grid-toolbar/src/index.ts
@@ -22,7 +22,7 @@
* SOFTWARE.
*
*/
-import { isNumber } from '@opentiny/vue-renderless/common/type'
+import { type } from '@opentiny/utils'
import { iconMinscreen, iconFullscreen } from '@opentiny/vue-icon'
import { h, hooks, $prefix, defineComponent, appProperties, $props } from '@opentiny/vue-common'
import { toStringJSON, isEmpty, isPlainObject, toJSONString, find } from '@opentiny/vue-renderless/grid/static/'
@@ -679,7 +679,7 @@ export default defineComponent({
})
}
- if (isNumber(pageSize) && this.$grid.pagerConfig && this.$grid.pagerConfig.pageSize !== pageSize) {
+ if (type.isNumber(pageSize) && this.$grid.pagerConfig && this.$grid.pagerConfig.pageSize !== pageSize) {
this.$grid.pageSizeChange(pageSize)
}
}
diff --git a/packages/vue/src/grid/package.json b/packages/vue/src/grid/package.json
index 3fbabf144d..1f6dcb8d78 100644
--- a/packages/vue/src/grid/package.json
+++ b/packages/vue/src/grid/package.json
@@ -26,6 +26,7 @@
"@opentiny/vue-renderless": "workspace:~",
"@opentiny/vue-tag": "workspace:~",
"@opentiny/vue-theme": "workspace:~",
+ "@opentiny/utils": "workspace:~",
"@opentiny/vue-tooltip": "workspace:~"
},
"devDependencies": {
diff --git a/packages/vue/src/grid/src/body/src/body.tsx b/packages/vue/src/grid/src/body/src/body.tsx
index c6b7ec9680..a22110afa4 100644
--- a/packages/vue/src/grid/src/body/src/body.tsx
+++ b/packages/vue/src/grid/src/body/src/body.tsx
@@ -24,7 +24,7 @@
*/
import { isFunction, find } from '@opentiny/vue-renderless/grid/static/'
-import { isNull } from '@opentiny/vue-renderless/common/type'
+import { type } from '@opentiny/utils'
import {
updateCellTitle,
emitEvent,
@@ -348,7 +348,7 @@ const setColumnEvents = (args1) => {
let tdOns = {}
let fixedHiddenColumn = column.fixed
let { editor, showOverflow, showTip } = column
- let cellOverflow = isNull(showOverflow) ? allColumnOverflow : showOverflow
+ let cellOverflow = type.isNull(showOverflow) ? allColumnOverflow : showOverflow
let showTitle = cellOverflow === 'title'
let showTooltip = cellOverflow === true || cellOverflow === 'tooltip'
let showEllipsis = cellOverflow === 'ellipsis'
diff --git a/packages/vue/src/grid/src/footer/src/footer.ts b/packages/vue/src/grid/src/footer/src/footer.ts
index 81477190e3..a56cc011ff 100644
--- a/packages/vue/src/grid/src/footer/src/footer.ts
+++ b/packages/vue/src/grid/src/footer/src/footer.ts
@@ -25,7 +25,7 @@
import { isFunction } from '@opentiny/vue-renderless/grid/static/'
import { getClass, emitEvent, formatText, updateCellTitle } from '@opentiny/vue-renderless/grid/utils'
-import { isNull } from '@opentiny/vue-renderless/common/type'
+import { type } from '@opentiny/utils'
import { h, $prefix, defineComponent } from '@opentiny/vue-common'
const classMap = {
@@ -314,7 +314,7 @@ export default defineComponent({
let { column, footerData, footerSpanMethod, tableListeners } = opt
let { showOverflow, footerAlign, align, footerClassName } = column
let fixedHiddenColumn = column.fixed
- let cellOverflowValue = isNull(showOverflow) ? allColumnOverflow : showOverflow
+ let cellOverflowValue = type.isNull(showOverflow) ? allColumnOverflow : showOverflow
let footAlign = footerAlign || align || allFooterAlign || allAlign
let isShowEllipsis = cellOverflowValue === 'ellipsis'
let isShowTitle = cellOverflowValue === 'title'
diff --git a/packages/vue/src/grid/src/header/src/header.ts b/packages/vue/src/grid/src/header/src/header.ts
index 31433b72db..fbe5c6ab32 100644
--- a/packages/vue/src/grid/src/header/src/header.ts
+++ b/packages/vue/src/grid/src/header/src/header.ts
@@ -23,7 +23,7 @@
*
*/
-import { isObject, isNull } from '@opentiny/vue-renderless/common/type'
+import { type } from '@opentiny/utils'
import { removeClass, addClass } from '@opentiny/vue-renderless/common/deps/dom'
import { isBoolean, isFunction } from '@opentiny/vue-renderless/grid/static/'
import { updateCellTitle, emitEvent, getClass } from '@opentiny/vue-renderless/grid/utils'
@@ -166,7 +166,7 @@ function getThPropsArg(args) {
[classMap.fixedHidden]: fixedHiddenColumn,
[classMap.isSortable]: !['index', 'radio', 'selection'].includes(column.type) && column.sortable,
[classMap.isEditable]: column.editor,
- [classMap.isFilter]: isObject(column.filter),
+ [classMap.isFilter]: type.isObject(column.filter),
[classMap.filterActive]: column.filter && column.filter.hasFilter,
'fixed-left-last__column':
column.fixed === 'left' && (leftList[leftList.length - 1] === column || column.isFixedLeftLast),
@@ -276,7 +276,7 @@ function getThHandler(args) {
let { showHeaderOverflow, showHeaderTip, headerAlign, align, headerClassName } = column
let isColGroup = column.children && column.children.length
let fixedHiddenColumn = column.fixed
- let headOverflow = isNull(showHeaderOverflow) ? allColumnHeaderOverflow : showHeaderOverflow
+ let headOverflow = type.isNull(showHeaderOverflow) ? allColumnHeaderOverflow : showHeaderOverflow
let showEllipsis = headOverflow === 'ellipsis'
let showTitle = headOverflow === 'title'
let headAlign = headerAlign || align || allHeaderAlign || allAlign
diff --git a/packages/vue/src/grid/src/table/src/methods.ts b/packages/vue/src/grid/src/table/src/methods.ts
index b97546746d..c854494c94 100644
--- a/packages/vue/src/grid/src/table/src/methods.ts
+++ b/packages/vue/src/grid/src/table/src/methods.ts
@@ -25,7 +25,7 @@
import { getColumnList, assemColumn } from '@opentiny/vue-renderless/grid/utils'
import { toDecimal } from '@opentiny/vue-renderless/common/string'
import { addClass, removeClass, isDisplayNone } from '@opentiny/vue-renderless/common/deps/dom'
-import { isNull } from '@opentiny/vue-renderless/common/type'
+import { type } from '@opentiny/utils'
import debounce from '@opentiny/vue-renderless/common/deps/debounce'
import { fastdom } from '@opentiny/vue-renderless/common/deps/fastdom'
import {
@@ -379,7 +379,7 @@ const Methods = {
let rowKey = getTableRowKey(this)
let buildRowCache = (row, index) => {
let rowId = getRowid(this, row)
- if (isNull(rowId) || rowId === '') {
+ if (type.isNull(rowId) || rowId === '') {
rowId = getRowUniqueId()
set(row, rowKey, rowId)
}
@@ -497,7 +497,7 @@ const Methods = {
})
// 如果行数据的唯一主键不存在,则生成
const rowId = get(row, rowKey)
- if (isNull(rowId) || rowId === '') {
+ if (type.isNull(rowId) || rowId === '') {
set(row, rowKey, getRowUniqueId())
}
return row
diff --git a/packages/vue/src/grid/src/table/src/table.ts b/packages/vue/src/grid/src/table/src/table.ts
index ed812e71ca..a67a41ac04 100644
--- a/packages/vue/src/grid/src/table/src/table.ts
+++ b/packages/vue/src/grid/src/table/src/table.ts
@@ -25,7 +25,7 @@
import { h, hooks, $prefix, resolveTheme, defineComponent, useInstanceSlots, useRelation } from '@opentiny/vue-common'
import Tooltip from '@opentiny/vue-tooltip'
import { extend } from '@opentiny/vue-renderless/common/object'
-import { isEmptyObject, isObject, isNull } from '@opentiny/vue-renderless/common/type'
+import { type } from '@opentiny/utils'
import { uniqueId, template, toNumber, isBoolean } from '@opentiny/vue-renderless/grid/static/'
import { getRowkey, GlobalEvent, hasChildrenList, getListeners } from '@opentiny/vue-renderless/grid/utils'
import TINYGrid from '../../adapter'
@@ -99,7 +99,7 @@ function loadStatic(data, _vm) {
function mergeTreeConfig(_vm) {
if (_vm.treeConfig) {
const { ordered } = _vm.treeConfig
- _vm.treeOrdered = isNull(ordered) ? true : Boolean(ordered)
+ _vm.treeOrdered = type.isNull(ordered) ? true : Boolean(ordered)
}
}
@@ -800,7 +800,7 @@ export default defineComponent({
return extend(true, {}, GlobalConfig.menu, this.contextMenu)
},
hasFilter() {
- return this.tableColumn.some((column) => isObject(column.filter) && !isEmptyObject(column.filter))
+ return this.tableColumn.some((column) => type.isObject(column.filter) && !type.isEmptyObject(column.filter))
},
hasTip() {
return TINYGrid._tooltip
diff --git a/packages/vue/src/grid/src/tools/formatter.ts b/packages/vue/src/grid/src/tools/formatter.ts
index 5bef0f4846..310a30958f 100644
--- a/packages/vue/src/grid/src/tools/formatter.ts
+++ b/packages/vue/src/grid/src/tools/formatter.ts
@@ -35,7 +35,7 @@ import {
toBoolValue
} from '@opentiny/vue-renderless/common/string'
import { find } from '@opentiny/vue-renderless/grid/static/'
-import { isNumber, isDate, isNull } from '@opentiny/vue-renderless/common/type'
+import { type } from '@opentiny/utils'
import { toDateStr, getDateWithNewTimezone, toDate, format } from '@opentiny/vue-renderless/common/date'
import { iconClose, iconYes } from '@opentiny/vue-icon'
import { warn } from './logger'
@@ -81,7 +81,7 @@ const dateFormat = function (value, formatString) {
const currentTimezone = 0 - new Date().getTimezoneOffset() / 60
const newDate = getDateWithNewTimezone(
- isDate(value) ? value : new Date(toDate(value)),
+ type.isDate(value) ? value : new Date(toDate(value)),
currentTimezone,
userFormat.timezone || 8
)
@@ -113,7 +113,7 @@ export default {
let { options, optionGroups, optionProps = {}, optionGroupProps = {} } = this.editor
const format = this.own.formatConfig
- if (isNull(cellValue) || cellValue === '') {
+ if (type.isNull(cellValue) || cellValue === '') {
return ''
}
@@ -226,7 +226,7 @@ export default {
if (section) {
let rateValue = parseInt(lengthRate, 10)
- if (!isNumber(rateValue)) {
+ if (!type.isNumber(rateValue)) {
return rate
}
if (rateValue === 100) {
@@ -265,7 +265,7 @@ export default {
noFork: false
}
const format = Object.assign(defaultFormat, this.own.formatConfig)
- const cellValue = !isNull(format.trueValue) ? value === format.trueValue : toBoolValue(value)
+ const cellValue = !type.isNull(format.trueValue) ? value === format.trueValue : toBoolValue(value)
if (!format.htmlView) {
return cellValue
diff --git a/packages/vue/src/image-viewer/src/mobileTouch.ts b/packages/vue/src/image-viewer/src/mobileTouch.ts
index 4c6940fe28..827f3820a9 100644
--- a/packages/vue/src/image-viewer/src/mobileTouch.ts
+++ b/packages/vue/src/image-viewer/src/mobileTouch.ts
@@ -10,7 +10,7 @@
*
*/
import { directive } from '@opentiny/vue-common'
-import { isObject } from '@opentiny/vue-renderless/common/type'
+import { type as _type } from '@opentiny/utils'
class TinyTouch {
constructor(element, tinyBinding, type) {
@@ -22,7 +22,7 @@ class TinyTouch {
that.tinyVueMoves = true
that.tinyVueLeave = true
that.tinyLongTouch = true
- that.tinyVueCallBack = isObject(tinyBinding.value) ? tinyBinding.value.fn : tinyBinding.value
+ that.tinyVueCallBack = _type.isObject(tinyBinding.value) ? tinyBinding.value.fn : tinyBinding.value
that.element.addEventListener('touchstart', (e) => {
that.start(e)
})
diff --git a/packages/vue/src/recycle-scroller/package.json b/packages/vue/src/recycle-scroller/package.json
index b244654c1d..bbd60ea0ca 100644
--- a/packages/vue/src/recycle-scroller/package.json
+++ b/packages/vue/src/recycle-scroller/package.json
@@ -13,6 +13,7 @@
"dependencies": {
"@opentiny/vue-common": "workspace:~",
"@opentiny/vue-renderless": "workspace:~",
+ "@opentiny/utils": "workspace:~",
"@opentiny/vue-theme": "workspace:~"
},
"license": "MIT"
diff --git a/packages/vue/src/recycle-scroller/src/idState.ts b/packages/vue/src/recycle-scroller/src/idState.ts
index 5bd7c1d7c9..6744325d5c 100644
--- a/packages/vue/src/recycle-scroller/src/idState.ts
+++ b/packages/vue/src/recycle-scroller/src/idState.ts
@@ -1,5 +1,5 @@
import { hooks } from '@opentiny/vue-common'
-import { isNull } from '@opentiny/vue-renderless/common/type'
+import { type } from '@opentiny/utils'
const { reactive } = hooks
@@ -11,7 +11,7 @@ const buildInstanceTemporary = (store) => {
temporary.updateIdState = (vm) => {
const id = temporary.getId()
- if (isNull(id)) {
+ if (type.isNull(id)) {
console.warn('[TINY Error][Mixin IdState] No id found for IdState with idProp')
}
@@ -73,7 +73,7 @@ export default function ({ idProp, stateGetterName }) {
this.temporary.updateIdState(this)
},
[stateGetterName](id) {
- return isNull(id) ? store : store[id] ? store[id] : null
+ return type.isNull(id) ? store : store[id] ? store[id] : null
}
}
}
From 429f1a49c022afd44ba08f01329a9b123f697774 Mon Sep 17 00:00:00 2001
From: wuyiping0628 <1106773985@qq.com>
Date: Sat, 18 Jan 2025 00:25:25 -0800
Subject: [PATCH 2/9] feat(utils): extract the functions from the type to the
tils package
---
packages/utils/src/index.ts | 11 -----------
1 file changed, 11 deletions(-)
diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts
index 468c696102..3e8d19748d 100644
--- a/packages/utils/src/index.ts
+++ b/packages/utils/src/index.ts
@@ -1,22 +1,15 @@
import * as _nanoid from './nanoid/index'
import _xss from './xss/index'
-import * as _type from './type/index'
-import * as _global from './global/index'
import * as _logger from './logger/index'
import * as _crypt from './crypt/index'
type NanoidType = typeof _nanoid
type XssType = typeof _xss
-type Type = typeof _type
-type GlobalType = typeof _global
type LoggerType = typeof _logger
type CryptType = typeof _crypt
-
interface Default {
nanoid: NanoidType
xss: XssType
- type: Type
- global: GlobalType
log: LoggerType
crypt: CryptType
}
@@ -24,16 +17,12 @@ interface Default {
const def: Default = {
nanoid: _nanoid,
xss: _xss,
- type: _type,
- global: _global,
log: _logger,
crypt: _crypt
}
export const nanoid: NanoidType = _nanoid
export const xss: XssType = _xss
-export const type: Type = _type
-export const global: GlobalType = _global
export const log: LoggerType = _logger
export const crypt: CryptType = _crypt
From 44a146828504037518aacc3d496ea91d2afd9528 Mon Sep 17 00:00:00 2001
From: wuyiping0628 <1106773985@qq.com>
Date: Sat, 18 Jan 2025 01:42:44 -0800
Subject: [PATCH 3/9] feat(utils): extract the functions from the type to the
tils package
---
packages/utils/src/index.ts | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts
index ced6869c17..319a94c6b7 100644
--- a/packages/utils/src/index.ts
+++ b/packages/utils/src/index.ts
@@ -1,11 +1,15 @@
import xss from './xss'
import log from './log'
import crypt from './crypt'
+import global from './global'
+import * as type from './type'
-export { xss, log, crypt }
+export { xss, log, crypt, global, type }
export default {
xss,
log,
- crypt
+ crypt,
+ global,
+ type
}
From b3aa4952f6ad1247110b05c5e4c540c7f06b21a5 Mon Sep 17 00:00:00 2001
From: wuyiping0628 <1106773985@qq.com>
Date: Mon, 20 Jan 2025 00:48:48 -0800
Subject: [PATCH 4/9] feat(utils): extract functions from the DOM package to
the UTILs package
---
packages/renderless/src/amount/index.ts | 6 +-
packages/renderless/src/anchor/index.ts | 8 +--
packages/renderless/src/chart-core/index.ts | 6 +-
.../src/common/deps/ResizeObserver.ts | 14 ++--
.../src/common/deps/clickoutside.ts | 6 +-
.../src/common/deps/fullscreen/apis.ts | 8 +--
.../src/common/deps/fullscreen/screenfull.ts | 6 +-
packages/renderless/src/common/deps/popper.ts | 18 ++---
.../src/common/deps/popup-manager.ts | 22 +++---
.../src/common/deps/repeat-click.ts | 6 +-
.../src/common/deps/useEventListener.ts | 9 ++-
.../src/common/deps/useUserAgent.ts | 4 +-
.../src/common/deps/useWindowSize.ts | 8 +--
.../renderless/src/common/deps/vue-popper.ts | 8 +--
.../renderless/src/common/deps/vue-popup.ts | 4 +-
packages/renderless/src/common/runtime.ts | 3 -
packages/renderless/src/crop/index.ts | 6 +-
packages/renderless/src/date-panel/index.ts | 6 +-
packages/renderless/src/dialog-box/index.ts | 13 ++--
packages/renderless/src/drawer/index.ts | 6 +-
.../renderless/src/dropdown-item/index.ts | 4 +-
packages/renderless/src/dropdown/index.ts | 42 +++++------
packages/renderless/src/fall-menu/index.ts | 6 +-
packages/renderless/src/filter-panel/vue.ts | 6 +-
packages/renderless/src/filter/vue.ts | 10 +--
.../renderless/src/floating-button/index.ts | 10 +--
.../renderless/src/fluent-editor/index.ts | 14 ++--
packages/renderless/src/fullscreen/index.ts | 8 +--
packages/renderless/src/grid/utils/dom.ts | 10 ++-
packages/renderless/src/grid/utils/event.ts | 16 ++---
packages/renderless/src/image-viewer/index.ts | 27 ++++---
packages/renderless/src/image/index.ts | 11 ++-
packages/renderless/src/input/vue.ts | 6 +-
packages/renderless/src/load-list/index.ts | 5 +-
packages/renderless/src/load-list/vue.ts | 4 +-
packages/renderless/src/loading/index.ts | 6 +-
packages/renderless/src/modal/index.ts | 40 +++++------
packages/renderless/src/month-table/index.ts | 4 +-
packages/renderless/src/nav-menu/index.ts | 6 +-
packages/renderless/src/notify/index.ts | 6 +-
packages/renderless/src/numeric/index.ts | 8 +--
.../renderless/src/picker-column/index.ts | 14 ++--
packages/renderless/src/popconfirm/vue.ts | 6 +-
packages/renderless/src/popeditor/index.ts | 14 ++--
packages/renderless/src/popover/index.ts | 72 +++++++++----------
packages/renderless/src/popup/index.ts | 10 +--
.../src/pull-refresh-mobile-first/index.ts | 18 ++---
.../src/pull-refresh-mobile-first/vue.ts | 4 +-
packages/renderless/src/pull-refresh/index.ts | 18 ++---
packages/renderless/src/rate/vue.ts | 10 +--
packages/renderless/src/scrollbar/vue-bar.ts | 4 +-
packages/renderless/src/search/index.ts | 5 +-
packages/renderless/src/signature/index.ts | 6 +-
.../src/slider-button-group/slide-button.ts | 6 +-
packages/renderless/src/slider/index.ts | 34 ++++-----
packages/renderless/src/split/vue.ts | 8 +--
packages/renderless/src/steps/slide-bar.ts | 6 +-
packages/renderless/src/sticky/vue.ts | 5 +-
packages/renderless/src/tab-nav/index.ts | 14 ++--
packages/renderless/src/tabbar/index.ts | 4 +-
packages/renderless/src/tabbar/vue.ts | 4 +-
packages/renderless/src/tall-storage/vue.ts | 6 +-
packages/renderless/src/tooltip/index.ts | 30 ++++----
packages/renderless/src/top-box/index.ts | 6 +-
packages/renderless/src/tree/index.ts | 13 ++--
.../deps/dom.ts => utils/src/dom/index.ts} | 12 ++--
packages/utils/src/index.ts | 6 +-
packages/vue-common/package.json | 1 +
packages/vue-common/src/breakpoint.ts | 4 +-
.../vue/src/collapse-transition/package.json | 1 +
.../vue/src/collapse-transition/src/pc.vue | 10 +--
.../src/grid/src/composable/useDrag/dnd.ts | 24 +++----
packages/vue/src/grid/src/edit/src/methods.ts | 4 +-
.../vue/src/grid/src/header/src/header.ts | 6 +-
.../vue/src/grid/src/keyboard/src/methods.ts | 20 +++---
.../src/utils/triggerCellMousedownEvent.ts | 4 +-
.../utils/triggerHeaderCellMousedownEvent.ts | 8 +--
.../vue/src/grid/src/menu/src/children.ts | 5 +-
packages/vue/src/grid/src/menu/src/methods.ts | 5 +-
.../vue/src/grid/src/table/src/methods.ts | 13 ++--
.../src/table/src/utils/handleFixedColumn.ts | 10 +--
.../vue/src/grid/src/tooltip/src/methods.ts | 4 +-
packages/vue/src/loading/package.json | 1 +
packages/vue/src/loading/src/directive.ts | 26 +++----
packages/vue/src/loading/src/service.ts | 14 ++--
packages/vue/src/menu/package.json | 1 +
packages/vue/src/menu/src/menu-transition.vue | 10 +--
87 files changed, 457 insertions(+), 465 deletions(-)
rename packages/{renderless/src/common/deps/dom.ts => utils/src/dom/index.ts} (96%)
diff --git a/packages/renderless/src/amount/index.ts b/packages/renderless/src/amount/index.ts
index a85c44204a..7b61914dbe 100644
--- a/packages/renderless/src/amount/index.ts
+++ b/packages/renderless/src/amount/index.ts
@@ -10,7 +10,7 @@
*
*/
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
import { formatNumber } from '../common/decimal'
import { getMiniDecimal, equalsDecimal } from '../common/bigInt'
@@ -245,9 +245,9 @@ export const handelClick =
export const addOutSideEvent = (api) => (visible) => {
if (visible) {
- on(document, 'click', api.handelClick)
+ dom.on(document, 'click', api.handelClick)
} else {
- off(document, 'click', api.handelClick)
+ dom.off(document, 'click', api.handelClick)
}
}
diff --git a/packages/renderless/src/anchor/index.ts b/packages/renderless/src/anchor/index.ts
index 9e5d90ec80..48fc9001c6 100644
--- a/packages/renderless/src/anchor/index.ts
+++ b/packages/renderless/src/anchor/index.ts
@@ -10,7 +10,7 @@
*
*/
import type { IAnchorRenderlessParams, IAnchorLinkItem } from '@/types'
-import { addClass, removeClass } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
const getEleMentBySelect = (parent, selector) =>
selector?.startsWith('#') ? document.getElementById(selector.slice(1)) : parent.querySelector(selector)
@@ -30,9 +30,9 @@ const setMarkClass = ({ state, props }: Pick {
- removeClass(activeContentEl, markClass)
+ dom.removeClass(activeContentEl, markClass)
}, 1000)
}
}
@@ -70,7 +70,7 @@ const updateSkidPosition = ({ vm, state, emit }: Pick
() => {
- on(window, 'resize', api.resizeHandler)
+ dom.on(window, 'resize', api.resizeHandler)
state.once.onresize = true
}
export const removeResizeListener =
({ state, api }) =>
() => {
- off(window, 'resize', api.resizeHandler)
+ dom.off(window, 'resize', api.resizeHandler)
state.once.onresize = false
}
diff --git a/packages/renderless/src/common/deps/ResizeObserver.ts b/packages/renderless/src/common/deps/ResizeObserver.ts
index 717047044d..9d7a0e57fe 100644
--- a/packages/renderless/src/common/deps/ResizeObserver.ts
+++ b/packages/renderless/src/common/deps/ResizeObserver.ts
@@ -10,7 +10,7 @@
*
*/
-import { on, off } from './dom'
+import { dom } from '@opentiny/utils'
import { isBrowser } from '../browser'
const MapShim = (function () {
@@ -219,8 +219,8 @@ const ResizeObserverController = (function () {
return
}
- on(document, 'transitionend', this.onTransitionEnd_)
- on(window, 'resize', this.refresh)
+ dom.on(document, 'transitionend', this.onTransitionEnd_)
+ dom.on(window, 'resize', this.refresh)
if (mutationObserverSupported) {
this.mutationsObserver_ = new MutationObserver(this.refresh)
@@ -234,7 +234,7 @@ const ResizeObserverController = (function () {
this.mutationsObserver_.observe(document, options)
} else {
- on(document, 'DOMSubtreeModified', this.refresh)
+ dom.on(document, 'DOMSubtreeModified', this.refresh)
this.mutationEventsAdded_ = true
}
@@ -246,13 +246,13 @@ const ResizeObserverController = (function () {
return
}
- off(document, 'transitionend', this.onTransitionEnd_)
- off(window, 'resize', this.refresh)
+ dom.off(document, 'transitionend', this.onTransitionEnd_)
+ dom.off(window, 'resize', this.refresh)
this.mutationsObserver_ && this.mutationsObserver_.disconnect()
if (this.mutationEventsAdded_) {
- off(document, 'DOMSubtreeModified', this.refresh)
+ dom.off(document, 'DOMSubtreeModified', this.refresh)
}
this.mutationsObserver_ = null
diff --git a/packages/renderless/src/common/deps/clickoutside.ts b/packages/renderless/src/common/deps/clickoutside.ts
index 5809d4a631..b5d02b17e5 100644
--- a/packages/renderless/src/common/deps/clickoutside.ts
+++ b/packages/renderless/src/common/deps/clickoutside.ts
@@ -10,7 +10,7 @@
*
*/
-import { on } from './dom'
+import { dom } from '@opentiny/utils'
const isServer = typeof window === 'undefined'
const nodeList = []
@@ -19,14 +19,14 @@ let startClick
let seed = 0
if (!isServer) {
- on(document, 'mousedown', (event) => {
+ dom.on(document, 'mousedown', (event) => {
startClick = event
nodeList
.filter((node) => node[nameSpace].mousedownTrigger)
.forEach((node) => node[nameSpace].documentHandler(event, startClick))
})
- on(document, 'mouseup', (event) => {
+ dom.on(document, 'mouseup', (event) => {
nodeList
.filter((node) => !node[nameSpace].mousedownTrigger)
.forEach((node) => node[nameSpace].documentHandler(event, node[nameSpace]?.mouseupTrigger ? event : startClick))
diff --git a/packages/renderless/src/common/deps/fullscreen/apis.ts b/packages/renderless/src/common/deps/fullscreen/apis.ts
index 759c772115..4cf7fdf6ec 100644
--- a/packages/renderless/src/common/deps/fullscreen/apis.ts
+++ b/packages/renderless/src/common/deps/fullscreen/apis.ts
@@ -11,7 +11,7 @@
*/
import { extend } from '../../object'
-import { on, off } from '../dom'
+import { dom } from '@opentiny/utils'
import screenfull from './screenfull'
const defaults = {
@@ -128,7 +128,7 @@ const api = {
// 网页全屏模式 按键回调
const keypressCallback = (e) => {
if (e.key === 'Escape') {
- off(document, 'keyup', keypressCallback)
+ dom.off(document, 'keyup', keypressCallback)
this.exit()
}
}
@@ -136,8 +136,8 @@ const api = {
this.isFullscreen = true
this.targetElement = targetEle
- off(document, 'keyup', keypressCallback)
- on(document, 'keyup', keypressCallback)
+ dom.off(document, 'keyup', keypressCallback)
+ dom.on(document, 'keyup', keypressCallback)
if (this.opts.callback) {
this.opts.callback(this.isFullscreen)
diff --git a/packages/renderless/src/common/deps/fullscreen/screenfull.ts b/packages/renderless/src/common/deps/fullscreen/screenfull.ts
index 804d65a22f..8368aac697 100644
--- a/packages/renderless/src/common/deps/fullscreen/screenfull.ts
+++ b/packages/renderless/src/common/deps/fullscreen/screenfull.ts
@@ -10,8 +10,8 @@
*
*/
-import { on, off } from '../dom'
import { isBrowser } from '../../browser'
+import { dom } from '@opentiny/utils'
const fullscreenApi = [
'fullscreenElement',
@@ -141,14 +141,14 @@ const screenfull = {
const eventName = eventNameMap[event]
if (eventName && isBrowser) {
- on(document, eventName, callback)
+ dom.on(document, eventName, callback)
}
},
off(event, callback) {
const eventName = eventNameMap[event]
if (eventName && isBrowser) {
- off(document, eventName, callback)
+ dom.off(document, eventName, callback)
}
},
raw: fullscreenEvents || {}
diff --git a/packages/renderless/src/common/deps/popper.ts b/packages/renderless/src/common/deps/popper.ts
index fc9bb352f1..bd5b5c0cf5 100644
--- a/packages/renderless/src/common/deps/popper.ts
+++ b/packages/renderless/src/common/deps/popper.ts
@@ -10,7 +10,7 @@
*
*/
-import { on, off, isDisplayNone } from './dom'
+import { dom } from '@opentiny/utils'
import PopupManager from './popup-manager'
import { global, type } from '@opentiny/utils'
import { isBrowser } from '../browser'
@@ -782,12 +782,12 @@ class Popper {
if (this._options.updateHiddenPopperOnScroll) {
this.state.updateBoundFn()
} else {
- if (isDisplayNone(this._reference)) return
+ if (dom.isDisplayNone(this._reference)) return
this.state.updateBoundFn()
}
}
- on(window, 'resize', this.state.updateBoundFn)
+ dom.on(window, 'resize', this.state.updateBoundFn)
if (this._options.boundariesElement !== 'window') {
let target: HTMLElement = this._options.scrollParent || getScrollParent(this._reference)
@@ -815,26 +815,26 @@ class Popper {
this.state.scrollTargets = targets || []
targets.forEach((target) => {
- on(target, 'scroll', this.state.scrollUpdate)
+ dom.on(target, 'scroll', this.state.scrollUpdate)
})
} else {
if (customTargets.length) {
this.state.scrollTargets = customTargets
customTargets.forEach((target) => {
- on(target, 'scroll', this.state.scrollUpdate)
+ dom.on(target, 'scroll', this.state.scrollUpdate)
})
} else {
- on(target, 'scroll', this.state.scrollUpdate)
+ dom.on(target, 'scroll', this.state.scrollUpdate)
}
}
}
}
_removeEventListeners() {
- off(window, 'resize', this.state.updateBoundFn)
+ dom.off(window, 'resize', this.state.updateBoundFn)
if (this._options.boundariesElement !== 'window' && this.state.scrollTarget) {
- off(this.state.scrollTarget, 'scroll', this.state.scrollUpdate)
+ dom.off(this.state.scrollTarget, 'scroll', this.state.scrollUpdate)
this.state.scrollTarget = null
// 移除祖先监听
@@ -842,7 +842,7 @@ class Popper {
let targets = this.state.scrollTargets || []
targets.forEach((target) => {
- off(target, 'scroll', this.state.scrollUpdate)
+ dom.off(target, 'scroll', this.state.scrollUpdate)
})
this.state.scrollTargets = null
}
diff --git a/packages/renderless/src/common/deps/popup-manager.ts b/packages/renderless/src/common/deps/popup-manager.ts
index 1295304e1c..29ab6fb042 100644
--- a/packages/renderless/src/common/deps/popup-manager.ts
+++ b/packages/renderless/src/common/deps/popup-manager.ts
@@ -11,7 +11,7 @@
*/
import { KEY_CODE } from '../index'
-import { addClass, removeClass, on } from './dom'
+import { dom as doms } from '@opentiny/utils'
const isServer = typeof window === 'undefined'
@@ -104,19 +104,19 @@ const PopupManager = {
// 查询或创建一个modalDom----遮罩层, 为其赋值所有class ,style
const modalDom = getModal()
- addClass(modalDom, classes.modal)
+ doms.addClass(modalDom, classes.modal)
if (this.modalFade && !PopupManager.hasModal) {
- addClass(modalDom, classes.enter)
+ doms.addClass(modalDom, classes.enter)
}
if (modalClass) {
const classArr = modalClass.trim().split(/\s+/)
- classArr.forEach((cls) => addClass(modalDom, cls))
+ classArr.forEach((cls) => doms.addClass(modalDom, cls))
}
setTimeout(() => {
- removeClass(modalDom, classes.enter)
+ doms.removeClass(modalDom, classes.enter)
}, 200)
if (zIndex) {
@@ -163,7 +163,7 @@ const PopupManager = {
if (topPopup.id === id) {
if (topPopup.modalClass) {
const classArr = topPopup.modalClass.trim().split(/\s+/)
- classArr.forEach((cls) => removeClass(modalDom, cls))
+ classArr.forEach((cls) => doms.removeClass(modalDom, cls))
}
modalStack.pop()
@@ -179,8 +179,8 @@ const PopupManager = {
}
if (modalStack.length === 0) {
- this.modalFade && addClass(modalDom, classes.leave)
- removeClass(document.body, this.popLockClass)
+ this.modalFade && doms.addClass(modalDom, classes.leave)
+ doms.removeClass(document.body, this.popLockClass)
this.resetBodyBorder()
setTimeout(() => {
@@ -193,7 +193,7 @@ const PopupManager = {
PopupManager.modalDom = null as unknown as HTMLElement
}
- removeClass(modalDom, classes.leave)
+ doms.removeClass(modalDom, classes.leave)
}, 200)
}
}
@@ -223,7 +223,7 @@ getModal = () => {
{ passive: true }
)
- on(modalDom, 'click', () => {
+ doms.on(modalDom, 'click', () => {
PopupManager.doOnModalClick()
})
}
@@ -233,7 +233,7 @@ getModal = () => {
if (!isServer) {
// 点esc时,关闭栈顶Popup。 也就是说组件内不用关心esc了, 这里统一接管了
- on(window, 'keydown', (event: KeyboardEvent) => {
+ doms.on(window, 'keydown', (event: KeyboardEvent) => {
if (event.keyCode === KEY_CODE.Escape) {
const modalStack = PopupManager.modalStack
diff --git a/packages/renderless/src/common/deps/repeat-click.ts b/packages/renderless/src/common/deps/repeat-click.ts
index 76953bd37c..50012925f0 100644
--- a/packages/renderless/src/common/deps/repeat-click.ts
+++ b/packages/renderless/src/common/deps/repeat-click.ts
@@ -10,7 +10,7 @@
*
*/
-import { on, once } from './dom'
+import { dom } from '@opentiny/utils'
export default (el, binding) => {
// fix issue#919
@@ -32,13 +32,13 @@ export default (el, binding) => {
interval = null
}
- on(el, 'mousedown', (e) => {
+ dom.on(el, 'mousedown', (e) => {
if (e.button !== 0) {
return
}
startTime = Date.now()
- once(document, 'mouseup', clear)
+ dom.once(document, 'mouseup', clear)
clearInterval(interval)
interval = setInterval(handler, LONG_PRESS_INTERVAL)
})
diff --git a/packages/renderless/src/common/deps/useEventListener.ts b/packages/renderless/src/common/deps/useEventListener.ts
index a6a4019282..5f7034c9b2 100644
--- a/packages/renderless/src/common/deps/useEventListener.ts
+++ b/packages/renderless/src/common/deps/useEventListener.ts
@@ -1,5 +1,4 @@
-import { on, off, isServer } from './dom'
-
+import { dom } from '@opentiny/utils'
export const onMountedOrActivated =
({ onMounted, onActivated, nextTick }) =>
(hook) => {
@@ -15,7 +14,7 @@ export const onMountedOrActivated =
export const useEventListener =
({ unref, isRef, watch, nextTick, onMounted, onUnmounted, onActivated, onDeactivated }) =>
(type, listener, options = {}) => {
- if (isServer) return
+ if (dom.isServer) return
const { target = window, passive = false, capture = false } = options
@@ -28,7 +27,7 @@ export const useEventListener =
const element = unref(target)
if (element && !attached) {
- on(element, type, listener, { capture, passive })
+ dom.on(element, type, listener, { capture, passive })
attached = true
}
}
@@ -39,7 +38,7 @@ export const useEventListener =
const element = unref(target)
if (element && attached) {
- off(element, type, listener, { capture, passive })
+ dom.off(element, type, listener, { capture, passive })
attached = false
}
}
diff --git a/packages/renderless/src/common/deps/useUserAgent.ts b/packages/renderless/src/common/deps/useUserAgent.ts
index aaa8d33e08..1c6a2d3571 100644
--- a/packages/renderless/src/common/deps/useUserAgent.ts
+++ b/packages/renderless/src/common/deps/useUserAgent.ts
@@ -1,7 +1,7 @@
-import { isServer } from './dom'
+import { dom } from '@opentiny/utils'
function getIsIOS() {
- if (isServer) return false
+ if (dom.isServer) return false
return (
window.navigator &&
window.navigator.userAgent &&
diff --git a/packages/renderless/src/common/deps/useWindowSize.ts b/packages/renderless/src/common/deps/useWindowSize.ts
index 487d57cee2..5f4e2ac324 100644
--- a/packages/renderless/src/common/deps/useWindowSize.ts
+++ b/packages/renderless/src/common/deps/useWindowSize.ts
@@ -1,4 +1,4 @@
-import { on, isServer } from './dom'
+import { dom } from '@opentiny/utils'
let width
let height
@@ -8,7 +8,7 @@ export const useWindowSize = (ref) => () => {
width = ref(0)
height = ref(0)
- if (!isServer) {
+ if (!dom.isServer) {
const update = () => {
width.value = window.innerWidth
height.value = window.innerHeight
@@ -16,8 +16,8 @@ export const useWindowSize = (ref) => () => {
update()
- on(window, 'resize', update, { passive: true })
- on(window, 'orientationchange', update, { passive: true })
+ dom.on(window, 'resize', update, { passive: true })
+ dom.on(window, 'orientationchange', update, { passive: true })
}
}
diff --git a/packages/renderless/src/common/deps/vue-popper.ts b/packages/renderless/src/common/deps/vue-popper.ts
index 409d7bb99c..c3cf39c1c7 100644
--- a/packages/renderless/src/common/deps/vue-popper.ts
+++ b/packages/renderless/src/common/deps/vue-popper.ts
@@ -12,7 +12,7 @@
import PopupManager from './popup-manager'
import PopperJS from './popper'
-import { on, off, isDisplayNone } from './dom'
+import { dom } from '@opentiny/utils'
import type { ISharedRenderlessFunctionParams } from 'types/shared.type'
import type Popper from './popper'
@@ -114,7 +114,7 @@ export default (options: IPopperInputParams) => {
const { followReferenceHide = true } = props?.popperOptions || {}
const { _popper: popper, _reference: reference } = popperInstance
- if (followReferenceHide && isDisplayNone(reference)) {
+ if (followReferenceHide && dom.isDisplayNone(reference)) {
popper.style.display = 'none'
}
}
@@ -173,7 +173,7 @@ export default (options: IPopperInputParams) => {
state.popperJS._popper.style.zIndex = nextZIndex(state.popperJS._reference)
followHide(state.popperJS)
- on(state.popperElm, 'click', stop)
+ dom.on(state.popperElm, 'click', stop)
}
/** 第一次 updatePopper 的时候,才真正执行创建
@@ -217,7 +217,7 @@ export default (options: IPopperInputParams) => {
if (remove) {
// 当popper中嵌套popper时,内层popper被移除后不会重新创建,因此onDeactivated不将内层popper移除
if (state.popperElm && state.popperElm.parentNode === document.body) {
- off(state.popperElm, 'click', stop)
+ dom.off(state.popperElm, 'click', stop)
state.popperElm.remove()
}
}
diff --git a/packages/renderless/src/common/deps/vue-popup.ts b/packages/renderless/src/common/deps/vue-popup.ts
index 7e137bc874..6e4c7d8030 100644
--- a/packages/renderless/src/common/deps/vue-popup.ts
+++ b/packages/renderless/src/common/deps/vue-popup.ts
@@ -12,7 +12,7 @@
import { merge } from '../object'
import PopupManager from './popup-manager'
-import { addClass } from './dom'
+import { dom } from '@opentiny/utils'
import type { ISharedRenderlessFunctionParams } from 'types/shared.type'
let idSeed = 1
@@ -122,7 +122,7 @@ const openFn =
if (props.lockScroll) {
// 必须先计算宽度,再添加popLockClass。 下面2行不能交换
PopupManager.fixBodyBorder()
- addClass(document.body, PopupManager.popLockClass)
+ dom.addClass(document.body, PopupManager.popLockClass)
}
}
diff --git a/packages/renderless/src/common/runtime.ts b/packages/renderless/src/common/runtime.ts
index 32a38c9a01..4579a3bf36 100644
--- a/packages/renderless/src/common/runtime.ts
+++ b/packages/renderless/src/common/runtime.ts
@@ -25,7 +25,6 @@ import * as dataset from './dataset'
import afterLeave from './deps/after-leave'
import clickoutside from './deps/clickoutside'
import debounce from './deps/debounce'
-import * as dom from './deps/dom'
import popper from './deps/popper'
import popupManager from './deps/popup-manager'
import * as resizeEvent from './deps/resize-event'
@@ -52,7 +51,6 @@ const Renderless = {
afterLeave,
dataset,
clickoutside,
- dom,
debounce,
popper,
resizeEvent,
@@ -81,7 +79,6 @@ export {
afterLeave,
clickoutside,
debounce,
- dom,
popper,
popupManager,
resizeEvent,
diff --git a/packages/renderless/src/crop/index.ts b/packages/renderless/src/crop/index.ts
index 141c27c2e6..6aff302436 100644
--- a/packages/renderless/src/crop/index.ts
+++ b/packages/renderless/src/crop/index.ts
@@ -10,7 +10,7 @@
*
*/
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
import { toFileSize } from '../common/string'
export const watchImageSrc = (state) => (value) => (state.src = value)
@@ -19,9 +19,9 @@ export const watchVisible =
({ api, state }) =>
(value) => {
if (value) {
- on(document.body, 'keydown', api.shortcutKeys)
+ dom.on(document.body, 'keydown', api.shortcutKeys)
} else {
- off(document.body, 'keydown', api.shortcutKeys)
+ dom.off(document.body, 'keydown', api.shortcutKeys)
}
state.cropvisible = value
diff --git a/packages/renderless/src/date-panel/index.ts b/packages/renderless/src/date-panel/index.ts
index 618cfb039a..de6f372f13 100644
--- a/packages/renderless/src/date-panel/index.ts
+++ b/packages/renderless/src/date-panel/index.ts
@@ -30,7 +30,7 @@ import {
extractTimeFormat
} from '../common/deps/date-util'
import { DATEPICKER } from '../common'
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
import { getDateWithNewTimezone, getLocalTimezone } from '../common/date'
import { fillChar } from '../common/string'
@@ -400,14 +400,14 @@ export const resetView =
}
export const handleEnter = (api) => () => {
- on(document.body, 'keydown', api.handleKeydown)
+ dom.on(document.body, 'keydown', api.handleKeydown)
}
export const handleLeave =
({ api, emit }) =>
() => {
emit('dodestroy')
- off(document.body, 'keydown', api.handleKeydown)
+ dom.off(document.body, 'keydown', api.handleKeydown)
}
export const handleKeydown =
diff --git a/packages/renderless/src/dialog-box/index.ts b/packages/renderless/src/dialog-box/index.ts
index 7a9bccbd4c..3ca4233ce0 100644
--- a/packages/renderless/src/dialog-box/index.ts
+++ b/packages/renderless/src/dialog-box/index.ts
@@ -10,9 +10,8 @@
*
*/
-import { on, off, addClass, removeClass } from '../common/deps/dom'
import { emitEvent } from '../common/event'
-import { getDomNode } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
import type { IDialogBoxRenderlessParams, IDialogBoxStyle } from '@/types'
export const computedAnimationName =
@@ -93,7 +92,7 @@ export const watchVisible =
state.closed = false
emit('open')
/* istanbul ignore next */
- on(el, 'scroll', api.updatePopper)
+ dom.on(el, 'scroll', api.updatePopper)
nextTick(() => {
vm.$refs.dialog.scrollTop = 0
@@ -104,7 +103,7 @@ export const watchVisible =
}
} else {
/* istanbul ignore next */
- off(el, 'scroll', api.updatePopper)
+ dom.off(el, 'scroll', api.updatePopper)
if (!state.closed) {
state.emitter.emit('boxclose', props.isFormReset)
@@ -306,7 +305,7 @@ export const handleDrag =
let demMouseup = document.onmouseup
let disX = event.clientX - modalBoxElem.offsetLeft
let disY = event.clientY - modalBoxElem.offsetTop
- let { visibleHeight, visibleWidth } = getDomNode()
+ let { visibleHeight, visibleWidth } = dom.getDomNode()
document.onmousemove = (event) => {
event.preventDefault()
@@ -358,11 +357,11 @@ export const handleDrag =
}
export const showScrollbar = (lockScrollClass: string) => (): void => {
- addClass(document.body, lockScrollClass)
+ dom.addClass(document.body, lockScrollClass)
}
export const hideScrollbar = (lockScrollClass: string) => (): void => {
- removeClass(document.body, lockScrollClass)
+ dom.removeClass(document.body, lockScrollClass)
}
// tiny 新增
diff --git a/packages/renderless/src/drawer/index.ts b/packages/renderless/src/drawer/index.ts
index a8c5ca1e89..72145c02ef 100644
--- a/packages/renderless/src/drawer/index.ts
+++ b/packages/renderless/src/drawer/index.ts
@@ -1,5 +1,5 @@
import debounce from '../common/deps/debounce'
-import { addClass, removeClass } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
import type { IDrawerState, IDrawerApi, IDrawerCT, ISharedRenderlessParamUtils, IDrawerRenderlessParams } from '@/types'
export const computedWidth =
@@ -169,9 +169,9 @@ export const removeDragEvent =
}
export const showScrollbar = (lockScrollClass: string) => () => {
- addClass(document.body, lockScrollClass)
+ dom.addClass(document.body, lockScrollClass)
}
export const hideScrollbar = (lockScrollClass: string) => () => {
- removeClass(document.body, lockScrollClass)
+ dom.removeClass(document.body, lockScrollClass)
}
diff --git a/packages/renderless/src/dropdown-item/index.ts b/packages/renderless/src/dropdown-item/index.ts
index c96d6386dd..49ff3465d5 100644
--- a/packages/renderless/src/dropdown-item/index.ts
+++ b/packages/renderless/src/dropdown-item/index.ts
@@ -16,7 +16,7 @@ import type {
IDropdownItemTag,
IDropdownItemOptionStyle
} from '@/types'
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
export const getTitle = (props: IDropdownItemRenderlessParams['props']) => (): string => {
if (props.title) {
@@ -31,7 +31,7 @@ export const getTitle = (props: IDropdownItemRenderlessParams['props']) => (): s
export const bindScroll =
({ api, parent }: Pick) =>
(value): void => {
- const action = value ? on : off
+ const action = value ? dom.on : dom.off
action(parent.state.scroller, 'scroll', api.onScroll, true)
}
diff --git a/packages/renderless/src/dropdown/index.ts b/packages/renderless/src/dropdown/index.ts
index 136a1fd2f3..a4dc19c9fa 100644
--- a/packages/renderless/src/dropdown/index.ts
+++ b/packages/renderless/src/dropdown/index.ts
@@ -12,7 +12,7 @@
import type { IDropdownRenderlessParams } from '@/types'
import { KEY_CODE } from '../common'
-import { addClass, removeClass, on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
export const watchVisible =
({ broadcast, emit, nextTick }: Pick) =>
@@ -34,7 +34,7 @@ export const watchFocusing = (parent: IDropdownRenderlessParams['parent']) => (v
const selfDefine: HTMLElement | null = parent.$el.querySelector('.tiny-dropdown-selfdefine')
if (selfDefine) {
- value ? addClass(selfDefine, 'focusing') : removeClass(selfDefine, 'focusing')
+ value ? dom.addClass(selfDefine, 'focusing') : dom.removeClass(selfDefine, 'focusing')
}
}
@@ -184,7 +184,7 @@ export const initAria =
if (!props.splitButton || !props.singleButton) {
state.triggerElm?.setAttribute('role', 'button')
state.triggerElm?.setAttribute('tabindex', String(props.tabindex))
- addClass(state.triggerElm, 'tiny-dropdown-selfdefine')
+ dom.addClass(state.triggerElm, 'tiny-dropdown-selfdefine')
}
}
@@ -201,13 +201,13 @@ export const initEvent =
state.triggerElm = buttonValue ? vm.$refs.trigger.$el : props.border ? vm.$refs.trigger.$el : vm.$refs.trigger
- on(state.triggerElm, 'keydown', api.handleTriggerKeyDown)
+ dom.on(state.triggerElm, 'keydown', api.handleTriggerKeyDown)
state.dropdownElm?.addEventListener('keydown', api.handleItemKeyDown, true)
if (!props.splitButton || !props.singleButton) {
- on(state.triggerElm, 'focus', api.toggleFocusOnTrue)
- on(state.triggerElm, 'blur', api.toggleFocusOnFalse)
- on(state.triggerElm, 'click', api.toggleFocusOnFalse)
+ dom.on(state.triggerElm, 'focus', api.toggleFocusOnTrue)
+ dom.on(state.triggerElm, 'blur', api.toggleFocusOnFalse)
+ dom.on(state.triggerElm, 'click', api.toggleFocusOnFalse)
}
if (state.visibleIsBoolean) {
@@ -215,12 +215,12 @@ export const initEvent =
}
if (state.trigger === 'hover') {
- on(state.triggerElm, 'mouseenter', api.show)
- on(state.triggerElm, 'mouseleave', api.hide)
- on(state.dropdownElm, 'mouseenter', api.show)
- on(state.dropdownElm, 'mouseleave', api.hide)
+ dom.on(state.triggerElm, 'mouseenter', api.show)
+ dom.on(state.triggerElm, 'mouseleave', api.hide)
+ dom.on(state.dropdownElm, 'mouseenter', api.show)
+ dom.on(state.dropdownElm, 'mouseleave', api.hide)
} else if (state.trigger === 'click') {
- on(state.triggerElm, 'click', api.handleClick)
+ dom.on(state.triggerElm, 'click', api.handleClick)
}
if (mode === 'mobile-first') {
@@ -294,21 +294,21 @@ export const beforeDistory =
({ vm, api, state }: Pick) =>
() => {
if (state.triggerElm) {
- off(state.triggerElm, 'keydown', api.handleTriggerKeyDown)
- off(state.triggerElm, 'focus', api.toggleFocusOnTrue)
- off(state.triggerElm, 'blur', api.toggleFocusOnFalse)
- off(state.triggerElm, 'click', api.toggleFocusOnFalse)
- off(state.triggerElm, 'mouseenter', api.show)
- off(state.triggerElm, 'mouseleave', api.hide)
- off(state.triggerElm, 'click', api.handleClick)
+ dom.off(state.triggerElm, 'keydown', api.handleTriggerKeyDown)
+ dom.off(state.triggerElm, 'focus', api.toggleFocusOnTrue)
+ dom.off(state.triggerElm, 'blur', api.toggleFocusOnFalse)
+ dom.off(state.triggerElm, 'click', api.toggleFocusOnFalse)
+ dom.off(state.triggerElm, 'mouseenter', api.show)
+ dom.off(state.triggerElm, 'mouseleave', api.hide)
+ dom.off(state.triggerElm, 'click', api.handleClick)
state.triggerElm = null
}
if (state.dropdownElm) {
state.dropdownElm.removeEventListener('keydown', api.handleItemKeyDown, true)
- off(state.dropdownElm, 'mouseenter', api.show)
- off(state.dropdownElm, 'mouseleave', api.hide)
+ dom.off(state.dropdownElm, 'mouseenter', api.show)
+ dom.off(state.dropdownElm, 'mouseleave', api.hide)
state.dropdownElm = null
}
diff --git a/packages/renderless/src/fall-menu/index.ts b/packages/renderless/src/fall-menu/index.ts
index 1a4fd62d88..b4530ce673 100644
--- a/packages/renderless/src/fall-menu/index.ts
+++ b/packages/renderless/src/fall-menu/index.ts
@@ -11,7 +11,7 @@
*/
import { REFRESH_INTERVAL } from '../common'
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
import PopupManager from '../common/deps/popup-manager'
import { xss } from '@opentiny/utils'
import type { IFallMenuApi, IFallMenuState, IFallMenuProps, IPagerData } from '@/types'
@@ -117,11 +117,11 @@ export const mounted =
({ api }) =>
() => {
api.computePx()
- on(window, 'resize', api.reRender)
+ dom.on(window, 'resize', api.reRender)
}
/* istanbul ignore next */
-export const beforeDestroy = (api) => () => off(window, 'resize', api.reRender)
+export const beforeDestroy = (api) => () => dom.off(window, 'resize', api.reRender)
export const computeLeft =
({ state }) =>
diff --git a/packages/renderless/src/filter-panel/vue.ts b/packages/renderless/src/filter-panel/vue.ts
index c3da1907d0..d2d0d4fa1d 100644
--- a/packages/renderless/src/filter-panel/vue.ts
+++ b/packages/renderless/src/filter-panel/vue.ts
@@ -1,5 +1,5 @@
import { doDestroy, show, hide, popoverShow, popoverHide, handleClear, handleDocumentClick, togglePanel } from './index'
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
export const api = ['state', 'doDestroy', 'show', 'hide', 'popoverShow', 'popoverHide', 'handleClear', 'togglePanel']
@@ -23,11 +23,11 @@ export const renderless = (props, { reactive, onMounted, onBeforeUnmount }, { vm
handleDocumentClick
onMounted(() => {
- on(document, 'click', api.handleDocumentClick)
+ dom.on(document, 'click', api.handleDocumentClick)
})
onBeforeUnmount(() => {
- off(document, 'click', api.handleDocumentClick)
+ dom.off(document, 'click', api.handleDocumentClick)
})
return api
diff --git a/packages/renderless/src/filter/vue.ts b/packages/renderless/src/filter/vue.ts
index 3076dad159..1f614f55ae 100644
--- a/packages/renderless/src/filter/vue.ts
+++ b/packages/renderless/src/filter/vue.ts
@@ -1,4 +1,4 @@
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
import {
panelToggle,
@@ -60,13 +60,13 @@ export const renderless = (props, { reactive, computed, onMounted, onBeforeUnmou
})
onMounted(() => {
- on(window, 'scroll', api.resize)
- on(window, 'resize', api.resize)
+ dom.on(window, 'scroll', api.resize)
+ dom.on(window, 'resize', api.resize)
})
onBeforeUnmount(() => {
- off(window, 'scroll', api.resize)
- off(window, 'resize', api.resize)
+ dom.off(window, 'scroll', api.resize)
+ dom.off(window, 'resize', api.resize)
})
return api
diff --git a/packages/renderless/src/floating-button/index.ts b/packages/renderless/src/floating-button/index.ts
index 39f935876c..39e740b3b8 100644
--- a/packages/renderless/src/floating-button/index.ts
+++ b/packages/renderless/src/floating-button/index.ts
@@ -1,4 +1,4 @@
-import { off, on } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
export const getClientWidth =
({ state, vm }) =>
@@ -35,9 +35,9 @@ export const clearTimer =
() => {
clearTimeout(state.initTimer)
- off(window, 'resize', api.getClientWidth)
- off(window, 'scroll', api.onScroll)
- off(window, 'scroll', api.getScrollListener)
+ dom.off(window, 'resize', api.getClientWidth)
+ dom.off(window, 'scroll', api.onScroll)
+ dom.off(window, 'scroll', api.getScrollListener)
}
export const getScrollListener =
@@ -147,5 +147,5 @@ export const mounted = (api) => () => {
api.getClientWidth()
api.onScroll()
api.getExpandList()
- on(window, 'resize', api.getClientWidth)
+ dom.on(window, 'resize', api.getClientWidth)
}
diff --git a/packages/renderless/src/fluent-editor/index.ts b/packages/renderless/src/fluent-editor/index.ts
index e562e62d83..98c0f26862 100644
--- a/packages/renderless/src/fluent-editor/index.ts
+++ b/packages/renderless/src/fluent-editor/index.ts
@@ -2,7 +2,7 @@ import { extend } from '../common/object'
import { type as _type } from '@opentiny/utils'
import { xss } from '@opentiny/utils'
import { set } from '../chart-core/deps/utils'
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
import PopupManager from '../common/deps/popup-manager'
export const init =
@@ -149,13 +149,13 @@ export const keyDownHandler =
export const addFullscreenchange =
({ api }) =>
() => {
- on(document, 'keydown', api.keyDownHandler)
+ dom.on(document, 'keydown', api.keyDownHandler)
}
export const removeFullscreenchange =
({ api }) =>
() => {
- off(document, 'keydown', api.keyDownHandler)
+ dom.off(document, 'keydown', api.keyDownHandler)
api.keyDownHandler = null
}
@@ -163,15 +163,15 @@ export const removeFullscreenchange =
export const handleComposition =
({ state, api }) =>
() => {
- on(state.quill.root, 'compositionstart', api.handleCompositionstart)
- on(state.quill.root, 'compositionend', api.handleCompositionend)
+ dom.on(state.quill.root, 'compositionstart', api.handleCompositionstart)
+ dom.on(state.quill.root, 'compositionend', api.handleCompositionend)
}
export const removeHandleComposition =
({ state, api }) =>
() => {
- off(state.quill.root, 'compositionstart', api.handleCompositionstart)
- off(state.quill.root, 'compositionend', api.handleCompositionend)
+ dom.off(state.quill.root, 'compositionstart', api.handleCompositionstart)
+ dom.off(state.quill.root, 'compositionend', api.handleCompositionend)
}
// 开始输入中文
diff --git a/packages/renderless/src/fullscreen/index.ts b/packages/renderless/src/fullscreen/index.ts
index 3c7ad82cc9..d3526cd884 100644
--- a/packages/renderless/src/fullscreen/index.ts
+++ b/packages/renderless/src/fullscreen/index.ts
@@ -10,7 +10,7 @@
*
*/
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
export const toggle =
({ state, api }) =>
@@ -35,8 +35,8 @@ export const request =
state.isFullscreen = true
api.onChangeFullScreen()
- off(document, 'keyup', api.keypressCallback)
- on(document, 'keyup', api.keypressCallback)
+ dom.off(document, 'keyup', api.keypressCallback)
+ dom.on(document, 'keyup', api.keypressCallback)
} else {
sf.off('change', api.fullScreenCallback)
sf.on('change', api.fullScreenCallback)
@@ -71,7 +71,7 @@ export const exit =
state.isFullscreen = false
api.onChangeFullScreen()
- off(document, 'keyup', api.keypressCallback)
+ dom.off(document, 'keyup', api.keypressCallback)
} else {
sf.exit()
}
diff --git a/packages/renderless/src/grid/utils/dom.ts b/packages/renderless/src/grid/utils/dom.ts
index 8cbf00d328..239ff8c8c3 100644
--- a/packages/renderless/src/grid/utils/dom.ts
+++ b/packages/renderless/src/grid/utils/dom.ts
@@ -24,7 +24,7 @@
*/
import { getRowid } from './common'
-import { hasClass, getDomNode } from '../../common/deps/dom'
+import { dom } from '@opentiny/utils'
import { getActualTarget } from '../../common/event'
import { arrayIndexOf } from '../static'
@@ -193,7 +193,7 @@ export const getEventTargetNode = (event, container, queryCls) => {
let target = getActualTarget(event)
while (target && target.nodeType && target !== document) {
- if (queryCls && (hasClass(target, queryCls) || hasDataTag(target, queryCls))) {
+ if (queryCls && (dom.hasClass(target, queryCls) || hasDataTag(target, queryCls))) {
targetEl = target
} else if (target === container) {
return {
@@ -238,7 +238,7 @@ export const getOffsetPos = (el, container) => getNodeOffset(el, container, { le
export const getAbsolutePos = (el) => {
const bounding = el.getBoundingClientRect()
- const { scrollTop, scrollLeft } = getDomNode()
+ const { scrollTop, scrollLeft } = dom.getDomNode()
return {
top: scrollTop + bounding.top,
@@ -309,6 +309,4 @@ export const getCell = ($table, { row, column }) =>
)
)
})
- })
-
-export { getDomNode }
+ })
\ No newline at end of file
diff --git a/packages/renderless/src/grid/utils/event.ts b/packages/renderless/src/grid/utils/event.ts
index e5109ac3d6..ed502ab6c7 100644
--- a/packages/renderless/src/grid/utils/event.ts
+++ b/packages/renderless/src/grid/utils/event.ts
@@ -25,7 +25,7 @@
import browser from '../../common/browser'
import { remove } from '../static'
-import { on } from '../../common/deps/dom'
+import { dom } from '@opentiny/utils'
// 监听全局事件
const wheelName = browser.isDoc && /Firefox/i.test(navigator.userAgent) ? 'DOMMouseScroll' : 'mousewheel'
@@ -55,13 +55,13 @@ const GlobalEvent = {
}
if (browser.isDoc) {
- on(document, 'keydown', GlobalEvent.trigger)
- on(document, 'contextmenu', GlobalEvent.trigger)
- on(window, 'mousedown', GlobalEvent.trigger)
- on(window, 'mousedown', GlobalEvent.capture, true)
- on(window, 'blur', GlobalEvent.trigger)
- on(window, 'resize', GlobalEvent.trigger)
- on(window, wheelName, GlobalEvent.trigger)
+ dom.on(document, 'keydown', GlobalEvent.trigger)
+ dom.on(document, 'contextmenu', GlobalEvent.trigger)
+ dom.on(window, 'mousedown', GlobalEvent.trigger)
+ dom.on(window, 'mousedown', GlobalEvent.capture, true)
+ dom.on(window, 'blur', GlobalEvent.trigger)
+ dom.on(window, 'resize', GlobalEvent.trigger)
+ dom.on(window, wheelName, GlobalEvent.trigger)
}
export default GlobalEvent
diff --git a/packages/renderless/src/image-viewer/index.ts b/packages/renderless/src/image-viewer/index.ts
index 48a110f8bf..16c8233423 100644
--- a/packages/renderless/src/image-viewer/index.ts
+++ b/packages/renderless/src/image-viewer/index.ts
@@ -10,10 +10,9 @@
*
*/
-import { on, off } from '../common/deps/dom'
import { KEY_CODE } from '../common'
import PopupManager from '../common/deps/popup-manager'
-import { xss } from '@opentiny/utils'
+import { xss, dom } from '@opentiny/utils'
import { isBrowser } from '../common/browser'
const isFirefox = () => (isBrowser ? !!window.navigator.userAgent.match(/firefox/i) : false)
@@ -48,7 +47,7 @@ export const hide =
export const deviceSupportInstall =
({ state, api, mode }) =>
() => {
- on(window, 'resize', api.initPage)
+ dom.on(window, 'resize', api.initPage)
state.urlList = state.urlList.map((subItem) => {
let subItemObj = {}
@@ -127,15 +126,15 @@ export const deviceSupportInstall =
}
})
- on(document, 'keydown', state._keyDownHandler)
- mode !== 'mobile-first' && on(document, mousewheelEventName, state._mouseWheelHandler)
+ dom.on(document, 'keydown', state._keyDownHandler)
+ mode !== 'mobile-first' && dom.on(document, mousewheelEventName, state._mouseWheelHandler)
}
export const deviceSupportUninstall =
({ state, mode }) =>
() => {
- off(document, 'keydown', state._keyDownHandler)
- mode !== 'mobile-first' && off(document, mousewheelEventName, state._mouseWheelHandler)
+ dom.off(document, 'keydown', state._keyDownHandler)
+ mode !== 'mobile-first' && dom.off(document, mousewheelEventName, state._mouseWheelHandler)
state._keyDownHandler = null
state._mouseWheelHandler = null
@@ -164,21 +163,21 @@ export const handleMouseDown = (state) => (event) => {
state.transform.offsetY = offsetY + event.pageY - startY
})
- on(document, 'mousemove', state._dragHandler)
+ dom.on(document, 'mousemove', state._dragHandler)
- state._removeDrag = () => off(document, 'mousemove', state._dragHandler)
+ state._removeDrag = () => dom.off(document, 'mousemove', state._dragHandler)
if (state._clearMouse) {
state._clearMouse()
state._clearMouse = undefined
}
- on(document, 'mouseup', state._removeDrag)
- on(document, 'mouseleave', state._removeDrag)
+ dom.on(document, 'mouseup', state._removeDrag)
+ dom.on(document, 'mouseleave', state._removeDrag)
state._clearMouse = () => {
- off(document, 'mouseup', state._removeDrag)
- off(document, 'mouseleave', state._removeDrag)
+ dom.off(document, 'mouseup', state._removeDrag)
+ dom.off(document, 'mouseleave', state._removeDrag)
}
event.preventDefault()
@@ -786,7 +785,7 @@ export const initPage =
export const beforeDestroy =
({ api, state }) =>
() => {
- off(window, 'resize', api.initPage)
+ dom.off(window, 'resize', api.initPage)
if (state._clearMouse) {
state._clearMouse()
diff --git a/packages/renderless/src/image/index.ts b/packages/renderless/src/image/index.ts
index 18ea2b5181..1db6a3e418 100644
--- a/packages/renderless/src/image/index.ts
+++ b/packages/renderless/src/image/index.ts
@@ -11,8 +11,7 @@
*/
import type { IImageProps, IImageRenderlessParams, IImageState } from '@/types'
-import { on, off, getScrollContainer, isInContainer } from '../common/deps/dom'
-import { type } from '@opentiny/utils'
+import { type, dom } from '@opentiny/utils'
import { rafThrottle } from '../image-viewer'
import { xss } from '@opentiny/utils'
@@ -92,7 +91,7 @@ export const handleSwitch =
export const handleLazyLoad =
({ state, api, vm, nextTick }: Pick) =>
() => {
- if (isInContainer(vm.$el, state._scrollContainer as HTMLElement)) {
+ if (dom.isInContainer(vm.$el, state._scrollContainer as HTMLElement)) {
nextTick(() => (state.show = true))
api.removeLazyLoadListener()
}
@@ -109,13 +108,13 @@ export const addLazyLoadListener =
} else if (type.typeOf(scrollContainer) === 'string') {
_scrollContainer = document.querySelector(scrollContainer as string)!
} else {
- _scrollContainer = getScrollContainer(vm.$el) as HTMLElement
+ _scrollContainer = dom.getScrollContainer(vm.$el) as HTMLElement
}
if (_scrollContainer) {
state._scrollContainer = _scrollContainer
state._lazyLoadHandler = rafThrottle(api.handleLazyLoad)
- on(_scrollContainer, 'scroll', state._lazyLoadHandler)
+ dom.on(_scrollContainer, 'scroll', state._lazyLoadHandler)
api.handleLazyLoad()
}
}
@@ -127,7 +126,7 @@ export const removeLazyLoadListener = (state: IImageState) => () => {
return
}
- off(_scrollContainer, 'scroll', _lazyLoadHandler)
+ dom.off(_scrollContainer, 'scroll', _lazyLoadHandler)
state._scrollContainer = null
state._lazyLoadHandler = null
}
diff --git a/packages/renderless/src/input/vue.ts b/packages/renderless/src/input/vue.ts
index 9fbe4773a5..50dd69e8a4 100644
--- a/packages/renderless/src/input/vue.ts
+++ b/packages/renderless/src/input/vue.ts
@@ -56,7 +56,7 @@ import {
handleTextareaMouseUp
} from './index'
import useStorageBox from '../tall-storage/vue-storage-box'
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
export const api = [
'blur',
@@ -407,7 +407,7 @@ export const renderless = (
if (props.type === 'textarea' && props.popupMore && state.isDisplayOnly) {
api.setShowMoreBtn(true)
- on(window, 'resize', api.setShowMoreBtn)
+ dom.on(window, 'resize', api.setShowMoreBtn)
}
if (vm.$attrs.autofocus) {
@@ -417,7 +417,7 @@ export const renderless = (
onBeforeUnmount(() => {
if (props.type === 'textarea' && props.popupMore && state.isDisplayOnly) {
- off(window, 'resize', api.setShowMoreBtn)
+ dom.off(window, 'resize', api.setShowMoreBtn)
}
})
diff --git a/packages/renderless/src/load-list/index.ts b/packages/renderless/src/load-list/index.ts
index c3cfc51824..1c453812e3 100644
--- a/packages/renderless/src/load-list/index.ts
+++ b/packages/renderless/src/load-list/index.ts
@@ -1,5 +1,4 @@
-import { isDisplayNone } from '../common/deps/dom'
-
+import { dom } from '@opentiny/utils'
export const clickList =
({ emit, props }) =>
() => {
@@ -30,7 +29,7 @@ export const check =
const offset = +props.offset
const scrollParentRect = api.useRect(state.scroller)
- if (!scrollParentRect.height || isDisplayNone(vm.$el)) {
+ if (!scrollParentRect.height || dom.isDisplayNone(vm.$el)) {
return
}
diff --git a/packages/renderless/src/load-list/vue.ts b/packages/renderless/src/load-list/vue.ts
index 7d01b370e4..2d0c52e59c 100644
--- a/packages/renderless/src/load-list/vue.ts
+++ b/packages/renderless/src/load-list/vue.ts
@@ -1,5 +1,5 @@
import { clickList, check, clickErrorText } from './index'
-import { getScrollParent } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
import { useRect } from '../common/deps/useRect'
import { useEventListener } from '../common/deps/useEventListener'
import debounce from '../common/deps/debounce'
@@ -68,7 +68,7 @@ export const renderless = (
})
onMounted(() => {
- state.scrollParent = getScrollParent(vm.$el)
+ state.scrollParent = dom.getScrollParent(vm.$el)
if (props.immediateCheck) {
api.check()
diff --git a/packages/renderless/src/loading/index.ts b/packages/renderless/src/loading/index.ts
index 914b4528d6..2a7405ea74 100644
--- a/packages/renderless/src/loading/index.ts
+++ b/packages/renderless/src/loading/index.ts
@@ -12,7 +12,7 @@
import type { ILoadingRenderlessParamUtils, ILoadingRenderlessParams, ILoadingState } from 'types/loading.type'
import afterLeave from '../common/deps/after-leave'
-import { removeClass } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
export const handleAfterLeave = (emit: ILoadingRenderlessParamUtils['emit']) => (): void => {
emit('after-leave')
@@ -33,8 +33,8 @@ export const close =
const target = state.fullscreen || state.body ? document.body : state.target
if (vm.$el && vm.$el.parentNode) {
- removeClass(target, constants.PARENT_RELATIVE_CLS)
- removeClass(target, constants.PARENT_HIDDEN_CLS)
+ dom.removeClass(target, constants.PARENT_RELATIVE_CLS)
+ dom.removeClass(target, constants.PARENT_HIDDEN_CLS)
vm.$el.parentNode.removeChild(vm.$el)
}
diff --git a/packages/renderless/src/modal/index.ts b/packages/renderless/src/modal/index.ts
index 93eafc826e..b750c3e0f3 100644
--- a/packages/renderless/src/modal/index.ts
+++ b/packages/renderless/src/modal/index.ts
@@ -11,10 +11,8 @@
*/
import { KEY_CODE } from '../common'
-import { on, off, addClass, hasClass, removeClass } from '../common/deps/dom'
import PopupManager from '../common/deps/popup-manager'
-import { getDomNode } from '../common/deps/dom'
-import { global } from '@opentiny/utils'
+import { global, dom } from '@opentiny/utils'
import type {
IModalProps,
@@ -120,14 +118,14 @@ export const mounted =
api.showScrollbar()
}
} else {
- on(window, 'resize', api.resetDragStyle)
+ dom.on(window, 'resize', api.resetDragStyle)
}
if (props.escClosable) {
- on(document, 'keydown', api.handleGlobalKeydownEvent)
+ dom.on(document, 'keydown', api.handleGlobalKeydownEvent)
}
- on(window, 'hashchange', api.handleHashChange)
+ dom.on(window, 'hashchange', api.handleHashChange)
document.body.appendChild(parent.$el)
}
@@ -135,10 +133,10 @@ export const mounted =
export const beforeUnmouted =
({ api, parent, isMobileFirstMode }: Pick) =>
(): void => {
- isMobileFirstMode && off(window, 'resize', api.resetDragStyle)
- off(document, 'keydown', api.handleGlobalKeydownEvent)
- off(window, 'hashchange', api.handleHashChange)
- off(window, 'resize', api.resetModalViewPosition)
+ isMobileFirstMode && dom.off(window, 'resize', api.resetDragStyle)
+ dom.off(document, 'keydown', api.handleGlobalKeydownEvent)
+ dom.off(window, 'hashchange', api.handleHashChange)
+ dom.off(window, 'resize', api.resetModalViewPosition)
api.removeMsgQueue()
api.hideScrollbar()
@@ -299,7 +297,7 @@ export const open =
) {
modalBoxElem.style.top = `${props.marginSize}px`
}
- on(window, 'resize', api.resetModalViewPosition)
+ dom.on(window, 'resize', api.resetModalViewPosition)
}
if (props.fullscreen) {
@@ -414,7 +412,7 @@ export const maximize =
if (!state.zoomLocat) {
let marginSize = props.marginSize
let modalBoxElement = api.getBox()
- let { visibleHeight, visibleWidth } = getDomNode()
+ let { visibleHeight, visibleWidth } = dom.getDomNode()
state.zoomLocat = {
top: modalBoxElement.offsetTop,
@@ -495,7 +493,7 @@ function getEventTargetNode(
let target = event.target as any
while (target && target.nodeType && target !== document) {
- if (queryCls && hasClass(target, queryCls)) {
+ if (queryCls && dom.hasClass(target, queryCls)) {
targetElem = target
} else if (target === container) {
return {
@@ -530,7 +528,7 @@ export const mousedownEvent =
let demMouseup = document.onmouseup
let disX = event.clientX - modalBoxElement.offsetLeft
let disY = event.clientY - modalBoxElement.offsetTop
- let { visibleHeight, visibleWidth } = getDomNode()
+ let { visibleHeight, visibleWidth } = dom.getDomNode()
document.onmousemove = (event) => {
event.preventDefault()
@@ -573,7 +571,7 @@ export const mousedownEvent =
modalBoxElement.style.left = `${left}px`
modalBoxElement.style.top = `${top}px`
- addClass(modalBoxElement, DragClass)
+ dom.addClass(modalBoxElement, DragClass)
emit('custom-mousemove', event)
}
@@ -583,7 +581,7 @@ export const mousedownEvent =
document.onmouseup = demMouseup
nextTick(() => {
- removeClass(modalBoxElement, DragClass)
+ dom.removeClass(modalBoxElement, DragClass)
})
emit('custom-mouseup', event)
@@ -848,7 +846,7 @@ export const dragEvent =
event.preventDefault()
const delta = { x: 0, y: 0 }
- const { visibleHeight, visibleWidth } = getDomNode()
+ const { visibleHeight, visibleWidth } = dom.getDomNode()
const modalBoxElem = api.getBox()
const demMousemove = document.onmousemove
const demMouseup = document.onmouseup
@@ -872,7 +870,7 @@ export const dragEvent =
delta.x = delta.y = 0
- addClass(modalBoxElem, DragClass)
+ dom.addClass(modalBoxElem, DragClass)
emitZoom({
params: { type: 'resize', $modal: parent },
@@ -888,7 +886,7 @@ export const dragEvent =
document.onmouseup = demMouseup
setTimeout(() => {
- removeClass(modalBoxElem, DragClass)
+ dom.removeClass(modalBoxElem, DragClass)
state.prevEvent = null
}, 50)
}
@@ -911,11 +909,11 @@ export const resetDragStyle = (api: IModalApi) => (): void => {
}
export const showScrollbar = (lockScrollClass) => () => {
- addClass(document.body, lockScrollClass)
+ dom.addClass(document.body, lockScrollClass)
}
export const hideScrollbar = (lockScrollClass) => () => {
- removeClass(document.body, lockScrollClass)
+ dom.removeClass(document.body, lockScrollClass)
}
export const resetModalViewPosition = (api: IModalApi) => () => {
diff --git a/packages/renderless/src/month-table/index.ts b/packages/renderless/src/month-table/index.ts
index 61af2c87ad..00b3959524 100644
--- a/packages/renderless/src/month-table/index.ts
+++ b/packages/renderless/src/month-table/index.ts
@@ -11,7 +11,7 @@
*/
import { toDate } from '../common/date'
-import { hasClass } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
import { range as rangeDate, getDayCountOfMonth, nextDate } from '../common/deps/date-util'
import { arrayFindIndex, coerceTruthyValueToArray, arrayFind } from '../date-table'
import { DATEPICKER } from '../common'
@@ -185,7 +185,7 @@ export const handleMonthTableClick =
return
}
- if (hasClass(target, 'disabled')) {
+ if (dom.hasClass(target, 'disabled')) {
return
}
diff --git a/packages/renderless/src/nav-menu/index.ts b/packages/renderless/src/nav-menu/index.ts
index b5cdc128d1..7106678c97 100644
--- a/packages/renderless/src/nav-menu/index.ts
+++ b/packages/renderless/src/nav-menu/index.ts
@@ -22,7 +22,7 @@ import { type } from '@opentiny/utils'
import PopupManager from '../common/deps/popup-manager'
import { mapTree } from '../grid/static'
import { transformTreeData } from '../common/array'
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
import { xss } from '@opentiny/utils'
import { isBrowser } from '../common/browser'
@@ -217,7 +217,7 @@ export const mounted =
(): void => {
api.calcWidth()
- on(window, 'resize', api.calcWidth)
+ dom.on(window, 'resize', api.calcWidth)
if (router) {
state.afterEach = (to) => {
@@ -239,7 +239,7 @@ export const unMounted =
}
state.afterEach = null
- off(window, 'resize', api.calcWidth)
+ dom.off(window, 'resize', api.calcWidth)
}
export const getSelectedIndex =
diff --git a/packages/renderless/src/notify/index.ts b/packages/renderless/src/notify/index.ts
index 22f012b5b0..53fba4c865 100644
--- a/packages/renderless/src/notify/index.ts
+++ b/packages/renderless/src/notify/index.ts
@@ -11,7 +11,7 @@
*/
import { KEY_CODE } from '../common'
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
import PopupManager from '../common/deps/popup-manager'
export const startTimer =
@@ -87,7 +87,7 @@ export const bindEvent =
api.startTimer()
- on(document, 'keydown', api.bindKeyDown)
+ dom.on(document, 'keydown', api.bindKeyDown)
}
-export const unBindEvent = (api) => () => off(document, 'keydown', api.bindKeyDown)
+export const unBindEvent = (api) => () => dom.off(document, 'keydown', api.bindKeyDown)
diff --git a/packages/renderless/src/numeric/index.ts b/packages/renderless/src/numeric/index.ts
index ef5345808d..e49200df2d 100644
--- a/packages/renderless/src/numeric/index.ts
+++ b/packages/renderless/src/numeric/index.ts
@@ -21,10 +21,8 @@ import type {
import type { BigIntDecimal } from '../common/bigInt'
import { formatNumber, roundFixed } from '../common/decimal'
import { getMiniDecimal, lessEquals, equalsDecimal } from '../common/bigInt'
-import { type } from '@opentiny/utils'
-
+import { type, dom } from '@opentiny/utils'
import { MOUSEDELTA } from '../common'
-import { on, off } from '../common/deps/dom'
export const initService = (
service: INumericRenderlessParamUtils['service']
@@ -412,7 +410,7 @@ export const mounted =
setTimeout(() => (state.pasting = false))
}
- on(innerInput, 'paste', state.onPase)
+ dom.on(innerInput, 'paste', state.onPase)
}
export const unmounted =
@@ -420,7 +418,7 @@ export const unmounted =
(): void => {
const innerInput = parent.$el.querySelector('input')
- off(innerInput, 'paste', state.onPase)
+ dom.off(innerInput, 'paste', state.onPase)
}
export const updated =
diff --git a/packages/renderless/src/picker-column/index.ts b/packages/renderless/src/picker-column/index.ts
index b96c9c0b0b..775a10ed55 100644
--- a/packages/renderless/src/picker-column/index.ts
+++ b/packages/renderless/src/picker-column/index.ts
@@ -10,7 +10,7 @@
*
*/
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
export const computedWrapperStyle = (state) => () => {
const wrapperStyle = {
@@ -178,9 +178,9 @@ export const mountedHandler =
() => {
const track = vm.$refs.track
- on(track, 'touchstart', api.onTouchstart)
- on(track, 'touchmove', api.onTouchmove)
- on(track, 'touchend', api.onTouchend)
+ dom.on(track, 'touchstart', api.onTouchstart)
+ dom.on(track, 'touchmove', api.onTouchmove)
+ dom.on(track, 'touchend', api.onTouchend)
state.clumnsWrapHeight = state.itemHeight * state.visibleItemCount
@@ -194,9 +194,9 @@ export const beforeUnmountHandler =
() => {
const track = vm.$refs.track
- off(track, 'touchstart', api.onTouchstart)
- off(track, 'touchmove', api.onTouchmove)
- off(track, 'touchend', api.onTouchend)
+ dom.off(track, 'touchstart', api.onTouchstart)
+ dom.off(track, 'touchmove', api.onTouchmove)
+ dom.off(track, 'touchend', api.onTouchend)
}
export const momentum =
diff --git a/packages/renderless/src/popconfirm/vue.ts b/packages/renderless/src/popconfirm/vue.ts
index af890fcb07..54d40a0d9d 100644
--- a/packages/renderless/src/popconfirm/vue.ts
+++ b/packages/renderless/src/popconfirm/vue.ts
@@ -4,7 +4,7 @@ import type {
IPopconfirmRenderlessParamUtils,
ISharedRenderlessParamHooks
} from '@/types'
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
import { show, hide, confirm, handleEmit, handleDocumentClick } from './index'
export const api = ['state', 'show', 'hide', 'confirm', 'handleEmit']
@@ -34,10 +34,10 @@ export const renderless = (
})
onMounted(() => {
- props.closeOnClickOutside && on(document, 'click', api.handleDocumentClick)
+ props.closeOnClickOutside && dom.on(document, 'click', api.handleDocumentClick)
})
onBeforeUnmount(() => {
- props.closeOnClickOutside && off(document, 'click', api.handleDocumentClick)
+ props.closeOnClickOutside && dom.off(document, 'click', api.handleDocumentClick)
})
return api
diff --git a/packages/renderless/src/popeditor/index.ts b/packages/renderless/src/popeditor/index.ts
index 7877cbdd55..0973f05959 100644
--- a/packages/renderless/src/popeditor/index.ts
+++ b/packages/renderless/src/popeditor/index.ts
@@ -16,7 +16,7 @@ import { getDataset } from '../common/dataset'
import { isNullOrEmpty } from '../common/string'
import { isEqual } from '../common/object'
import { eachTree } from '../grid/static'
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
export const computedGetTitle = ({ constants, props, t }) => props.title || t(constants.TITLE)
@@ -777,10 +777,10 @@ export const doSuggesst =
let query = event
- off(window, 'resize', api.updateSuggestWidth)
- off(document, 'click', api.closeSuggestPanel)
- on(document, 'click', api.closeSuggestPanel)
- on(window, 'resize', api.updateSuggestWidth)
+ dom.off(window, 'resize', api.updateSuggestWidth)
+ dom.off(document, 'click', api.closeSuggestPanel)
+ dom.on(document, 'click', api.closeSuggestPanel)
+ dom.on(window, 'resize', api.updateSuggestWidth)
api.updateSuggestWidth()
@@ -838,8 +838,8 @@ export const closeSuggestPanel =
}
if (!keep) {
- off(document, 'click', api.closeSuggestPanel)
- off(window, 'resize', api.updateSuggestWidth)
+ dom.off(document, 'click', api.closeSuggestPanel)
+ dom.off(window, 'resize', api.updateSuggestWidth)
api.handleConfirm(state.closeSuggestPanelInvoker === 'openDialog')
state.closeSuggestPanelInvoker = null
diff --git a/packages/renderless/src/popover/index.ts b/packages/renderless/src/popover/index.ts
index a242e940a7..1d5a4a4524 100644
--- a/packages/renderless/src/popover/index.ts
+++ b/packages/renderless/src/popover/index.ts
@@ -10,9 +10,9 @@
*
*/
import type { IPopoverRenderlessParams, IPopoverState } from 'types/popover.type'
-import { on, off, addClass, removeClass } from '../common/deps/dom'
import { guid } from '../common/string'
import { KEY_CODE } from '../common'
+import { dom } from '@opentiny/utils'
const processTrigger = ({
api,
@@ -23,20 +23,20 @@ const processTrigger = ({
const { referenceElm, popperElm } = state
if (props.trigger === 'click') {
- on(referenceElm, 'click', api.doToggle)
- on(document, 'click', api.handleDocumentClick)
+ dom.on(referenceElm, 'click', api.doToggle)
+ dom.on(document, 'click', api.handleDocumentClick)
} else if (props.trigger === 'hover') {
- on(referenceElm, 'mouseenter', api.handleMouseEnter)
- on(popperElm, 'mouseenter', api.handleMouseEnter)
- on(referenceElm, 'mouseleave', api.handleMouseLeave)
- on(popperElm, 'mouseleave', api.handleMouseLeave)
+ dom.on(referenceElm, 'mouseenter', api.handleMouseEnter)
+ dom.on(popperElm, 'mouseenter', api.handleMouseEnter)
+ dom.on(referenceElm, 'mouseleave', api.handleMouseLeave)
+ dom.on(popperElm, 'mouseleave', api.handleMouseLeave)
} else if (props.trigger === 'focus') {
if (referenceElm.querySelector('input, textarea')) {
- on(referenceElm, 'focusin', api.doShow)
- on(referenceElm, 'focusout', api.doClose)
+ dom.on(referenceElm, 'focusin', api.doShow)
+ dom.on(referenceElm, 'focusout', api.doClose)
} else {
- on(referenceElm, 'mousedown', api.doShow)
- on(referenceElm, 'mouseup', api.doClose)
+ dom.on(referenceElm, 'mousedown', api.doShow)
+ dom.on(referenceElm, 'mouseup', api.doClose)
}
} else if (props.trigger === 'manual') {
// 手动模式,且用户初始modelValue=true,要触发show
@@ -65,7 +65,7 @@ export const mounted =
if (referenceElm) {
if (mode !== 'mobile-first') {
- addClass(referenceElm, `${constants.IDPREFIX}__reference`)
+ dom.addClass(referenceElm, `${constants.IDPREFIX}__reference`)
}
referenceElm.setAttribute('aria-describedby', tooltipId)
@@ -73,7 +73,7 @@ export const mounted =
popperElm.setAttribute('tabindex', 0)
if (props.trigger !== 'click') {
- on(referenceElm, 'focusin', () => {
+ dom.on(referenceElm, 'focusin', () => {
api.handleFocus()
// 仅vue2有 __vue__
@@ -84,13 +84,13 @@ export const mounted =
}
})
- on(popperElm, 'focusin', api.handleFocus)
- on(referenceElm, 'focusout', api.handleBlur)
- on(popperElm, 'focusout', api.handleBlur)
+ dom.on(popperElm, 'focusin', api.handleFocus)
+ dom.on(referenceElm, 'focusout', api.handleBlur)
+ dom.on(popperElm, 'focusout', api.handleBlur)
}
- on(referenceElm, 'keydown', api.handleKeydown)
- on(referenceElm, 'click', api.handleClick)
+ dom.on(referenceElm, 'keydown', api.handleKeydown)
+ dom.on(referenceElm, 'click', api.handleClick)
}
processTrigger({ api, state, props, nextTick })
@@ -111,7 +111,7 @@ export const doClose = (state: IPopoverState) => () => {
export const handleFocus =
({ props, state }: Pick) =>
() => {
- addClass(state.referenceElm, 'focusing')
+ dom.addClass(state.referenceElm, 'focusing')
if (props.trigger === 'click' || props.trigger === 'focus') {
state.showPopper = true
@@ -125,13 +125,13 @@ export const handleClick = (state: IPopoverState) => (event: MouseEvent) => {
if (event?.target && popperElm) {
state.webCompEventTarget = event.target as HTMLElement
}
- removeClass(state.referenceElm, 'focusing')
+ dom.removeClass(state.referenceElm, 'focusing')
}
export const handleBlur =
({ props, state }: Pick) =>
() => {
- removeClass(state.referenceElm, 'focusing')
+ dom.removeClass(state.referenceElm, 'focusing')
if (props.trigger === 'click' || props.trigger === 'focus') {
state.showPopper = false
@@ -236,23 +236,23 @@ export const destroyed =
const { referenceElm, popperElm } = state
// 原来
- off(referenceElm, 'click', api.doToggle)
- off(referenceElm, 'mouseup', api.doClose)
- off(referenceElm, 'mousedown', api.doShow)
- off(referenceElm, 'focusin', api.doShow)
- off(referenceElm, 'focusout', api.doClose)
- off(referenceElm, 'mouseleave', api.handleMouseLeave)
- off(referenceElm, 'mouseenter', api.handleMouseEnter)
- off(document, 'click', api.handleDocumentClick)
+ dom.off(referenceElm, 'click', api.doToggle)
+ dom.off(referenceElm, 'mouseup', api.doClose)
+ dom.off(referenceElm, 'mousedown', api.doShow)
+ dom.off(referenceElm, 'focusin', api.doShow)
+ dom.off(referenceElm, 'focusout', api.doClose)
+ dom.off(referenceElm, 'mouseleave', api.handleMouseLeave)
+ dom.off(referenceElm, 'mouseenter', api.handleMouseEnter)
+ dom.off(document, 'click', api.handleDocumentClick)
// 同步补充
- off(popperElm, 'focusin', api.handleFocus) //
- off(popperElm, 'focusout', api.handleBlur)
- off(popperElm, 'mouseenter', api.handleMouseEnter)
- off(popperElm, 'mouseleave', api.handleMouseLeave)
- off(referenceElm, 'click', api.handleClick)
- off(referenceElm, 'focusout', api.handleBlur)
- off(referenceElm, 'keydown', api.handleKeydown)
+ dom.off(popperElm, 'focusin', api.handleFocus) //
+ dom.off(popperElm, 'focusout', api.handleBlur)
+ dom.off(popperElm, 'mouseenter', api.handleMouseEnter)
+ dom.off(popperElm, 'mouseleave', api.handleMouseLeave)
+ dom.off(referenceElm, 'click', api.handleClick)
+ dom.off(referenceElm, 'focusout', api.handleBlur)
+ dom.off(referenceElm, 'keydown', api.handleKeydown)
}
export const computedTooltipId = (constants: { IDPREFIX: string }) => () => `${constants.IDPREFIX}-${guid('', 4)}`
diff --git a/packages/renderless/src/popup/index.ts b/packages/renderless/src/popup/index.ts
index 407275595f..d5b0e00a85 100644
--- a/packages/renderless/src/popup/index.ts
+++ b/packages/renderless/src/popup/index.ts
@@ -10,7 +10,7 @@
*
*/
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
import { touchStart, touchMove } from '../common/deps/touch'
import { getScroller } from '../dropdown-menu'
import { type } from '@opentiny/utils'
@@ -50,8 +50,8 @@ export const open =
emit('open')
if (props.lockScroll) {
- on(document, 'touchstart', touchStart)
- on(document, 'touchmove', api.onTouchMove)
+ dom.on(document, 'touchstart', touchStart)
+ dom.on(document, 'touchmove', api.onTouchMove)
if (!state.context.lockCount) {
document.body.classList.add(constants.OVERFLOWHIDDEN)
@@ -71,8 +71,8 @@ export const close =
if (props.lockScroll) {
state.context.lockCount--
- off(document, 'touchstart', touchStart)
- off(document, 'touchmove', api.onTouchMove)
+ dom.off(document, 'touchstart', touchStart)
+ dom.off(document, 'touchmove', api.onTouchMove)
if (!state.context.lockCount) {
document.body.classList.remove(constants.OVERFLOWHIDDEN)
diff --git a/packages/renderless/src/pull-refresh-mobile-first/index.ts b/packages/renderless/src/pull-refresh-mobile-first/index.ts
index e1ab391e17..54d748474e 100644
--- a/packages/renderless/src/pull-refresh-mobile-first/index.ts
+++ b/packages/renderless/src/pull-refresh-mobile-first/index.ts
@@ -10,7 +10,7 @@
*
*/
-import { on, off, getScrollTop, preventDefault } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
export const onTouchstart =
({ state }) =>
@@ -75,9 +75,9 @@ export const mountedHandler =
const track = vm.$refs.track
- on(track, 'touchstart', api.onTouchstart)
- on(track, 'touchmove', api.onTouchmove)
- on(track, 'touchend', api.onTouchend)
+ dom.on(track, 'touchstart', api.onTouchstart)
+ dom.on(track, 'touchmove', api.onTouchmove)
+ dom.on(track, 'touchend', api.onTouchend)
}
export const beforeUnmountHandler =
@@ -85,9 +85,9 @@ export const beforeUnmountHandler =
() => {
const track = vm.$refs.track
- off(track, 'touchstart', api.onTouchstart)
- off(track, 'touchmove', api.onTouchmove)
- off(track, 'touchend', api.onTouchend)
+ dom.off(track, 'touchstart', api.onTouchstart)
+ dom.off(track, 'touchmove', api.onTouchmove)
+ dom.off(track, 'touchend', api.onTouchend)
}
export const watchModelValue = ({ value, state }) => {
@@ -175,7 +175,7 @@ export const showSuccessTip =
export const checkPosition =
({ state, touchState }) =>
(event) => {
- state.reachTop = getScrollTop(state.scrollParent) === 0
+ state.reachTop = dom.getScrollTop(state.scrollParent) === 0
if (state.reachTop) {
state.duration = 0
@@ -205,7 +205,7 @@ export const onTouchMove =
touchState.move(event)
if (state.reachTop && deltaY.value >= 0 && touchState.isVertical()) {
- preventDefault(event)
+ dom.preventDefault(event)
api.setStatus(api.ease(deltaY.value))
}
}
diff --git a/packages/renderless/src/pull-refresh-mobile-first/vue.ts b/packages/renderless/src/pull-refresh-mobile-first/vue.ts
index 1ae326444a..05e33f9f7e 100644
--- a/packages/renderless/src/pull-refresh-mobile-first/vue.ts
+++ b/packages/renderless/src/pull-refresh-mobile-first/vue.ts
@@ -30,7 +30,7 @@ import {
parseHeaderHeight,
checkSelfSimulate
} from './index'
-import { getScrollParent } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
import { useTouch } from '../common/deps/useTouch'
import { useEventListener } from '../common/deps/useEventListener'
import emulate from '../common/deps/touch-emulator'
@@ -126,7 +126,7 @@ export const renderless = (
state.stopHandle = api.useEventListener('touchmove', api.onTouchMove, { target: toRef(state, 'scrollTrack') })
onMounted(() => {
- state.scrollParent = getScrollParent(vm.$refs.root)
+ state.scrollParent = dom.getScrollParent(vm.$refs.root)
state.scrollTrack = vm.$refs.track
})
diff --git a/packages/renderless/src/pull-refresh/index.ts b/packages/renderless/src/pull-refresh/index.ts
index 173af2ca19..560a931e47 100644
--- a/packages/renderless/src/pull-refresh/index.ts
+++ b/packages/renderless/src/pull-refresh/index.ts
@@ -10,7 +10,7 @@
*
*/
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
// 上拉触发事件超时时间
const PULL_UP_TIME_OUT = 300
@@ -117,10 +117,10 @@ export const mountedHandler =
() => {
const track = refs.track
- on(track, 'touchstart', api.onTouchstart)
- on(track, 'touchmove', api.onTouchmove)
- on(track, 'touchend', api.onTouchend)
- on(track, 'scroll', api.onScroll)
+ dom.on(track, 'touchstart', api.onTouchstart)
+ dom.on(track, 'touchmove', api.onTouchmove)
+ dom.on(track, 'touchend', api.onTouchend)
+ dom.on(track, 'scroll', api.onScroll)
}
export const beforeUnmountHandler =
@@ -128,10 +128,10 @@ export const beforeUnmountHandler =
() => {
const track = refs.track
- off(track, 'touchstart', api.onTouchstart)
- off(track, 'touchmove', api.onTouchmove)
- off(track, 'touchend', api.onTouchend)
- off(track, 'scroll', api.onScroll)
+ dom.off(track, 'touchstart', api.onTouchstart)
+ dom.off(track, 'touchmove', api.onTouchmove)
+ dom.off(track, 'touchend', api.onTouchend)
+ dom.off(track, 'scroll', api.onScroll)
}
export const handlerModelValue =
diff --git a/packages/renderless/src/rate/vue.ts b/packages/renderless/src/rate/vue.ts
index dd28264d3d..790c3447d4 100644
--- a/packages/renderless/src/rate/vue.ts
+++ b/packages/renderless/src/rate/vue.ts
@@ -27,7 +27,7 @@ import {
computedActiveColor,
computedActiveClass
} from './index'
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
export const api = [
'state',
@@ -83,13 +83,13 @@ export const useChangeValue = ({
}
onMounted(() => {
- on(document, 'mousemove', updateMousePostion)
- on(document, 'mouseleave', api.resetCurrentValue)
+ dom.on(document, 'mousemove', updateMousePostion)
+ dom.on(document, 'mouseleave', api.resetCurrentValue)
})
onUnmounted(() => {
- off(document, 'mousemove', updateMousePostion)
- off(document, 'mouseleave', api.resetCurrentValue)
+ dom.off(document, 'mousemove', updateMousePostion)
+ dom.off(document, 'mouseleave', api.resetCurrentValue)
state.mouseTarget = null
})
diff --git a/packages/renderless/src/scrollbar/vue-bar.ts b/packages/renderless/src/scrollbar/vue-bar.ts
index 54174a11fb..a0c18eef9b 100644
--- a/packages/renderless/src/scrollbar/vue-bar.ts
+++ b/packages/renderless/src/scrollbar/vue-bar.ts
@@ -19,7 +19,7 @@ import {
mouseMoveDocumentHandler,
mouseUpDocumentHandler
} from './index'
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
export const api = [
'state',
@@ -44,7 +44,7 @@ export const renderless = (props, { computed, onUnmounted, reactive }, { vm, par
mouseMoveDocumentHandler: mouseMoveDocumentHandler({ vm, state })
}
- onUnmounted(() => off(document, 'mouseup', api.mouseUpDocumentHandler))
+ onUnmounted(() => dom.off(document, 'mouseup', api.mouseUpDocumentHandler))
return Object.assign(api, {
startDrag: startDrag({ api, on, state }),
diff --git a/packages/renderless/src/search/index.ts b/packages/renderless/src/search/index.ts
index 745cbf1eeb..f7229c342c 100644
--- a/packages/renderless/src/search/index.ts
+++ b/packages/renderless/src/search/index.ts
@@ -10,7 +10,7 @@
*
*/
import type { ISearchRenderlessParams, ISearchValue } from '@/types'
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
import PopupManager from '../common/deps/popup-manager'
import { type } from '@opentiny/utils'
@@ -123,14 +123,13 @@ export const formatSearchTypes = (searchTypes: ISearchValue[]): ISearchValue[] =
export const mounted =
({ api }: Pick) =>
() => {
- on(document.body, 'click', api.clickOutside)
+ dom.on(document.body, 'click', api.clickOutside)
}
/* istanbul ignore next */
export const beforeDestroy =
({ api }: Pick) =>
() => {
- off(document.body, 'click', api.clickOutside)
}
export const clear =
diff --git a/packages/renderless/src/signature/index.ts b/packages/renderless/src/signature/index.ts
index bffd77a5f0..cdab48fdae 100644
--- a/packages/renderless/src/signature/index.ts
+++ b/packages/renderless/src/signature/index.ts
@@ -1,4 +1,4 @@
-import { preventDefault } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
const getOffsetPosition = ({ touch, state }) => {
let offsetY = 0
@@ -91,7 +91,7 @@ export const touchMove =
return false
}
- preventDefault(e)
+ dom.preventDefault(e)
const touch = event.touches[0]
@@ -120,7 +120,7 @@ export const touchEnd =
({ emit, state }) =>
(event) => {
state.isDrawing = false
- preventDefault(event)
+ dom.preventDefault(event)
emit('end')
}
diff --git a/packages/renderless/src/slider-button-group/slide-button.ts b/packages/renderless/src/slider-button-group/slide-button.ts
index 88def930eb..302857e4c8 100644
--- a/packages/renderless/src/slider-button-group/slide-button.ts
+++ b/packages/renderless/src/slider-button-group/slide-button.ts
@@ -1,5 +1,5 @@
import debounce from '../common/deps/debounce'
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
const getButtonPosition =
({ sliderState }) =>
@@ -153,12 +153,12 @@ export const renderless = (props, { reactive, onMounted, onUnmounted, computed,
})
onUnmounted(() => {
- off(window, 'resize', api.currentPosition)
+ dom.off(window, 'resize', api.currentPosition)
})
onMounted(() => {
api.currentPosition(true)
- on(window, 'resize', api.currentPosition)
+ dom.on(window, 'resize', api.currentPosition)
})
watch(
diff --git a/packages/renderless/src/slider/index.ts b/packages/renderless/src/slider/index.ts
index 2578461357..0ad3f1ce31 100644
--- a/packages/renderless/src/slider/index.ts
+++ b/packages/renderless/src/slider/index.ts
@@ -12,16 +12,16 @@
import { KEY_CODE } from '../common'
import { emitEvent } from '../common/event'
-import { on, off, hasClass } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
import { toNumber } from '../common/string'
import type { ISliderApi, ISliderRenderlessParams, ISliderState } from '@/types'
export const bindEvent = (api: ISliderApi) => () => {
- on(window, 'resize', api.bindResize)
+ dom.on(window, 'resize', api.bindResize)
api.bindResize()
}
-export const unBindEvent = (api: ISliderApi) => () => off(window, 'resize', api.bindResize)
+export const unBindEvent = (api: ISliderApi) => () => dom.off(window, 'resize', api.bindResize)
export const bindResize =
({ vm, props, state }: Pick) =>
@@ -105,12 +105,12 @@ export const bindMouseDown =
isClickBar = name === constants.PC_SLIDER_CLS || name === constants.PC_RANGE_CLS
isClickBtn = name === constants.PC_BUTTON_CLS
} else {
- isClickBar = hasClass(handleEl, constants.sliderCls(mode)) || hasClass(handleEl, constants.rangeCls(mode))
+ isClickBar = dom.hasClass(handleEl, constants.sliderCls(mode)) || dom.hasClass(handleEl, constants.rangeCls(mode))
isClickBtn =
- hasClass(handleEl, constants.buttonCls(mode)) ||
- hasClass(handleEl, constants.leftSvgCls(mode)) ||
- hasClass(handleEl, constants.rightSvgCls(mode))
- isClickLabel = hasClass(handleEl, constants.PC_LABEL_CLS)
+ dom.hasClass(handleEl, constants.buttonCls(mode)) ||
+ dom.hasClass(handleEl, constants.leftSvgCls(mode)) ||
+ dom.hasClass(handleEl, constants.rightSvgCls(mode))
+ isClickLabel = dom.hasClass(handleEl, constants.PC_LABEL_CLS)
}
if (state.disabled || (!isClickBtn && !isClickBar && !isClickLabel)) {
state.activeIndex = -1
@@ -119,10 +119,10 @@ export const bindMouseDown =
api.bindResize()
- on(window, 'mouseup', api.bindMouseUp)
- on(window, 'mousemove', api.bindMouseMove)
- on(window, 'touchend', api.bindMouseUp)
- on(window, 'touchmove', api.bindMouseMove)
+ dom.on(window, 'mouseup', api.bindMouseUp)
+ dom.on(window, 'mousemove', api.bindMouseMove)
+ dom.on(window, 'touchend', api.bindMouseUp)
+ dom.on(window, 'touchmove', api.bindMouseMove)
state.isDrag = isClickBtn
isClickBtn && (state.activeIndex = api.getActiveButtonIndex(event))
@@ -176,10 +176,10 @@ export const bindMouseUp =
}
state.isDrag = false
- off(window, 'mouseup', api.bindMouseUp)
- off(window, 'mousemove', api.bindMouseMove)
- off(window, 'touchend', api.bindMouseUp)
- off(window, 'touchmove', api.bindMouseMove)
+ dom.off(window, 'mouseup', api.bindMouseUp)
+ dom.off(window, 'mousemove', api.bindMouseMove)
+ dom.off(window, 'touchend', api.bindMouseUp)
+ dom.off(window, 'touchmove', api.bindMouseMove)
emit('stop', api.getActiveButtonValue())
@@ -261,7 +261,7 @@ const getActiveButtonIndexFlag = ({
} else {
return (
state.isDouble &&
- (hasClass(previousElementSibling, cls) ||
+ (dom.hasClass(previousElementSibling, cls) ||
(event.target as SVGAElement).className.baseVal === 'tiny-slider-right-svg')
)
}
diff --git a/packages/renderless/src/split/vue.ts b/packages/renderless/src/split/vue.ts
index f8b92d192f..6a94894335 100644
--- a/packages/renderless/src/split/vue.ts
+++ b/packages/renderless/src/split/vue.ts
@@ -24,7 +24,7 @@ import {
buttonRightBottomClick,
computeOffset
} from './index'
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
export const api = ['state', 'handleMousedown', 'buttonMousedown', 'buttonLeftTopClick', 'buttonRightBottomClick']
@@ -60,7 +60,7 @@ export const renderless = (props, hooks, { vm, nextTick, emit, constants, design
getleftTopMin: getleftTopMin(state),
getrightBottomMin: getrightBottomMin(state),
...getUseOffset.api,
- handleUp: handleUp({ api, emit, off, state }),
+ handleUp: handleUp({ api, emit, dom.off, state }),
getAnotherOffset: getAnotherOffset({ vm, state }),
handleMove: handleMove({ api, emit, props, vm, state }),
handleMousedown: handleMousedown({ api, emit, on, props, state, vm }),
@@ -95,11 +95,11 @@ export const useOffset = ({ nextTick, props, vm, constants, hooks }) => {
watch(() => props.modelValue, api.computeOffset, { immediate: true })
onMounted(() => {
- on(window, 'resize', api.computeOffset)
+ dom.on(window, 'resize', api.computeOffset)
})
onUnmounted(() => {
- off(window, 'resize', api.computeOffset)
+ dom.off(window, 'resize', api.computeOffset)
})
return {
diff --git a/packages/renderless/src/steps/slide-bar.ts b/packages/renderless/src/steps/slide-bar.ts
index d8830254c7..e70228778a 100644
--- a/packages/renderless/src/steps/slide-bar.ts
+++ b/packages/renderless/src/steps/slide-bar.ts
@@ -1,5 +1,5 @@
import debounce from '../common/deps/debounce'
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
const getBoundingPosition =
({ state }) =>
@@ -151,11 +151,11 @@ export const renderless = (props, { reactive, onMounted, onUnmounted, computed }
onMounted(() => {
api.updatePosition(true)
- on(window, 'resize', api.updatePosition)
+ dom.on(window, 'resize', api.updatePosition)
})
onUnmounted(() => {
- off(window, 'resize', api.updatePosition)
+ dom.off(window, 'resize', api.updatePosition)
})
return api
diff --git a/packages/renderless/src/sticky/vue.ts b/packages/renderless/src/sticky/vue.ts
index 1d11968ca2..e8b2c76423 100644
--- a/packages/renderless/src/sticky/vue.ts
+++ b/packages/renderless/src/sticky/vue.ts
@@ -1,7 +1,8 @@
import { useRect } from '../common/deps/useRect'
import { useWindowSize } from '../common/deps/useWindowSize'
import { useEventListener } from '../common/deps/useEventListener'
-import { useScrollParent } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
+
import { computedRootStyle, computedStickyStyle, updateRoot, unitToPx, getRootRect, getTarget } from './index'
export const api = ['state']
@@ -38,7 +39,7 @@ export const renderless = (props, hooks, { vm, emit }) => {
getRootRect: getRootRect({ vm, state, api }),
getTarget: getTarget({ props, state, api }),
useEventListener: useEventListener(hooks),
- useScrollParent: useScrollParent(hooks),
+ useScrollParent: dom.useScrollParent(hooks),
useWindowSize: useWindowSize(ref),
useRect: useRect(unref),
unitToPx: unitToPx()
diff --git a/packages/renderless/src/tab-nav/index.ts b/packages/renderless/src/tab-nav/index.ts
index 991040527c..758e386903 100644
--- a/packages/renderless/src/tab-nav/index.ts
+++ b/packages/renderless/src/tab-nav/index.ts
@@ -13,7 +13,7 @@ import type { ITabNavRenderlessParams } from '@/types'
import { KEY_CODE, POSITION } from '../common'
import { capitalize } from '../common/string'
import { addResizeListener, removeResizeListener } from '../common/deps/resize-event'
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
export const computedNavStyle = (state: ITabNavRenderlessParams['state']): { transform: string; width?: string } => {
const dir = ~[POSITION.Top, POSITION.Bottom].indexOf(state.rootTabs.position) ? 'X' : 'Y'
@@ -125,9 +125,9 @@ export const mounted = ({ api, parent }: Pick () => {
diff --git a/packages/renderless/src/tabbar/index.ts b/packages/renderless/src/tabbar/index.ts
index 11d75731d9..c387912cd8 100644
--- a/packages/renderless/src/tabbar/index.ts
+++ b/packages/renderless/src/tabbar/index.ts
@@ -10,7 +10,7 @@
*
*/
-import { off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
export const setActiveItem =
({ props, state }) =>
@@ -77,7 +77,7 @@ export const initPage =
export const beforeDestroy =
({ vm, api }) =>
() => {
- off(window, 'resize', api.initPage)
+ dom.off(window, 'resize', api.initPage)
vm.$off('updateItems')
vm.$off('activeItem')
vm.$off('showIndex')
diff --git a/packages/renderless/src/tabbar/vue.ts b/packages/renderless/src/tabbar/vue.ts
index e334dbd2a0..bea1592948 100644
--- a/packages/renderless/src/tabbar/vue.ts
+++ b/packages/renderless/src/tabbar/vue.ts
@@ -11,7 +11,7 @@
*/
import { setActiveItem, onChange, getChildrens, getItems, beforeDestroy, initPage } from './index'
-import { on } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
export const api = ['state', 'onChange', 'getChildrens']
@@ -44,7 +44,7 @@ export const renderless = (
})
onMounted(() => {
- on(window, 'resize', api.initPage)
+ dom.on(window, 'resize', api.initPage)
state.tabbarWidth = vm.$refs.tabbar && vm.$refs.tabbar.offsetWidth
if (props.placeholder && props.fixed) {
diff --git a/packages/renderless/src/tall-storage/vue.ts b/packages/renderless/src/tall-storage/vue.ts
index 2d20ab7bf8..af292d69a1 100644
--- a/packages/renderless/src/tall-storage/vue.ts
+++ b/packages/renderless/src/tall-storage/vue.ts
@@ -11,7 +11,7 @@
*/
import { mousedown, selectItem, keydown } from './index'
-import { on, off } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
export const api = ['state', 'mousedown', 'selectItem']
@@ -35,10 +35,10 @@ export const renderless = (props, { onUnmounted, reactive, watch }, { emit }) =>
onUnmounted(() => {
state.hoverValue = ''
- off(document, 'keydown', api.keydown)
+ dom.off(document, 'keydown', api.keydown)
})
- on(document, 'keydown', api.keydown)
+ dom.on(document, 'keydown', api.keydown)
return api
}
diff --git a/packages/renderless/src/tooltip/index.ts b/packages/renderless/src/tooltip/index.ts
index 9c03615d72..095f76f381 100644
--- a/packages/renderless/src/tooltip/index.ts
+++ b/packages/renderless/src/tooltip/index.ts
@@ -12,7 +12,7 @@
import type { ITooltipApi, ITooltipRenderlessParams, ITooltipState } from '@/types'
import debounce from '../common/deps/debounce'
-import { on, off, addClass, removeClass } from '../common/deps/dom'
+import { dom } from '@opentiny/utils'
export const show =
({ api, state, props }: Pick) =>
@@ -138,12 +138,12 @@ export const destroyed =
state.showPopper = false
if (reference && reference.nodeType === 1) {
- off(document, 'click', api.handleDocumentClick)
- off(reference, 'mouseenter', api.show)
- off(reference, 'mouseleave', api.hide)
- off(reference, 'focus', api.focusHandler)
- off(reference, 'blur', api.handleBlur)
- off(reference, 'click', api.removeFocusing)
+ dom.off(document, 'click', api.handleDocumentClick)
+ dom.off(reference, 'mouseenter', api.show)
+ dom.off(reference, 'mouseleave', api.hide)
+ dom.off(reference, 'focus', api.focusHandler)
+ dom.off(reference, 'blur', api.handleBlur)
+ dom.off(reference, 'click', api.removeFocusing)
}
if (vm.popperVM) {
@@ -160,9 +160,9 @@ export const debounceClose = ({ api, props }: Pick (value: boolean) => {
if (value) {
- addClass(state.referenceElm, 'focusing')
+ dom.addClass(state.referenceElm, 'focusing')
} else {
- removeClass(state.referenceElm, 'focusing')
+ dom.removeClass(state.referenceElm, 'focusing')
}
}
@@ -205,12 +205,12 @@ export const bindEvent =
referenceElm.setAttribute('aria-describedby', state.tooltipId)
referenceElm.setAttribute('tabindex', state.tabindex.toString())
- on(document, 'click', api.handleDocumentClick)
- on(referenceElm, 'mouseenter', api.show)
- on(referenceElm, 'mouseleave', api.hide)
- on(referenceElm, 'focus', api.focusHandler)
- on(referenceElm, 'blur', api.handleBlur)
- on(referenceElm, 'click', api.removeFocusing)
+ dom.on(document, 'click', api.handleDocumentClick)
+ dom.on(referenceElm, 'mouseenter', api.show)
+ dom.on(referenceElm, 'mouseleave', api.hide)
+ dom.on(referenceElm, 'focus', api.focusHandler)
+ dom.on(referenceElm, 'blur', api.handleBlur)
+ dom.on(referenceElm, 'click', api.removeFocusing)
}
export const observeCallback =
diff --git a/packages/renderless/src/top-box/index.ts b/packages/renderless/src/top-box/index.ts
index b47cd1771c..b059616f88 100644
--- a/packages/renderless/src/top-box/index.ts
+++ b/packages/renderless/src/top-box/index.ts
@@ -11,8 +11,8 @@
*/
import { KEY_CODE } from '../common'
-import { on, off } from '../common/deps/dom'
import PopupManager from '../common/deps/popup-manager'
+import { dom } from '@opentiny/utils'
export const handleAfterLeave = (api) => () => api.destroy()
@@ -31,12 +31,12 @@ export const bindKeyDown =
export const bindEvent =
({ api }) =>
() =>
- on(document, 'keydown', api.bindKeyDown)
+ dom.on(document, 'keydown', api.bindKeyDown)
export const unBindEvent =
({ api }) =>
() =>
- off(document, 'keydown', api.bindKeyDown)
+ dom.off(document, 'keydown', api.bindKeyDown)
export const startTimer =
({ api, state }) =>
diff --git a/packages/renderless/src/tree/index.ts b/packages/renderless/src/tree/index.ts
index 60ef3c99f2..c16d696b2d 100644
--- a/packages/renderless/src/tree/index.ts
+++ b/packages/renderless/src/tree/index.ts
@@ -13,10 +13,9 @@
import { getNodeKey as innerGetNodekey } from '../common/deps/tree-model/util'
import { KEY_CODE } from '../common'
import TreeStore from '../common/deps/tree-model/tree-store'
-import { addClass, removeClass } from '../common/deps/dom'
-import { on, off } from '../common/deps/dom'
import { getDataset } from '../common/dataset'
import { copyArray } from '../common/object'
+import { dom } from '@opentiny/utils'
import { log } from '@opentiny/utils'
@@ -139,7 +138,7 @@ const setDropIndicatorTop = (dropNode, parent, dropType) => {
dropIndicator.style.top = indicatorTop + 'px'
}
- dropType === 'inner' ? addClass(dropNode.$el, 'is-drop-inner') : removeClass(dropNode.$el, 'is-drop-inner')
+ dropType === 'inner' ? dom.addClass(dropNode.$el, 'is-drop-inner') : dom.removeClass(dropNode.$el, 'is-drop-inner')
}
const getDragDir = ({ draggingNode, dropNode, allowDrop, emit, dragState, event }) => {
@@ -194,7 +193,7 @@ export const dragOver =
const oldDropNode = dragState.dropNode
if (oldDropNode && oldDropNode !== dropNode) {
- removeClass(oldDropNode.$el, 'is-drop-inner')
+ dom.removeClass(oldDropNode.$el, 'is-drop-inner')
}
const draggingNode = dragState.draggingNode
@@ -253,7 +252,7 @@ export const dragEnd =
normalType && state.store.registerNode(draggingNodeCopy)
- removeClass(dropNode.$el, 'is-drop-inner')
+ dom.removeClass(dropNode.$el, 'is-drop-inner')
emit('node-drag-end', draggingNode.node, dropNode.node, dropType, event)
@@ -398,7 +397,7 @@ export const mounted =
({ api, vm }) =>
() => {
api.initTabIndex()
- on(vm.$el, 'keydown', api.handleKeydown)
+ dom.on(vm.$el, 'keydown', api.handleKeydown)
}
export const beforeUnmount =
@@ -406,7 +405,7 @@ export const beforeUnmount =
() => {
state.action.popoverVisible = false
- off(vm.$el, 'keydown', api.handleKeydown)
+ dom.off(vm.$el, 'keydown', api.handleKeydown)
}
export const wrapMounted =
diff --git a/packages/renderless/src/common/deps/dom.ts b/packages/utils/src/dom/index.ts
similarity index 96%
rename from packages/renderless/src/common/deps/dom.ts
rename to packages/utils/src/dom/index.ts
index 54f8fee46e..8473f51775 100644
--- a/packages/renderless/src/common/deps/dom.ts
+++ b/packages/utils/src/dom/index.ts
@@ -10,8 +10,8 @@
*
*/
-import { type } from '@opentiny/utils'
-import { global } from '@opentiny/utils'
+import { hasOwn, isNull } from '../type'
+import globalConfig from '../global'
export const isServer = typeof window === 'undefined'
const SPECIAL_CHARS_REGEXP = /([:\-_]+(.))/g
@@ -126,7 +126,7 @@ export const setStyle = (el: HTMLElement, name: string | object, value?: any) =>
if (typeof name === 'object') {
for (const prop in name) {
- if (type.hasOwn.call(name, prop)) {
+ if (hasOwn.call(name, prop)) {
setStyle(el, prop, name[prop])
}
}
@@ -149,7 +149,7 @@ export const isScroll = (el: HTMLElement, vertical?: boolean) => {
* 它的值为false: 当vertical = null / undefinded。
* 它的值为 true: 当vertical =true /false
*/
- const determinedDirection = !type.isNull(vertical)
+ const determinedDirection = !isNull(vertical)
let overflow
if (determinedDirection) {
@@ -195,7 +195,7 @@ export const isInContainer = (el: HTMLElement, container: HTMLElement) => {
const elRect = el.getBoundingClientRect()
let containerRect
- if (~[window, document, document.documentElement].indexOf(container) || type.isNull(container)) {
+ if (~[window, document, document.documentElement].indexOf(container) || isNull(container)) {
containerRect = {
top: 0,
right: window.innerWidth,
@@ -221,7 +221,7 @@ export const isInContainer = (el: HTMLElement, container: HTMLElement) => {
* @returns visibleWidth : 可视区宽度(不含滚动条)
*/
export const getDomNode = () => {
- const viewportWindow = global.globalConfig.viewportWindow || window
+ const viewportWindow = globalConfig.viewportWindow || window
let documentElement = viewportWindow.document.documentElement
let bodyElem = viewportWindow.document.body
diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts
index 319a94c6b7..906824aaef 100644
--- a/packages/utils/src/index.ts
+++ b/packages/utils/src/index.ts
@@ -1,14 +1,16 @@
import xss from './xss'
import log from './log'
import crypt from './crypt'
-import global from './global'
+import * as global from './global'
+import * as dom from './dom'
import * as type from './type'
-export { xss, log, crypt, global, type }
+export { xss, log, crypt, dom, global, type }
export default {
xss,
log,
+ dom,
crypt,
global,
type
diff --git a/packages/vue-common/package.json b/packages/vue-common/package.json
index c4bebdbe45..45f7d64744 100644
--- a/packages/vue-common/package.json
+++ b/packages/vue-common/package.json
@@ -28,6 +28,7 @@
"sideEffects": false,
"type": "module",
"dependencies": {
+ "@opentiny/utils": "workspace:~",
"@opentiny/vue-locale": "workspace:~",
"@opentiny/vue-renderless": "workspace:~",
"@opentiny/vue-theme": "workspace:~",
diff --git a/packages/vue-common/src/breakpoint.ts b/packages/vue-common/src/breakpoint.ts
index e7994a7ce0..a18967fae3 100644
--- a/packages/vue-common/src/breakpoint.ts
+++ b/packages/vue-common/src/breakpoint.ts
@@ -1,6 +1,6 @@
import hooks from './adapter'
-import { isServer } from '@opentiny/vue-renderless/common/deps/dom'
import debounce from '@opentiny/vue-renderless/common/deps/debounce'
+import { dom } from '@opentiny/utils'
/**
* 组合使用 Tailwind 的响应性断点状态
@@ -13,7 +13,7 @@ export const useBreakpoint = () => {
const activeBreakpoint = hooks.ref('')
const prefixes = ['2xl', 'xl', 'lg', 'md', 'sm']
const createMatchMedia = (mediaQueryString) => {
- if (isServer || typeof matchMedia !== 'function') {
+ if (dom.isServer || typeof matchMedia !== 'function') {
return {
matches: false,
media: mediaQueryString,
diff --git a/packages/vue/src/collapse-transition/package.json b/packages/vue/src/collapse-transition/package.json
index c2d0f05197..54538309da 100644
--- a/packages/vue/src/collapse-transition/package.json
+++ b/packages/vue/src/collapse-transition/package.json
@@ -15,6 +15,7 @@
"//postversion": "pnpm build"
},
"dependencies": {
+ "@opentiny/utils": "workspace:~",
"@opentiny/vue-common": "workspace:~",
"@opentiny/vue-renderless": "workspace:~",
"@opentiny/vue-theme": "workspace:~"
diff --git a/packages/vue/src/collapse-transition/src/pc.vue b/packages/vue/src/collapse-transition/src/pc.vue
index f9a62ce160..0c9d11fd17 100644
--- a/packages/vue/src/collapse-transition/src/pc.vue
+++ b/packages/vue/src/collapse-transition/src/pc.vue
@@ -17,7 +17,7 @@