@opentiny/vue-renderless 3.13.2 → 3.14.1

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 (320) hide show
  1. package/action-sheet/index.js +20 -13
  2. package/action-sheet/vue.js +8 -7
  3. package/amount/index.js +100 -25
  4. package/amount/vue.js +102 -26
  5. package/anchor/index.js +1 -0
  6. package/area/index.js +8 -8
  7. package/area/vue.js +5 -5
  8. package/async-flowchart/index.js +16 -3
  9. package/autocomplete/index.js +58 -14
  10. package/autocomplete/vue.js +40 -12
  11. package/badge/index.js +12 -0
  12. package/badge/vue.js +6 -4
  13. package/breadcrumb/vue.js +3 -1
  14. package/breadcrumb-item/vue.js +6 -2
  15. package/button/index.js +5 -1
  16. package/calendar/index.js +2 -86
  17. package/calendar-bar/index.js +18 -4
  18. package/calendar-view/index.js +5 -1
  19. package/calendar-view/vue.js +16 -3
  20. package/card-group/vue.js +4 -2
  21. package/cascader/index.js +86 -34
  22. package/cascader/vue.js +61 -20
  23. package/cascader-menu/index.js +7 -7
  24. package/cascader-menu/vue.js +2 -3
  25. package/cascader-mobile/index.js +36 -23
  26. package/cascader-mobile/vue.js +6 -0
  27. package/cascader-node/index.js +13 -1
  28. package/cascader-node/vue.js +15 -4
  29. package/cascader-panel/index.js +1 -1
  30. package/cascader-select/column-index.js +150 -0
  31. package/cascader-select/column.js +120 -0
  32. package/cascader-select/index.js +29 -165
  33. package/cascader-select/usePicker.js +251 -0
  34. package/cascader-select/useTouch.js +65 -0
  35. package/cascader-select/vue.js +35 -47
  36. package/cell/vue.js +2 -1
  37. package/chart-bar/index.js +2 -3
  38. package/chart-core/deps/constants.js +43 -43
  39. package/chart-core/index.js +1 -1
  40. package/chart-gauge/index.js +2 -2
  41. package/chart-heatmap/index.js +17 -10
  42. package/chart-line/index.js +8 -9
  43. package/chart-tree/index.js +2 -2
  44. package/chart-waterfall/index.js +4 -6
  45. package/checkbox/index.js +18 -1
  46. package/checkbox/vue.js +15 -7
  47. package/checkbox-group/vue.js +1 -0
  48. package/col/vue.js +1 -1
  49. package/collapse/index.js +3 -3
  50. package/color-select-panel/vue.js +0 -7
  51. package/column-list-item/index.js +17 -1
  52. package/column-list-item/vue.js +8 -3
  53. package/common/bigInt.js +2 -2
  54. package/common/date.js +7 -5
  55. package/common/deps/clickoutside.js +6 -2
  56. package/common/deps/date-util.js +4 -2
  57. package/common/deps/dom.js +19 -4
  58. package/common/deps/popper.js +44 -11
  59. package/common/deps/resize-event.js +1 -0
  60. package/common/deps/touch-emulator.js +4 -1
  61. package/common/deps/tree-model/node.js +2 -2
  62. package/common/deps/tree-model/tree-store.js +2 -13
  63. package/common/deps/useRect.js +25 -0
  64. package/common/deps/vue-popper.js +38 -20
  65. package/common/index.js +2 -2
  66. package/common/runtime.js +1 -1
  67. package/common/string.js +2 -2
  68. package/common/type.js +2 -1
  69. package/common/validate/rules/enum.js +1 -1
  70. package/common/validate/rules/pattern.js +2 -2
  71. package/common/validate/rules/range.js +8 -5
  72. package/common/validate/rules/required.js +1 -1
  73. package/common/validate/rules/type.js +5 -5
  74. package/common/validate/rules/whitespace.js +1 -1
  75. package/common/validate/util.js +15 -16
  76. package/common/validate/validations/integer.js +1 -1
  77. package/common/validate/validations/method.js +1 -1
  78. package/currency/index.js +74 -7
  79. package/currency/vue.js +21 -5
  80. package/date-panel/index.js +16 -0
  81. package/date-panel/vue.js +8 -2
  82. package/date-picker-mobile/index.js +12 -0
  83. package/date-picker-mobile/vue.js +7 -1
  84. package/date-range/vue.js +15 -6
  85. package/date-table/index.js +35 -53
  86. package/date-table/vue.js +4 -2
  87. package/dialog-box/index.js +46 -14
  88. package/dialog-box/vue.js +30 -7
  89. package/dialog-select/index.js +6 -3
  90. package/dialog-select/vue.js +8 -4
  91. package/drawer/index.js +27 -5
  92. package/drawer/vue.js +14 -7
  93. package/dropdown/index.js +7 -7
  94. package/dropdown/vue.js +6 -2
  95. package/dropdown-item/index.js +9 -1
  96. package/dropdown-item/mf.js +6 -10
  97. package/dropdown-item/vue.js +20 -7
  98. package/dropdown-menu/index.js +20 -7
  99. package/dropdown-menu/vue.js +4 -3
  100. package/exception/index.js +2 -7
  101. package/exception/vue.js +7 -10
  102. package/fall-menu/index.js +5 -1
  103. package/fall-menu/vue.js +13 -2
  104. package/file-upload/index.js +68 -18
  105. package/file-upload/vue.js +38 -8
  106. package/filter-box/index.js +1 -0
  107. package/float-button/index.js +42 -0
  108. package/float-button/vue.js +101 -0
  109. package/floating-button/index.js +62 -16
  110. package/floating-button/vue.js +27 -9
  111. package/flowchart/index.js +134 -25
  112. package/flowchart/node.js +13 -4
  113. package/flowchart/vue.js +16 -4
  114. package/form/vue.js +8 -0
  115. package/form-item/index.js +5 -5
  116. package/form-item/vue.js +3 -1
  117. package/fullscreen/index.js +5 -5
  118. package/fullscreen/vue.js +3 -3
  119. package/grid/plugins/export.js +5 -2
  120. package/grid/utils/column.js +1 -0
  121. package/grid/utils/dom.js +7 -1
  122. package/image/index.js +6 -1
  123. package/image/vue.js +6 -3
  124. package/image-viewer/index.js +62 -51
  125. package/image-viewer/vue.js +17 -5
  126. package/input/index.js +81 -20
  127. package/input/vue.js +44 -18
  128. package/ip-address/index.js +61 -19
  129. package/ip-address/vue.js +22 -4
  130. package/link/vue.js +3 -1
  131. package/loading/index.js +2 -2
  132. package/loading/vue.js +8 -2
  133. package/logout/index.js +1 -1
  134. package/menu/index.js +15 -2
  135. package/menu/vue.js +22 -17
  136. package/mind-map/index.js +47 -0
  137. package/mind-map/vue.js +53 -0
  138. package/modal/index.js +44 -4
  139. package/modal/vue.js +18 -4
  140. package/multi-select/index.js +186 -11
  141. package/multi-select/vue.js +60 -15
  142. package/multi-select-item/index.js +23 -0
  143. package/multi-select-item/vue.js +31 -0
  144. package/numeric/index.js +48 -12
  145. package/numeric/vue.js +44 -19
  146. package/option/index.js +27 -9
  147. package/option/vue.js +37 -21
  148. package/option-group/index.js +3 -3
  149. package/package.json +1 -1
  150. package/pager/index.js +18 -4
  151. package/pager/vue.js +16 -5
  152. package/picker/index.js +290 -77
  153. package/picker/mb.js +42 -0
  154. package/picker/vue.js +76 -20
  155. package/picker-column/index.js +1 -1
  156. package/pop-upload/vue.js +3 -0
  157. package/popconfirm/index.js +3 -6
  158. package/popconfirm/vue.js +1 -1
  159. package/popeditor/index.js +73 -34
  160. package/popeditor/vue.js +15 -11
  161. package/popover/index.js +4 -4
  162. package/popover/vue.js +6 -6
  163. package/popup/index.js +3 -3
  164. package/popup/vue.js +5 -5
  165. package/pull-refresh/index.js +13 -13
  166. package/pull-refresh/vue.js +5 -4
  167. package/radio/index.js +0 -17
  168. package/radio/vue.js +4 -10
  169. package/rate/index.js +1 -1
  170. package/rate/vue.js +0 -2
  171. package/record/index.js +4 -1
  172. package/rich-text/clipboard.js +54 -0
  173. package/rich-text/index.js +192 -0
  174. package/rich-text/module/file-upload.js +107 -0
  175. package/rich-text/module/image-drop.js +63 -0
  176. package/rich-text/module/image-upload.js +89 -0
  177. package/rich-text/options.js +141 -0
  178. package/rich-text/table-module.js +382 -0
  179. package/rich-text/vue.js +102 -0
  180. package/{rich-text-edtior → rich-text-editor}/index.js +2 -2
  181. package/{rich-text-edtior → rich-text-editor}/vue.js +2 -5
  182. package/scrollbar/index.js +11 -11
  183. package/scrollbar/vue-bar.js +3 -3
  184. package/scrollbar/vue.js +5 -5
  185. package/search/index.js +9 -9
  186. package/search/vue.js +8 -6
  187. package/select/index.js +442 -393
  188. package/select/vue.js +278 -164
  189. package/select-dropdown/index.js +61 -3
  190. package/select-dropdown/vue.js +85 -8
  191. package/select-view/index.js +3 -1
  192. package/selected-box/index.js +2 -0
  193. package/selected-box/vue.js +6 -3
  194. package/signature/index.js +241 -0
  195. package/signature/vue.js +88 -0
  196. package/skeleton/index.js +14 -0
  197. package/skeleton/vue.js +15 -0
  198. package/skeleton-item/vue.js +15 -0
  199. package/slider/index.js +70 -17
  200. package/slider/vue.js +16 -7
  201. package/split/index.js +5 -3
  202. package/split/vue.js +4 -6
  203. package/standard-list-item/index.js +15 -1
  204. package/standard-list-item/vue.js +6 -5
  205. package/steps/index.js +25 -2
  206. package/steps/slide-bar.js +8 -1
  207. package/steps/vue.js +15 -3
  208. package/tab-item-mf/vue.js +14 -8
  209. package/tab-nav/index.js +30 -5
  210. package/tab-nav/vue.js +16 -4
  211. package/tabbar/vue.js +9 -3
  212. package/tabbar-item/vue.js +3 -2
  213. package/tabs/index.js +16 -4
  214. package/tabs/vue.js +2 -1
  215. package/tabs-mf/index.js +20 -6
  216. package/tabs-mf/vue-nav.js +26 -11
  217. package/tabs-mf/vue.js +7 -7
  218. package/tabs-mf/wheel.js +1 -0
  219. package/tag/index.js +1 -1
  220. package/tag-group/index.js +2 -1
  221. package/time/index.js +5 -2
  222. package/time/vue.js +1 -1
  223. package/time-line/index.js +3 -3
  224. package/time-line/vue.js +2 -2
  225. package/time-picker-mobile/index.js +24 -5
  226. package/time-picker-mobile/vue.js +17 -7
  227. package/time-range/index.js +2 -0
  228. package/timeline-item/vue.js +1 -1
  229. package/tooltip/index.js +6 -3
  230. package/tooltip/vue.js +4 -4
  231. package/transfer/index.js +20 -22
  232. package/transfer/vue.js +1 -6
  233. package/transfer-panel/vue.js +3 -5
  234. package/tree/index.js +21 -4
  235. package/tree/vue.js +10 -8
  236. package/tree-menu/index.js +29 -3
  237. package/tree-menu/vue.js +28 -15
  238. package/tree-node/index.js +18 -18
  239. package/tree-node/vue.js +6 -5
  240. package/types/action-sheet.type.d.ts +118 -1
  241. package/types/amount.type.d.ts +168 -1
  242. package/types/area.type.d.ts +134 -1
  243. package/types/async-flowchart.type.d.ts +72 -0
  244. package/types/autocomplete.type.d.ts +199 -1
  245. package/types/badge.type.d.ts +3 -1
  246. package/types/breadcrumb-item.type.d.ts +2 -0
  247. package/types/breadcrumb.type.d.ts +2 -0
  248. package/types/button-group.type.d.ts +3 -3
  249. package/types/button.type.d.ts +4 -0
  250. package/types/cascader-menu.type.d.ts +3 -4
  251. package/types/cascader-node.type.d.ts +5 -2
  252. package/types/cascader-panel.type-2bd03be3.d.ts +241 -0
  253. package/types/cascader-panel.type.d.ts +3 -241
  254. package/types/cascader.type.d.ts +329 -1
  255. package/types/checkbox.type.d.ts +6 -0
  256. package/types/collapse.type.d.ts +19 -2
  257. package/types/date-picker.type.d.ts +38 -1
  258. package/types/dialog-box.type.d.ts +13 -3
  259. package/types/drawer.type.d.ts +133 -1
  260. package/types/{dropdown-item.type-8ea6c633.d.ts → dropdown-item.type-8475a549.d.ts} +7 -13
  261. package/types/dropdown-item.type.d.ts +1 -1
  262. package/types/dropdown-menu.type.d.ts +1 -1
  263. package/types/dropdown.type.d.ts +1 -5
  264. package/types/fall-menu.type.d.ts +94 -1
  265. package/types/file-upload.type.d.ts +1 -1
  266. package/types/float-button.type.d.ts +123 -0
  267. package/types/form-item.type.d.ts +1 -1
  268. package/types/{form.type-d0fd42f3.d.ts → form.type-a2dc0099.d.ts} +4 -1
  269. package/types/form.type.d.ts +1 -1
  270. package/types/{index-e0250f63.d.ts → index-b012f687.d.ts} +9 -0
  271. package/types/input.type.d.ts +2 -6
  272. package/types/ip-address.type.d.ts +160 -1
  273. package/types/link.type.d.ts +6 -3
  274. package/types/loading.type.d.ts +7 -0
  275. package/types/mind-map.type.d.ts +20 -0
  276. package/types/modal.type.d.ts +29 -2
  277. package/types/numeric.type.d.ts +41 -10
  278. package/types/pager.type.d.ts +12 -0
  279. package/types/picker.type.d.ts +18 -0
  280. package/types/popconfirm.type.d.ts +86 -1
  281. package/types/popeditor.type.d.ts +4 -0
  282. package/types/popover.type.d.ts +3 -3
  283. package/types/progress.type.d.ts +2 -0
  284. package/types/radio.type.d.ts +0 -4
  285. package/types/rate.type.d.ts +236 -1
  286. package/types/search.type.d.ts +88 -1
  287. package/types/shared.type.d.ts +1 -1
  288. package/types/skeleton-item.type.d.ts +38 -0
  289. package/types/skeleton.type.d.ts +45 -0
  290. package/types/slider.type.d.ts +49 -10
  291. package/types/steps.type.d.ts +14 -3
  292. package/types/tab-bar.type.d.ts +1 -1
  293. package/types/tab-nav.type.d.ts +7 -2
  294. package/types/tabs.type.d.ts +9 -1
  295. package/types/tag-group.type.d.ts +64 -1
  296. package/types/{time-line.type-d7daa669.d.ts → time-line.type-b155cb4f.d.ts} +12 -0
  297. package/types/time-line.type.d.ts +1 -1
  298. package/types/timeline-item.type.d.ts +1 -1
  299. package/types/tooltip.type.d.ts +2 -2
  300. package/types/transfer.type.d.ts +185 -1
  301. package/types/tree-menu.type.d.ts +210 -1
  302. package/types/upload-dragger.type.d.ts +1 -1
  303. package/types/{upload-list.type-343e8c11.d.ts → upload-list.type-6d6e3d0e.d.ts} +35 -8
  304. package/types/upload-list.type.d.ts +1 -1
  305. package/types/upload.type.d.ts +1 -1
  306. package/types/user-head.type.d.ts +146 -1
  307. package/types/wizard.type.d.ts +1 -0
  308. package/upload/index.js +64 -34
  309. package/upload/vue.js +9 -5
  310. package/upload-dragger/index.js +22 -20
  311. package/upload-list/index.js +24 -18
  312. package/upload-list/vue.js +9 -4
  313. package/user/index.js +35 -26
  314. package/user/vue.js +1 -1
  315. package/user-head/index.js +3 -3
  316. package/watermark/index.js +11 -0
  317. package/wheel/index.js +3 -0
  318. package/wizard/vue.js +4 -2
  319. package/common/deps/modal-queue.js +0 -6
  320. package/common/deps/requestAnimationFrame.js +0 -25
