@cloudbase/weda-ui 0.2.5 → 0.2.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.
- package/package.json +4 -4
- package/src/.DS_Store +0 -0
- package/src/configs/components/container.json +2 -1
- package/src/configs/components/form/input.json +6 -0
- package/src/configs/components/form/richText.json +2 -1
- package/src/configs/components/form/uploader.json +10 -5
- package/src/configs/components/image.json +2 -1
- package/src/configs/components/link.json +2 -1
- package/src/configs/components/richtextview.json +2 -1
- package/src/configs/components/scrollVeiw.json +2 -1
- package/src/configs/components/swiper.json +2 -1
- package/src/configs/components/tabs.json +31 -86
- package/src/configs/components/text.json +2 -1
- package/src/configs/index.js +3 -5
- package/src/index.js +2 -3
- package/src/mp/components/form/input/index.js +5 -1
- package/src/mp/components/form/input/index.wxml +2 -1
- package/src/mp/components/form/select/index.js +2 -2
- package/src/mp/components/form/textarea/index.wxml +1 -0
- package/src/mp/components/form/uploader/index.js +50 -13
- package/src/mp/components/form/uploader/index.wxml +11 -1
- package/src/mp/components/image/index.js +57 -8
- package/src/mp/components/image/index.json +4 -1
- package/src/mp/components/image/index.wxml +4 -2
- package/src/mp/components/image/index.wxss +15 -0
- package/src/mp/components/richText/index.wxml +3 -1
- package/src/mp/components/tabs/index.js +22 -6
- package/src/mp/utils/deepEqual.js +42 -0
- package/src/web/actions/index.js +2 -4
- package/src/web/components/form/checkbox/index.jsx +8 -10
- package/src/web/components/form/formcell/index.jsx +1 -1
- package/src/web/components/form/input/index.jsx +16 -18
- package/src/web/components/form/radio/index.jsx +7 -7
- package/src/web/components/form/select/h5.jsx +1 -1
- package/src/web/components/form/select/region/{cities.json → cities.js} +2 -2
- package/src/web/components/form/select/region/index.js +3 -3
- package/src/web/components/form/select/region/{provinces.json → provinces.js} +2 -2
- package/src/web/components/form/select/region/{regions.json → regions.js} +2 -2
- package/src/web/components/form/switch/index.jsx +4 -9
- package/src/web/components/form/textarea/index.jsx +4 -12
- package/src/web/components/form/uploader/index.css +15 -0
- package/src/web/components/form/uploader/index.jsx +2 -2
- package/src/web/components/form/uploader/uploader.h5.jsx +237 -0
- package/src/web/components/form/uploader/{uploaderPc.jsx → uploader.pc.jsx} +76 -58
- package/src/web/components/image/image.jsx +79 -5
- package/src/web/components/image/index.css +18 -0
- package/src/web/components/image/index.jsx +1 -0
- package/src/web/components/index.js +26 -58
- package/src/web/components/richTextView/index.css +0 -10
- package/src/web/components/richTextView/index.jsx +1 -12
- package/src/web/components/tabs/{index.js → index.jsx} +3 -3
- package/src/web/components/tabs/{tabsH5.js → tabs.h5.jsx} +9 -47
- package/src/web/components/tabs/{tabsPc.js → tabs.pc.jsx} +13 -47
- package/src/web/components/uploaderView/index.jsx +1 -1
- package/src/web/index.js +2 -3
- package/src/web/utils/isObjectEqual.js +10 -1
- package/src/web/utils/useSyncValue.js +14 -0
- package/src/web/weda-ui.css +8 -0
- package/src/configs/components/markdown.json +0 -17
- package/src/mp/components/markdown/index.js +0 -27
- package/src/mp/components/markdown/index.json +0 -6
- package/src/mp/components/markdown/index.wxml +0 -1
- package/src/mp/components/markdown/towxml/audio-player/Audio.js +0 -99
- package/src/mp/components/markdown/towxml/audio-player/audio-player.js +0 -102
- package/src/mp/components/markdown/towxml/audio-player/audio-player.json +0 -5
- package/src/mp/components/markdown/towxml/audio-player/audio-player.wxml +0 -14
- package/src/mp/components/markdown/towxml/audio-player/audio-player.wxss +0 -175
- package/src/mp/components/markdown/towxml/audio-player/loading.svg +0 -1
- package/src/mp/components/markdown/towxml/config.js +0 -285
- package/src/mp/components/markdown/towxml/decode.js +0 -26
- package/src/mp/components/markdown/towxml/decode.json +0 -12
- package/src/mp/components/markdown/towxml/decode.wxml +0 -1
- package/src/mp/components/markdown/towxml/decode.wxss +0 -0
- package/src/mp/components/markdown/towxml/img/img.js +0 -98
- package/src/mp/components/markdown/towxml/img/img.json +0 -3
- package/src/mp/components/markdown/towxml/img/img.wxml +0 -1
- package/src/mp/components/markdown/towxml/img/img.wxss +0 -0
- package/src/mp/components/markdown/towxml/index.js +0 -19
- package/src/mp/components/markdown/towxml/latex/latex.js +0 -53
- package/src/mp/components/markdown/towxml/latex/latex.json +0 -5
- package/src/mp/components/markdown/towxml/latex/latex.wxml +0 -1
- package/src/mp/components/markdown/towxml/latex/latex.wxss +0 -0
- package/src/mp/components/markdown/towxml/parse/highlight/highlight.js +0 -729
- package/src/mp/components/markdown/towxml/parse/highlight/index.js +0 -7
- package/src/mp/components/markdown/towxml/parse/highlight/languages/bash.js +0 -91
- package/src/mp/components/markdown/towxml/parse/highlight/languages/c-like.js +0 -244
- package/src/mp/components/markdown/towxml/parse/highlight/languages/c.js +0 -20
- package/src/mp/components/markdown/towxml/parse/highlight/languages/css.js +0 -138
- package/src/mp/components/markdown/towxml/parse/highlight/languages/dart.js +0 -135
- package/src/mp/components/markdown/towxml/parse/highlight/languages/go.js +0 -57
- package/src/mp/components/markdown/towxml/parse/highlight/languages/htmlbars.js +0 -79
- package/src/mp/components/markdown/towxml/parse/highlight/languages/java.js +0 -126
- package/src/mp/components/markdown/towxml/parse/highlight/languages/javascript.js +0 -263
- package/src/mp/components/markdown/towxml/parse/highlight/languages/json.js +0 -51
- package/src/mp/components/markdown/towxml/parse/highlight/languages/less.js +0 -177
- package/src/mp/components/markdown/towxml/parse/highlight/languages/nginx.js +0 -103
- package/src/mp/components/markdown/towxml/parse/highlight/languages/php.js +0 -152
- package/src/mp/components/markdown/towxml/parse/highlight/languages/python-repl.js +0 -27
- package/src/mp/components/markdown/towxml/parse/highlight/languages/python.js +0 -146
- package/src/mp/components/markdown/towxml/parse/highlight/languages/scss.js +0 -137
- package/src/mp/components/markdown/towxml/parse/highlight/languages/shell.js +0 -23
- package/src/mp/components/markdown/towxml/parse/highlight/languages/typescript.js +0 -198
- package/src/mp/components/markdown/towxml/parse/highlight/languages/xml.js +0 -143
- package/src/mp/components/markdown/towxml/parse/highlight/style/github.wxss +0 -99
- package/src/mp/components/markdown/towxml/parse/highlight/style/monokai.wxss +0 -70
- package/src/mp/components/markdown/towxml/parse/index.js +0 -106
- package/src/mp/components/markdown/towxml/parse/markdown/index.js +0 -53
- package/src/mp/components/markdown/towxml/parse/markdown/markdown.js +0 -5834
- package/src/mp/components/markdown/towxml/parse/markdown/plugins/emoji.js +0 -1773
- package/src/mp/components/markdown/towxml/parse/markdown/plugins/ins.js +0 -120
- package/src/mp/components/markdown/towxml/parse/markdown/plugins/latex.js +0 -193
- package/src/mp/components/markdown/towxml/parse/markdown/plugins/mark.js +0 -120
- package/src/mp/components/markdown/towxml/parse/markdown/plugins/sub.js +0 -95
- package/src/mp/components/markdown/towxml/parse/markdown/plugins/sup.js +0 -95
- package/src/mp/components/markdown/towxml/parse/markdown/plugins/todo.js +0 -220
- package/src/mp/components/markdown/towxml/parse/markdown/plugins/yuml.js +0 -18
- package/src/mp/components/markdown/towxml/parse/parse2/Parser.js +0 -263
- package/src/mp/components/markdown/towxml/parse/parse2/Tokenizer.js +0 -507
- package/src/mp/components/markdown/towxml/parse/parse2/domhandler/index.js +0 -104
- package/src/mp/components/markdown/towxml/parse/parse2/domhandler/node.js +0 -169
- package/src/mp/components/markdown/towxml/parse/parse2/entities/decode.js +0 -54
- package/src/mp/components/markdown/towxml/parse/parse2/entities/decode_codepoint.js +0 -19
- package/src/mp/components/markdown/towxml/parse/parse2/entities/encode.js +0 -54
- package/src/mp/components/markdown/towxml/parse/parse2/entities/index.js +0 -30
- package/src/mp/components/markdown/towxml/parse/parse2/entities/maps/decode.js +0 -31
- package/src/mp/components/markdown/towxml/parse/parse2/entities/maps/entities.js +0 -2128
- package/src/mp/components/markdown/towxml/parse/parse2/entities/maps/legacy.js +0 -109
- package/src/mp/components/markdown/towxml/parse/parse2/entities/maps/xml.js +0 -2
- package/src/mp/components/markdown/towxml/parse/parse2/index.js +0 -8
- package/src/mp/components/markdown/towxml/style/main.wxss +0 -378
- package/src/mp/components/markdown/towxml/style/theme/dark.wxss +0 -73
- package/src/mp/components/markdown/towxml/style/theme/light.wxss +0 -63
- package/src/mp/components/markdown/towxml/table/table.js +0 -11
- package/src/mp/components/markdown/towxml/table/table.json +0 -6
- package/src/mp/components/markdown/towxml/table/table.wxml +0 -24
- package/src/mp/components/markdown/towxml/table/table.wxss +0 -0
- package/src/mp/components/markdown/towxml/todogroup/todogroup.js +0 -19
- package/src/mp/components/markdown/towxml/todogroup/todogroup.json +0 -6
- package/src/mp/components/markdown/towxml/todogroup/todogroup.wxml +0 -13
- package/src/mp/components/markdown/towxml/todogroup/todogroup.wxss +0 -3
- package/src/mp/components/markdown/towxml/towxml.js +0 -17
- package/src/mp/components/markdown/towxml/towxml.json +0 -6
- package/src/mp/components/markdown/towxml/towxml.wxml +0 -5
- package/src/mp/components/markdown/towxml/towxml.wxss +0 -8
- package/src/mp/components/markdown/towxml/yuml/yuml.js +0 -51
- package/src/mp/components/markdown/towxml/yuml/yuml.json +0 -5
- package/src/mp/components/markdown/towxml/yuml/yuml.wxml +0 -5
- package/src/mp/components/markdown/towxml/yuml/yuml.wxss +0 -0
- package/src/web/components/form/uploader/uploaderH5.jsx +0 -192
- package/src/web/components/markdown/index.jsx +0 -40
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudbase/weda-ui",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.8",
|
|
4
4
|
"main": "./src/index.js",
|
|
5
5
|
"module": "./src/index",
|
|
6
6
|
"miniprogram": "mpdist",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"access": "public"
|
|
17
17
|
},
|
|
18
18
|
"scripts": {
|
|
19
|
-
"test": "jest test --env=jsdom",
|
|
19
|
+
"test": "jest test --env=jsdom --watch",
|
|
20
20
|
"test-once": "jest test --env=jsdom",
|
|
21
21
|
"storybook": "start-storybook -p 6006",
|
|
22
22
|
"build-storybook": "build-storybook",
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
"description": "腾讯云微搭低代码组件库模板",
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@cloudbase/ui-react": "^1.0.4",
|
|
39
|
+
"@use-gesture/react": "^10.1.4",
|
|
39
40
|
"braft-editor": "^2.3.9",
|
|
40
41
|
"braft-utils": "^3.0.12",
|
|
41
42
|
"dayjs": "^1.10.6",
|
|
@@ -44,8 +45,6 @@
|
|
|
44
45
|
"object.fromentries": "^2.0.4",
|
|
45
46
|
"prop-types": "^15.7.2",
|
|
46
47
|
"react-easy-swipe": "^0.0.21",
|
|
47
|
-
"react-markdown": "^5.0.3",
|
|
48
|
-
"react-syntax-highlighter": "^15.4.3",
|
|
49
48
|
"react-use": "^15.3.4",
|
|
50
49
|
"tea-component": "^2.6.22",
|
|
51
50
|
"uuid": "8.3.2",
|
|
@@ -67,6 +66,7 @@
|
|
|
67
66
|
"@storybook/react": "^6.3.10",
|
|
68
67
|
"@testing-library/jest-dom": "^5.14.1",
|
|
69
68
|
"@testing-library/react": "^12.0.0",
|
|
69
|
+
"@testing-library/react-hooks": "^7.0.2",
|
|
70
70
|
"babel-jest": "^27.2.0",
|
|
71
71
|
"eslint": "^7.32.0",
|
|
72
72
|
"eslint-config-tencent": "^1.0.2",
|
package/src/.DS_Store
CHANGED
|
Binary file
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"default": ["image/*"],
|
|
9
9
|
"x-category": "基础属性",
|
|
10
10
|
"x-index": 6,
|
|
11
|
-
"x-platforms": ["
|
|
11
|
+
"x-platforms": ["WEB"],
|
|
12
12
|
"items": {
|
|
13
13
|
"type": "string",
|
|
14
14
|
"enum": [
|
|
@@ -66,8 +66,7 @@
|
|
|
66
66
|
"default": 10,
|
|
67
67
|
"title": "单张大小(M)",
|
|
68
68
|
"x-category": "基础属性",
|
|
69
|
-
"x-index": 5
|
|
70
|
-
"x-platforms": ["PCWEB"]
|
|
69
|
+
"x-index": 5
|
|
71
70
|
},
|
|
72
71
|
"maxUploadCount": {
|
|
73
72
|
"type": "number",
|
|
@@ -104,7 +103,12 @@
|
|
|
104
103
|
"title": "显示标题",
|
|
105
104
|
"x-category": "基础属性"
|
|
106
105
|
},
|
|
107
|
-
"
|
|
106
|
+
"single": {
|
|
107
|
+
"type": "boolean",
|
|
108
|
+
"title": "是否返回单张图片",
|
|
109
|
+
"x-category": "基础属性"
|
|
110
|
+
},
|
|
111
|
+
"defaultValue": {
|
|
108
112
|
"x-category": "基础属性",
|
|
109
113
|
"title": "初始默认值",
|
|
110
114
|
"type": "array",
|
|
@@ -131,6 +135,7 @@
|
|
|
131
135
|
"meta": {
|
|
132
136
|
"title": "上传图片",
|
|
133
137
|
"description": "上传图片组件",
|
|
134
|
-
"category": "表单"
|
|
138
|
+
"category": "表单",
|
|
139
|
+
"icon": "//main.qcloudimg.com/raw/f781e6bc48efa1cf926fc768fceeab5e/Uploader.svg"
|
|
135
140
|
}
|
|
136
141
|
}
|
|
@@ -209,7 +209,8 @@
|
|
|
209
209
|
"title": "滚动容器",
|
|
210
210
|
"description": "滚动容器",
|
|
211
211
|
"category": "布局容器",
|
|
212
|
-
"componentOrder": 80
|
|
212
|
+
"componentOrder": 80,
|
|
213
|
+
"icon": "//imgcache.qq.com/qcloud/lowcode/static/ide/left-material-icon/ScrollView.svg"
|
|
213
214
|
},
|
|
214
215
|
"isContainer": true,
|
|
215
216
|
"mpOrigin": "scroll-view"
|
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
"data": {
|
|
4
4
|
"properties": {
|
|
5
5
|
"tabs": {
|
|
6
|
-
"title": "
|
|
6
|
+
"title": "选项卡标签",
|
|
7
|
+
"x-props": {
|
|
8
|
+
"data-hidebind": true
|
|
9
|
+
},
|
|
7
10
|
"x-index":1,
|
|
8
11
|
"type": "array",
|
|
9
12
|
"maxLength": 20,
|
|
@@ -21,98 +24,39 @@
|
|
|
21
24
|
"items": {
|
|
22
25
|
"type": "object",
|
|
23
26
|
"properties": {
|
|
24
|
-
"name": {
|
|
25
|
-
"title": "序号",
|
|
26
|
-
"type": "string",
|
|
27
|
-
"default": "name"
|
|
28
|
-
},
|
|
29
27
|
"title": {
|
|
30
28
|
"title": "标题",
|
|
31
29
|
"type": "string",
|
|
32
30
|
"default": "标题"
|
|
33
31
|
}
|
|
34
32
|
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
"type": "slot"
|
|
48
|
-
},
|
|
49
|
-
"panel4": {
|
|
50
|
-
"title": "面板4",
|
|
51
|
-
"type": "slot"
|
|
52
|
-
},
|
|
53
|
-
"panel5": {
|
|
54
|
-
"title": "面板5",
|
|
55
|
-
"type": "slot"
|
|
56
|
-
},
|
|
57
|
-
"panel6": {
|
|
58
|
-
"title": "面板6",
|
|
59
|
-
"type": "slot"
|
|
60
|
-
},
|
|
61
|
-
"panel7": {
|
|
62
|
-
"title": "面板7",
|
|
63
|
-
"type": "slot"
|
|
64
|
-
},
|
|
65
|
-
"panel8": {
|
|
66
|
-
"title": "面板8",
|
|
67
|
-
"type": "slot"
|
|
68
|
-
},
|
|
69
|
-
"panel9": {
|
|
70
|
-
"title": "面板9",
|
|
71
|
-
"type": "slot"
|
|
72
|
-
},
|
|
73
|
-
"panel10": {
|
|
74
|
-
"title": "面板10",
|
|
75
|
-
"type": "slot"
|
|
76
|
-
},
|
|
77
|
-
"panel11": {
|
|
78
|
-
"title": "面板11",
|
|
79
|
-
"type": "slot"
|
|
80
|
-
},
|
|
81
|
-
"panel12": {
|
|
82
|
-
"title": "面板12",
|
|
83
|
-
"type": "slot"
|
|
84
|
-
},
|
|
85
|
-
"panel13": {
|
|
86
|
-
"title": "面板13",
|
|
87
|
-
"type": "slot"
|
|
88
|
-
},
|
|
89
|
-
"panel14": {
|
|
90
|
-
"title": "面板14",
|
|
91
|
-
"type": "slot"
|
|
92
|
-
},
|
|
93
|
-
"panel15": {
|
|
94
|
-
"title": "面板15",
|
|
95
|
-
"type": "slot"
|
|
96
|
-
},
|
|
97
|
-
"panel16": {
|
|
98
|
-
"title": "面板16",
|
|
99
|
-
"type": "slot"
|
|
100
|
-
},
|
|
101
|
-
"panel17": {
|
|
102
|
-
"title": "面板17",
|
|
103
|
-
"type": "slot"
|
|
104
|
-
},
|
|
105
|
-
"panel18": {
|
|
106
|
-
"title": "面板18",
|
|
107
|
-
"type": "slot"
|
|
33
|
+
},
|
|
34
|
+
"x-linkages": [
|
|
35
|
+
{
|
|
36
|
+
"target": "selectedIndex",
|
|
37
|
+
"type": "value:schema",
|
|
38
|
+
"schema": {
|
|
39
|
+
"x-component-props": {
|
|
40
|
+
"options": "{{ $value.map((title, index) => ({label: '选项' + (index + 1), value: index}) ) }}"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
]
|
|
108
45
|
},
|
|
109
|
-
"
|
|
110
|
-
"title": "
|
|
111
|
-
"type": "
|
|
46
|
+
"selectedIndex": {
|
|
47
|
+
"title": "选中标签",
|
|
48
|
+
"type": "number",
|
|
49
|
+
"default": 0,
|
|
50
|
+
"x-category": "基础属性",
|
|
51
|
+
"x-component": "select"
|
|
112
52
|
},
|
|
113
|
-
"
|
|
114
|
-
"title": "面板
|
|
115
|
-
"type": "slot"
|
|
53
|
+
"panel": {
|
|
54
|
+
"title": "面板1",
|
|
55
|
+
"type": "slot",
|
|
56
|
+
"x-auto-num": {
|
|
57
|
+
"from": 1,
|
|
58
|
+
"to": "{{ $form.values.tabs.length }}"
|
|
59
|
+
}
|
|
116
60
|
}
|
|
117
61
|
}
|
|
118
62
|
},
|
|
@@ -126,6 +70,7 @@
|
|
|
126
70
|
"name": "Tabs",
|
|
127
71
|
"title": "选项卡",
|
|
128
72
|
"description": "选项卡组件",
|
|
129
|
-
"category": "展示"
|
|
73
|
+
"category": "展示",
|
|
74
|
+
"icon": "//qbase.cdn-go.cn/lcap/lcap-resource-cdngo/-/release/_files/static/comp/icons/Tabs.svg"
|
|
130
75
|
}
|
|
131
76
|
}
|
package/src/configs/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import Button from './components/button';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import Container from './components/container';
|
|
1
|
+
import Button from './components/button.json';
|
|
2
|
+
import Text from './components/text.json';
|
|
3
|
+
import Container from './components/container.json';
|
|
5
4
|
import Image from './components/image.json';
|
|
6
5
|
import Link from './components/link.json';
|
|
7
6
|
// import Picker from './components/picker/picker.json';
|
|
@@ -32,7 +31,6 @@ import showModal from './actions/showModal';
|
|
|
32
31
|
|
|
33
32
|
export const components = {
|
|
34
33
|
Button,
|
|
35
|
-
Markdown,
|
|
36
34
|
Text,
|
|
37
35
|
Container,
|
|
38
36
|
Image,
|
package/src/index.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export default WedaUI;
|
|
1
|
+
export * from './web/index';
|
|
2
|
+
export { default as default } from './web/index';
|
|
@@ -55,6 +55,10 @@ Component({
|
|
|
55
55
|
type: Boolean,
|
|
56
56
|
value: false,
|
|
57
57
|
},
|
|
58
|
+
clearable: {
|
|
59
|
+
type: Boolean,
|
|
60
|
+
value: true
|
|
61
|
+
}
|
|
58
62
|
},
|
|
59
63
|
data: {
|
|
60
64
|
isFlex: true,
|
|
@@ -70,7 +74,7 @@ Component({
|
|
|
70
74
|
},
|
|
71
75
|
},
|
|
72
76
|
observers: {
|
|
73
|
-
defaultValue: function (defaultValue) {
|
|
77
|
+
'defaultValue': function (defaultValue) {
|
|
74
78
|
this.setData({ value: defaultValue });
|
|
75
79
|
},
|
|
76
80
|
},
|
|
@@ -21,8 +21,9 @@
|
|
|
21
21
|
bindfocus="handleFocus"
|
|
22
22
|
bindblur="handleBlur"
|
|
23
23
|
bindconfirm="handleConfirm"
|
|
24
|
+
maxlength="{{maxLength}}"
|
|
24
25
|
/>
|
|
25
|
-
<view
|
|
26
|
+
<view wx:if="{{clearable}}" class="weui-btn_reset weui-btn_icon weui-btn_input-clear" bindtap="handleClear">
|
|
26
27
|
<i class="weui-icon-clear" />
|
|
27
28
|
</view>
|
|
28
29
|
</view>
|
|
@@ -265,7 +265,7 @@ Component({
|
|
|
265
265
|
const regexp = time.match(/^(\d{2}):(\d{2})$/);
|
|
266
266
|
if (regexp && regexp[1] < 24 && regexp[2] < 60) {
|
|
267
267
|
return dayjs().hour(regexp[1]).minute(regexp[2]);
|
|
268
|
-
} else if (typeof time === 'string' &&
|
|
268
|
+
} else if (typeof time === 'string' && /^-?[0-9]*$/.test(time)) {
|
|
269
269
|
const timeSnap = Number(time);
|
|
270
270
|
let day;
|
|
271
271
|
try {
|
|
@@ -281,7 +281,7 @@ Component({
|
|
|
281
281
|
}
|
|
282
282
|
},
|
|
283
283
|
converDate2Dayjs(date) {
|
|
284
|
-
if (typeof date === 'string' &&
|
|
284
|
+
if (typeof date === 'string' && /^-?[0-9]*$/.test(date)) {
|
|
285
285
|
return dayjs(Number(date));
|
|
286
286
|
}
|
|
287
287
|
return dayjs(date);
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
placeholder-class="weui-input__placeholder"
|
|
15
15
|
bindinput="handleChange"
|
|
16
16
|
value="{{value}}"
|
|
17
|
+
maxlength="{{maxLength}}"
|
|
17
18
|
></textarea>
|
|
18
19
|
<view wx:if="{{counterVisible}}" class="weui-textarea-counter"><span>{{!!value ? value.length : 0}}</span>/{{maxLength}}</view>
|
|
19
20
|
</view>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getCloudInstance } from '../../../utils/tcb';
|
|
2
|
+
import deepEqual from '../../../utils/deepEqual';
|
|
2
3
|
|
|
3
4
|
Component({
|
|
4
5
|
options: {
|
|
@@ -7,7 +8,8 @@ Component({
|
|
|
7
8
|
lifetimes: {
|
|
8
9
|
attached() {
|
|
9
10
|
this.setData({
|
|
10
|
-
|
|
11
|
+
urls: this.properties.defaultValue,
|
|
12
|
+
files: this.properties.defaultValue.map(url => ({url}))
|
|
11
13
|
});
|
|
12
14
|
}
|
|
13
15
|
},
|
|
@@ -28,15 +30,24 @@ Component({
|
|
|
28
30
|
type: String,
|
|
29
31
|
value: 'horizontal'
|
|
30
32
|
},
|
|
31
|
-
|
|
33
|
+
defaultValue: {
|
|
32
34
|
type: Array,
|
|
33
35
|
value: []
|
|
36
|
+
},
|
|
37
|
+
single: {
|
|
38
|
+
type: Boolean,
|
|
39
|
+
value: false
|
|
40
|
+
},
|
|
41
|
+
maxSize: {
|
|
42
|
+
type: Number,
|
|
43
|
+
value: 10
|
|
34
44
|
}
|
|
35
45
|
},
|
|
36
46
|
data: {
|
|
47
|
+
maxCount: 0,
|
|
37
48
|
files: [],
|
|
38
49
|
urls: [],
|
|
39
|
-
uploadFile: async (files)
|
|
50
|
+
uploadFile: async function (files) {
|
|
40
51
|
// 文件上传的函数,返回一个promise
|
|
41
52
|
const uploadPath = 'weda-uploader';
|
|
42
53
|
|
|
@@ -51,8 +62,11 @@ Component({
|
|
|
51
62
|
return { fileID: uploadRes.fileID };
|
|
52
63
|
});
|
|
53
64
|
const uploadFileList = await Promise.all(uploadPromise);
|
|
54
|
-
const
|
|
55
|
-
|
|
65
|
+
const cloudUrls = uploadFileList.map((file) => file.fileID);
|
|
66
|
+
// 这里返回的东西会在uploadSuccess回调函数中获取到
|
|
67
|
+
// https://github.com/wechat-miniprogram/weui-miniprogram/blob/a3630575910302e3b94e69fcef266d2b509de650/src/components/uploader/uploader.ts#L149
|
|
68
|
+
// 写死的从返回值的 .urls 获取展示用的url来用。一定要将tempFilePaths透传下去,否则会重新加载然后出现闪白
|
|
69
|
+
return { urls: files.tempFilePaths, cloudUrls };
|
|
56
70
|
}
|
|
57
71
|
},
|
|
58
72
|
methods: {
|
|
@@ -61,7 +75,7 @@ Component({
|
|
|
61
75
|
this.triggerEvent('error', e.detail);
|
|
62
76
|
},
|
|
63
77
|
uploadSuccess: async function (e) {
|
|
64
|
-
const urls = e.detail.
|
|
78
|
+
const urls = e.detail.cloudUrls; // uploadFile 获取返回值
|
|
65
79
|
// 小程序自带tempURL 不需要调用 tcb.getTempFileURL 获取
|
|
66
80
|
this.triggerEvent(
|
|
67
81
|
'success',
|
|
@@ -70,19 +84,42 @@ Component({
|
|
|
70
84
|
}
|
|
71
85
|
);
|
|
72
86
|
this.setData({
|
|
73
|
-
files: this.data.files.concat(e.detail.
|
|
87
|
+
files: this.data.files.concat(e.detail.urls.map(url => ({url}))),
|
|
74
88
|
urls: [...this.data.urls, ...urls]
|
|
75
89
|
});
|
|
76
90
|
|
|
77
91
|
},
|
|
92
|
+
onDelete: function(e) {
|
|
93
|
+
this.setData({
|
|
94
|
+
files: this.data.files.filter((v, index) => e.detail.index !== index),
|
|
95
|
+
urls: this.data.urls.filter((v, index) => e.detail.index !== index)
|
|
96
|
+
});
|
|
97
|
+
}
|
|
78
98
|
},
|
|
79
99
|
observers: {
|
|
80
|
-
'
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
100
|
+
// 'defaultValue': function(value) {
|
|
101
|
+
// if(!deepEqual(value, this.data.urls)) {
|
|
102
|
+
// if(!Array.isArray(value)) {
|
|
103
|
+
// value = [value].filter(v => v.length > 0);
|
|
104
|
+
// }
|
|
105
|
+
// this.setData({
|
|
106
|
+
// files: value.map(f => ({url: f})),
|
|
107
|
+
// urls: value
|
|
108
|
+
// });
|
|
109
|
+
// }
|
|
110
|
+
// },
|
|
111
|
+
'maxUploadCount, single': function(maxUploadCount, single) {
|
|
112
|
+
const maxCount = single ? 1 : maxUploadCount;
|
|
113
|
+
this.setData({
|
|
114
|
+
maxCount
|
|
115
|
+
});
|
|
116
|
+
},
|
|
117
|
+
'urls': function (urls) {
|
|
118
|
+
let value = urls;
|
|
119
|
+
if(this.properties.single) {
|
|
120
|
+
value = urls[0] ?? '';
|
|
84
121
|
}
|
|
85
|
-
this.triggerEvent('change', {value
|
|
122
|
+
this.triggerEvent('change', {value});
|
|
86
123
|
}
|
|
87
124
|
}
|
|
88
|
-
});
|
|
125
|
+
});
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
<mp-cells>
|
|
2
2
|
<mp-cell>
|
|
3
|
-
<mp-uploader files="{{files}}" ext-class="{{layout}}" bindfail="uploadError" bindsuccess="uploadSuccess" select="{{selectFile}}" upload="{{uploadFile}}" maxCount="{{
|
|
3
|
+
<mp-uploader max-size="{{maxSize * 1024 * 1024}}" files="{{files}}" showDelete="{{true}}" ext-class="{{layout}}" bindfail="uploadError" bindsuccess="uploadSuccess" select="{{selectFile}}" upload="{{uploadFile}}" maxCount="{{maxCount}}" title="{{title}}" tips="{{tips}}" binddelete="onDelete"></mp-uploader>
|
|
4
4
|
</mp-cell>
|
|
5
5
|
</mp-cells>
|
|
6
|
+
<!-- uploader delete 实际代码接受 showDelete
|
|
7
|
+
https://developers.weixin.qq.com/community/develop/doc/000a4e7b9cc158c110aa3961056400
|
|
8
|
+
-->
|
|
9
|
+
|
|
10
|
+
<!-- bind开头的是事件handler,wxml模版中不能带 `{{}}`
|
|
11
|
+
```
|
|
12
|
+
<mp-uploader files="{{files}}" showDelete="{{true}}" ext-class="{{layout}}" bindfail="uploadError" bindsuccess="uploadSuccess" select="{{selectFile}}" upload="{{uploadFile}}" maxCount="{{maxUploadCount}}" title="{{title}}" tips="{{tips}}" binddelete="onDelete"></mp-uploader>
|
|
13
|
+
```
|
|
14
|
+
upload 是函数带{{}}, bindtelete直接传函数名字符串
|
|
15
|
+
-->
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import handleEvents from '../../utils/handleEvents';
|
|
2
|
-
|
|
3
1
|
Component({
|
|
4
2
|
options: {
|
|
5
3
|
virtualHost: true,
|
|
@@ -48,17 +46,55 @@ Component({
|
|
|
48
46
|
}
|
|
49
47
|
},
|
|
50
48
|
methods: {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
{
|
|
54
|
-
|
|
49
|
+
load: function(e) {
|
|
50
|
+
this.triggerEvent('error', e.detail);
|
|
51
|
+
this.setData({
|
|
52
|
+
realHeight: e.detail.height,
|
|
53
|
+
realWidth: e.detail.width
|
|
54
|
+
});
|
|
55
|
+
},
|
|
56
|
+
error: function(e) {
|
|
57
|
+
this.setData({
|
|
58
|
+
isError: true,
|
|
59
|
+
clsx: this.properties.className + 'weda-image-error'
|
|
60
|
+
});
|
|
61
|
+
this.triggerEvent('error', e.detail);
|
|
62
|
+
},
|
|
55
63
|
onImgTap: function() {
|
|
56
|
-
if(this.properties.imgPreview) {
|
|
64
|
+
if(this.properties.imgPreview && !this.data.isError) {
|
|
65
|
+
// 计算图片预览展示高度
|
|
66
|
+
const {windowWidth, windowHeight} = wx.getSystemInfoSync();
|
|
67
|
+
const showHeight = windowWidth / (this.data.realWidth / this.data.realHeight);
|
|
68
|
+
const offsetHeight = windowHeight / 2 - (showHeight / 2);
|
|
57
69
|
this.setData({
|
|
58
|
-
|
|
70
|
+
showImg: true,
|
|
71
|
+
zoom: 1,
|
|
72
|
+
previewTranslateY: 0,
|
|
73
|
+
previewTranslateX: 0,
|
|
74
|
+
showHeight,
|
|
75
|
+
offsetHeight
|
|
59
76
|
});
|
|
60
77
|
}
|
|
61
78
|
},
|
|
79
|
+
onPinch: function(ev) {
|
|
80
|
+
let zoom = ev.detail.zoom;
|
|
81
|
+
// zoom = this.data.zoom * zoom;
|
|
82
|
+
if(zoom > 5) {
|
|
83
|
+
zoom = 5;
|
|
84
|
+
}
|
|
85
|
+
if(zoom < 0.6) {
|
|
86
|
+
zoom = 0.6;
|
|
87
|
+
}
|
|
88
|
+
this.setData({
|
|
89
|
+
zoom
|
|
90
|
+
});
|
|
91
|
+
},
|
|
92
|
+
onPressMove: function(ev) {
|
|
93
|
+
this.setData({
|
|
94
|
+
previewTranslateX: this.data.previewTranslateX + ev.detail.deltaX,
|
|
95
|
+
previewTranslateY: this.data.previewTranslateY + ev.detail.deltaY
|
|
96
|
+
});
|
|
97
|
+
},
|
|
62
98
|
onMaskClick: function() {
|
|
63
99
|
if(this.properties.maskClosable) {
|
|
64
100
|
this.setData({
|
|
@@ -76,8 +112,21 @@ Component({
|
|
|
76
112
|
showImg: false,
|
|
77
113
|
realSrc: '',
|
|
78
114
|
imgMode: 'scaleToFill',
|
|
115
|
+
clsx: '',
|
|
116
|
+
isError: false,
|
|
117
|
+
zoom: 1,
|
|
118
|
+
previewTranslateX: 0,
|
|
119
|
+
previewTranslateY: 0,
|
|
120
|
+
realHeight: 0,
|
|
121
|
+
realWidth: 0
|
|
79
122
|
},
|
|
80
123
|
observers: {
|
|
124
|
+
className: function() {
|
|
125
|
+
const className = this.properties.className;
|
|
126
|
+
this.setData({
|
|
127
|
+
clsx: className
|
|
128
|
+
});
|
|
129
|
+
},
|
|
81
130
|
src: function () {
|
|
82
131
|
const { src = '' } = this.properties;
|
|
83
132
|
let { app } = getApp();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<image
|
|
2
2
|
style="{{style}}"
|
|
3
|
-
class="weda-ui weda-image {{
|
|
3
|
+
class="weda-ui weda-image {{clsx}}"
|
|
4
4
|
src="{{realSrc}}"
|
|
5
5
|
alt="{{alt}}"
|
|
6
6
|
mode="{{imgMode}}"
|
|
@@ -14,5 +14,7 @@
|
|
|
14
14
|
<view bindtap="onCloseClick" class="weda-img-modal-close-btn">
|
|
15
15
|
<icon type="clear" size="23" color="white"></icon>
|
|
16
16
|
</view>
|
|
17
|
-
|
|
17
|
+
<gesture bindpinch="onPinch" catchtap="onTapImgPreview" bindpressMove="onPressMove">
|
|
18
|
+
<view class="weda-img-preview" style="margin-top:{{offsetHeight}}px;width: 100%;height:{{showHeight}}px;background-image: url('{{realSrc}}');transform: scale({{zoom}}) translateX({{previewTranslateX}}px) translateY({{previewTranslateY}}px);"></view>
|
|
19
|
+
</gesture>
|
|
18
20
|
</view>
|