@zfqh/uview-x 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +52 -9
  3. package/components/uv-badge/uv-badge.vue +4 -4
  4. package/components/uv-button/uv-button.vue +11 -11
  5. package/components/uv-checkbox/uv-checkbox.vue +11 -9
  6. package/components/uv-checkbox-group/uv-checkbox-group.vue +2 -2
  7. package/components/uv-code/uv-code.vue +2 -2
  8. package/components/uv-dialog/uv-dialog.vue +10 -11
  9. package/components/uv-form/uv-form.vue +244 -246
  10. package/components/uv-form-item/uv-form-item.vue +10 -9
  11. package/components/uv-icon/uv-icon.vue +13 -13
  12. package/components/uv-input/uv-input.vue +6 -5
  13. package/components/uv-line/uv-line.vue +7 -6
  14. package/components/uv-line-progress/uv-line-progress.vue +5 -5
  15. package/components/uv-loading-icon/uv-loading-icon.vue +9 -8
  16. package/components/uv-overlay/uv-overlay.vue +3 -2
  17. package/components/uv-popup/uv-popup.vue +6 -5
  18. package/components/uv-safe-bottom/uv-safe-bottom.vue +4 -3
  19. package/components/uv-status-bar/uv-status-bar.vue +4 -3
  20. package/components/uv-tabs/uv-tabs.vue +15 -12
  21. package/components/uv-transition/uv-transition.vue +2 -2
  22. package/hooks/index.ts +5 -5
  23. package/hooks/useDebounce.ts +33 -35
  24. package/hooks/useI18n.ts +4 -3
  25. package/hooks/useThrottle.ts +36 -38
  26. package/index.ts +50 -29
  27. package/locales/en.ts +56 -0
  28. package/locales/es.ts +57 -0
  29. package/locales/fr.ts +57 -0
  30. package/locales/index.ts +15 -159
  31. package/locales/ru.ts +57 -0
  32. package/locales/zh-Hans.ts +57 -0
  33. package/locales/zh-Hant.ts +57 -0
  34. package/package.json +2 -2
  35. package/types/index.d.ts +68 -59
  36. package/utils/color.ts +139 -0
  37. package/utils/compress.ts +28 -28
  38. package/utils/config.ts +46 -11
  39. package/utils/debounce.ts +4 -4
  40. package/utils/function.ts +11 -89
  41. package/utils/locale.ts +444 -270
  42. package/utils/merge.ts +74 -0
  43. package/utils/platform.ts +28 -28
  44. package/utils/route.ts +123 -129
  45. package/utils/scrollbar.ts +19 -19
  46. package/utils/throttle.ts +4 -4
  47. package/locales/en-US.ts +0 -79
  48. package/locales/es-ES.ts +0 -79
  49. package/locales/fr-FR.ts +0 -79
  50. package/locales/ru-RU.ts +0 -79
  51. package/locales/zh-CN.ts +0 -79
  52. package/locales/zh-TW.ts +0 -79
  53. package/utils/colorGradient.ts +0 -139
  54. package/utils/index.ts +0 -58
  55. /package/components/uv-form/{valid.ts → validator.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [0.0.8](http://10.10.10.16/caoben/front-end-tools/compare/@zfqh/uview-x@0.0.7...@zfqh/uview-x@0.0.8) (2026-11-11)
7
+
8
+ **Note:** Version bump only for package @zfqh/uview-x
9
+
10
+
11
+
12
+
13
+
14
+ ## [0.0.7](http://10.10.10.16/caoben/front-end-tools/compare/@zfqh/uview-x@0.0.6...@zfqh/uview-x@0.0.7) (2026-11-11)
15
+
16
+ **Note:** Version bump only for package @zfqh/uview-x
17
+
18
+
19
+
20
+
21
+
6
22
  ## [0.0.6](http://10.10.10.16/caoben/front-end-tools/compare/@zfqh/uview-x@0.0.5...@zfqh/uview-x@0.0.6) (2026-11-11)
7
23
 
8
24
  **Note:** Version bump only for package @zfqh/uview-x
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @zfqh/uview-x
2
2
 
3
- 面向 uni-app x 蒸汽模式(Vapor)、uni-app x H5 / 微信小程序(VDOM)与经典 uni-app Vue3 / nvue 的 UV UI 组件库,沿用 `uv-*` 组件名与 uv-ui API;入口同时提供 `$uv`、`config`、hooks 与第三方库导出。
3
+ 面向 uni-app x 蒸汽模式(Vapor)、uni-app x H5 / 微信小程序(VDOM)与经典 uni-app Vue3 / nvue 的 UV UI 组件库,沿用 `uv-*` 组件名与 uv-ui API;根入口默认导出插件并提供公共 API(`config` / `setConfig` / i18n / hooks / `route` / `http` / `compress` / `debounce` / `throttle` / `test`),其余工具与第三方库按深路径引入。
4
4
 
5
5
  ## 安装
6
6
 
@@ -10,20 +10,22 @@ npm i @zfqh/uview-x
10
10
 
11
11
  ## 快速开始
12
12
 
13
- `main.ts` 注册插件(仅安装 `$uv` 能力,不注册组件):
13
+ `main.ts` 注册插件(只应用运行时配置与 i18n,不注册组件、不注入全局对象):
14
14
 
15
15
  ```ts
16
16
  import { createSSRApp } from 'vue';
17
17
  import App from './App.uvue';
18
- import uviewX from '@zfqh/uview-x';
18
+ import UviewX from '@zfqh/uview-x';
19
19
 
20
20
  export function createApp() {
21
21
  const app = createSSRApp(App);
22
- app.use(uviewX);
22
+ app.use(UviewX, { unit: 'px' });
23
23
  return { app };
24
24
  }
25
25
  ```
26
26
 
27
+ 也可以先 `import { setConfig } from '@zfqh/uview-x'` 并调用 `setConfig({ unit: 'px' })`,再 `app.use(UviewX)`;`app.use` 传入的同名字段会覆盖此前配置。
28
+
27
29
  页面推荐显式 import 组件(uni-app x Vapor 构建必需):
28
30
 
29
31
  ```vue
@@ -63,18 +65,59 @@ dev 阶段也可使用 easycom(`pages.json`):
63
65
  </style>
64
66
  ```
65
67
 
66
- 全局配置(如 H5 滚动条,默认隐藏)需在 `app.use(uviewX)` 前通过 `uni.$uv.setConfig({ scrollbar: true })` 设置(安装时应用一次),详见 `AGENTS.md`。
68
+ 运行时配置(如 H5 滚动条,默认隐藏)同样可通过根入口导出的 `setConfig` 或插件 options 设置,例如 `import { setConfig } from '@zfqh/uview-x'; setConfig({ scrollbar: true })`;`setConfig` 可配置 unit / type / color / props / scrollbar 与 i18n,详见 `AGENTS.md`。
67
69
 
68
70
  ## 国际化
69
71
 
70
- 默认简体中文;其他语言按需引入并合并(可选:`zh-CN`、`zh-TW`、`en-US`、`es-ES`、`fr-FR`、`ru-RU`):
72
+ 默认英文(`en`);其他语言按需引入并合并(可选:`zh-Hans`、`zh-Hant`、`es`、`fr`、`ru`):
73
+
74
+ ```ts
75
+ import en from '@zfqh/uview-x/locales/en';
76
+ import zhHans from '@zfqh/uview-x/locales/zh-Hans';
77
+
78
+ // 也可从 locales 聚合入口导入全部语言包
79
+ // import { en, zhHans } from '@zfqh/uview-x/locales';
80
+ // import locales from '@zfqh/uview-x/locales';
81
+
82
+ app.use(UviewX, {
83
+ i18n: {
84
+ locale: 'en',
85
+ fallbackLocale: 'en',
86
+ messages: {
87
+ en,
88
+ 'zh-Hans': zhHans,
89
+ },
90
+ },
91
+ });
92
+
93
+ // 或先 setConfig({ i18n: {...} }),再 app.use(UviewX)
94
+ // createI18n({ locale: 'zh-Hans', messages: {...} }) 可覆盖当前 i18n 配置
95
+ // 语言包使用扁平 key,例如 en['uv.dialog.title']
96
+ ```
97
+
98
+ ## 工具与第三方库
99
+
100
+ 根入口只提供公共 API;其余工具按文件深路径引入,不存在 `$uv` 聚合对象:
71
101
 
72
102
  ```ts
73
- import enUS from '@zfqh/uview-x/locales/en-US';
74
- // createI18n({ messages: { 'en-US': { ...enUS, ...自定义 } } })
75
- // 其他语言将路径中的 en-US 换成对应 locale 即可
103
+ // 根入口:配置、导航、请求、压缩、防抖/节流、校验
104
+ import { config, setConfig, route, http, compress, debounce, throttle, test } from '@zfqh/uview-x';
105
+ import { useDebounce, useThrottle, useI18n, createI18n, getLocale, getLocaleMessage, setLocale } from '@zfqh/uview-x';
106
+
107
+ // 其余工具:@zfqh/uview-x/utils/<file>
108
+ import { colorGradient } from '@zfqh/uview-x/utils/color';
109
+ import { addUnit, timeFormat } from '@zfqh/uview-x/utils/function';
110
+
111
+ // 第三方库:@zfqh/uview-x/libs
112
+ import { Request, dayjs } from '@zfqh/uview-x/libs';
76
113
  ```
77
114
 
115
+ ## 迁移提示
116
+
117
+ - 已移除 `$uv` / `uni.$uv` / `app.config.globalProperties.$uv` 与 `utils`、`libs` 聚合导出,改为从根入口或深路径具名导入(见上节)。
118
+ - `utils/index.ts` 已删除,工具从 `@zfqh/uview-x/utils/<file>` 引入;`utils/colorGradient.ts` 更名为 `utils/color.ts`。
119
+ - SCSS 主题变量 `$uv-*` 保持不变。
120
+
78
121
  ## 文档
79
122
 
80
123
  - 开发约定、组件清单、完整 API、平台差异与验证:[AGENTS.md](AGENTS.md)
@@ -3,13 +3,13 @@
3
3
  v-if="showBadge"
4
4
  class="uv-badge"
5
5
  :class="badgeClasses"
6
- :style="[$uv.addStyle(p.customStyle), badgeStyle]"
6
+ :style="[addStyle(p.customStyle), badgeStyle]"
7
7
  >{{ badgeText }}</text>
8
8
  </template>
9
9
 
10
10
  <script setup lang="ts">
11
11
  import { computed } from 'vue'
12
- import { $uv } from '../../utils'
12
+ import { addStyle, addUnit } from '../../utils/function'
13
13
  import props from './props'
14
14
 
15
15
  defineOptions({
@@ -71,8 +71,8 @@
71
71
  // top和right分为为offset的第一个和第二个值,如果没有第二个值,则right等于top
72
72
  const top = p.offset[0]
73
73
  const right = p.offset[1] || top
74
- style.top = $uv.addUnit(top)
75
- style.right = $uv.addUnit(right)
74
+ style.top = addUnit(top as number)
75
+ style.right = addUnit(right as number)
76
76
  }
77
77
  }
78
78
  return style
@@ -24,7 +24,7 @@
24
24
  :hover-class="hoverClass"
25
25
  class="uv-button uv-reset-button"
26
26
  :class="[bemClass, p.customClass, p.color ? 'uv-button--custom-color' : '']"
27
- :style="[baseColor, radiusStyle, $uv.addStyle(p.customStyle)]"
27
+ :style="[baseColor, radiusStyle, addStyle(p.customStyle)]"
28
28
  @click="clickHandler"
29
29
  @getphonenumber="onGetPhoneNumber"
30
30
  @getuserinfo="onGetUserInfo"
@@ -48,7 +48,7 @@
48
48
  ></uv-loading-icon>
49
49
  <text
50
50
  class="uv-button__loading-text"
51
- :style="[{ fontSize: textSize + 'px', color: textColorCom }, $uv.addStyle(p.customTextStyle)]"
51
+ :style="[{ fontSize: textSize + 'px', color: textColorCom }, addStyle(p.customTextStyle)]"
52
52
  >{{ p.loadingText || p.text }}</text>
53
53
  </template>
54
54
  <template v-else>
@@ -61,7 +61,7 @@
61
61
  <slot>
62
62
  <text
63
63
  class="uv-button__text"
64
- :style="[textStyleCom, $uv.addStyle(p.customTextStyle)]"
64
+ :style="[textStyleCom, addStyle(p.customTextStyle)]"
65
65
  >{{ p.text }}</text>
66
66
  </slot>
67
67
  <slot name="suffix"></slot>
@@ -76,7 +76,7 @@
76
76
  :hover-class="hoverClass"
77
77
  class="uv-button uv-reset-button"
78
78
  :class="[bemClass, p.customClass, p.color ? 'uv-button--custom-color' : '']"
79
- :style="[baseColor, radiusStyle, $uv.addStyle(p.customStyle)]"
79
+ :style="[baseColor, radiusStyle, addStyle(p.customStyle)]"
80
80
  @click="clickHandler"
81
81
  >
82
82
  <template v-if="p.loading">
@@ -87,7 +87,7 @@
87
87
  ></uv-loading-icon>
88
88
  <text
89
89
  class="uv-button__loading-text"
90
- :style="[{ fontSize: textSize + 'px', color: textColorCom }, $uv.addStyle(p.customTextStyle)]"
90
+ :style="[{ fontSize: textSize + 'px', color: textColorCom }, addStyle(p.customTextStyle)]"
91
91
  >{{ p.loadingText || p.text }}</text>
92
92
  </template>
93
93
  <template v-else>
@@ -100,7 +100,7 @@
100
100
  <slot>
101
101
  <text
102
102
  class="uv-button__text"
103
- :style="[textStyleCom, $uv.addStyle(p.customTextStyle)]"
103
+ :style="[textStyleCom, addStyle(p.customTextStyle)]"
104
104
  >{{ p.text }}</text>
105
105
  </slot>
106
106
  <slot name="suffix"></slot>
@@ -112,7 +112,7 @@
112
112
 
113
113
  <script setup lang="ts">
114
114
  import { computed } from 'vue'
115
- import { $uv } from '../../utils'
115
+ import { addStyle, addUnit } from '../../utils/function'
116
116
  import props from './props'
117
117
  import UvIcon from '../uv-icon/uv-icon.vue'
118
118
  import UvLoadingIcon from '../uv-loading-icon/uv-loading-icon.vue'
@@ -276,7 +276,7 @@
276
276
  const radiusStyle = computed(() => {
277
277
  const style: any = {}
278
278
  if (p.shape === 'square' && p.radius !== null && p.radius !== '') {
279
- const value = $uv.addUnit(p.radius)
279
+ const value = addUnit(p.radius)
280
280
  style.borderTopLeftRadius = value
281
281
  style.borderTopRightRadius = value
282
282
  style.borderBottomLeftRadius = value
@@ -296,7 +296,7 @@
296
296
 
297
297
  const getIconSize = computed(() => {
298
298
  const size = p.iconSize ? p.iconSize : textSize.value * 1.35
299
- return $uv.addUnit(size)
299
+ return addUnit(size)
300
300
  })
301
301
 
302
302
  // 文本样式:颜色显式下发(nvue 的 text 不继承父节点颜色),
@@ -312,7 +312,7 @@
312
312
 
313
313
  const btnWrapperStyle = computed(() => {
314
314
  const style: any = {}
315
- const customStyle = $uv.addStyle(p.customStyle)
315
+ const customStyle = addStyle(p.customStyle)
316
316
  if (customStyle && customStyle.width) style.width = customStyle.width
317
317
  return style
318
318
  })
@@ -333,7 +333,7 @@
333
333
  }
334
334
  }
335
335
 
336
- const emitDetail = (name: string, event: any) => {
336
+ const emitDetail = (name: any, event: any) => {
337
337
  emit(name, event?.detail)
338
338
  }
339
339
 
@@ -40,7 +40,9 @@
40
40
 
41
41
  <script setup lang="ts">
42
42
  import { computed, inject, nextTick, onUnmounted, ref, watch } from 'vue'
43
- import { $uv } from '../../utils'
43
+ import { addStyle, addUnit, error } from '../../utils/function'
44
+ import { deepMerge } from '../../utils/merge'
45
+ import { array as isArray } from '../../utils/test'
44
46
  import props from './props'
45
47
  import UvIcon from '../uv-icon/uv-icon.vue'
46
48
  import { preventEvent } from '../../utils/compat'
@@ -97,7 +99,7 @@
97
99
  }
98
100
 
99
101
  if (!checkboxGroupContext) {
100
- $uv.error('uv-checkbox必须搭配uv-checkbox-group组件使用')
102
+ error('uv-checkbox必须搭配uv-checkbox-group组件使用')
101
103
  } else {
102
104
  checkboxGroupContext.register(handle)
103
105
  }
@@ -114,7 +116,7 @@
114
116
  }
115
117
  const parentValue = checkboxGroupContext ? checkboxGroupContext.value : []
116
118
  // 父组件uv-checkbox-group的value可能是array,所以额外判断
117
- if ($uv.test.array(parentValue)) {
119
+ if (isArray(parentValue)) {
118
120
  // 查找数组是是否存在此name元素值
119
121
  isChecked.value = parentValue.some((item: any) => item === p.name)
120
122
  }
@@ -125,7 +127,7 @@
125
127
  watch(
126
128
  () => (checkboxGroupContext ? checkboxGroupContext.value : null),
127
129
  (value: any) => {
128
- if ($uv.test.array(value)) {
130
+ if (isArray(value)) {
129
131
  isChecked.value = value.some((item: any) => item === p.name)
130
132
  }
131
133
  }
@@ -204,7 +206,7 @@
204
206
 
205
207
  // label大小
206
208
  const elLabelSize = computed(() => {
207
- return $uv.addUnit(
209
+ return addUnit(
208
210
  p.labelSize
209
211
  ? p.labelSize
210
212
  : checkboxGroupContext && checkboxGroupContext.labelSize
@@ -249,8 +251,8 @@
249
251
  const style: any = {}
250
252
  style.backgroundColor = isChecked.value && !elDisabled.value ? elActiveColor.value : '#ffffff'
251
253
  style.borderColor = isChecked.value && !elDisabled.value ? elActiveColor.value : elInactiveColor.value
252
- style.width = $uv.addUnit(elSize.value)
253
- style.height = $uv.addUnit(elSize.value)
254
+ style.width = addUnit(elSize.value)
255
+ style.height = addUnit(elSize.value)
254
256
  if (elDisabled.value) {
255
257
  // 与 uv-ui 一致:禁用时背景固定为 #ebedf0(原实现通过 CSS !important 覆盖),边框取未选中颜色
256
258
  style.backgroundColor = '#ebedf0'
@@ -275,13 +277,13 @@
275
277
  const checkboxStyle = computed(() => {
276
278
  const style: any = {}
277
279
  if (checkboxGroupContext && checkboxGroupContext.borderBottom && checkboxGroupContext.placement === 'row') {
278
- $uv.error('检测到您将borderBottom设置为true,需要同时将uv-checkbox-group的placement设置为column才有效')
280
+ error('检测到您将borderBottom设置为true,需要同时将uv-checkbox-group的placement设置为column才有效')
279
281
  }
280
282
  // 当父组件设置了显示下边框并且排列形式为纵向时,给内容和边框之间加上一定间隔
281
283
  if (checkboxGroupContext && checkboxGroupContext.borderBottom && checkboxGroupContext.placement === 'column') {
282
284
  style.paddingBottom = '8px'
283
285
  }
284
- return $uv.deepMerge(style, $uv.addStyle(p.customStyle))
286
+ return deepMerge(style, addStyle(p.customStyle))
285
287
  })
286
288
 
287
289
  // 横向两端排列时,点击组件即可触发选中事件
@@ -2,7 +2,7 @@
2
2
  <view
3
3
  class="uv-checkbox-group"
4
4
  :class="[bemClass, p.customClass]"
5
- :style="[$uv.addStyle(p.customStyle)]"
5
+ :style="[addStyle(p.customStyle)]"
6
6
  >
7
7
  <slot></slot>
8
8
  </view>
@@ -10,7 +10,7 @@
10
10
 
11
11
  <script setup lang="ts">
12
12
  import { computed, provide, reactive, watch } from 'vue'
13
- import { $uv } from '../../utils'
13
+ import { addStyle } from '../../utils/function'
14
14
  import props from './props'
15
15
 
16
16
 
@@ -1,12 +1,12 @@
1
1
  <template>
2
- <view class="uv-code" :class="[p.customClass]" :style="[$uv.addStyle(p.customStyle)]">
2
+ <view class="uv-code" :class="[p.customClass]" :style="[addStyle(p.customStyle)]">
3
3
  <!-- 此组件功能由js完成,无需写html逻辑 -->
4
4
  </view>
5
5
  </template>
6
6
 
7
7
  <script setup lang="ts">
8
8
  import { computed, onMounted, onUnmounted, ref, watch } from 'vue'
9
- import { $uv } from '../../utils'
9
+ import { addStyle } from '../../utils/function'
10
10
  import props from './props'
11
11
  import { useI18n } from '../../hooks'
12
12
 
@@ -94,7 +94,8 @@
94
94
 
95
95
  <script setup lang="ts">
96
96
  import { computed, nextTick, onMounted, ref, watch } from 'vue'
97
- import { $uv } from '../../utils'
97
+ import { addStyle, addUnit, sys } from '../../utils/function'
98
+ import { deepMerge } from '../../utils/merge'
98
99
  import props from './props'
99
100
  import UvPopup from '../uv-popup/uv-popup.vue'
100
101
  import UvButton from '../uv-button/uv-button.vue'
@@ -186,8 +187,6 @@
186
187
  const showCancelBtn = computed(() => Boolean(cfg.value.showCancelButton))
187
188
  const showConfirmBtn = computed(() => Boolean(cfg.value.showConfirmButton))
188
189
 
189
- const addUnit = (value: string | number) => $uv.addUnit(value)
190
-
191
190
  const titleAlignValue = computed(() => {
192
191
  const map: Record<string, string> = {
193
192
  left: 'flex-start',
@@ -207,7 +206,7 @@
207
206
  if (cfg.value.mode === 'center') {
208
207
  style.width = addUnit(cfg.value.width)
209
208
  }
210
- return $uv.deepMerge(style, $uv.addStyle(cfg.value.customStyle))
209
+ return deepMerge(style, addStyle(cfg.value.customStyle))
211
210
  })
212
211
 
213
212
  const headerStyleCom = computed(() => {
@@ -224,7 +223,7 @@
224
223
  style.borderBottomStyle = 'solid'
225
224
  style.borderBottomColor = '#f2f3f5'
226
225
  }
227
- return $uv.deepMerge(style, $uv.addStyle(cfg.value.headerStyle))
226
+ return deepMerge(style, addStyle(cfg.value.headerStyle))
228
227
  })
229
228
 
230
229
  const titleStyleCom = computed(() => {
@@ -234,7 +233,7 @@
234
233
  lineHeight: m.titleSize + 8 + 'px',
235
234
  color: '#303133'
236
235
  }
237
- return $uv.deepMerge(style, $uv.addStyle(cfg.value.titleStyle))
236
+ return deepMerge(style, addStyle(cfg.value.titleStyle))
238
237
  })
239
238
 
240
239
  const scrollStyleCom = computed(() => {
@@ -244,13 +243,13 @@
244
243
  // #endif
245
244
  // #ifndef WEB || H5
246
245
  try {
247
- const info = $uv.sys()
246
+ const info = sys()
248
247
  style.maxHeight = Math.floor(Number(info.windowHeight || 800) * 0.6) + 'px'
249
248
  } catch (e) {
250
249
  style.maxHeight = '500px'
251
250
  }
252
251
  // #endif
253
- return $uv.deepMerge(style, $uv.addStyle(cfg.value.scrollStyle))
252
+ return deepMerge(style, addStyle(cfg.value.scrollStyle))
254
253
  })
255
254
 
256
255
  const contentStyleCom = computed(() => {
@@ -265,7 +264,7 @@
265
264
  const textAlign = align === 'center' ? 'center' : align === 'right' ? 'right' : 'left'
266
265
  style.textAlign = textAlign
267
266
  style.alignItems = textAlign === 'center' ? 'center' : textAlign === 'right' ? 'flex-end' : 'flex-start'
268
- return $uv.deepMerge(style, $uv.addStyle(cfg.value.contentStyle))
267
+ return deepMerge(style, addStyle(cfg.value.contentStyle))
269
268
  })
270
269
 
271
270
  const contentTextStyle = computed(() => {
@@ -277,7 +276,7 @@
277
276
  }
278
277
  const align = String(cfg.value.align || 'left')
279
278
  style.textAlign = align === 'center' ? 'center' : align === 'right' ? 'right' : 'left'
280
- return $uv.deepMerge(style, $uv.addStyle(cfg.value.contentStyle))
279
+ return deepMerge(style, addStyle(cfg.value.contentStyle))
281
280
  })
282
281
 
283
282
  const footerStyleCom = computed(() => {
@@ -293,7 +292,7 @@
293
292
  style.borderTopStyle = 'solid'
294
293
  style.borderTopColor = '#f2f3f5'
295
294
  }
296
- return $uv.deepMerge(style, $uv.addStyle(cfg.value.footerStyle))
295
+ return deepMerge(style, addStyle(cfg.value.footerStyle))
297
296
  })
298
297
 
299
298
  const gapStyle = computed(() => ({ width: metrics.value.gap + 'px' }))