@@ -1,2 +1,147 @@
1
+ import { ExtractPropTypes } from 'vue';
2
+ import { ISharedRenderlessFunctionParams, ISharedRenderlessParamUtils } from './shared.type.js';
1
3
 
2
- export { }
4
+ declare const $constants: {
5
+ ITEM_NAME: string;
6
+ };
7
+ declare const userHeadProps: {
8
+ _constants: {
9
+ type: ObjectConstructor;
10
+ default: () => {
11
+ ITEM_NAME: string;
12
+ };
13
+ };
14
+ /**
15
+ * @property {Boolean} [min=false] - 小尺寸模式
16
+ */
17
+ min: BooleanConstructor;
18
+ /**
19
+ * @property {Boolean} [round=true] - 圆形模式
20
+ */
21
+ round: BooleanConstructor;
22
+ /**
23
+ * @property {String} [color=#ffffff] - 文字颜色
24
+ */
25
+ color: {
26
+ type: StringConstructor;
27
+ default: string;
28
+ };
29
+ /**
30
+ * @property {String} [backgroundColor=#BBBBBB] - 背景色
31
+ */
32
+ backgroundColor: {
33
+ type: StringConstructor;
34
+ default: string;
35
+ };
36
+ /**
37
+ * @property {String} [type=label] - 头像类型,icon|image|label 可选
38
+ */
39
+ type: {
40
+ type: StringConstructor;
41
+ default: string;
42
+ validator: (value: string) => boolean;
43
+ };
44
+ /**
45
+ * @property {String} - 头像资源
46
+ * type=icon 时为图标类名,type=label时为字体串,type=image时为资源路径
47
+ */
48
+ value: {
49
+ type: (StringConstructor | ObjectConstructor)[];
50
+ default: null;
51
+ };
52
+ /**
53
+ * @property {String} - 头像资源
54
+ * type=icon 时为图标类名,type=label时为字体串,type=image时为资源路径
55
+ */
56
+ modelValue: {
57
+ type: (StringConstructor | ObjectConstructor)[];
58
+ default: null;
59
+ };
60
+ /**
61
+ * @property {Number} - 消息计数
62
+ */
63
+ messageTotal: NumberConstructor;
64
+ /**
65
+ * @property {String} [messageType=details] - 消息类型 details|basic 可选
66
+ */
67
+ messageType: {
68
+ type: StringConstructor;
69
+ default: string;
70
+ validator: (value: string) => boolean;
71
+ };
72
+ /**
73
+ * @property {Number} [messageUpperLimit=0] - 消息显示上限
74
+ */
75
+ messageUpperLimit: {
76
+ type: NumberConstructor;
77
+ default: number;
78
+ };
79
+ size: {
80
+ type: NumberConstructor;
81
+ default: number;
82
+ };
83
+ tiny_mode: StringConstructor;
84
+ tiny_mode_root: BooleanConstructor;
85
+ tiny_template: (FunctionConstructor | ObjectConstructor)[];
86
+ tiny_renderless: FunctionConstructor;
87
+ tiny_theme: StringConstructor;
88
+ tiny_chart_theme: ObjectConstructor;
89
+ };
90
+
91
+ /**
92
+ * Copyright (c) 2022 - present TinyVue Authors.
93
+ * Copyright (c) 2022 - present Huawei Cloud Computing Technologies Co., Ltd.
94
+ *
95
+ * Use of this source code is governed by an MIT-style license.
96
+ *
97
+ * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,
98
+ * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR
99
+ * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.
100
+ *
101
+ */
102
+
103
+ declare const computedStyle: ({ state, props }: Pick<IUserHeadRenderlessParams, 'state' | 'props'>) => () => {
104
+ fill: string;
105
+ color: string;
106
+ backgroundColor: string;
107
+ backgroundImage: string;
108
+ };
109
+ declare const computedMessage: ({ props }: Pick<IUserHeadRenderlessParams, 'props'>) => () => string;
110
+ declare const computedFontSize: ({ props, state, mode }: Pick<IUserHeadRenderlessParams, 'props' | 'state' | 'mode'>) => () => {
111
+ fontSize: string;
112
+ };
113
+ declare const computedLabel: ({ state, props }: Pick<IUserHeadRenderlessParams, 'state' | 'props'>) => () => any;
114
+ declare const getInternalValue: ({ props }: Pick<IUserHeadRenderlessParams, 'props'>) => () => string | Record<string, any>;
115
+
116
+ interface IUserHeadState {
117
+ internalValue: string | Record<string, any>;
118
+ label: string;
119
+ style: ReturnType<ReturnType<typeof computedStyle>>;
120
+ message: string;
121
+ fontSize: {
122
+ fontSize: string;
123
+ };
124
+ size: number;
125
+ color: string;
126
+ backgroundColor: string;
127
+ }
128
+ type IUserHeadProps = ExtractPropTypes<typeof userHeadProps>;
129
+ type IUserHeadConstants = typeof $constants;
130
+ type IUserHeadRenderlessParams = ISharedRenderlessFunctionParams<IUserHeadConstants> & {
131
+ api: IUserHeadApi;
132
+ state: IUserHeadState;
133
+ props: IUserHeadProps;
134
+ };
135
+ interface IUserHeadApi {
136
+ state: IUserHeadState;
137
+ computedLabel: ReturnType<typeof computedLabel>;
138
+ computedStyle: ReturnType<typeof computedStyle>;
139
+ computedMessage: ReturnType<typeof computedMessage>;
140
+ computedFontSize: ReturnType<typeof computedFontSize>;
141
+ getInternalValue: ReturnType<typeof getInternalValue>;
142
+ handleClick: (event: Event) => void;
143
+ mouseEnter: (event: Event) => void;
144
+ }
145
+ type IUserHeadRenderlessParamUtils = ISharedRenderlessParamUtils<IUserHeadConstants>;
146
+
147
+ export { IUserHeadApi, IUserHeadConstants, IUserHeadProps, IUserHeadRenderlessParamUtils, IUserHeadRenderlessParams, IUserHeadState };
@@ -62,6 +62,7 @@ interface IWizardState {
62
62
  doing: string;
63
63
  ready: string;
64
64
  wait: string;
65
+ iconYes: 'tiny-icon-yes' | 'tiny-icon-successful';
65
66
  }
