uview-plus 3.6.18 → 3.6.27
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 +29 -0
- package/components/u-cascader/u-cascader.vue +5 -3
- package/components/u-choose/u-choose.vue +1 -1
- package/components/u-datetime-picker/props.js +11 -1
- package/components/u-datetime-picker/u-datetime-picker.vue +2 -0
- package/components/u-dragsort/u-dragsort.vue +45 -23
- package/components/u-form/u-form.vue +1 -1
- package/components/u-form-item/u-form-item.vue +20 -18
- package/components/u-goods-sku/u-goods-sku.vue +1 -1
- package/components/u-icon/icons.js +2 -1
- package/components/u-input/input.js +1 -1
- package/components/u-picker/props.js +10 -0
- package/components/u-picker/u-picker.vue +2 -0
- package/libs/util/gcanvas/bridge/bridge-weex.js +0 -0
- package/libs/util/gcanvas/context-2d/FillStyleLinearGradient.js +0 -0
- package/libs/util/gcanvas/context-2d/FillStylePattern.js +0 -0
- package/libs/util/gcanvas/context-2d/FillStyleRadialGradient.js +0 -0
- package/libs/util/gcanvas/context-2d/RenderingContext.js +0 -0
- package/libs/util/gcanvas/context-webgl/ActiveInfo.js +0 -0
- package/libs/util/gcanvas/context-webgl/Buffer.js +0 -0
- package/libs/util/gcanvas/context-webgl/Framebuffer.js +0 -0
- package/libs/util/gcanvas/context-webgl/GLenum.js +0 -0
- package/libs/util/gcanvas/context-webgl/GLmethod.js +0 -0
- package/libs/util/gcanvas/context-webgl/GLtype.js +0 -0
- package/libs/util/gcanvas/context-webgl/Program.js +0 -0
- package/libs/util/gcanvas/context-webgl/Renderbuffer.js +0 -0
- package/libs/util/gcanvas/context-webgl/RenderingContext.js +0 -0
- package/libs/util/gcanvas/context-webgl/Shader.js +0 -0
- package/libs/util/gcanvas/context-webgl/ShaderPrecisionFormat.js +0 -0
- package/libs/util/gcanvas/context-webgl/Texture.js +0 -0
- package/libs/util/gcanvas/context-webgl/UniformLocation.js +0 -0
- package/libs/util/gcanvas/context-webgl/classUtils.js +0 -0
- package/libs/util/gcanvas/env/canvas.js +0 -0
- package/libs/util/gcanvas/env/image.js +0 -0
- package/libs/util/gcanvas/env/tool.js +0 -0
- package/libs/util/gcanvas/index.js +0 -0
- package/package.json +1 -1
package/changelog.md
CHANGED
|
@@ -1,3 +1,32 @@
|
|
|
1
|
+
## 3.6.27(2025-12-17)
|
|
2
|
+
add: datetimepicker增加maskClass和maskStyle属性
|
|
3
|
+
|
|
4
|
+
## 3.6.26(2025-12-16)
|
|
5
|
+
add: picker增加maskClass/maskStyle属性
|
|
6
|
+
|
|
7
|
+
## 3.6.25(2025-12-15)
|
|
8
|
+
fix: 修复cascader对列表数据层级差异的兼容问题
|
|
9
|
+
|
|
10
|
+
## 3.6.24(2025-12-14)
|
|
11
|
+
fix: 修复将empty组件的mode设置为wifi后图标不能显示的问题 #928
|
|
12
|
+
|
|
13
|
+
## 3.6.23(2025-12-13)
|
|
14
|
+
fix: 修复cascader已选中三级菜单后再选择二级菜单时tabs报错问题
|
|
15
|
+
|
|
16
|
+
## 3.6.22(2025-12-12)
|
|
17
|
+
fix: dragsort组件拖动抖动的问题
|
|
18
|
+
|
|
19
|
+
## 3.6.21(2025-12-09)
|
|
20
|
+
fix: form-item初始化时机优化
|
|
21
|
+
|
|
22
|
+
## 3.6.20(2025-12-08)
|
|
23
|
+
improvment: 优化form组件语法普适性
|
|
24
|
+
|
|
25
|
+
## 3.6.19(2025-12-01)
|
|
26
|
+
fix: 修复商品SKU组件i18n
|
|
27
|
+
|
|
28
|
+
fix: Choose组件会有width警告提示 #915
|
|
29
|
+
|
|
1
30
|
## 3.6.18(2025-11-30)
|
|
2
31
|
feature: upload组件file模式支持微信小程序chooseMessageFile的extension属性 #913
|
|
3
32
|
|
|
@@ -243,9 +243,11 @@
|
|
|
243
243
|
this.$set(this.selectedValueIndexs, levelIndex, index);
|
|
244
244
|
|
|
245
245
|
// 清除后续级别的选中值
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
246
|
+
this.selectedValueIndexs.splice(levelIndex + 1);
|
|
247
|
+
this.tabsIndex = Math.min(this.tabsIndex, levelIndex);
|
|
248
|
+
|
|
249
|
+
// 清除后续级别的列表
|
|
250
|
+
this.levelList.splice(levelIndex + 1);
|
|
249
251
|
|
|
250
252
|
// 获取当前选中项
|
|
251
253
|
const currentItem = this.levelList[levelIndex][index];
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
:scroll-x="wrap === false"
|
|
24
24
|
:class="['up-choose', wrap ? 'up-choose-wrap' : 'up-choose-nowrap']">
|
|
25
25
|
<template :key="item.id" v-for="(item,index) in options">
|
|
26
|
-
<view :style="{width:
|
|
26
|
+
<view :style="{width: itemWidth, display: 'inline-block'}">
|
|
27
27
|
<slot :item="item" :index="index">
|
|
28
28
|
<up-tag :type="index == currentIndex ? 'primary' : 'info'"
|
|
29
29
|
size="large" :plain="index == currentIndex ? false : true"
|
|
@@ -168,6 +168,16 @@ export const props = defineMixin({
|
|
|
168
168
|
pageInline:{
|
|
169
169
|
type: Boolean,
|
|
170
170
|
default: () => defProps.datetimePicker.pageInline
|
|
171
|
-
}
|
|
171
|
+
},
|
|
172
|
+
// 蒙层样式样式
|
|
173
|
+
maskClass: {
|
|
174
|
+
type: String,
|
|
175
|
+
defualt: ''
|
|
176
|
+
},
|
|
177
|
+
// 蒙层样式样式
|
|
178
|
+
maskStyle: {
|
|
179
|
+
type: String,
|
|
180
|
+
defualt: ''
|
|
181
|
+
}
|
|
172
182
|
}
|
|
173
183
|
})
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<view class="u-dragsort"
|
|
3
|
-
:class="[direction == 'horizontal' ? 'u-dragsort--horizontal' : '', direction == 'all' ? 'u-dragsort--all' : '']">
|
|
3
|
+
:class="[direction == 'horizontal' ? 'u-dragsort--horizontal' : '', direction == 'vertical' ? 'u-dragsort--vertical' : '', direction == 'all' ? 'u-dragsort--all' : '']">
|
|
4
4
|
<movable-area class="u-dragsort-area" :style="movableAreaStyle">
|
|
5
5
|
<movable-view v-for="(item, index) in list" :key="item.id" :id="`u-dragsort-item-${index}`"
|
|
6
6
|
class="u-dragsort-item" :class="{ 'dragging': dragIndex === index }"
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
<script>
|
|
21
21
|
import { mpMixin } from '../../libs/mixin/mpMixin';
|
|
22
22
|
import { mixin } from '../../libs/mixin/mixin';
|
|
23
|
-
import {
|
|
23
|
+
import { sleep } from '../../libs/function/index';
|
|
24
24
|
export default {
|
|
25
25
|
name: 'u-dragsort',
|
|
26
26
|
// #ifdef MP
|
|
@@ -74,7 +74,7 @@ export default {
|
|
|
74
74
|
};
|
|
75
75
|
} else if (this.direction === 'horizontal') {
|
|
76
76
|
return {
|
|
77
|
-
height:
|
|
77
|
+
height: `${this.itemHeight}px`,
|
|
78
78
|
width: `${this.list.length * this.itemWidth}px`
|
|
79
79
|
};
|
|
80
80
|
} else {
|
|
@@ -171,21 +171,42 @@ export default {
|
|
|
171
171
|
},
|
|
172
172
|
updatePositions() {
|
|
173
173
|
// 更新所有项目的位置
|
|
174
|
-
this.list.
|
|
174
|
+
this.list = this.list.map((item, index) => {
|
|
175
|
+
// 当前正在拖动的项目保持拖动位置不动,避免抖动
|
|
176
|
+
if (this.dragIndex === index) {
|
|
177
|
+
return {
|
|
178
|
+
...item,
|
|
179
|
+
x: this.currentPosition.x,
|
|
180
|
+
y: this.currentPosition.y
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
175
184
|
if (this.direction === 'vertical') {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
} else {
|
|
182
|
-
// all模式,网格布局
|
|
183
|
-
const col = index % this.columns;
|
|
184
|
-
const row = Math.floor(index / this.columns);
|
|
185
|
-
item.x = col * this.itemWidth;
|
|
186
|
-
item.y = row * this.itemHeight;
|
|
185
|
+
return {
|
|
186
|
+
...item,
|
|
187
|
+
x: 0,
|
|
188
|
+
y: index * this.itemHeight
|
|
189
|
+
}
|
|
187
190
|
}
|
|
188
|
-
|
|
191
|
+
|
|
192
|
+
if (this.direction === 'horizontal') {
|
|
193
|
+
return {
|
|
194
|
+
...item,
|
|
195
|
+
x: index * this.itemWidth,
|
|
196
|
+
y: 0
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// all模式,网格布局
|
|
201
|
+
const col = index % this.columns
|
|
202
|
+
const row = Math.floor(index / this.columns)
|
|
203
|
+
|
|
204
|
+
return {
|
|
205
|
+
...item,
|
|
206
|
+
x: col * this.itemWidth,
|
|
207
|
+
y: row * this.itemHeight
|
|
208
|
+
}
|
|
209
|
+
})
|
|
189
210
|
},
|
|
190
211
|
onTouchStart(index) {
|
|
191
212
|
this.dragIndex = index;
|
|
@@ -330,12 +351,14 @@ export default {
|
|
|
330
351
|
}
|
|
331
352
|
|
|
332
353
|
.u-dragsort-item-content {
|
|
333
|
-
padding:
|
|
334
|
-
text-align: center;
|
|
354
|
+
padding: 0;
|
|
335
355
|
box-sizing: border-box;
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
&.u-dragsort--vertical {
|
|
360
|
+
.u-dragsort-item {
|
|
361
|
+
height: auto;
|
|
339
362
|
}
|
|
340
363
|
}
|
|
341
364
|
|
|
@@ -347,9 +370,8 @@ export default {
|
|
|
347
370
|
}
|
|
348
371
|
|
|
349
372
|
.u-dragsort-item {
|
|
350
|
-
display: flex;
|
|
351
373
|
width: auto;
|
|
352
|
-
height:
|
|
374
|
+
height: auto;
|
|
353
375
|
}
|
|
354
376
|
}
|
|
355
377
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<view class="u-form-item" :class="{'u-form-item--error':(!!message && parentData
|
|
2
|
+
<view class="u-form-item" :class="{'u-form-item--error':(!!message && parentData['errorType'] === 'message')}">
|
|
3
3
|
<view
|
|
4
4
|
class="u-form-item__body"
|
|
5
5
|
@tap="clickHandler"
|
|
6
6
|
:style="[addStyle(customStyle), {
|
|
7
|
-
flexDirection: (labelPosition || parentData
|
|
7
|
+
flexDirection: (labelPosition || parentData['labelPosition']) === 'left' ? 'row' : 'column'
|
|
8
8
|
}]"
|
|
9
9
|
>
|
|
10
10
|
<!-- 微信小程序中,将一个参数设置空字符串,结果会变成字符串"true" -->
|
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
<!-- {{required}} -->
|
|
13
13
|
<view
|
|
14
14
|
class="u-form-item__body__left"
|
|
15
|
-
v-if="required || leftIcon || label"
|
|
15
|
+
v-if="required || leftIcon != '' || label != ''"
|
|
16
16
|
:style="{
|
|
17
|
-
width: addUnit(labelWidth || parentData
|
|
18
|
-
marginBottom: (labelPosition || parentData
|
|
17
|
+
width: addUnit(labelWidth || parentData['labelWidth']),
|
|
18
|
+
marginBottom: (labelPosition || parentData['labelPosition']) === 'left' ? 0 : '5px',
|
|
19
19
|
}"
|
|
20
20
|
>
|
|
21
21
|
<!-- 为了块对齐 -->
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
<text
|
|
38
38
|
class="u-form-item__body__left__content__label"
|
|
39
39
|
:style="[parentData.labelStyle, {
|
|
40
|
-
justifyContent: parentData
|
|
40
|
+
justifyContent: parentData['labelAlign'] === 'left' ? 'flex-start' : parentData['labelAlign'] === 'center' ? 'center' : 'flex-end'
|
|
41
41
|
}]"
|
|
42
42
|
>{{ label }}</text>
|
|
43
43
|
</view>
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
</view>
|
|
51
51
|
<view
|
|
52
52
|
class="item__body__right__content__icon"
|
|
53
|
-
v-if="$slots
|
|
53
|
+
v-if="$slots['right']"
|
|
54
54
|
>
|
|
55
55
|
<slot name="right" />
|
|
56
56
|
</view>
|
|
@@ -59,17 +59,17 @@
|
|
|
59
59
|
</view>
|
|
60
60
|
<slot name="error">
|
|
61
61
|
<text
|
|
62
|
-
v-if="!!message && parentData
|
|
62
|
+
v-if="!!message && parentData['errorType'] === 'message'"
|
|
63
63
|
class="u-form-item__body__right__message"
|
|
64
64
|
:style="{
|
|
65
|
-
marginLeft: addUnit((labelPosition || parentData
|
|
65
|
+
marginLeft: addUnit((labelPosition || parentData['labelPosition']) === 'top' ? 0 : (labelWidth || parentData['labelWidth']))
|
|
66
66
|
}"
|
|
67
67
|
>{{ message }}</text>
|
|
68
68
|
</slot>
|
|
69
69
|
<u-line
|
|
70
70
|
v-if="borderBottom"
|
|
71
|
-
:color="message && parentData
|
|
72
|
-
:customStyle="`margin-top: ${message && parentData
|
|
71
|
+
:color="message && parentData['errorType'] === 'border-bottom' ? color['error'] : propsLine['color']"
|
|
72
|
+
:customStyle="`margin-top: ${message && parentData['errorType'] === 'message' ? '5px' : 0}`"
|
|
73
73
|
></u-line>
|
|
74
74
|
</view>
|
|
75
75
|
</template>
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
* @example <u-form-item label="姓名" prop="userInfo.name" borderBottom ref="item1"></u-form-item>
|
|
99
99
|
*/
|
|
100
100
|
export default {
|
|
101
|
-
name: '
|
|
101
|
+
name: 'up-form-item',
|
|
102
102
|
mixins: [mpMixin, mixin, props],
|
|
103
103
|
data() {
|
|
104
104
|
return {
|
|
@@ -127,7 +127,9 @@
|
|
|
127
127
|
}
|
|
128
128
|
},
|
|
129
129
|
mounted() {
|
|
130
|
-
this
|
|
130
|
+
this.$nextTick(() => {
|
|
131
|
+
this.init()
|
|
132
|
+
})
|
|
131
133
|
},
|
|
132
134
|
emits: ["click"],
|
|
133
135
|
watch: {
|
|
@@ -146,7 +148,7 @@
|
|
|
146
148
|
// 父组件的实例
|
|
147
149
|
this.updateParentData()
|
|
148
150
|
if (!this.parent) {
|
|
149
|
-
error('u-form-item需要结合
|
|
151
|
+
error('u-form-item需要结合up-form组件使用')
|
|
150
152
|
}
|
|
151
153
|
},
|
|
152
154
|
// 手动设置校验的规则,如果规则中有函数的话,微信小程序中会过滤掉,所以只能手动调用设置规则
|
|
@@ -161,7 +163,7 @@
|
|
|
161
163
|
// 获取父组件的参数
|
|
162
164
|
updateParentData() {
|
|
163
165
|
// 此方法写在mixin中
|
|
164
|
-
this.getParentData('
|
|
166
|
+
this.getParentData('up-form');
|
|
165
167
|
},
|
|
166
168
|
// 移除u-form-item的校验结果
|
|
167
169
|
clearValidate() {
|
|
@@ -170,9 +172,9 @@
|
|
|
170
172
|
// 清空当前的组件的校验结果,并重置为初始值
|
|
171
173
|
resetField() {
|
|
172
174
|
// 找到原始值
|
|
173
|
-
const value = getProperty(this.parent
|
|
174
|
-
// 将
|
|
175
|
-
setProperty(this.parent
|
|
175
|
+
const value = getProperty(this.parent.$data['originalModel'], this.prop)
|
|
176
|
+
// 将up-form的model的prop属性链还原原始值
|
|
177
|
+
setProperty(this.parent.$props['model'], this.prop, value)
|
|
176
178
|
// 移除校验结果
|
|
177
179
|
this.message = null
|
|
178
180
|
},
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
</view>
|
|
49
49
|
|
|
50
50
|
<view class="up-goods-sku__content__count">
|
|
51
|
-
<view class="up-goods-sku__content__count__title">{{ t('
|
|
51
|
+
<view class="up-goods-sku__content__count__title">{{ t('up.goodsSku.buyAmount') }}</view>
|
|
52
52
|
<view class="up-goods-sku__content__count__control">
|
|
53
53
|
<up-number-box
|
|
54
54
|
v-model="buyNum"
|
|
@@ -203,6 +203,7 @@ export default {
|
|
|
203
203
|
'uicon-empty-list': '\ue68b',
|
|
204
204
|
'uicon-empty-page': '\ue627',
|
|
205
205
|
'uicon-empty-order': '\ue639',
|
|
206
|
+
'uicon-empty-wifi': '\ue668',
|
|
206
207
|
'uicon-man': '\ue697',
|
|
207
208
|
'uicon-woman': '\ue69c',
|
|
208
209
|
'uicon-man-add': '\ue61c',
|
|
@@ -211,4 +212,4 @@ export default {
|
|
|
211
212
|
'uicon-man-delete-fill': '\ue66a',
|
|
212
213
|
'uicon-zh': '\ue70a',
|
|
213
214
|
'uicon-en': '\ue692'
|
|
214
|
-
}
|
|
215
|
+
}
|
|
@@ -147,6 +147,16 @@ export const props = defineMixin({
|
|
|
147
147
|
pageInline:{
|
|
148
148
|
type: Boolean,
|
|
149
149
|
default: () => defProps.picker.pageInline
|
|
150
|
+
},
|
|
151
|
+
// 蒙层样式样式
|
|
152
|
+
maskClass: {
|
|
153
|
+
type: String,
|
|
154
|
+
defualt: ''
|
|
155
|
+
},
|
|
156
|
+
// 蒙层样式样式
|
|
157
|
+
maskStyle: {
|
|
158
|
+
type: String,
|
|
159
|
+
defualt: ''
|
|
150
160
|
}
|
|
151
161
|
}
|
|
152
162
|
})
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "uview-plus",
|
|
3
3
|
"name": "uview-plus",
|
|
4
4
|
"displayName": "零云®uview-plus3.0重磅发布,全面的Vue3鸿蒙跨端移动组件库,组件丰富维护更新稳定。",
|
|
5
|
-
"version": "3.6.
|
|
5
|
+
"version": "3.6.27",
|
|
6
6
|
"description": "零云®uview-plus已兼容vue3支持多语言,120+全面的组件和便捷的工具会让您信手拈来。近期新增拖动排序、条码、图片裁剪、下拉刷新、虚拟列表、签名、Markdown等。",
|
|
7
7
|
"keywords": [
|
|
8
8
|
"uview",
|