uview-pro 0.0.21 → 0.0.22
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.
- package/changelog.md +45 -4
- package/components/u-modal/u-modal.vue +4 -0
- package/components/u-safe-bottom/u-safe-bottom.vue +46 -0
- package/components/u-status-bar/u-status-bar.vue +65 -0
- package/components/u-td/u-td.vue +3 -2
- package/components/u-th/types.ts +1 -1
- package/components/u-th/u-th.vue +3 -2
- package/components/u-upload/types.ts +11 -8
- package/libs/css/style.vue.scss +6 -4
- package/libs/function/styleUtils.ts +83 -0
- package/package.json +1 -1
package/changelog.md
CHANGED
|
@@ -1,9 +1,32 @@
|
|
|
1
|
+
## 0.0.22(2025-09-11)
|
|
2
|
+
|
|
3
|
+
### 🚀 Chore | 构建/工程依赖/工具
|
|
4
|
+
|
|
5
|
+
- 忽略 pnpm-lock.yaml 文件 ([28802d3](https://github.com/anyup/uView-Pro/commit/28802d308d3c1f2d0d6b583b3b27725b6b40b1a9))
|
|
6
|
+
|
|
7
|
+
### 🐛 Bug Fixes | Bug 修复
|
|
8
|
+
|
|
9
|
+
- **td/th:** fix invalid width setting ([21718fc](https://github.com/anyup/uView-Pro/commit/21718fc3b2f09e1ccf9f1ce8247b78f30e5fe465))
|
|
10
|
+
- **u-modal:** 修复在 modal 组件中添加 clearLoading 方法的暴露,以便外部可以调用 ([34b51a7](https://github.com/anyup/uView-Pro/commit/34b51a7187da296b11f4b5db027a86c41a50a477))
|
|
11
|
+
|
|
12
|
+
### ✨ Features | 新功能
|
|
13
|
+
|
|
14
|
+
- **components:** add u-status-bar and u-safe-bottom component ([2085e73](https://github.com/anyup/uView-Pro/commit/2085e73be725f921c436069c27c124e507b24d0e))
|
|
15
|
+
- **u-upload:** 调整上传组件默认值和功能 ([4808627](https://github.com/anyup/uView-Pro/commit/48086274f5fe16f4b3b7554a99038a76aa08e8c5))
|
|
16
|
+
- **pages:** 在多个页面中添加功能说明的弹窗提示 ([5e59855](https://github.com/anyup/uView-Pro/commit/5e59855ff81f21c54cbfa44a3f4641b4b9f1f6bd))
|
|
17
|
+
|
|
1
18
|
## 0.0.21(2025-09-09)
|
|
2
|
-
### Performance Improvements | 性能优化
|
|
3
19
|
|
|
4
|
-
|
|
20
|
+
### ⚡ Performance Improvements | 性能优化
|
|
5
21
|
|
|
6
|
-
|
|
22
|
+
- **pages:** options 语法升级为 composition 语法 ([e38878c](https://github.com/anyup/uView-Pro/commit/e38878c696ffc548374169423613e97c3878bafd))
|
|
23
|
+
- **pages:** options 语法升级为 composition 语法 ([0403545](https://github.com/anyup/uView-Pro/commit/040354507bd187a9bff4371fc4950dfd6412cd5b))
|
|
24
|
+
- **pages:** options 语法升级为 composition 语法 ([514ecb6](https://github.com/anyup/uView-Pro/commit/514ecb6f8e2b133b962a6cbe7609a64e4d973928))
|
|
25
|
+
- **pages:** options 语法升级为 composition 语法 ([ffcc1cb](https://github.com/anyup/uView-Pro/commit/ffcc1cb8993196252535ea6553d7fd999ab57719))
|
|
26
|
+
- **pages:** options 语法升级为 composition 语法 ([2c755e3](https://github.com/anyup/uView-Pro/commit/2c755e3e1f386c3be1ae8955607d64f72b2b6640))
|
|
27
|
+
- 优化首页图标渲染问题 ([a6d4b16](https://github.com/anyup/uView-Pro/commit/a6d4b1690544f3261fb138cb490a10131d4fb749))
|
|
28
|
+
|
|
29
|
+
### 🐛 Bug Fixes | Bug 修复
|
|
7
30
|
|
|
8
31
|
- **u-tag:** 修复 u-tag 类型 ([c9071a6](https://github.com/anyup/uView-Pro/commit/c9071a610e08efc4581eff97e4d4998c2d01c9eb))
|
|
9
32
|
- **u-table:** 修复 u-table props style 属性变化时,u-th/t-td 未更新问题 ([b1ee7d6](https://github.com/anyup/uView-Pro/commit/b1ee7d6ade7a59e305d7a4081415418387bb6832))
|
|
@@ -12,9 +35,27 @@
|
|
|
12
35
|
- 修复微信小程序不支持u-circle-progress绘制canvas失败问题 ([46406c5](https://github.com/anyup/uView-Pro/commit/46406c593260f29b081c6a5d98c48dc97e225600))
|
|
13
36
|
- 修复 u-picker 组件 params 属性默认值设置 ([36a713b](https://github.com/anyup/uView-Pro/commit/36a713b3c84ddb6e9ef40132512063cdde35ea19))
|
|
14
37
|
|
|
15
|
-
###
|
|
38
|
+
### 📝 Documentation | 文档
|
|
39
|
+
|
|
40
|
+
- 更新微信交流群图片 ([825b187](https://github.com/anyup/uView-Pro/commit/825b187619ee745a23559bfe0b597b75f90f220d))
|
|
41
|
+
|
|
42
|
+
### 🚀 Chore | 构建/工程依赖/工具
|
|
43
|
+
|
|
44
|
+
- update project configuration and add prettier support ([9c0cc6a](https://github.com/anyup/uView-Pro/commit/9c0cc6ae3719b975d702b0283bd0c15ee4f3c374))
|
|
45
|
+
|
|
46
|
+
### ♻️ Code Refactoring | 代码重构
|
|
47
|
+
|
|
48
|
+
- **library:** 移除不需要的 globalVariable ([420c40e](https://github.com/anyup/uView-Pro/commit/420c40eac3c67e184924e166edaf4cf2ea904477))
|
|
49
|
+
- 更新 pages.json ([03297ce](https://github.com/anyup/uView-Pro/commit/03297ce219ae9337c1a424b9583fa53c74f0291d))
|
|
50
|
+
|
|
51
|
+
### 💄 Styles | 风格
|
|
52
|
+
|
|
53
|
+
- 格式化代码 ([a9e0a38](https://github.com/anyup/uView-Pro/commit/a9e0a387ffa55df740b828ea4a1463d97089c4bd))
|
|
54
|
+
|
|
55
|
+
### 📦 Build System | 打包构建
|
|
16
56
|
|
|
17
57
|
- mp-alipay 开启 component2 支持 ([430d248](https://github.com/anyup/uView-Pro/commit/430d248ef9e805365dcee0373f6a524bd7084a38))
|
|
58
|
+
|
|
18
59
|
## 0.0.20(2025-09-08)
|
|
19
60
|
|
|
20
61
|
### ♻️ Code Refactoring | 代码重构
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<view class="u-safe-bottom" :style="style" :class="[!isNVue && 'safe-area-inset-bottom']"></view>
|
|
3
|
+
</template>
|
|
4
|
+
|
|
5
|
+
<script setup lang="ts">
|
|
6
|
+
import { ref, computed, onMounted, withDefaults, type CSSProperties } from 'vue';
|
|
7
|
+
import { sys } from '../../libs/function/sys';
|
|
8
|
+
import addUnit from '../../libs/function/addUnit';
|
|
9
|
+
import deepMerge from '../../libs/function/deepMerge';
|
|
10
|
+
import { mergeStyles } from '../../libs/function/styleUtils';
|
|
11
|
+
|
|
12
|
+
defineOptions({ name: 'u-safe-bottom' });
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* SafeBottom 底部安全区
|
|
16
|
+
* @description 这个适配,主要是针对IPhone X等一些底部带指示条的机型,指示条的操作区域与页面底部存在重合,容易导致用户误操作,因此我们需要针对这些机型进行底部安全区适配。
|
|
17
|
+
* @property {String | Object} customStyle 自定义样式
|
|
18
|
+
* @example <u-safe-bottom></u-safe-bottom>
|
|
19
|
+
*/
|
|
20
|
+
const props = withDefaults(
|
|
21
|
+
defineProps<{
|
|
22
|
+
customStyle?: string | CSSProperties;
|
|
23
|
+
}>(),
|
|
24
|
+
{
|
|
25
|
+
customStyle: () => ({})
|
|
26
|
+
}
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
const isNVue = ref(false);
|
|
30
|
+
|
|
31
|
+
const style = computed(() => {
|
|
32
|
+
let r: CSSProperties = {};
|
|
33
|
+
// #ifdef APP-NVUE || MP-TOUTIAO
|
|
34
|
+
// nvue下,高度使用js计算填充
|
|
35
|
+
r.height = addUnit(sys().safeAreaInsets.bottom, 'px');
|
|
36
|
+
// #endif
|
|
37
|
+
return deepMerge(r, mergeStyles(props.customStyle));
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
onMounted(() => {
|
|
41
|
+
// #ifdef APP-NVUE
|
|
42
|
+
// 标识为是否nvue
|
|
43
|
+
isNVue.value = true;
|
|
44
|
+
// #endif
|
|
45
|
+
});
|
|
46
|
+
</script>
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<view :style="style" :class="['u-status-bar', { 'safe-area-inset-top': noBar }]">
|
|
3
|
+
<slot />
|
|
4
|
+
</view>
|
|
5
|
+
</template>
|
|
6
|
+
|
|
7
|
+
<script setup lang="ts">
|
|
8
|
+
import { ref, computed, onMounted, withDefaults, type CSSProperties } from 'vue';
|
|
9
|
+
import { sys } from '../../libs/function/sys';
|
|
10
|
+
import addUnit from '../../libs/function/addUnit';
|
|
11
|
+
import deepMerge from '../../libs/function/deepMerge';
|
|
12
|
+
import { mergeStyles } from '../../libs/function/styleUtils';
|
|
13
|
+
|
|
14
|
+
defineOptions({
|
|
15
|
+
name: 'u-status-bar'
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* StatusBar 状态栏
|
|
20
|
+
* @property {String | Object} customStyle 自定义样式
|
|
21
|
+
* @property {String} background 背景颜色
|
|
22
|
+
* @example <u-status-bar></u-status-bar>
|
|
23
|
+
*/
|
|
24
|
+
const props = withDefaults(
|
|
25
|
+
defineProps<{
|
|
26
|
+
background?: string;
|
|
27
|
+
customStyle?: string | CSSProperties;
|
|
28
|
+
}>(),
|
|
29
|
+
{
|
|
30
|
+
// 背景颜色
|
|
31
|
+
background: 'transparent',
|
|
32
|
+
customStyle: () => ({})
|
|
33
|
+
}
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
const noBar = ref(false);
|
|
37
|
+
|
|
38
|
+
const style = computed(() => {
|
|
39
|
+
let r: CSSProperties = {
|
|
40
|
+
background: props.background
|
|
41
|
+
};
|
|
42
|
+
const sh = sys().statusBarHeight;
|
|
43
|
+
if (sh === 0) {
|
|
44
|
+
noBar.value = true;
|
|
45
|
+
} else {
|
|
46
|
+
r.height = addUnit(sh, 'px');
|
|
47
|
+
}
|
|
48
|
+
return deepMerge(r, mergeStyles(props.customStyle));
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
onMounted(() => {
|
|
52
|
+
// #ifdef H5
|
|
53
|
+
noBar.value = true;
|
|
54
|
+
// #endif
|
|
55
|
+
});
|
|
56
|
+
</script>
|
|
57
|
+
|
|
58
|
+
<style scoped>
|
|
59
|
+
.u-status-bar {
|
|
60
|
+
/* #ifndef APP-NVUE */
|
|
61
|
+
/* nvue会默认100%,如果nvue下,显式写100%的话,会导致宽度不为100%而异常 */
|
|
62
|
+
width: 100%;
|
|
63
|
+
/* #endif */
|
|
64
|
+
}
|
|
65
|
+
</style>
|
package/components/u-td/u-td.vue
CHANGED
|
@@ -35,7 +35,8 @@ function updateStyle() {
|
|
|
35
35
|
if (!parent) return;
|
|
36
36
|
|
|
37
37
|
const style: Record<string, any> = {};
|
|
38
|
-
if (props.width !== 'auto') style.
|
|
38
|
+
if (props.width && props.width !== 'auto') style.width = props.width;
|
|
39
|
+
else style.flex = '1';
|
|
39
40
|
style.textAlign = parent.props.align;
|
|
40
41
|
style.fontSize = parent.props.fontSize + 'rpx';
|
|
41
42
|
style.padding = parent.props.padding;
|
|
@@ -75,7 +76,7 @@ onMounted(() => {
|
|
|
75
76
|
.u-td {
|
|
76
77
|
@include vue-flex;
|
|
77
78
|
flex-direction: column;
|
|
78
|
-
flex: 1;
|
|
79
|
+
// flex: 1;
|
|
79
80
|
justify-content: center;
|
|
80
81
|
font-size: 28rpx;
|
|
81
82
|
color: $u-content-color;
|
package/components/u-th/types.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type { ExtractPropTypes, PropType } from 'vue';
|
|
|
6
6
|
*/
|
|
7
7
|
export const ThProps = {
|
|
8
8
|
/** 宽度,百分比或者具体带单位的值,如30%, 200rpx等,一般使用百分比 */
|
|
9
|
-
width: { type: [Number, String] as PropType<number | string>, default: '' }
|
|
9
|
+
width: { type: [Number, String] as PropType<number | string>, default: 'auto' }
|
|
10
10
|
};
|
|
11
11
|
|
|
12
12
|
export type ThProps = ExtractPropTypes<typeof ThProps>;
|
package/components/u-th/u-th.vue
CHANGED
|
@@ -31,7 +31,8 @@ function updateStyle() {
|
|
|
31
31
|
if (!parent) return;
|
|
32
32
|
|
|
33
33
|
const style: Record<string, any> = {};
|
|
34
|
-
if (props.width) style.
|
|
34
|
+
if (props.width && props.width !== 'auto') style.width = props.width;
|
|
35
|
+
else style.flex = '1';
|
|
35
36
|
style.textAlign = parent.props.align;
|
|
36
37
|
style.padding = parent.props.padding;
|
|
37
38
|
style.borderBottom = `solid 1px ${parent.props.borderColor}`;
|
|
@@ -70,7 +71,7 @@ onMounted(() => {
|
|
|
70
71
|
.u-th {
|
|
71
72
|
@include vue-flex;
|
|
72
73
|
flex-direction: column;
|
|
73
|
-
flex: 1;
|
|
74
|
+
// flex: 1;
|
|
74
75
|
justify-content: center;
|
|
75
76
|
font-size: 28rpx;
|
|
76
77
|
color: $u-main-color;
|
|
@@ -7,11 +7,11 @@ import type { ImgMode, UploadSizeType, UploadSourceType } from '../../types/glob
|
|
|
7
7
|
*/
|
|
8
8
|
export const UploadProps = {
|
|
9
9
|
/** 选择器宽度,单位rpx */
|
|
10
|
-
width: { type: [Number, String] as PropType<number | string>, default:
|
|
10
|
+
width: { type: [Number, String] as PropType<number | string>, default: 200 },
|
|
11
11
|
/** 选择器高度,单位rpx */
|
|
12
|
-
height: { type: [Number, String] as PropType<number | string>, default:
|
|
12
|
+
height: { type: [Number, String] as PropType<number | string>, default: 200 },
|
|
13
13
|
/** 最大上传数量 */
|
|
14
|
-
maxCount: { type: [Number, String] as PropType<number | string>, default:
|
|
14
|
+
maxCount: { type: [Number, String] as PropType<number | string>, default: 52 },
|
|
15
15
|
/** 是否可删除 */
|
|
16
16
|
deletable: { type: Boolean, default: true },
|
|
17
17
|
/** 是否显示上传列表 */
|
|
@@ -29,12 +29,12 @@ export const UploadProps = {
|
|
|
29
29
|
/** 是否自定义上传按钮 */
|
|
30
30
|
customBtn: { type: Boolean, default: false },
|
|
31
31
|
/** 上传按钮文字 */
|
|
32
|
-
uploadText: { type: String, default: '
|
|
32
|
+
uploadText: { type: String, default: '选择图片' },
|
|
33
33
|
/** 上传地址 */
|
|
34
34
|
action: { type: String, default: '' },
|
|
35
35
|
/** 是否禁用 */
|
|
36
36
|
disabled: { type: Boolean, default: false },
|
|
37
|
-
/**
|
|
37
|
+
/** 索引值,在各个回调事件中的最后一个参数返回,用于区别是哪一个组件的事件 */
|
|
38
38
|
index: { type: [String, Number] as PropType<string | number>, default: '' },
|
|
39
39
|
/** 请求头对象 */
|
|
40
40
|
header: { type: Object as PropType<Record<string, any>>, default: () => ({}) },
|
|
@@ -55,7 +55,10 @@ export const UploadProps = {
|
|
|
55
55
|
/** 文件列表 */
|
|
56
56
|
fileList: { type: Array as PropType<any[]>, default: () => [] },
|
|
57
57
|
/** 限制文件类型 */
|
|
58
|
-
|
|
58
|
+
/** 允许上传的图片后缀 */
|
|
59
|
+
/** 支付宝小程序真机选择图片的后缀为"image" */
|
|
60
|
+
/** https://opendocs.alipay.com/mini/api/media-image */
|
|
61
|
+
limitType: { type: Array as PropType<string[]>, default: () => ['png', 'jpg', 'jpeg', 'webp', 'gif', 'image'] },
|
|
59
62
|
/** 是否自动上传 */
|
|
60
63
|
autoUpload: { type: Boolean, default: true },
|
|
61
64
|
/** 是否显示提示 */
|
|
@@ -64,8 +67,8 @@ export const UploadProps = {
|
|
|
64
67
|
beforeUpload: { type: Function as PropType<((index: number, files: any[]) => boolean | Promise<any>) | null>, default: null },
|
|
65
68
|
/** 删除前钩子,返回true或Promise */
|
|
66
69
|
beforeRemove: { type: Function as PropType<((index: number, files: any[]) => boolean | Promise<any>) | null>, default: null },
|
|
67
|
-
/**
|
|
68
|
-
toJson: { type: Boolean, default:
|
|
70
|
+
/** 如果上传后的返回值为json字符串,是否转为json格式 */
|
|
71
|
+
toJson: { type: Boolean, default: true }
|
|
69
72
|
};
|
|
70
73
|
|
|
71
74
|
export type UploadProps = ExtractPropTypes<typeof UploadProps>;
|
package/libs/css/style.vue.scss
CHANGED
|
@@ -17,10 +17,12 @@ page {
|
|
|
17
17
|
/* end-icon图标外层套一个view,让其达到更好的垂直居中的效果--end */
|
|
18
18
|
|
|
19
19
|
/* start--iPhoneX底部安全区定义--start */
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
@each $d in top, right, bottom, left {
|
|
21
|
+
.safe-area-inset-#{$d} {
|
|
22
|
+
padding-#{$d}: 0;
|
|
23
|
+
padding-#{$d}: constant(safe-area-inset-#{$d});
|
|
24
|
+
padding-#{$d}: env(safe-area-inset-#{$d});
|
|
25
|
+
}
|
|
24
26
|
}
|
|
25
27
|
/* end-iPhoneX底部安全区定义--end */
|
|
26
28
|
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { CSSProperties } from 'vue';
|
|
2
|
+
import trim from './trim';
|
|
3
|
+
import test from './test';
|
|
4
|
+
|
|
5
|
+
function isValidValue(value: any): boolean {
|
|
6
|
+
if (test.isEmpty(value)) return false;
|
|
7
|
+
if (typeof value === 'string') {
|
|
8
|
+
const trimmed = trim(value).toLowerCase();
|
|
9
|
+
return trimmed !== 'null' && trimmed !== 'undefined' && trimmed !== '';
|
|
10
|
+
}
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* 将 CSS 字符串解析为对象
|
|
16
|
+
*/
|
|
17
|
+
function cssStrToObj(str: string): object {
|
|
18
|
+
const result = {};
|
|
19
|
+
if (!isValidValue(str)) return result;
|
|
20
|
+
const styleStr = trim(String(str));
|
|
21
|
+
if (!isValidValue(styleStr)) return result;
|
|
22
|
+
const declarations = styleStr.split(';');
|
|
23
|
+
declarations.forEach(decl => {
|
|
24
|
+
const [prop, ...values] = decl.split(':').map(s => s.trim());
|
|
25
|
+
const value = values.join(':');
|
|
26
|
+
if (prop && value) {
|
|
27
|
+
const camelProp = prop.replace(/-([a-z])/g, (match, letter) => letter.toUpperCase());
|
|
28
|
+
result[camelProp] = value;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* 将 CSS 对象转换为 CSS 字符串
|
|
36
|
+
*/
|
|
37
|
+
function cssObjToStr(obj: object): string {
|
|
38
|
+
if (!isValidValue(obj) || typeof obj !== 'object') return '';
|
|
39
|
+
return (
|
|
40
|
+
Object.entries(obj)
|
|
41
|
+
.map(([key, value]) => {
|
|
42
|
+
if (!isValidValue(value)) return '';
|
|
43
|
+
// 驼峰转短横线
|
|
44
|
+
const kebab = key.replace(/([A-Z])/g, '-$1').toLowerCase();
|
|
45
|
+
return `${kebab}: ${value}`;
|
|
46
|
+
})
|
|
47
|
+
.filter(Boolean)
|
|
48
|
+
.join('; ') + ';'
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* 合并多个 CSS 输入(对象或字符串),返回一个 CSS 对象
|
|
54
|
+
*/
|
|
55
|
+
export function mergeStyles(...args: (object | string)[]): CSSProperties {
|
|
56
|
+
const result = {};
|
|
57
|
+
for (let i = 0; i < args.length; i++) {
|
|
58
|
+
const arg = args[i];
|
|
59
|
+
if (!isValidValue(arg)) return;
|
|
60
|
+
if (typeof arg === 'string') {
|
|
61
|
+
Object.assign(result, cssStrToObj(arg));
|
|
62
|
+
} else if (test.object(arg)) {
|
|
63
|
+
const cleanedObj = {};
|
|
64
|
+
Object.keys(arg).forEach(key => {
|
|
65
|
+
const value = arg[key];
|
|
66
|
+
if (isValidValue(value)) {
|
|
67
|
+
// 有效
|
|
68
|
+
cleanedObj[key] = value;
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
Object.assign(result, cleanedObj);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return result;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* 合并为 CSS 字符串
|
|
79
|
+
*/
|
|
80
|
+
export function mergeCssStrings(...args: (object | string)[]): string {
|
|
81
|
+
const obj = mergeStyles(...args);
|
|
82
|
+
return cssObjToStr(obj);
|
|
83
|
+
}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "uview-pro",
|
|
3
3
|
"name": "uview-pro",
|
|
4
4
|
"displayName": "【Vue3重构版】uView Pro|基于Vue3+TS全面重构的70+精选UI组件库",
|
|
5
|
-
"version": "0.0.
|
|
5
|
+
"version": "0.0.22",
|
|
6
6
|
"description": "uView Pro,是全面支持Vue3的uni-app生态框架,70+精选组件已使用TypeScript重构,已全面支持uni-app Vue3.0",
|
|
7
7
|
"main": "index.ts",
|
|
8
8
|
"module": "index.ts",
|