66
67
  type IWizardConstants = typeof $constants;
67
68
  type IWizardRenderlessParams = ISharedRenderlessFunctionParams<IWizardConstants> & {
package/upload/index.js CHANGED
@@ -95,11 +95,8 @@ const uploadFiles = ({
95
95
  }
96
96
  return folderAry.length < 7;
97
97
  });
98
- }
99
- if (!props.isFolder) {
100
- if (!props.multiple) {
101
- postFiles = postFiles.slice(0, 1);
102
- }
98
+ } else if (!props.multiple) {
99
+ postFiles = postFiles.slice(0, 1);
103
100
  }
104
101
  if (postFiles.length === 0) {
105
102
  return;
@@ -147,16 +144,17 @@ const upload = ({ api, props, refs }) => (rawFile) => {
147
144
  const abort = ({ state, props, constants }) => (file) => {
148
145
  const { reqs } = state;
149
146
  const cancel = function(uid) {
150
- if (reqs[uid]) {
151
- reqs[uid].abort();
147
+ var _a;
148
+ if ((_a = reqs[uid]) == null ? void 0 : _a.abort) {
149
+ reqs[uid].abort("");
152
150
  } else if (state.cancelToken[uid]) {
153
- state.cancelToken[uid]();
151
+ state.cancelToken[uid]("");
154
152
  }
155
153
  delete reqs[uid];
156
154
  delete state.cancelToken[uid];
157
155
  };
158
156
  if (file && file.isLargeFile && file.cancelToken) {
159
- file.cancelToken && file.cancelToken.forEach((cancel2) => cancel2());
157
+ file.cancelToken && file.cancelToken.forEach((cancel2) => cancel2(""));
160
158
  delete file.cancelToken;
161
159
  } else if (file) {
162
160
  let uid = file;
@@ -166,9 +164,9 @@ const abort = ({ state, props, constants }) => (file) => {
166
164
  cancel(uid);
167
165
  } else {
168
166
  const { READY, UPLOADING, FAIL } = constants.FILE_STATUS;
169
- Object.keys(reqs).forEach((uid) => cancel(uid));
167
+ Object.keys(reqs).forEach((uid) => cancel(uid || ""));
170
168
  props.fileList.forEach((file2) => {
171
- file2.cancelToken && file2.cancelToken.forEach((cancel2) => cancel2());
169
+ file2.cancelToken && file2.cancelToken.forEach((cancel2) => cancel2(""));
172
170
  if ([READY, UPLOADING].includes(file2.status)) {
173
171
  file2.status = FAIL;
174
172
  }
@@ -265,31 +263,32 @@ const getOptionsOfHwh5 = ({
265
263
  uploaderInner,
266
264
  uid
267
265
  }) => {
268
- return {
269
- edmAuth: {
270
- edmToken: props.edmToken.edmToken,
271
- appId: uploaderInner.hwh5.appId
266
+ const edm = uploaderInner.edm;
267
+ const params = edm && edm.upload && edm.upload.params || {};
268
+ return Object.assign(
269
+ {
270
+ edmAuth: {
271
+ edmToken: props.edmToken.edmToken,
272
+ appId: uploaderInner.hwh5.appId
273
+ },
274
+ filePath: rawFile.filePath,
275
+ progress: 1
272
276
  },
273
- filePath: rawFile.filePath,
274
- progress: 1,
275
- onProgress: (data) => {
276
- if (props.onProgress) {
277
+ params,
278
+ {
279
+ onProgress: (data) => {
277
280
  props.onProgress(data, rawFile);
278
- }
279
- },
280
- onSuccess: (res) => {
281
- if (props.onSuccess) {
281
+ },
282
+ onSuccess: (res) => {
282
283
  props.onSuccess(res, rawFile);
284
+ delete state.reqs[uid];
285
+ },
286
+ onError: (error) => {
287
+ props.onError(error, rawFile);
288
+ delete state.reqs[uid];
283
289
  }
284
- delete state.reqs[uid];
285
- },
286
- onError: (error) => {
287
- if (props.onProgress) {
288
- props.onProgress(error, rawFile);
289
- }
290
- delete state.reqs[uid];
291
290
  }
292
- };
291
+ );
293
292
  };
294
293
  const post = ({
295
294
  api,
@@ -325,11 +324,42 @@ const post = ({
325
324
  excuteReq(options);
326
325
  }
327
326
  };
328
- const handleClick = ({ props, refs }) => ($event, type) => {
329
- if (!props.disabled && !props.displayOnly) {
330
- props.handleTriggerClick($event, type);
327
+ const handleClick = ({ props, refs, state }) => ($event, type) => {
328
+ if (props.disabled || props.displayOnly || state.isStopPropagation) {
329
+ return;
330
+ }
331
+ const { uploader, uploadInner } = state;
332
+ const { encryptConfig = {} } = uploader;
333
+ const fileUploadVm = uploadInner.$parent;
334
+ const inputHandler = () => {
335
+ typeof props.handleTriggerClick === "function" && props.handleTriggerClick($event, type);
336
+ if (props.isHwh5) {
337
+ return;
338
+ }
331
339
  refs.input.value = null;
340
+ state.isStopPropagation = true;
332
341
  refs.input.click();
342
+ state.isStopPropagation = false;
343
+ };
344
+ if (typeof uploader.beforeAddFile === "function") {
345
+ $event.preventDefault();
346
+ let isPromise;
347
+ const promise = uploader.beforeAddFile(() => {
348
+ !isPromise && inputHandler();
349
+ });
350
+ isPromise = promise && typeof promise.then === "function";
351
+ if (isPromise) {
352
+ promise.then(() => inputHandler()).catch(() => null);
353
+ } else if (promise) {
354
+ inputHandler();
355
+ }
356
+ } else if (encryptConfig && encryptConfig.enabled && fileUploadVm) {
357
+ fileUploadVm.state.encryptDialogConfig.show = true;
358
+ fileUploadVm.state.encryptDialogConfig.selectFileMethod = () => {
359
+ inputHandler();
360
+ };
361
+ } else {
362
+ inputHandler();
333
363
  }
334
364
  };
335
365
  const handleKeydown = (api) => (event) => {
package/upload/vue.js CHANGED
@@ -27,17 +27,20 @@ const api = [
27
27
  "handleKeydown",
28
28
  "handleUpdate"
29
29
  ];
30
- const renderless = (props, { computed, inject, reactive, onMounted, onBeforeUnmount }, { refs, service, t }, { Modal }) => {
30
+ const renderless = (props, { computed, inject, reactive, onMounted, onBeforeUnmount }, { refs, service, t, useBreakpoint }, { Modal }) => {
31
31
  const api2 = {};
32
32
  const uploader = inject("uploader");
33
33
  const constants = uploader.$constants;
34
+ const { current } = useBreakpoint();
34
35
  const state = reactive({
36
+ currentBreakpoint: current,
35
37
  mouseover: false,
36
38
  reqs: {},
37
39
  uploader,
38
40
  accecpt: "",
39
- isEdm: computed(() => state.uploader.$refs[constants.FILE_UPLOAD_INNER_TEMPLATE].state.isEdm),
40
- openEdmDownload: computed(() => state.uploader.$refs[constants.FILE_UPLOAD_INNER_TEMPLATE].edm.download),
41
+ uploadInner: computed(() => state.uploader.$refs[constants.FILE_UPLOAD_INNER_TEMPLATE]),
42
+ isEdm: computed(() => state.uploadInner.state.isEdm),
43
+ openEdmDownload: computed(() => state.uploadInner.edm.download),
41
44
  headers: computed(() => {
42
45
  if (state.isEdm) {
43
46
  return {
@@ -49,14 +52,15 @@ const renderless = (props, { computed, inject, reactive, onMounted, onBeforeUnmo
49
52
  formData: {},
50
53
  cancelToken: {},
51
54
  updateId: "",
52
- updateInput: null
55
+ updateInput: null,
56
+ isStopPropagation: false
53
57
  });
54
58
  Object.assign(api2, {
55
59
  state,
56
60
  isImage,
57
61
  abort: abort({ state, props, constants }),
58
62
  getFormData: getFormData({ state, constants, props }),
59
- handleClick: handleClick({ props, refs }),
63
+ handleClick: handleClick({ props, refs, state }),
60
64
  onBeforeDestroy: onBeforeDestroy(state),
61
65
  handleUpdate: handleUpdate({ state, props }),
62
66
  uploadFiles: uploadFiles({ constants, Modal, props, state, t }),
@@ -13,27 +13,29 @@ const onDrop = ({ emit, props, state }) => (event) => {
13
13
  return;
14
14
  }
15
15
  const notAcceptedFiles = [];
16
- const filteredFile = [].slice.call(files).filter((file) => {
17
- const { type, name } = file;
18
- const extension = name.includes(".") ? `.${name.split(".").pop()}` : "";
19
- const baseType = type.replace(/\/.*$/, "");
20
- let isValid = accept.split(",").map((type2) => type2.trim()).filter((type2) => type2).some((type2) => {
21
- if (/\..+$/.test(type2)) {
22
- return extension === type2;
23
- }
24
- if (/\/\*$/.test(type2)) {
25
- return baseType === type2.replace(/\/\*$/, "");
26
- }
27
- if (/^[^/]+\/[^/]+$/.test(type2)) {
28
- return true;
29
- }
30
- return false;
16
+ if (files) {
17
+ Array.from(files).filter((file) => {
18
+ const { type, name } = file;
19
+ const extension = name.includes(".") ? `.${name.split(".").pop()}` : "";
20
+ const baseType = type.replace(/\/.*$/, "");
21
+ let isValid = accept.split(",").map((type2) => type2.trim()).filter((type2) => type2).some((type2) => {
22
+ if (/\..+$/.test(type2)) {
23
+ return extension === type2;
24
+ }
25
+ if (/\/\*$/.test(type2)) {
26
+ return baseType === type2.replace(/\/\*$/, "");
27
+ }
28
+ if (/^[^/]+\/[^/]+$/.test(type2)) {
29
+ return true;
30
+ }
31
+ return false;
32
+ });
33
+ !isValid && notAcceptedFiles.push(file);
34
+ return isValid;
31
35
  });
32
- !isValid && notAcceptedFiles.push(file);
33
- return isValid;
34
- });
35
- notAcceptedFiles.length && state.uploader.$emit("drop-error", notAcceptedFiles);
36
- emit("file", filteredFile);
36
+ notAcceptedFiles.length && state.uploader.$emit("drop-error", notAcceptedFiles);
37
+ }
38
+ emit("file", files);
37
39
  };
38
40
  const watchDragover = ({ state, constants }) => () => {
39
41
  state.uploader.$refs[constants.FILE_UPLOAD_INNER_TEMPLATE].$emit("drag-over", state.dragover);
@@ -40,7 +40,7 @@ const picturefilePreview = (state) => (index) => {
40
40
  const getDeleteData = (emit) => (data) => {
41
41
  emit("remove", data);
42
42
  };
43
- const showOperatePanel = ({ state }) => (file) => {
43
+ const showOperatePanel = ({ state }) => ({ file }) => {
44
44
  state.currentFile = file;
45
45
  state.showPanel = true;
46
46
  };
@@ -96,43 +96,43 @@ const getFileIcon = ({ constants }) => ({ type }) => {
96
96
  let iconTypes = {
97
97
  [EXCEL]: {
98
98
  name: "icon-excel-type",
99
- color: "#00A2B5"
99
+ color: "#09AA71"
100
100
  },
101
101
  [FILE]: {
102
102
  name: "icon-file-type",
103
- color: "#71C14C"
103
+ color: "#09AA71"
104
104
  },
105
105
  [PDF]: {
106
106
  name: "icon-pdf-type",
107
- color: "#FC916E"
107
+ color: "#E02128"
108
108
  },
109
109
  [PICTURE]: {
110
110
  name: "icon-picture-type",
111
- color: "#2E94FF"
111
+ color: "#5531EB"
112
112
  },
113
113
  [PPT]: {
114
114
  name: "icon-ppt-type",
115
- color: "#F46087"
115
+ color: "#E02128"
116
116
  },
117
117
  [TEXT]: {
118
118
  name: "icon-text-type",
119
- color: "#9185F0"
119
+ color: "#2CB8C9"
120
120
  },
121
121
  [WORD]: {
122
122
  name: "icon-word-type",
123
- color: "#2070F3"
123
+ color: "#0067D1"
124
124
  },
125
125
  [ZIP]: {
126
126
  name: "icon-zip-type",
127
- color: "#FDC000"
127
+ color: "#2CB8C9"
128
128
  },
129
129
  [VIDEO]: {
130
130
  name: "icon-video-type",
131
- color: "#2E94FF"
131
+ color: "#0067D1"
132
132
  },
133
133
  [AUDIO]: {
134
134
  name: "icon-audio",
135
- color: "#2E94FF"
135
+ color: "#5531EB"
136
136
  },
137
137
  default: {
138
138
  name: "icon-other-type",
@@ -153,11 +153,11 @@ const calcUploadListLiWidth = ({ vm, nextTick, props, constants }) => () => {
153
153
  const { listType } = props;
154
154
  const { LIST_TYPE } = constants;
155
155
  nextTick(() => {
156
- const uploadListEle = vm.$refs["upload-list"];
157
- const uploadListLiEle = vm.$refs["upload-list-li"];
156
+ const uploadListEle = vm.$refs.uploadList;
157
+ const uploadListLiEle = uploadListEle && uploadListEle.querySelectorAll('[data-tag="tiny-upload-list-item"]');
158
158
  if (!uploadListEle || !(uploadListLiEle && uploadListLiEle[0]))
159
159
  return;
160
- if (listType === LIST_TYPE.TEXT) {
160
+ if (listType === LIST_TYPE.TEXT || listType === LIST_TYPE.SAAS) {
161
161
  const { minWidth } = window.getComputedStyle(uploadListLiEle && uploadListLiEle[0]);
162
162
  const marginRight = 8;
163
163
  const num = Math.floor(uploadListEle.offsetWidth / (parseFloat(minWidth) + marginRight));
@@ -213,11 +213,17 @@ const handleTriggerClick = ({ state, props }) => ($event, type) => {
213
213
  });
214
214
  };
215
215
  const mounted = ({ api, vm }) => () => {
216
- const el = vm.$refs["upload-list"];
217
- el && addResizeListener(el, api.calcUploadListLiWidth);
216
+ const el = vm.$refs.uploadList;
217
+ if (el) {
218
+ addResizeListener(el, api.calcUploadListLiWidth);
219
+ vm._removeResizeListener = () => removeResizeListener(el, api.calcUploadListLiWidth);
220
+ }
218
221
  };
219
- const destroyed = ({ api, props, vm }) => () => {
220
- removeResizeListener(vm.$refs["upload-list"], api.calcUploadListLiWidth);
222
+ const destroyed = ({ props, vm }) => () => {
223
+ if (vm._removeResizeListener) {
224
+ vm._removeResizeListener();
225
+ vm._removeResizeListener = null;
226
+ }
221
227
  props.files.forEach((file) => {
222
228
  removePlayEventListener({ type: "ended", el: file.el }, file.playEvent);
223
229
  delete file.playEvent;
@@ -23,6 +23,7 @@ import {
23
23
  getNotSuccessFiles
24
24
  } from "./index";
25
25
  import { getToken, initService } from "../file-upload";
26
+ import { formatFileSize } from "../common/string";
26
27
  import { getApi } from "../file-upload/vue";
27
28
  const api = [
28
29
  "t",
@@ -43,17 +44,20 @@ const api = [
43
44
  "reUpload",
44
45
  "remove",
45
46
  "handleTriggerClick",
46
- "chooseFile"
47
+ "chooseFile",
48
+ "formatFileSize"
47
49
  ];
48
- const renderless = (props, { reactive, onMounted, onUnmounted, watch, inject, computed }, { t, parent, mode, emit, service, vm, nextTick, designConfig }, { Modal }) => {
50
+ const renderless = (props, { reactive, onMounted, onUnmounted, watch, inject, computed }, { t, parent, mode, emit, service, vm, nextTick, designConfig, useBreakpoint }, { Modal }) => {
49
51
  var _a, _b, _c, _d, _e, _f;
50
52
  const api2 = { getApi };
51
53
  parent = inject("uploader").$children[0];
52
54
  const constants = parent.$constants;
53
55
  const $service = initService({ props, service });
56
+ const { current } = useBreakpoint();
54
57
  const state = reactive({
55
58
  focusing: false,
56
59
  shows: false,
60
+ currentBreakpoint: current,
57
61
  progressType: ((_a = designConfig == null ? void 0 : designConfig.state) == null ? void 0 : _a.progressType) || "circle",
58
62
  progressWidth: (_b = designConfig == null ? void 0 : designConfig.state) == null ? void 0 : _b.progressWidth,
59
63
  progressStrokeWidth: ((_c = designConfig == null ? void 0 : designConfig.state) == null ? void 0 : _c.progressStrokeWidth) || 6,
@@ -84,7 +88,7 @@ const renderless = (props, { reactive, onMounted, onUnmounted, watch, inject, co
84
88
  pause: pause({ vm, props }),
85
89
  handleLoadedmetadata: handleLoadedmetadata({ vm }),
86
90
  handleTimeupdate: handleTimeupdate(),
87
- destroyed: destroyed({ api: api2, props, vm }),
91
+ destroyed: destroyed({ props, vm }),
88
92
  showOperatePanel: showOperatePanel({ state }),
89
93
  getFileType: getFileType(),
90
94
  getFileIcon: getFileIcon({ constants }),
@@ -95,7 +99,8 @@ const renderless = (props, { reactive, onMounted, onUnmounted, watch, inject, co
95
99
  handleTriggerClick: handleTriggerClick({ state, props }),
96
100
  chooseFile: chooseFile({ state, constants }),
97
101
  calcVisible: calcVisible({ props, constants, emit }),
98
- getNotSuccessFiles: getNotSuccessFiles({ props, constants })
102
+ getNotSuccessFiles: getNotSuccessFiles({ props, constants }),
103
+ formatFileSize
99
104
  });
100
105
  props.listType === constants.LIST_TYPE.DRAG_SINGLE && watch(
101
106
  () => props.files && props.files[0],
package/user/index.js CHANGED
@@ -17,8 +17,9 @@ const request = {
17
17
  this.group[valueField] = [];
18
18
  }
19
19
  queryIds.forEach((id) => {
20
- if (!~this.group[valueField].indexOf(id))
21
- !this.group[valueField].push(id);
20
+ if (!~this.group[valueField].indexOf(id)) {
21
+ this.group[valueField].push(id);
22
+ }
22
23
  });
23
24
  },
24
25
  removeRequest(item) {
@@ -78,22 +79,10 @@ const request = {
78
79
  const me = this;
79
80
  const reqParamsSeq = me.getParams();
80
81
  let reqLen = reqParamsSeq.length;
81
- reqParamsSeq.map((params) => {
82
- api.fetchW3Accounts(params).then((data) => {
83
- me.setCache(data);
84
- me.requests.slice().forEach((reqItem) => {
85
- const { param, cb } = reqItem;
86
- const { queryIds, valueField } = param;
87
- queryIds.forEach((id) => {
88
- const user = me.cache[valueField] && me.cache[valueField][id];
89
- user && !reqItem.result.includes(user) && reqItem.result.push(user);
90
- });
91
- if (reqItem.result.length === queryIds.length) {
92
- me.removeRequest(reqItem);
93
- cb(reqItem.result);
94
- }
95
- });
96
- }).finally(() => {
82
+ let final = true;
83
+ const onFinally = () => {
84
+ if (final) {
85
+ final = false;
97
86
  reqLen--;
98
87
  const errors = [];
99
88
  if (!reqLen) {
@@ -109,7 +98,24 @@ const request = {
109
98
  errors.length && log.logger.warn(`user [${errors.join(",")}] not found`);
110
99
  this.clearRequest();
111
100
  }
112
- });
101
+ }
102
+ };
103
+ reqParamsSeq.forEach((params) => {
104
+ api.fetchW3Accounts(params).then((data) => {
105
+ me.setCache(data);
106
+ me.requests.slice().forEach((reqItem) => {
107
+ const { param, cb } = reqItem;
108
+ const { queryIds, valueField } = param;
109
+ queryIds.forEach((id) => {
110
+ const user = me.cache[valueField] && me.cache[valueField][id];
111
+ user && !reqItem.result.includes(user) && reqItem.result.push(user);
112
+ });
113
+ if (reqItem.result.length === queryIds.length) {
114
+ me.removeRequest(reqItem);
115
+ cb(reqItem.result);
116
+ }
117
+ });
118
+ }).then(onFinally).catch(onFinally);
113
119
  });
114
120
  },
115
121
  setBatch(batch) {
@@ -185,7 +191,7 @@ const updateOptions = ({ props, state, nextTick }) => (usersList) => {
185
191
  return nextTick();
186
192
  };
187
193
  const autoSelect = ({ props, state, nextTick }) => (usersList) => {
188
- if (!usersList.length) {
194
+ if (!usersList.length || props.multiple && props.multipleLimit && state.user.length >= props.multipleLimit) {
189
195
  return nextTick();
190
196
  }
191
197
  const values = props.multiple ? [].concat(state.user) : [];
@@ -209,7 +215,7 @@ const autoSelect = ({ props, state, nextTick }) => (usersList) => {
209
215
  return nextTick();
210
216
  };
211
217
  const searchMethod = ({ api, props, state, emit }) => debounce(props.delay, (query) => {
212
- if (query && query.length >= props.suggestLength) {
218
+ if (query && query.trim().length >= props.suggestLength) {
213
219
  state.loading = true;
214
220
  state.visible = true;
215
221
  const { multiple } = props;
@@ -247,13 +253,16 @@ const setSelected = ({ api, props, state }) => (value) => {
247
253
  });
248
254
  props.cache && api.cacheUser(state.selected);
249
255
  };
250
- const userChange = ({ api, emit, props, state }) => (value) => {
256
+ const userChange = ({ api, emit, props, state, dispatch, constants }) => (value, emitChangeFlag = true) => {
251
257
  const { multiple } = props;
252
258
  let newVal = multiple && Array.isArray(value) ? value.join(props.valueSplit) : (value || "") + "";
253
259
  api.setSelected(newVal);
254
260
  if (typeof state.lastValue === "string" && state.lastValue !== null && state.lastValue.toLocaleLowerCase() !== newVal.toLocaleLowerCase()) {
255
261
  emit("update:modelValue", newVal);
256
- emit("change", newVal, state.selected);
262
+ if (emitChangeFlag) {
263
+ emit("change", newVal, state.selected);
264
+ dispatch(constants.COMPONENT_NAME.FormItem, constants.EVENT_NAME.FormChange, newVal);
265
+ }
257
266
  }
258
267
  state.lastValue = newVal;
259
268
  };
@@ -402,7 +411,7 @@ const visibleChange = ({ state, emit }) => (show) => {
402
411
  emit("visible-change", show);
403
412
  };
404
413
  const initUser = ({ api, props, state }) => (value) => {
405
- if (value === state.lastValue) {
414
+ if (value === state.lastValue && value !== null) {
406
415
  return;
407
416
  }
408
417
  state.user = !props.multiple ? "" : [];
@@ -412,7 +421,7 @@ const initUser = ({ api, props, state }) => (value) => {
412
421
  if (!value) {
413
422
  state.options = [];
414
423
  state.selected = [];
415
- api.userChange(value);
424
+ api.userChange(value, props.changeCompat);
416
425
  return;
417
426
  }
418
427
  value && api.getUsers(value).then((info) => {
@@ -425,7 +434,7 @@ const initUser = ({ api, props, state }) => (value) => {
425
434
  });
426
435
  state.options = info;
427
436
  state.user = props.multiple ? list : list[0];
428
- api.userChange(value);
437
+ api.userChange(value, props.changeCompat);
429
438
  });
430
439
  };
431
440
  const handleBlur = ({ constants, dispatch, state, emit }) => (e) => {