ai.touchui-vue 1.30.2 → 1.30.4

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 (786) hide show
  1. package/README.md +21 -21
  2. package/lib/affix.js +2 -2
  3. package/lib/ai.touchui-vue.common.js +2393 -2382
  4. package/lib/align.js +2 -2
  5. package/lib/animation.js +2 -2
  6. package/lib/article.js +2 -2
  7. package/lib/box.js +2 -2
  8. package/lib/button.js +2 -2
  9. package/lib/calendar.js +2 -2
  10. package/lib/card-item.js +2 -2
  11. package/lib/card.js +2 -2
  12. package/lib/cascader.js +2 -2
  13. package/lib/center-scroll.js +2 -2
  14. package/lib/chat.js +7 -7
  15. package/lib/checkbox.js +2 -2
  16. package/lib/checkboxes.js +2 -2
  17. package/lib/collapse.js +8 -7
  18. package/lib/color.js +7 -7
  19. package/lib/countdown.js +2 -2
  20. package/lib/date-picker.js +30 -12
  21. package/lib/date-range.js +13 -14
  22. package/lib/dialog.js +2 -2
  23. package/lib/dis.js +2 -2
  24. package/lib/ellipsis.js +2 -2
  25. package/lib/emote.js +2 -2
  26. package/lib/export.js +5 -5
  27. package/lib/filter.js +2 -2
  28. package/lib/fix.js +2 -2
  29. package/lib/float.js +2 -2
  30. package/lib/flow.js +4 -4
  31. package/lib/form.js +2 -2
  32. package/lib/grid.js +2 -2
  33. package/lib/guider.js +2 -2
  34. package/lib/header.js +2 -2
  35. package/lib/hide.js +2 -2
  36. package/lib/icon.js +2 -2
  37. package/lib/import.js +2 -2
  38. package/lib/index.js +1 -1
  39. package/lib/index.js.LICENSE.txt +4 -0
  40. package/lib/input.js +2 -2
  41. package/lib/ip.js +2 -2
  42. package/lib/line.js +2 -2
  43. package/lib/loading.js +2 -2
  44. package/lib/locale/format.js +10 -10
  45. package/lib/longtap.js +2 -2
  46. package/lib/menu-icon.js +548 -547
  47. package/lib/message.js +2 -2
  48. package/lib/mixins/migrating.js +20 -20
  49. package/lib/mixins/transition.js +14 -14
  50. package/lib/msg.js +2 -2
  51. package/lib/org.js +10 -9
  52. package/lib/padding.js +2 -2
  53. package/lib/page.js +8 -7
  54. package/lib/param.js +2 -2
  55. package/lib/pic.js +2 -2
  56. package/lib/popup.js +2 -2
  57. package/lib/progress.js +2 -2
  58. package/lib/range.js +5 -5
  59. package/lib/rate.js +2 -2
  60. package/lib/reverser.js +2 -2
  61. package/lib/scroll.js +2 -2
  62. package/lib/segment.js +2 -2
  63. package/lib/select.js +2 -2
  64. package/lib/size.js +2 -2
  65. package/lib/skeleton.js +2 -2
  66. package/lib/slide.js +2 -2
  67. package/lib/space.js +2 -2
  68. package/lib/static/{net-mix.293a4b6.svg → net-mix.dc6e414.svg} +7 -7
  69. package/lib/step.js +2 -2
  70. package/lib/submit.js +2 -2
  71. package/lib/switch.js +2 -2
  72. package/lib/tab.js +2 -2
  73. package/lib/table.js +736 -742
  74. package/lib/tag.js +2 -2
  75. package/lib/timeline.js +2 -2
  76. package/lib/tip.js +2 -2
  77. package/lib/tooltip.js +2 -2
  78. package/lib/transfer.js +2 -2
  79. package/lib/tree.js +2 -2
  80. package/lib/upload.js +2 -2
  81. package/lib/utils/clickoutside.js +11 -11
  82. package/lib/utils/dom.js +13 -13
  83. package/lib/utils/filetransfer.js +4 -4
  84. package/lib/utils/jsencrypt/JSEncrypt.js +77 -77
  85. package/lib/utils/jsencrypt/JSEncryptRSAKey.js +115 -115
  86. package/lib/utils/jsencrypt/jselib/asn1js/asn1.js +4 -4
  87. package/lib/utils/jsencrypt/jselib/jsrsasign/asn1-1.0.js +734 -734
  88. package/lib/utils/jsencrypt/jselib/jsrsasign/yahoo.js +22 -22
  89. package/lib/utils/jsencrypt.js +260 -260
  90. package/lib/utils/md5.js +3 -3
  91. package/lib/utils/mime.js +2 -2
  92. package/lib/utils/ratio.js +54 -53
  93. package/lib/utils/sign.js +12 -12
  94. package/lib/utils/util.js +3 -3
  95. package/lib/utils/validate.js +11 -11
  96. package/package.json +160 -159
  97. package/packages/affix/index.js +8 -8
  98. package/packages/affix/src/affix.vue +139 -139
  99. package/packages/align/index.js +8 -8
  100. package/packages/align/src/directive.js +29 -29
  101. package/packages/animation/index.js +8 -8
  102. package/packages/animation/src/animation.vue +68 -68
  103. package/packages/article/index.js +8 -8
  104. package/packages/article/src/article.vue +23 -23
  105. package/packages/box/index.js +8 -8
  106. package/packages/box/src/box.vue +170 -170
  107. package/packages/button/index.js +8 -8
  108. package/packages/button/src/button.vue +162 -162
  109. package/packages/calendar/index.js +8 -8
  110. package/packages/calendar/src/calendar.vue +1142 -1142
  111. package/packages/card/index.js +10 -10
  112. package/packages/card/src/card-item.vue +92 -92
  113. package/packages/card/src/card.vue +175 -175
  114. package/packages/card-item/index.js +8 -8
  115. package/packages/cascader/index.js +8 -8
  116. package/packages/cascader/src/cascader.vue +814 -814
  117. package/packages/center-scroll/index.js +8 -8
  118. package/packages/center-scroll/src/center-scroll.vue +147 -147
  119. package/packages/chat/index.js +12 -12
  120. package/packages/chat/src/chat.vue +116 -116
  121. package/packages/checkbox/index.js +8 -8
  122. package/packages/checkbox/src/checkbox.vue +262 -262
  123. package/packages/checkboxes/index.js +8 -8
  124. package/packages/checkboxes/src/checkboxes.vue +97 -97
  125. package/packages/collapse/index.js +10 -10
  126. package/packages/collapse/src/collapse-item.vue +188 -188
  127. package/packages/collapse/src/collapse.vue +100 -100
  128. package/packages/color/index.js +8 -8
  129. package/packages/color/src/directive.js +42 -42
  130. package/packages/countdown/index.js +8 -8
  131. package/packages/countdown/src/countdown.vue +128 -128
  132. package/packages/date-picker/index.js +8 -8
  133. package/packages/date-picker/src/date-picker.vue +436 -432
  134. package/packages/date-picker/src/picker.vue +342 -342
  135. package/packages/date-range/index.js +8 -8
  136. package/packages/date-range/src/date-range.vue +384 -384
  137. package/packages/dialog/index.js +8 -8
  138. package/packages/dialog/src/dialog.vue +287 -287
  139. package/packages/dis/index.js +8 -8
  140. package/packages/dis/src/directive.js +42 -42
  141. package/packages/ellipsis/index.js +8 -8
  142. package/packages/ellipsis/src/ellipsis.vue +306 -306
  143. package/packages/emote/index.js +8 -8
  144. package/packages/emote/src/emote.vue +38 -38
  145. package/packages/export/index.js +8 -8
  146. package/packages/export/src/ajax.js +73 -73
  147. package/packages/export/src/export.vue +289 -289
  148. package/packages/filter/index.js +8 -8
  149. package/packages/filter/src/filter.vue +245 -245
  150. package/packages/fix/index.js +8 -8
  151. package/packages/fix/src/fix.vue +221 -221
  152. package/packages/float/index.js +16 -16
  153. package/packages/float/src/directive.js +20 -20
  154. package/packages/float/src/main.vue +642 -642
  155. package/packages/float/src/trigger.vue +31 -31
  156. package/packages/flow/index.js +8 -8
  157. package/packages/flow/src/flow.vue +234 -234
  158. package/packages/flow/src/flowItem.vue +61 -61
  159. package/packages/flow/src/flowLine.vue +168 -168
  160. package/packages/form/index.js +10 -10
  161. package/packages/form/src/form-item.vue +96 -96
  162. package/packages/form/src/form.vue +184 -184
  163. package/packages/grid/index.js +10 -10
  164. package/packages/grid/src/grid-item.vue +65 -65
  165. package/packages/grid/src/grid.vue +190 -190
  166. package/packages/grid-item/index.js +8 -8
  167. package/packages/guider/index.js +8 -8
  168. package/packages/guider/src/guider.vue +168 -168
  169. package/packages/header/index.js +8 -8
  170. package/packages/header/src/header.vue +111 -111
  171. package/packages/hide/index.js +8 -8
  172. package/packages/hide/src/directive.js +57 -57
  173. package/packages/icon/index.js +8 -8
  174. package/packages/icon/src/icon.vue +79 -79
  175. package/packages/import/index.js +8 -8
  176. package/packages/import/src/import.vue +279 -279
  177. package/packages/input/index.js +8 -8
  178. package/packages/input/src/calcTextareaHeight.js +104 -104
  179. package/packages/input/src/input.vue +653 -653
  180. package/packages/ip/index.js +8 -8
  181. package/packages/ip/src/ip.vue +143 -143
  182. package/packages/line/index.js +8 -8
  183. package/packages/line/src/line.vue +29 -29
  184. package/packages/loading/index.js +8 -8
  185. package/packages/loading/src/loading.js +58 -58
  186. package/packages/longtap/index.js +8 -8
  187. package/packages/longtap/src/longtap.js +95 -95
  188. package/packages/menu-icon/index.js +8 -8
  189. package/packages/menu-icon/src/menu-icon.vue +206 -206
  190. package/packages/message/index.js +8 -8
  191. package/packages/message/src/message.vue +9 -9
  192. package/packages/msg/index.js +8 -8
  193. package/packages/msg/src/msg.vue +227 -227
  194. package/packages/org/index.js +8 -8
  195. package/packages/org/src/org.vue +113 -113
  196. package/packages/org/src/orgItem.vue +63 -63
  197. package/packages/padding/index.js +8 -8
  198. package/packages/padding/src/padding.vue +105 -105
  199. package/packages/page/index.js +8 -8
  200. package/packages/page/src/page.vue +297 -297
  201. package/packages/param/index.js +8 -8
  202. package/packages/param/src/param.vue +226 -226
  203. package/packages/pic/index.js +8 -8
  204. package/packages/pic/src/pic-viewer.vue +331 -331
  205. package/packages/pic/src/pic.vue +144 -144
  206. package/packages/popup/index.js +12 -12
  207. package/packages/popup/src/popup-group.vue +47 -47
  208. package/packages/popup/src/popup-item.vue +163 -163
  209. package/packages/popup/src/popup.vue +350 -350
  210. package/packages/progress/index.js +8 -8
  211. package/packages/progress/src/progress.vue +306 -306
  212. package/packages/range/index.js +8 -8
  213. package/packages/range/src/range.vue +612 -612
  214. package/packages/rate/index.js +8 -8
  215. package/packages/rate/src/rate.vue +129 -129
  216. package/packages/reverser/index.js +8 -8
  217. package/packages/reverser/src/reverser.vue +49 -49
  218. package/packages/scroll/index.js +12 -12
  219. package/packages/scroll/src/scroll-point.vue +24 -24
  220. package/packages/scroll/src/scroll-sticky.vue +60 -60
  221. package/packages/scroll/src/scroll.vue +381 -381
  222. package/packages/segment/index.js +8 -8
  223. package/packages/segment/src/segment.vue +618 -618
  224. package/packages/select/index.js +8 -8
  225. package/packages/select/src/select.vue +1445 -1445
  226. package/packages/size/index.js +8 -8
  227. package/packages/size/src/directive.js +33 -33
  228. package/packages/skeleton/index.js +8 -8
  229. package/packages/skeleton/src/skeleton.vue +179 -179
  230. package/packages/slide/index.js +8 -8
  231. package/packages/slide/src/slide.vue +147 -147
  232. package/packages/space/index.js +8 -8
  233. package/packages/space/src/space.vue +53 -53
  234. package/packages/step/index.js +8 -8
  235. package/packages/step/src/step.vue +122 -122
  236. package/packages/submit/index.js +8 -8
  237. package/packages/submit/src/submit.vue +103 -103
  238. package/packages/switch/index.js +9 -9
  239. package/packages/switch/src/component.vue +131 -131
  240. package/packages/tab/index.js +10 -10
  241. package/packages/tab/src/tab-item.vue +85 -85
  242. package/packages/tab/src/tab.vue +590 -590
  243. package/packages/table/index.js +8 -8
  244. package/packages/table/src/table-body.vue +301 -301
  245. package/packages/table/src/table-config.vue +139 -139
  246. package/packages/table/src/table-head.vue +239 -239
  247. package/packages/table/src/table.vue +1455 -1458
  248. package/packages/tag/index.js +8 -8
  249. package/packages/tag/src/tag.vue +129 -129
  250. package/packages/theme/package.json +33 -33
  251. package/packages/theme/src/global/mixin.less +416 -416
  252. package/packages/theme/src/global/reset.less +27 -27
  253. package/packages/theme/src/less/component/affix.less +8 -8
  254. package/packages/theme/src/less/component/article-dark.less +6 -6
  255. package/packages/theme/src/less/component/article.less +39 -39
  256. package/packages/theme/src/less/component/box-dark.less +85 -85
  257. package/packages/theme/src/less/component/box.less +272 -272
  258. package/packages/theme/src/less/component/calendar-dark.less +111 -111
  259. package/packages/theme/src/less/component/calendar.less +282 -282
  260. package/packages/theme/src/less/component/card-dark.less +17 -17
  261. package/packages/theme/src/less/component/card.less +89 -89
  262. package/packages/theme/src/less/component/chat-dark.less +47 -47
  263. package/packages/theme/src/less/component/chat.less +71 -71
  264. package/packages/theme/src/less/component/code-dark.less +41 -41
  265. package/packages/theme/src/less/component/code.less +33 -33
  266. package/packages/theme/src/less/component/cover.less +4 -4
  267. package/packages/theme/src/less/component/dialog-dark.less +54 -54
  268. package/packages/theme/src/less/component/dialog.less +49 -49
  269. package/packages/theme/src/less/component/filter-dark.less +31 -31
  270. package/packages/theme/src/less/component/filter.less +97 -97
  271. package/packages/theme/src/less/component/float-dark.less +26 -26
  272. package/packages/theme/src/less/component/float.less +61 -61
  273. package/packages/theme/src/less/component/form-dark.less +45 -45
  274. package/packages/theme/src/less/component/form.less +322 -322
  275. package/packages/theme/src/less/component/gantt-dark.less +44 -44
  276. package/packages/theme/src/less/component/gantt.less +52 -52
  277. package/packages/theme/src/less/component/guider-dark.less +6 -6
  278. package/packages/theme/src/less/component/guider.less +15 -15
  279. package/packages/theme/src/less/component/header-dark.less +41 -41
  280. package/packages/theme/src/less/component/header.less +121 -121
  281. package/packages/theme/src/less/component/keyboard-dark.less +15 -15
  282. package/packages/theme/src/less/component/keyboard.less +21 -21
  283. package/packages/theme/src/less/component/line-dark.less +20 -20
  284. package/packages/theme/src/less/component/line.less +21 -21
  285. package/packages/theme/src/less/component/msg-dark.less +42 -42
  286. package/packages/theme/src/less/component/msg.less +102 -102
  287. package/packages/theme/src/less/component/page-dark.less +26 -26
  288. package/packages/theme/src/less/component/page.less +26 -26
  289. package/packages/theme/src/less/component/param-dark.less +31 -31
  290. package/packages/theme/src/less/component/param.less +136 -136
  291. package/packages/theme/src/less/component/popup-dark.less +20 -20
  292. package/packages/theme/src/less/component/popup.less +85 -85
  293. package/packages/theme/src/less/component/print.less +121 -121
  294. package/packages/theme/src/less/component/scroll-dark.less +19 -19
  295. package/packages/theme/src/less/component/scroll.less +47 -47
  296. package/packages/theme/src/less/component/skeleton-dark.less +29 -29
  297. package/packages/theme/src/less/component/skeleton.less +78 -78
  298. package/packages/theme/src/less/component/slide.less +70 -70
  299. package/packages/theme/src/less/component/space.less +2 -2
  300. package/packages/theme/src/less/component/step-dark.less +165 -165
  301. package/packages/theme/src/less/component/step.less +147 -147
  302. package/packages/theme/src/less/component/submit.less +40 -40
  303. package/packages/theme/src/less/component/tab-dark.less +221 -221
  304. package/packages/theme/src/less/component/tab.less +459 -459
  305. package/packages/theme/src/less/component/table-dark.less +196 -196
  306. package/packages/theme/src/less/component/table.less +425 -425
  307. package/packages/theme/src/less/component/timeline-dark.less +13 -13
  308. package/packages/theme/src/less/component/timeline.less +114 -114
  309. package/packages/theme/src/less/component/tip-dark.less +76 -76
  310. package/packages/theme/src/less/component/tip.less +139 -139
  311. package/packages/theme/src/less/component/tooltip-dark.less +105 -105
  312. package/packages/theme/src/less/component/tooltip.less +159 -159
  313. package/packages/theme/src/less/component/tree-dark.less +56 -56
  314. package/packages/theme/src/less/component/tree.less +148 -148
  315. package/packages/theme/src/less/element/align.less +32 -32
  316. package/packages/theme/src/less/element/animation.less +5 -5
  317. package/packages/theme/src/less/element/button-dark.less +29 -29
  318. package/packages/theme/src/less/element/button.less +65 -65
  319. package/packages/theme/src/less/element/center-scroll-dark.less +3 -3
  320. package/packages/theme/src/less/element/center-scroll.less +6 -6
  321. package/packages/theme/src/less/element/checkbox-dark.less +68 -68
  322. package/packages/theme/src/less/element/checkbox.less +73 -73
  323. package/packages/theme/src/less/element/color-dark.less +15 -15
  324. package/packages/theme/src/less/element/color.less +33 -33
  325. package/packages/theme/src/less/element/dis.less +9 -9
  326. package/packages/theme/src/less/element/ellipsis.less +35 -35
  327. package/packages/theme/src/less/element/emote.less +5 -5
  328. package/packages/theme/src/less/element/font-dark.less +9 -9
  329. package/packages/theme/src/less/element/font.less +8 -8
  330. package/packages/theme/src/less/element/hide-dark.less +114 -114
  331. package/packages/theme/src/less/element/hide.less +114 -114
  332. package/packages/theme/src/less/element/icon.less +297 -297
  333. package/packages/theme/src/less/element/input-dark.less +205 -205
  334. package/packages/theme/src/less/element/input.less +405 -405
  335. package/packages/theme/src/less/element/menu-icon.less +1 -1
  336. package/packages/theme/src/less/element/pic.less +18 -18
  337. package/packages/theme/src/less/element/progress-dark.less +37 -37
  338. package/packages/theme/src/less/element/progress.less +82 -82
  339. package/packages/theme/src/less/element/radio-dark.less +18 -18
  340. package/packages/theme/src/less/element/radio.less +11 -11
  341. package/packages/theme/src/less/element/range-dark.less +24 -24
  342. package/packages/theme/src/less/element/range.less +56 -56
  343. package/packages/theme/src/less/element/rate.less +17 -17
  344. package/packages/theme/src/less/element/segment-dark.less +119 -119
  345. package/packages/theme/src/less/element/segment.less +197 -197
  346. package/packages/theme/src/less/element/select-dark.less +167 -167
  347. package/packages/theme/src/less/element/select.less +431 -431
  348. package/packages/theme/src/less/element/size.less +10 -10
  349. package/packages/theme/src/less/element/switch-dark.less +7 -7
  350. package/packages/theme/src/less/element/switch.less +37 -37
  351. package/packages/theme/src/less/element/tag-dark.less +115 -115
  352. package/packages/theme/src/less/element/tag.less +159 -159
  353. package/packages/theme/src/less/element/upload-dark.less +26 -26
  354. package/packages/theme/src/less/element/upload.less +64 -64
  355. package/packages/theme/src/less/layout/fix.less +2 -2
  356. package/packages/theme/src/less/layout/flow.less +47 -47
  357. package/packages/theme/src/less/layout/grid-dark.less +28 -28
  358. package/packages/theme/src/less/layout/grid.less +172 -172
  359. package/packages/theme/src/less/layout/org-dark.less +2 -2
  360. package/packages/theme/src/less/layout/org.less +72 -72
  361. package/packages/theme/src/less/layout/padding.less +1 -1
  362. package/packages/theme/src/less/layout/reverser.less +8 -8
  363. package/packages/theme/src/less/theme/B-Design.less +159 -159
  364. package/packages/theme/src/less/theme/aiplan.less +159 -159
  365. package/packages/theme/src/less/theme/aiplangd.less +159 -159
  366. package/packages/theme/src/less/theme/chbn.less +159 -159
  367. package/packages/theme/src/less/theme/default.less +160 -160
  368. package/packages/theme/src/less/theme/dt.less +159 -159
  369. package/packages/theme/src/less/theme/ecloud.less +159 -159
  370. package/packages/theme/src/less/theme/hongkong.less +159 -159
  371. package/packages/theme/src/less/theme/narrow.less +160 -160
  372. package/packages/theme/src/less/theme/sdpf.less +160 -160
  373. package/packages/theme/src/less/theme/upc.less +159 -159
  374. package/packages/theme/src/less/theme/website.less +159 -159
  375. package/packages/theme/src/less/theme/zj.less +159 -159
  376. package/packages/timeline/index.js +8 -8
  377. package/packages/timeline/src/timeline.vue +84 -84
  378. package/packages/tip/index.js +8 -8
  379. package/packages/tip/src/tip.vue +226 -226
  380. package/packages/tooltip/index.js +8 -8
  381. package/packages/tooltip/src/directive.js +180 -180
  382. package/packages/tooltip/src/tooltip.vue +467 -467
  383. package/packages/transfer/index.js +8 -8
  384. package/packages/transfer/src/transfer.vue +293 -293
  385. package/packages/tree/index.js +8 -8
  386. package/packages/tree/src/tree.vue +518 -518
  387. package/packages/tree/src/treeItem.vue +443 -443
  388. package/packages/upload/index.js +8 -8
  389. package/packages/upload/src/upload.vue +860 -860
  390. package/src/index.js +207 -207
  391. package/src/locale/format.js +46 -46
  392. package/src/locale/index.js +48 -48
  393. package/src/locale/lang/en.js +207 -207
  394. package/src/locale/lang/zh-CN.js +207 -207
  395. package/src/mixins/blur.js +9 -9
  396. package/src/mixins/emitter.js +33 -33
  397. package/src/mixins/focus.js +9 -9
  398. package/src/mixins/locale.js +9 -9
  399. package/src/mixins/migrating.js +54 -54
  400. package/src/mixins/tip.js +10 -10
  401. package/src/mixins/transition.js +130 -130
  402. package/src/msg/index.js +107 -107
  403. package/src/svg/menu/main/abnormal-mix.svg +5 -5
  404. package/src/svg/menu/main/abnormal.svg +5 -5
  405. package/src/svg/menu/main/accountManager-mix.svg +5 -5
  406. package/src/svg/menu/main/accountManager.svg +5 -5
  407. package/src/svg/menu/main/agreement-mix.svg +7 -7
  408. package/src/svg/menu/main/agreement.svg +7 -7
  409. package/src/svg/menu/main/ai-mix.svg +5 -5
  410. package/src/svg/menu/main/archives-mix.svg +6 -6
  411. package/src/svg/menu/main/arrearsReport-mix.svg +17 -17
  412. package/src/svg/menu/main/arrearsReport.svg +17 -17
  413. package/src/svg/menu/main/bill-mix.svg +13 -13
  414. package/src/svg/menu/main/bill.svg +13 -13
  415. package/src/svg/menu/main/box-mix.svg +5 -5
  416. package/src/svg/menu/main/broadband-mix.svg +4 -4
  417. package/src/svg/menu/main/broadband.svg +4 -4
  418. package/src/svg/menu/main/card-mix.svg +5 -5
  419. package/src/svg/menu/main/card.svg +5 -5
  420. package/src/svg/menu/main/cash-mix.svg +5 -5
  421. package/src/svg/menu/main/cash.svg +5 -5
  422. package/src/svg/menu/main/cloud-mix.svg +4 -4
  423. package/src/svg/menu/main/cloud.svg +4 -4
  424. package/src/svg/menu/main/clue-mix.svg +10 -10
  425. package/src/svg/menu/main/clue.svg +10 -10
  426. package/src/svg/menu/main/commonUse-mix.svg +4 -4
  427. package/src/svg/menu/main/commonUse.svg +4 -4
  428. package/src/svg/menu/main/construction-mix.svg +7 -7
  429. package/src/svg/menu/main/construction.svg +7 -7
  430. package/src/svg/menu/main/contract-mix.svg +8 -8
  431. package/src/svg/menu/main/contract.svg +8 -8
  432. package/src/svg/menu/main/credit-mix.svg +5 -5
  433. package/src/svg/menu/main/credit.svg +5 -5
  434. package/src/svg/menu/main/data-mix.svg +5 -5
  435. package/src/svg/menu/main/data.svg +5 -5
  436. package/src/svg/menu/main/date-mix.svg +7 -7
  437. package/src/svg/menu/main/deposit-mix.svg +4 -4
  438. package/src/svg/menu/main/device-mix.svg +4 -4
  439. package/src/svg/menu/main/device.svg +4 -4
  440. package/src/svg/menu/main/discrepancy-mix.svg +5 -5
  441. package/src/svg/menu/main/door-mix.svg +6 -6
  442. package/src/svg/menu/main/fault-mix.svg +12 -12
  443. package/src/svg/menu/main/fault.svg +16 -16
  444. package/src/svg/menu/main/finance-mix.svg +11 -11
  445. package/src/svg/menu/main/finance.svg +13 -13
  446. package/src/svg/menu/main/flow-mix.svg +4 -4
  447. package/src/svg/menu/main/flow.svg +4 -4
  448. package/src/svg/menu/main/folder-mix.svg +4 -4
  449. package/src/svg/menu/main/folder.svg +4 -4
  450. package/src/svg/menu/main/friendly-mix.svg +5 -5
  451. package/src/svg/menu/main/fusion-mix.svg +5 -5
  452. package/src/svg/menu/main/fusion.svg +5 -5
  453. package/src/svg/menu/main/gift-mix.svg +8 -8
  454. package/src/svg/menu/main/gift.svg +8 -8
  455. package/src/svg/menu/main/gps-mix.svg +6 -6
  456. package/src/svg/menu/main/gps.svg +6 -6
  457. package/src/svg/menu/main/grid-mix.svg +7 -7
  458. package/src/svg/menu/main/grid.svg +7 -7
  459. package/src/svg/menu/main/group-mix.svg +4 -4
  460. package/src/svg/menu/main/group.svg +4 -4
  461. package/src/svg/menu/main/home-mix.svg +5 -5
  462. package/src/svg/menu/main/home.svg +8 -8
  463. package/src/svg/menu/main/ict-mix.svg +4 -4
  464. package/src/svg/menu/main/industry-mix.svg +5 -5
  465. package/src/svg/menu/main/industry.svg +5 -5
  466. package/src/svg/menu/main/info-mix.svg +9 -9
  467. package/src/svg/menu/main/info.svg +9 -9
  468. package/src/svg/menu/main/integral-mix.svg +5 -5
  469. package/src/svg/menu/main/integral.svg +5 -5
  470. package/src/svg/menu/main/internet-mix.svg +5 -5
  471. package/src/svg/menu/main/internet.svg +5 -5
  472. package/src/svg/menu/main/inventory-mix.svg +5 -5
  473. package/src/svg/menu/main/invoice-mix.svg +6 -6
  474. package/src/svg/menu/main/invoice.svg +14 -14
  475. package/src/svg/menu/main/iot-mix.svg +5 -5
  476. package/src/svg/menu/main/iot.svg +5 -5
  477. package/src/svg/menu/main/label-mix.svg +4 -4
  478. package/src/svg/menu/main/label.svg +4 -4
  479. package/src/svg/menu/main/love-mix.svg +6 -6
  480. package/src/svg/menu/main/love.svg +13 -13
  481. package/src/svg/menu/main/m1-mix.svg +4 -4
  482. package/src/svg/menu/main/m1.svg +4 -4
  483. package/src/svg/menu/main/m2-mix.svg +12 -12
  484. package/src/svg/menu/main/m2.svg +11 -11
  485. package/src/svg/menu/main/m3-mix.svg +6 -6
  486. package/src/svg/menu/main/m3.svg +7 -7
  487. package/src/svg/menu/main/m4-mix.svg +5 -5
  488. package/src/svg/menu/main/m4.svg +7 -7
  489. package/src/svg/menu/main/m5-mix.svg +8 -8
  490. package/src/svg/menu/main/m5.svg +10 -10
  491. package/src/svg/menu/main/mail-mix.svg +5 -5
  492. package/src/svg/menu/main/manual-mix.svg +11 -11
  493. package/src/svg/menu/main/manual.svg +11 -11
  494. package/src/svg/menu/main/market-mix.svg +4 -4
  495. package/src/svg/menu/main/market.svg +4 -4
  496. package/src/svg/menu/main/member-mix.svg +6 -6
  497. package/src/svg/menu/main/member.svg +6 -6
  498. package/src/svg/menu/main/menu-mix.svg +4 -4
  499. package/src/svg/menu/main/menu.svg +4 -4
  500. package/src/svg/menu/main/message-mix.svg +11 -11
  501. package/src/svg/menu/main/message.svg +11 -11
  502. package/src/svg/menu/main/namelist-mix.svg +4 -4
  503. package/src/svg/menu/main/namelist.svg +4 -4
  504. package/src/svg/menu/main/net-mix.svg +7 -7
  505. package/src/svg/menu/main/niche-mix.svg +12 -12
  506. package/src/svg/menu/main/niche.svg +12 -12
  507. package/src/svg/menu/main/notice-mix.svg +4 -4
  508. package/src/svg/menu/main/notice.svg +4 -4
  509. package/src/svg/menu/main/number-mix.svg +6 -6
  510. package/src/svg/menu/main/operations-mix.svg +4 -4
  511. package/src/svg/menu/main/operations.svg +4 -4
  512. package/src/svg/menu/main/order-mix.svg +8 -8
  513. package/src/svg/menu/main/order.svg +8 -8
  514. package/src/svg/menu/main/person-mix.svg +6 -6
  515. package/src/svg/menu/main/person.svg +6 -6
  516. package/src/svg/menu/main/phone-mix.svg +4 -4
  517. package/src/svg/menu/main/phone.svg +4 -4
  518. package/src/svg/menu/main/phoneBill-mix.svg +6 -6
  519. package/src/svg/menu/main/phoneBill.svg +6 -6
  520. package/src/svg/menu/main/preferential-mix.svg +5 -5
  521. package/src/svg/menu/main/preferential.svg +5 -5
  522. package/src/svg/menu/main/print-mix.svg +5 -5
  523. package/src/svg/menu/main/problem-mix.svg +4 -4
  524. package/src/svg/menu/main/problem.svg +4 -4
  525. package/src/svg/menu/main/process-mix.svg +4 -4
  526. package/src/svg/menu/main/process.svg +4 -4
  527. package/src/svg/menu/main/product-mix.svg +5 -5
  528. package/src/svg/menu/main/product.svg +6 -6
  529. package/src/svg/menu/main/qrCode-mix.svg +8 -8
  530. package/src/svg/menu/main/qrCode.svg +8 -8
  531. package/src/svg/menu/main/refuelingBag-mix-mix.svg +4 -4
  532. package/src/svg/menu/main/refuelingBag-mix.svg +4 -4
  533. package/src/svg/menu/main/reportForm-mix.svg +8 -8
  534. package/src/svg/menu/main/reportForm.svg +8 -8
  535. package/src/svg/menu/main/risk-mix.svg +16 -16
  536. package/src/svg/menu/main/risk.svg +17 -17
  537. package/src/svg/menu/main/robot-mix.svg +9 -9
  538. package/src/svg/menu/main/robot.svg +9 -9
  539. package/src/svg/menu/main/satisfaction-mix.svg +4 -4
  540. package/src/svg/menu/main/satisfaction.svg +4 -4
  541. package/src/svg/menu/main/scratchCard-mix.svg +4 -4
  542. package/src/svg/menu/main/sim-mix.svg +4 -4
  543. package/src/svg/menu/main/sim.svg +4 -4
  544. package/src/svg/menu/main/staging-mix.svg +4 -4
  545. package/src/svg/menu/main/staging.svg +4 -4
  546. package/src/svg/menu/main/survey-mix.svg +5 -5
  547. package/src/svg/menu/main/survey.svg +5 -5
  548. package/src/svg/menu/main/tasks-mix.svg +8 -8
  549. package/src/svg/menu/main/tasks.svg +8 -8
  550. package/src/svg/menu/main/telephone-mix.svg +4 -4
  551. package/src/svg/menu/main/topUp-mix.svg +5 -5
  552. package/src/svg/menu/main/trajectory-mix.svg +11 -11
  553. package/src/svg/menu/main/trajectory.svg +23 -23
  554. package/src/svg/menu/main/transmit-mix.svg +5 -5
  555. package/src/svg/menu/main/tv-mix.svg +6 -6
  556. package/src/svg/menu/main/unlock-mix.svg +4 -4
  557. package/src/svg/menu/main/unlock.svg +4 -4
  558. package/src/svg/menu/main/view-mix.svg +5 -5
  559. package/src/svg/menu/main/view.svg +5 -5
  560. package/src/svg/menu/main/visits-mix.svg +19 -19
  561. package/src/svg/menu/main/visits.svg +19 -19
  562. package/src/svg/menu/main/voice-mix.svg +4 -4
  563. package/src/svg/menu/main/voice.svg +4 -4
  564. package/src/svg/menu/main/wiki-mix.svg +4 -4
  565. package/src/svg/menu/main/wiki.svg +4 -4
  566. package/src/svg/menu/main/workOrder-mix.svg +6 -6
  567. package/src/svg/menu/main/workOrder.svg +14 -14
  568. package/src/svg/menu/patch/Mo-space.svg +2 -2
  569. package/src/svg/menu/patch/Mo.svg +3 -3
  570. package/src/svg/menu/patch/add-space.svg +3 -3
  571. package/src/svg/menu/patch/add.svg +3 -3
  572. package/src/svg/menu/patch/address-space.svg +3 -3
  573. package/src/svg/menu/patch/address.svg +3 -3
  574. package/src/svg/menu/patch/approve-space.svg +3 -3
  575. package/src/svg/menu/patch/approve.svg +4 -4
  576. package/src/svg/menu/patch/avoid-space.svg +3 -3
  577. package/src/svg/menu/patch/avoid.svg +3 -3
  578. package/src/svg/menu/patch/batch-space.svg +3 -3
  579. package/src/svg/menu/patch/batch.svg +5 -5
  580. package/src/svg/menu/patch/broadband-space.svg +3 -3
  581. package/src/svg/menu/patch/broadband.svg +4 -4
  582. package/src/svg/menu/patch/cancellation-space.svg +3 -3
  583. package/src/svg/menu/patch/cancellation.svg +3 -3
  584. package/src/svg/menu/patch/center-space.svg +3 -3
  585. package/src/svg/menu/patch/center.svg +5 -5
  586. package/src/svg/menu/patch/change-space.svg +3 -3
  587. package/src/svg/menu/patch/change.svg +4 -4
  588. package/src/svg/menu/patch/click-space.svg +3 -3
  589. package/src/svg/menu/patch/click.svg +4 -4
  590. package/src/svg/menu/patch/close-1-space.svg +3 -3
  591. package/src/svg/menu/patch/close-1.svg +3 -3
  592. package/src/svg/menu/patch/close-space.svg +2 -2
  593. package/src/svg/menu/patch/close.svg +3 -3
  594. package/src/svg/menu/patch/collect-space.svg +3 -3
  595. package/src/svg/menu/patch/collect.svg +3 -3
  596. package/src/svg/menu/patch/comment-space.svg +3 -3
  597. package/src/svg/menu/patch/comment.svg +3 -3
  598. package/src/svg/menu/patch/confirm-space.svg +3 -3
  599. package/src/svg/menu/patch/confirm.svg +3 -3
  600. package/src/svg/menu/patch/contract-space.svg +3 -3
  601. package/src/svg/menu/patch/contract.svg +3 -3
  602. package/src/svg/menu/patch/credit-space.svg +3 -3
  603. package/src/svg/menu/patch/credit.svg +5 -5
  604. package/src/svg/menu/patch/dataMonitoring-space.svg +3 -3
  605. package/src/svg/menu/patch/dataMonitoring.svg +3 -3
  606. package/src/svg/menu/patch/dedicatedCircuit-space.svg +3 -3
  607. package/src/svg/menu/patch/dedicatedCircuit.svg +3 -3
  608. package/src/svg/menu/patch/detail-space.svg +3 -3
  609. package/src/svg/menu/patch/detail.svg +3 -3
  610. package/src/svg/menu/patch/disassemb-space.svg +3 -3
  611. package/src/svg/menu/patch/disassemb.svg +3 -3
  612. package/src/svg/menu/patch/earnestMoney-space.svg +3 -3
  613. package/src/svg/menu/patch/earnestMoney.svg +3 -3
  614. package/src/svg/menu/patch/empower-space.svg +3 -3
  615. package/src/svg/menu/patch/empower.svg +3 -3
  616. package/src/svg/menu/patch/entrust-space.svg +3 -3
  617. package/src/svg/menu/patch/entrust.svg +3 -3
  618. package/src/svg/menu/patch/expedite-space.svg +4 -4
  619. package/src/svg/menu/patch/expedite.svg +4 -4
  620. package/src/svg/menu/patch/flow-space.svg +3 -3
  621. package/src/svg/menu/patch/flow.svg +3 -3
  622. package/src/svg/menu/patch/folder-space.svg +3 -3
  623. package/src/svg/menu/patch/folder.svg +3 -3
  624. package/src/svg/menu/patch/forbidden-space.svg +3 -3
  625. package/src/svg/menu/patch/forbidden.svg +3 -3
  626. package/src/svg/menu/patch/forward-space.svg +3 -3
  627. package/src/svg/menu/patch/forward.svg +3 -3
  628. package/src/svg/menu/patch/fusion-space.svg +3 -3
  629. package/src/svg/menu/patch/fusion.svg +6 -6
  630. package/src/svg/menu/patch/history-space.svg +3 -3
  631. package/src/svg/menu/patch/history.svg +3 -3
  632. package/src/svg/menu/patch/information-space.svg +3 -3
  633. package/src/svg/menu/patch/information.svg +3 -3
  634. package/src/svg/menu/patch/insert-space.svg +3 -3
  635. package/src/svg/menu/patch/insert.svg +3 -3
  636. package/src/svg/menu/patch/letv-space.svg +3 -3
  637. package/src/svg/menu/patch/letv.svg +3 -3
  638. package/src/svg/menu/patch/link-space.svg +3 -3
  639. package/src/svg/menu/patch/link.svg +3 -3
  640. package/src/svg/menu/patch/location-space.svg +3 -3
  641. package/src/svg/menu/patch/location.svg +3 -3
  642. package/src/svg/menu/patch/message-space.svg +3 -3
  643. package/src/svg/menu/patch/message.svg +4 -4
  644. package/src/svg/menu/patch/minus-space.svg +3 -3
  645. package/src/svg/menu/patch/minus.svg +3 -3
  646. package/src/svg/menu/patch/mms-space.svg +3 -3
  647. package/src/svg/menu/patch/mms.svg +3 -3
  648. package/src/svg/menu/patch/monitor-space.svg +3 -3
  649. package/src/svg/menu/patch/monitor.svg +3 -3
  650. package/src/svg/menu/patch/move-space.svg +3 -3
  651. package/src/svg/menu/patch/move.svg +3 -3
  652. package/src/svg/menu/patch/negative-space.svg +2 -2
  653. package/src/svg/menu/patch/negative.svg +3 -3
  654. package/src/svg/menu/patch/net-space.svg +2 -2
  655. package/src/svg/menu/patch/net.svg +3 -3
  656. package/src/svg/menu/patch/news-space.svg +3 -3
  657. package/src/svg/menu/patch/news.svg +3 -3
  658. package/src/svg/menu/patch/notice-space.svg +4 -4
  659. package/src/svg/menu/patch/notice.svg +5 -5
  660. package/src/svg/menu/patch/officialBusiness-space.svg +3 -3
  661. package/src/svg/menu/patch/officialBusiness.svg +4 -4
  662. package/src/svg/menu/patch/pay-space.svg +3 -3
  663. package/src/svg/menu/patch/pay.svg +3 -3
  664. package/src/svg/menu/patch/phone-space.svg +3 -3
  665. package/src/svg/menu/patch/phone.svg +5 -5
  666. package/src/svg/menu/patch/print-space.svg +3 -3
  667. package/src/svg/menu/patch/print.svg +5 -5
  668. package/src/svg/menu/patch/product-space.svg +3 -3
  669. package/src/svg/menu/patch/product.svg +5 -5
  670. package/src/svg/menu/patch/reservation-space.svg +3 -3
  671. package/src/svg/menu/patch/reservation.svg +3 -3
  672. package/src/svg/menu/patch/sale-space.svg +3 -3
  673. package/src/svg/menu/patch/sale.svg +5 -5
  674. package/src/svg/menu/patch/search-space.svg +3 -3
  675. package/src/svg/menu/patch/search.svg +3 -3
  676. package/src/svg/menu/patch/secure-space.svg +3 -3
  677. package/src/svg/menu/patch/secure.svg +5 -5
  678. package/src/svg/menu/patch/setup-space.svg +3 -3
  679. package/src/svg/menu/patch/setup.svg +3 -3
  680. package/src/svg/menu/patch/shift-space.svg +3 -3
  681. package/src/svg/menu/patch/shift.svg +3 -3
  682. package/src/svg/menu/patch/situation-space.svg +3 -3
  683. package/src/svg/menu/patch/situation.svg +3 -3
  684. package/src/svg/menu/patch/special-space.svg +3 -3
  685. package/src/svg/menu/patch/special.svg +3 -3
  686. package/src/svg/menu/patch/tabulation-space.svg +3 -3
  687. package/src/svg/menu/patch/tabulation.svg +8 -8
  688. package/src/svg/menu/patch/track-space.svg +3 -3
  689. package/src/svg/menu/patch/track.svg +5 -5
  690. package/src/svg/menu/patch/transaction-space.svg +3 -3
  691. package/src/svg/menu/patch/transaction.svg +6 -6
  692. package/src/svg/menu/patch/user-space.svg +3 -3
  693. package/src/svg/menu/patch/user.svg +3 -3
  694. package/src/svg/menu/patch/visualize-space.svg +3 -3
  695. package/src/svg/menu/patch/visualize.svg +4 -4
  696. package/src/svg/menu/patch/vnet-space.svg +3 -3
  697. package/src/svg/menu/patch/vnet.svg +3 -3
  698. package/src/tip/tip.js +160 -160
  699. package/src/utils/after-leave.js +27 -27
  700. package/src/utils/ajax.js +59 -59
  701. package/src/utils/array.js +24 -24
  702. package/src/utils/clickoutside.js +105 -105
  703. package/src/utils/compare.js +16 -16
  704. package/src/utils/date.js +34 -34
  705. package/src/utils/disabledArea.js +18 -18
  706. package/src/utils/dom.js +301 -301
  707. package/src/utils/filetransfer.js +287 -287
  708. package/src/utils/isModified.js +20 -20
  709. package/src/utils/jsencrypt/JSEncrypt.js +192 -192
  710. package/src/utils/jsencrypt/JSEncryptRSAKey.js +320 -320
  711. package/src/utils/jsencrypt/index.js +3 -3
  712. package/src/utils/jsencrypt/jselib/asn1js/asn1.d.ts +51 -51
  713. package/src/utils/jsencrypt/jselib/asn1js/asn1.js +565 -565
  714. package/src/utils/jsencrypt/jselib/asn1js/base64.d.ts +5 -5
  715. package/src/utils/jsencrypt/jselib/asn1js/base64.js +88 -88
  716. package/src/utils/jsencrypt/jselib/asn1js/hex.d.ts +3 -3
  717. package/src/utils/jsencrypt/jselib/asn1js/hex.js +64 -64
  718. package/src/utils/jsencrypt/jselib/asn1js/int10.d.ts +9 -9
  719. package/src/utils/jsencrypt/jselib/asn1js/int10.js +87 -87
  720. package/src/utils/jsencrypt/jselib/asn1js/oids.d.ts +9778 -9778
  721. package/src/utils/jsencrypt/jselib/asn1js/oids.js +1962 -1962
  722. package/src/utils/jsencrypt/jselib/jsbn/base64.d.ts +3 -3
  723. package/src/utils/jsencrypt/jselib/jsbn/base64.js +76 -76
  724. package/src/utils/jsencrypt/jselib/jsbn/jsbn.d.ts +98 -98
  725. package/src/utils/jsencrypt/jselib/jsbn/jsbn.js +1754 -1754
  726. package/src/utils/jsencrypt/jselib/jsbn/prng4.d.ts +10 -10
  727. package/src/utils/jsencrypt/jselib/jsbn/prng4.js +46 -46
  728. package/src/utils/jsencrypt/jselib/jsbn/rng.d.ts +3 -3
  729. package/src/utils/jsencrypt/jselib/jsbn/rng.js +78 -78
  730. package/src/utils/jsencrypt/jselib/jsbn/rsa.d.ts +23 -23
  731. package/src/utils/jsencrypt/jselib/jsbn/rsa.js +373 -373
  732. package/src/utils/jsencrypt/jselib/jsbn/util.d.ts +7 -7
  733. package/src/utils/jsencrypt/jselib/jsbn/util.js +58 -58
  734. package/src/utils/jsencrypt/jselib/jsrsasign/asn1-1.0.js +1593 -1593
  735. package/src/utils/jsencrypt/jselib/jsrsasign/yahoo.js +63 -63
  736. package/src/utils/jsencrypt/util.js +58 -58
  737. package/src/utils/jsencrypt.js +263 -263
  738. package/src/utils/md5.js +203 -203
  739. package/src/utils/merge.js +15 -15
  740. package/src/utils/mime.js +75 -75
  741. package/src/utils/print.js +39 -39
  742. package/src/utils/ratio.js +230 -230
  743. package/src/utils/respo.js +9 -9
  744. package/src/utils/shared.js +7 -7
  745. package/src/utils/sign.js +185 -185
  746. package/src/utils/string.js +13 -13
  747. package/src/utils/theme.js +91 -91
  748. package/src/utils/types.js +40 -40
  749. package/src/utils/util.js +286 -286
  750. package/src/utils/uuid.js +12 -12
  751. package/src/utils/validate.js +373 -373
  752. package/packages/.DS_Store +0 -0
  753. package/packages/article/.DS_Store +0 -0
  754. package/packages/chat/.DS_Store +0 -0
  755. package/packages/chat/src/.DS_Store +0 -0
  756. package/packages/date-picker/.DS_Store +0 -0
  757. package/packages/dis/.DS_Store +0 -0
  758. package/packages/emote/.DS_Store +0 -0
  759. package/packages/filter/.DS_Store +0 -0
  760. package/packages/filter/src/.DS_Store +0 -0
  761. package/packages/float/.DS_Store +0 -0
  762. package/packages/flow/.DS_Store +0 -0
  763. package/packages/guider/.DS_Store +0 -0
  764. package/packages/ip/.DS_Store +0 -0
  765. package/packages/org/.DS_Store +0 -0
  766. package/packages/page/.DS_Store +0 -0
  767. package/packages/page/src/.DS_Store +0 -0
  768. package/packages/pic/.DS_Store +0 -0
  769. package/packages/rate/.DS_Store +0 -0
  770. package/packages/reverser/.DS_Store +0 -0
  771. package/packages/reverser/src/.DS_Store +0 -0
  772. package/packages/segment/.DS_Store +0 -0
  773. package/packages/slide/.DS_Store +0 -0
  774. package/packages/tab/.DS_Store +0 -0
  775. package/packages/table/.DS_Store +0 -0
  776. package/packages/theme/src/.DS_Store +0 -0
  777. package/packages/theme/src/img/.DS_Store +0 -0
  778. package/packages/theme/src/img/emote/.DS_Store +0 -0
  779. package/packages/theme/src/less/.DS_Store +0 -0
  780. package/packages/theme/src/less/theme/.DS_Store +0 -0
  781. package/packages/tooltip/.DS_Store +0 -0
  782. package/packages/tree/.DS_Store +0 -0
  783. package/packages/upload/.DS_Store +0 -0
  784. package/src/.DS_Store +0 -0
  785. package/src/svg/.DS_Store +0 -0
  786. package/src/svg/menu/.DS_Store +0 -0
@@ -1,590 +1,590 @@
1
- <template>
2
- <div class="to-tab" :class="setClass" :style="setStyle">
3
- <div ref="tab" class="tab">
4
- <div v-if="title" class="title">
5
- {{ title }}
6
- </div>
7
- <div ref="list" class="list">
8
- <ul ref="ul" class="to-tab-ul" :style="setUlStyle" @mouseleave="taboutHandle" @mouseover="isOnTab = true">
9
- <template v-for="(item, index) in itabs">
10
- <li v-if="item.label" :key="index" :style="setTabStyle(item)" :class="{ on: item.value === iValue, deletable }" @click="changeTab(item, index, 'click')" @mouseover="changeTab(item, index, 'mouseover')">
11
- <div class="content">
12
- <slot name="item" :item="item">
13
- <div v-if="item.pic" class="pic">
14
- <to-pic :src="item.pic" :width="picWidth || 2"></to-pic>
15
- </div>
16
- <div v-if="item.icon" class="icon" :class="{ 'icon-single': !item.label }">
17
- <to-icon :value="item.icon"></to-icon>
18
- </div>
19
- <div v-if="item.label" class="label">
20
- <span class="text">{{ item.label }}</span>
21
- </div>
22
- <div v-if="item.number" class="number">
23
- <to-tag v-size="'s'" color="danger" fillet="round" mode="plain">{{ item.number }}</to-tag>
24
- </div>
25
- </slot>
26
- </div>
27
- <span class="delete to-icon-close" @click.stop="removeTab(item, index)"><span></span></span>
28
- </li>
29
- </template>
30
- </ul>
31
- </div>
32
- <div v-if="$slots.fn || overSize" class="fn">
33
- <template v-if="position==='top'&&tabOver === 'control'&&overSize && !$phone">
34
- <to-button v-dis="left >= 0" mode="none" color="primary" icon="back" fillet="normal" @mousedown.native="moveToLeft" @mouseout.native="moveStop" @mouseup.native="moveStop"></to-button>
35
- <to-button v-dis="left <= dis * -1" mode="none" color="primary" icon="next" fillet="normal" @mousedown.native="moveToRight" @mouseout.native="moveStop" @mouseup.native="moveStop"></to-button>
36
- </template>
37
- <template v-if="position==='top'&&tabOver === 'float'&&overSize&&moreTabs.length">
38
- <to-button ref="more" icon="unfold" color="primary" mode="none" fillet="normal" @click="$refs.float.toggle('more')"></to-button>
39
- </template>
40
- <slot name="fn"></slot>
41
- </div>
42
- <to-float ref="float" :lazy="false" :width="15" :slide="$phone" :position="$phone?'right':'auto'" align="right">
43
- <to-scroll padding="0.5">
44
- <to-grid type="v">
45
- <to-grid-item v-for="(tab,index) in moreTabs" :key="index">
46
- <to-card :color="tab.value === iValue?'primary':'default'" link @click="changeTab(tab, index, 'click'); $refs.float.close()">
47
- <to-card-item type="main">
48
- <to-ellipsis :data="tab.label"></to-ellipsis>
49
- </to-card-item>
50
- <to-card-item v-if="deletable"><to-icon value="close" link mode="none" fillet="round" @click.stop="deleteTab(tab.value, (tabs.length - moreTabs.length) + index)"></to-icon></to-card-item>
51
- </to-card>
52
- </to-grid-item>
53
- </to-grid>
54
- </to-scroll>
55
- </to-float>
56
- </div>
57
- <div v-show="showPage" ref="page" class="to-tabPage" :class="setPageClass" @mouseover="isOnPage = true" @mouseleave="pageoutHandle">
58
- <slot></slot>
59
- </div>
60
- </div>
61
- </template>
62
- <script>
63
- export default {
64
- name: 'ToTab',
65
- componentName: 'ToTab',
66
- model: {
67
- event: 'change'
68
- },
69
- props: {
70
- event: {
71
- type: String,
72
- default: 'click'
73
- },
74
- data: {
75
- type: [String, Array],
76
- default() {
77
- return [];
78
- }
79
- },
80
- deletable: Boolean,
81
- value: {
82
- type: [String, Number],
83
- default: ''
84
- },
85
- // tab 宽度
86
- // avg 均分
87
- // auto 自动
88
- // [1-Max] 字符宽度
89
- tabWidth: {
90
- type: [String, Number],
91
- default: 'auto'
92
- },
93
- picWidth: {
94
- type: [String, Number],
95
- default: ''
96
- },
97
- // sub:下划线
98
- // sup:上划线
99
- // pill:药丸
100
- // card:卡片
101
- // nav:导航
102
- type: {
103
- type: String,
104
- default: ''
105
- },
106
- // float:悬浮
107
- contentType: {
108
- type: String,
109
- default: ''
110
- },
111
- // top:顶部
112
- // bottom:底部
113
- // left:左侧
114
- position: {
115
- type: String,
116
- default: 'top'
117
- },
118
- // auto:自动
119
- // full:全屏
120
- // 100;100em
121
- height: {
122
- type: [Number, String],
123
- default: ''
124
- },
125
- title: {
126
- type: String,
127
- default: ''
128
- },
129
- tabOver: {
130
- type: String,
131
- default: 'control'
132
- },
133
- // 事件属性
134
- beforeChange: {
135
- type: Function,
136
- default: null
137
- }
138
- },
139
- data() {
140
- return {
141
- stopAvg: false,
142
- dis: 0,
143
- left: 0,
144
- iValue: '',
145
- setTitleClass: false,
146
- overSize: false,
147
- isOnTab: false,
148
- isOnPage: false,
149
- showPage: true,
150
- controllerTimer: null,
151
- changeTimer: null,
152
- tabs: [],
153
- em: 0,
154
- moreTabs: [],
155
- timestamp: 0,
156
- currentUlWidth: 0
157
- };
158
- },
159
- computed: {
160
- itabs() {
161
- let tabs = this.tabs
162
- return this.tabOver === 'float' && this.overSize && this.moreTabs.length ? tabs.slice(0, tabs.length - this.moreTabs.length) : tabs
163
- },
164
- setTabStyle() {
165
- return function(item) {
166
- if (!isNaN(this.tabWidth) && !(this.tabOver === 'avg' && this.overSize)) {
167
- return {
168
- width: this.tabWidth + 'em'
169
- }
170
- } else if (item.label) {
171
- // return {
172
- // width: item.label.length*2 + 'em'
173
- // };
174
- } else {
175
- return '';
176
- }
177
- }
178
- },
179
- setClass() {
180
- let arr = [];
181
- if (this.type) {
182
- arr.push(`to-tab-type-${this.type}`);
183
- } else {
184
- arr.push('to-tab-type-default');
185
- }
186
- if (this.setTitleClass) {
187
- arr.push('to-tab-title');
188
- }
189
- if (this.position && this.position !== 'top') {
190
- arr.push(`to-tab-position-${this.position}`);
191
- }
192
- if (this.height === 'full') {
193
- arr.push('to-tab-height-full');
194
- }
195
- if (this.tabWidth === 'avg' || this.type === 'nav') {
196
- arr.push('to-tab-tab-width-avg');
197
- }
198
- if (this.tabOver === 'wrap') {
199
- arr.push('to-tab-over-wrap')
200
- }
201
- if (this.tabOver === 'avg' && this.overSize) {
202
- arr.push('to-tab-over-avg')
203
- }
204
- return arr;
205
- },
206
- setStyle() {
207
- let obj = {}
208
- if (this.height) {
209
- if (!isNaN(this.height)) {
210
- obj.height = this.height + 'em';
211
- } else if (this.height === 'full') {
212
- obj.height = '100%';
213
- } else {
214
- obj.height = this.height;
215
- }
216
- }
217
- return obj
218
- },
219
- setUlStyle() {
220
- let obj = {}
221
- obj.transform = `translateX(${this.left}px)`
222
- return obj
223
- },
224
- setPageClass() {
225
- let arr = [];
226
- if (this.contentType) {
227
- arr.push(`to-tabPage-${this.contentType}`);
228
- }
229
- return arr;
230
- }
231
- },
232
- watch: {
233
- data: {
234
- handler(val = []) {
235
- if (typeof val === 'string') {
236
- const tabs = []
237
- const arr = val.split(',')
238
- arr.map(item => {
239
- tabs.push({
240
- label: item,
241
- value: item
242
- })
243
- })
244
- this.tabs = tabs
245
- } else {
246
- val.length > 0 ? (this.tabs = JSON.parse(JSON.stringify(val))) : this.generateTabsFromSubTabItem();
247
- }
248
- if (this.tabs.length > 0) {
249
- let timer = setTimeout(() => {
250
- this.setController()
251
- clearTimeout(timer)
252
- }, 100);
253
- }
254
- },
255
- deep: true,
256
- immediate: true
257
- },
258
- value: {
259
- handler(val) {
260
- this.iValue = val
261
- if (this.value === '' && this.contentType !== 'float' && this.tabs.length > 0) {
262
- this.iValue = this.tabs[0].value
263
- }
264
- },
265
- immediate: true
266
- }
267
- },
268
- mounted() {
269
- if (this.contentType === 'float') {
270
- // 把 DOM 结构放到 body:last-child 位置,避免被 overflow
271
- document.body.appendChild(this.$refs.page)
272
-
273
- // 点击层外关闭
274
- document.body.addEventListener('click', this.blur)
275
-
276
- // 默认隐藏 page
277
- // this.showPage = false
278
- }
279
- this.em = this.$TouchUI.getRatio() * 12
280
- this.timestamp = Math.round(new Date())
281
- },
282
- beforeDestroy() {
283
- if (this.contentType === 'float') {
284
-
285
- // 销毁事件绑定
286
- document.body.removeEventListener('click', this.blur)
287
-
288
- // 销毁移动过的 DOM
289
- if (this.$refs.page.parentNode) {
290
- this.$refs.page.parentNode.removeChild(this.$refs.page)
291
- }
292
- }
293
- },
294
- methods: {
295
- // 保证 active 状态的 tabItem 处于可视范围
296
- setActiveInView() {
297
- if (this.overSize && this.tabOver === 'control') {
298
- this.$nextTick(() => {
299
- const object = this.findItemByx(this.itabs, this.iValue, 'value')
300
- if (object) {
301
- const ulList = this.$refs.ul.childNodes
302
- if (ulList && ulList.length) {
303
- const index = object._index
304
- const li = ulList[index]
305
- // 需要滚动的部分
306
- if ((li.offsetLeft + li.offsetWidth) > this.$refs.list.offsetWidth) {
307
- this.left = (li.offsetLeft - this.$refs.list.offsetWidth + li.offsetWidth) * -1
308
- } else {
309
- this.left = 0
310
- }
311
- }
312
- }
313
- })
314
- }
315
- },
316
- setController() {
317
- this.overSize = false
318
- if (this.$refs.ul) {
319
- this.$nextTick(()=>{
320
- this.currentUlWidth = this.$refs.ul.offsetWidth
321
- if (this.$refs.ul.offsetWidth > this.$refs.list.offsetWidth) {
322
- this.overSize = true
323
- this.left = 0
324
- this.$nextTick(()=>{
325
- this.dis = this.$refs.ul.offsetWidth - this.$refs.list.offsetWidth
326
- if (this.left * -1 > this.dis && this.tabOver === 'control') {
327
- this.left = this.dis * -1
328
- }
329
- // 使 active 状态的菜单,能够可视
330
- this.setActiveInView()
331
- })
332
- } else {
333
- this.overSize = false
334
- this.dis = 0
335
- this.left = 0
336
- if (this.tabOver === 'float') {
337
- this.$refs.float.close()
338
- }
339
- }
340
- const offsetWidth = this.$refs.list.offsetWidth
341
- const allLi = this.$refs.ul.getElementsByTagName('li')
342
- let liWidth = 0
343
- let liIndex = 0
344
- try {
345
- Array.prototype.slice.call(allLi).forEach((li, index) => {
346
- liWidth += li.clientWidth
347
- if (liWidth > offsetWidth) {
348
- liIndex = index
349
- throw Error()
350
- }
351
- })
352
- } catch (err) {
353
- this.moreTabs = this.tabs.slice(liIndex, this.tabs.length + 1)
354
- }
355
- })
356
- }
357
- if (!this.overSize && this.title) {
358
- this.setTitleClass = true
359
- } else {
360
- this.setTitleClass = false
361
- }
362
- },
363
- moveToLeft() {
364
- this.controllerTimer = setInterval(()=>{
365
- this.left += 100 * this.$TouchUI.em() / 12
366
- if (this.left >= 0) {
367
- this.left = 0
368
- }
369
- }, 50)
370
- },
371
- moveToRight() {
372
- this.controllerTimer = setInterval(()=>{
373
- this.left -= 100 * this.$TouchUI.em() / 12
374
- if (this.left < this.dis * -1) {
375
- this.left = this.dis * -1
376
- }
377
- }, 50)
378
- },
379
- moveStop() {
380
- clearInterval(this.controllerTimer)
381
- },
382
- changeTab(item, index, event) {
383
- if (event === 'click') {
384
- this.$emit('tab-click', item.value, item, index)
385
- }
386
- if (event === 'mouseover') {
387
- this.$emit('tab-mouseover', item.value, item, index)
388
- }
389
- if (this.event !== event) return // md-loader 不支持动态事件,只能出此下策
390
- if (this.beforeChange) {
391
- const fn = this.beforeChange(item, index, event)
392
- // 如果是异步
393
- if (fn && fn.then) {
394
- fn.then(flag => {
395
- this.changeAction(item, index, event)
396
- }).catch((e)=>{})
397
- } else {
398
- // 是同步方法,则返回为 true 执行
399
- if (fn) {
400
- this.changeAction(item, index, event)
401
- }
402
- }
403
- } else {
404
- this.changeAction(item, index, event)
405
- }
406
- },
407
- changeAction(item, index, event) {
408
- const timer = this.event === 'mouseover' ? 200 : 0 // 跨越式标签切换和鼠标往斜下方移动时避免触发
409
- clearInterval(this.changeTimer)
410
- this.changeTimer = setTimeout(()=>{
411
- if (this.contentType === 'float') {
412
- if (item.value === this.iValue) {
413
- if (this.event === 'click') {
414
- this.showPage = false
415
- this.iValue = ''
416
- this.$emit('change', '');
417
- }
418
- } else {
419
- this.iValue = item.value
420
- this.$emit('change', item.value, item, index);
421
- }
422
- this.showPage = true
423
-
424
- if (this.event === 'mouseover') {
425
- this.showPage = true
426
- this.iValue = item.value
427
- this.$emit('change', item.value, item, index);
428
- }
429
-
430
- // 控制层的位置
431
- this.$refs.page.style.top = this.$refs.tab.getBoundingClientRect().top + this.$refs.tab.offsetHeight + 'px'
432
- } else {
433
- if (item.value !== this.iValue) {
434
- this.iValue = item.value
435
- this.$emit('change', item.value, item, index);
436
- }
437
- }
438
- clearTimeout(this.changeTimer)
439
- this.changeTimer = null
440
- }, timer)
441
- },
442
- deleteTab(value, by) {
443
- if (!this.deletable) {
444
- return
445
- }
446
- let tabs = this.tabs
447
- let item = null
448
- let _index = null
449
- let obj = null
450
- if (by === 'label') { // by===label
451
- obj = this.findItemByx(tabs, value, 'label')
452
- } else if (by === 'value') { // by===value
453
- obj = this.findItemByx(tabs, value, 'value')
454
- } else if (by === 'index') { // by===index
455
- obj = this.findItemByx(tabs, value, 'index')
456
- } else { // 不传by,默认按value查找
457
- obj = this.findItemByx(tabs, value, 'value')
458
- if (obj && obj.item === null && obj._index === null && typeof value === 'string') { // value未找到判断typeof如果是string按label查找
459
- obj = this.findItemByx(tabs, value, 'label')
460
- } else if (obj && obj.item === null && obj._index === null && typeof value === 'number') { // value未找到判断typeof如果是number按index查找
461
- obj = this.findItemByx(tabs, value, 'index')
462
- }
463
- }
464
- item = obj.item
465
- _index = obj._index
466
- if (item !== null && _index !== null) {
467
- this.removeTab(item, _index)
468
- }
469
- },
470
- findItemByx(tabs, value, by) {
471
- let item = null
472
- let _index = null
473
- if (by === 'label') { // by===label
474
- for (let i = 0; i < tabs.length; i++) {
475
- if (tabs[i].label === value) {
476
- item = tabs[i]
477
- _index = i
478
- break
479
- }
480
- }
481
- } else if (by === 'value') { // by===value
482
- for (let i = 0; i < tabs.length; i++) {
483
- if (tabs[i].value === value) {
484
- item = tabs[i]
485
- _index = i
486
- break
487
- }
488
- }
489
- } else if (by === 'index') { // by===index
490
- for (let i = 0; i < tabs.length; i++) {
491
- if (i === value) {
492
- item = tabs[i]
493
- _index = i
494
- break
495
- }
496
- }
497
- }
498
- return {
499
- item: item,
500
- _index: _index
501
- }
502
- },
503
- removeTab(item, index) {
504
- // 如果删除的是当前项,设置其他为当前项
505
- this.$emit('before-delete', item, index)
506
- if (this.value === item.value && this.tabs.length > 1) {
507
- if (index === 0) {
508
- this.$emit('change', this.tabs[1].value, this.tabs[1], 1)
509
- } else {
510
- this.$emit('change', this.tabs[index - 1].value, this.tabs[index - 1], index - 1)
511
- }
512
- }
513
- this.tabs.splice(index, 1)
514
- this.setController()
515
- this.$emit('delete', item, index)
516
- },
517
- generateTabsFromSubTabItem() {
518
- const tabs = [];
519
- const tabsItem = this.$slots.default || [];
520
- tabsItem.map(({ componentOptions = { propsData: {} } }) => {
521
- const {
522
- tag,
523
- propsData: { label, value, icon, pic, number, on, data }
524
- } = componentOptions;
525
- if (String(tag) === 'to-tab-item') {
526
- tabs.push({
527
- label,
528
- value: value ? value : label,
529
- icon,
530
- pic,
531
- number,
532
- data
533
- });
534
- }
535
- if (on === '' || on === true) {
536
- if (value) {
537
- this.iValue = value
538
- } else {
539
- this.iValue = label
540
- }
541
- }
542
- });
543
- this.tabs = tabs;
544
- setTimeout(() => {
545
- this.setController()
546
- }, 100)
547
- },
548
- hidePage() {
549
- this.showPage = false
550
- },
551
- taboutHandle() {
552
- this.isOnTab = false;
553
- clearInterval(this.changeTimer)
554
- let timer = null
555
- timer = setTimeout(() => {
556
- if (!this.isOnPage && !this.isOnTab && this.contentType === 'float' && this.event === 'mouseover') {
557
- this.$emit('change', '')
558
- this.iValue = ''
559
- }
560
- clearTimeout(timer)
561
- timer = null
562
- }, 1);
563
- },
564
- pageoutHandle() {
565
- this.isOnPage = false;
566
- let timer = null
567
- timer = setTimeout(() => {
568
- if (!this.isOnPage && !this.isOnTab && this.contentType === 'float' && this.event === 'mouseover') {
569
- this.$emit('change', '')
570
- this.iValue = ''
571
- }
572
- clearTimeout(timer)
573
- timer = null
574
- }, 1);
575
- },
576
- // 点击层外关闭,通过递归判断点击是否在绑定此对象实例的 DOM 之内
577
- blur(e) {
578
- if (!this.showPage) return false
579
- let node = e.target
580
- while (node && node !== this.$el && node !== this.$refs.page && node.nodeName !== 'BODY') {
581
- node = node.parentNode
582
- }
583
- if (node && node.nodeName === 'BODY') {
584
- this.showPage = false
585
- this.$emit('change', '');
586
- }
587
- }
588
- }
589
- };
590
- </script>
1
+ <template>
2
+ <div class="to-tab" :class="setClass" :style="setStyle">
3
+ <div ref="tab" class="tab">
4
+ <div v-if="title" class="title">
5
+ {{ title }}
6
+ </div>
7
+ <div ref="list" class="list">
8
+ <ul ref="ul" class="to-tab-ul" :style="setUlStyle" @mouseleave="taboutHandle" @mouseover="isOnTab = true">
9
+ <template v-for="(item, index) in itabs">
10
+ <li v-if="item.label" :key="index" :style="setTabStyle(item)" :class="{ on: item.value === iValue, deletable }" @click="changeTab(item, index, 'click')" @mouseover="changeTab(item, index, 'mouseover')">
11
+ <div class="content">
12
+ <slot name="item" :item="item">
13
+ <div v-if="item.pic" class="pic">
14
+ <to-pic :src="item.pic" :width="picWidth || 2"></to-pic>
15
+ </div>
16
+ <div v-if="item.icon" class="icon" :class="{ 'icon-single': !item.label }">
17
+ <to-icon :value="item.icon"></to-icon>
18
+ </div>
19
+ <div v-if="item.label" class="label">
20
+ <span class="text">{{ item.label }}</span>
21
+ </div>
22
+ <div v-if="item.number" class="number">
23
+ <to-tag v-size="'s'" color="danger" fillet="round" mode="plain">{{ item.number }}</to-tag>
24
+ </div>
25
+ </slot>
26
+ </div>
27
+ <span class="delete to-icon-close" @click.stop="removeTab(item, index)"><span></span></span>
28
+ </li>
29
+ </template>
30
+ </ul>
31
+ </div>
32
+ <div v-if="$slots.fn || overSize" class="fn">
33
+ <template v-if="position==='top'&&tabOver === 'control'&&overSize && !$phone">
34
+ <to-button v-dis="left >= 0" mode="none" color="primary" icon="back" fillet="normal" @mousedown.native="moveToLeft" @mouseout.native="moveStop" @mouseup.native="moveStop"></to-button>
35
+ <to-button v-dis="left <= dis * -1" mode="none" color="primary" icon="next" fillet="normal" @mousedown.native="moveToRight" @mouseout.native="moveStop" @mouseup.native="moveStop"></to-button>
36
+ </template>
37
+ <template v-if="position==='top'&&tabOver === 'float'&&overSize&&moreTabs.length">
38
+ <to-button ref="more" icon="unfold" color="primary" mode="none" fillet="normal" @click="$refs.float.toggle('more')"></to-button>
39
+ </template>
40
+ <slot name="fn"></slot>
41
+ </div>
42
+ <to-float ref="float" :lazy="false" :width="15" :slide="$phone" :position="$phone?'right':'auto'" align="right">
43
+ <to-scroll padding="0.5">
44
+ <to-grid type="v">
45
+ <to-grid-item v-for="(tab,index) in moreTabs" :key="index">
46
+ <to-card :color="tab.value === iValue?'primary':'default'" link @click="changeTab(tab, index, 'click'); $refs.float.close()">
47
+ <to-card-item type="main">
48
+ <to-ellipsis :data="tab.label"></to-ellipsis>
49
+ </to-card-item>
50
+ <to-card-item v-if="deletable"><to-icon value="close" link mode="none" fillet="round" @click.stop="deleteTab(tab.value, (tabs.length - moreTabs.length) + index)"></to-icon></to-card-item>
51
+ </to-card>
52
+ </to-grid-item>
53
+ </to-grid>
54
+ </to-scroll>
55
+ </to-float>
56
+ </div>
57
+ <div v-show="showPage" ref="page" class="to-tabPage" :class="setPageClass" @mouseover="isOnPage = true" @mouseleave="pageoutHandle">
58
+ <slot></slot>
59
+ </div>
60
+ </div>
61
+ </template>
62
+ <script>
63
+ export default {
64
+ name: 'ToTab',
65
+ componentName: 'ToTab',
66
+ model: {
67
+ event: 'change'
68
+ },
69
+ props: {
70
+ event: {
71
+ type: String,
72
+ default: 'click'
73
+ },
74
+ data: {
75
+ type: [String, Array],
76
+ default() {
77
+ return [];
78
+ }
79
+ },
80
+ deletable: Boolean,
81
+ value: {
82
+ type: [String, Number],
83
+ default: ''
84
+ },
85
+ // tab 宽度
86
+ // avg 均分
87
+ // auto 自动
88
+ // [1-Max] 字符宽度
89
+ tabWidth: {
90
+ type: [String, Number],
91
+ default: 'auto'
92
+ },
93
+ picWidth: {
94
+ type: [String, Number],
95
+ default: ''
96
+ },
97
+ // sub:下划线
98
+ // sup:上划线
99
+ // pill:药丸
100
+ // card:卡片
101
+ // nav:导航
102
+ type: {
103
+ type: String,
104
+ default: ''
105
+ },
106
+ // float:悬浮
107
+ contentType: {
108
+ type: String,
109
+ default: ''
110
+ },
111
+ // top:顶部
112
+ // bottom:底部
113
+ // left:左侧
114
+ position: {
115
+ type: String,
116
+ default: 'top'
117
+ },
118
+ // auto:自动
119
+ // full:全屏
120
+ // 100;100em
121
+ height: {
122
+ type: [Number, String],
123
+ default: ''
124
+ },
125
+ title: {
126
+ type: String,
127
+ default: ''
128
+ },
129
+ tabOver: {
130
+ type: String,
131
+ default: 'control'
132
+ },
133
+ // 事件属性
134
+ beforeChange: {
135
+ type: Function,
136
+ default: null
137
+ }
138
+ },
139
+ data() {
140
+ return {
141
+ stopAvg: false,
142
+ dis: 0,
143
+ left: 0,
144
+ iValue: '',
145
+ setTitleClass: false,
146
+ overSize: false,
147
+ isOnTab: false,
148
+ isOnPage: false,
149
+ showPage: true,
150
+ controllerTimer: null,
151
+ changeTimer: null,
152
+ tabs: [],
153
+ em: 0,
154
+ moreTabs: [],
155
+ timestamp: 0,
156
+ currentUlWidth: 0
157
+ };
158
+ },
159
+ computed: {
160
+ itabs() {
161
+ let tabs = this.tabs
162
+ return this.tabOver === 'float' && this.overSize && this.moreTabs.length ? tabs.slice(0, tabs.length - this.moreTabs.length) : tabs
163
+ },
164
+ setTabStyle() {
165
+ return function(item) {
166
+ if (!isNaN(this.tabWidth) && !(this.tabOver === 'avg' && this.overSize)) {
167
+ return {
168
+ width: this.tabWidth + 'em'
169
+ }
170
+ } else if (item.label) {
171
+ // return {
172
+ // width: item.label.length*2 + 'em'
173
+ // };
174
+ } else {
175
+ return '';
176
+ }
177
+ }
178
+ },
179
+ setClass() {
180
+ let arr = [];
181
+ if (this.type) {
182
+ arr.push(`to-tab-type-${this.type}`);
183
+ } else {
184
+ arr.push('to-tab-type-default');
185
+ }
186
+ if (this.setTitleClass) {
187
+ arr.push('to-tab-title');
188
+ }
189
+ if (this.position && this.position !== 'top') {
190
+ arr.push(`to-tab-position-${this.position}`);
191
+ }
192
+ if (this.height === 'full') {
193
+ arr.push('to-tab-height-full');
194
+ }
195
+ if (this.tabWidth === 'avg' || this.type === 'nav') {
196
+ arr.push('to-tab-tab-width-avg');
197
+ }
198
+ if (this.tabOver === 'wrap') {
199
+ arr.push('to-tab-over-wrap')
200
+ }
201
+ if (this.tabOver === 'avg' && this.overSize) {
202
+ arr.push('to-tab-over-avg')
203
+ }
204
+ return arr;
205
+ },
206
+ setStyle() {
207
+ let obj = {}
208
+ if (this.height) {
209
+ if (!isNaN(this.height)) {
210
+ obj.height = this.height + 'em';
211
+ } else if (this.height === 'full') {
212
+ obj.height = '100%';
213
+ } else {
214
+ obj.height = this.height;
215
+ }
216
+ }
217
+ return obj
218
+ },
219
+ setUlStyle() {
220
+ let obj = {}
221
+ obj.transform = `translateX(${this.left}px)`
222
+ return obj
223
+ },
224
+ setPageClass() {
225
+ let arr = [];
226
+ if (this.contentType) {
227
+ arr.push(`to-tabPage-${this.contentType}`);
228
+ }
229
+ return arr;
230
+ }
231
+ },
232
+ watch: {
233
+ data: {
234
+ handler(val = []) {
235
+ if (typeof val === 'string') {
236
+ const tabs = []
237
+ const arr = val.split(',')
238
+ arr.map(item => {
239
+ tabs.push({
240
+ label: item,
241
+ value: item
242
+ })
243
+ })
244
+ this.tabs = tabs
245
+ } else {
246
+ val.length > 0 ? (this.tabs = JSON.parse(JSON.stringify(val))) : this.generateTabsFromSubTabItem();
247
+ }
248
+ if (this.tabs.length > 0) {
249
+ let timer = setTimeout(() => {
250
+ this.setController()
251
+ clearTimeout(timer)
252
+ }, 100);
253
+ }
254
+ },
255
+ deep: true,
256
+ immediate: true
257
+ },
258
+ value: {
259
+ handler(val) {
260
+ this.iValue = val
261
+ if (this.value === '' && this.contentType !== 'float' && this.tabs.length > 0) {
262
+ this.iValue = this.tabs[0].value
263
+ }
264
+ },
265
+ immediate: true
266
+ }
267
+ },
268
+ mounted() {
269
+ if (this.contentType === 'float') {
270
+ // 把 DOM 结构放到 body:last-child 位置,避免被 overflow
271
+ document.body.appendChild(this.$refs.page)
272
+
273
+ // 点击层外关闭
274
+ document.body.addEventListener('click', this.blur)
275
+
276
+ // 默认隐藏 page
277
+ // this.showPage = false
278
+ }
279
+ this.em = this.$TouchUI.getRatio() * 12
280
+ this.timestamp = Math.round(new Date())
281
+ },
282
+ beforeDestroy() {
283
+ if (this.contentType === 'float') {
284
+
285
+ // 销毁事件绑定
286
+ document.body.removeEventListener('click', this.blur)
287
+
288
+ // 销毁移动过的 DOM
289
+ if (this.$refs.page.parentNode) {
290
+ this.$refs.page.parentNode.removeChild(this.$refs.page)
291
+ }
292
+ }
293
+ },
294
+ methods: {
295
+ // 保证 active 状态的 tabItem 处于可视范围
296
+ setActiveInView() {
297
+ if (this.overSize && this.tabOver === 'control') {
298
+ this.$nextTick(() => {
299
+ const object = this.findItemByx(this.itabs, this.iValue, 'value')
300
+ if (object) {
301
+ const ulList = this.$refs.ul.childNodes
302
+ if (ulList && ulList.length) {
303
+ const index = object._index
304
+ const li = ulList[index]
305
+ // 需要滚动的部分
306
+ if ((li.offsetLeft + li.offsetWidth) > this.$refs.list.offsetWidth) {
307
+ this.left = (li.offsetLeft - this.$refs.list.offsetWidth + li.offsetWidth) * -1
308
+ } else {
309
+ this.left = 0
310
+ }
311
+ }
312
+ }
313
+ })
314
+ }
315
+ },
316
+ setController() {
317
+ this.overSize = false
318
+ if (this.$refs.ul) {
319
+ this.$nextTick(()=>{
320
+ this.currentUlWidth = this.$refs.ul.offsetWidth
321
+ if (this.$refs.ul.offsetWidth > this.$refs.list.offsetWidth) {
322
+ this.overSize = true
323
+ this.left = 0
324
+ this.$nextTick(()=>{
325
+ this.dis = this.$refs.ul.offsetWidth - this.$refs.list.offsetWidth
326
+ if (this.left * -1 > this.dis && this.tabOver === 'control') {
327
+ this.left = this.dis * -1
328
+ }
329
+ // 使 active 状态的菜单,能够可视
330
+ this.setActiveInView()
331
+ })
332
+ } else {
333
+ this.overSize = false
334
+ this.dis = 0
335
+ this.left = 0
336
+ if (this.tabOver === 'float') {
337
+ this.$refs.float.close()
338
+ }
339
+ }
340
+ const offsetWidth = this.$refs.list.offsetWidth
341
+ const allLi = this.$refs.ul.getElementsByTagName('li')
342
+ let liWidth = 0
343
+ let liIndex = 0
344
+ try {
345
+ Array.prototype.slice.call(allLi).forEach((li, index) => {
346
+ liWidth += li.clientWidth
347
+ if (liWidth > offsetWidth) {
348
+ liIndex = index
349
+ throw Error()
350
+ }
351
+ })
352
+ } catch (err) {
353
+ this.moreTabs = this.tabs.slice(liIndex, this.tabs.length + 1)
354
+ }
355
+ })
356
+ }
357
+ if (!this.overSize && this.title) {
358
+ this.setTitleClass = true
359
+ } else {
360
+ this.setTitleClass = false
361
+ }
362
+ },
363
+ moveToLeft() {
364
+ this.controllerTimer = setInterval(()=>{
365
+ this.left += 100 * this.$TouchUI.em() / 12
366
+ if (this.left >= 0) {
367
+ this.left = 0
368
+ }
369
+ }, 50)
370
+ },
371
+ moveToRight() {
372
+ this.controllerTimer = setInterval(()=>{
373
+ this.left -= 100 * this.$TouchUI.em() / 12
374
+ if (this.left < this.dis * -1) {
375
+ this.left = this.dis * -1
376
+ }
377
+ }, 50)
378
+ },
379
+ moveStop() {
380
+ clearInterval(this.controllerTimer)
381
+ },
382
+ changeTab(item, index, event) {
383
+ if (event === 'click') {
384
+ this.$emit('tab-click', item.value, item, index)
385
+ }
386
+ if (event === 'mouseover') {
387
+ this.$emit('tab-mouseover', item.value, item, index)
388
+ }
389
+ if (this.event !== event) return // md-loader 不支持动态事件,只能出此下策
390
+ if (this.beforeChange) {
391
+ const fn = this.beforeChange(item, index, event)
392
+ // 如果是异步
393
+ if (fn && fn.then) {
394
+ fn.then(flag => {
395
+ this.changeAction(item, index, event)
396
+ }).catch((e)=>{})
397
+ } else {
398
+ // 是同步方法,则返回为 true 执行
399
+ if (fn) {
400
+ this.changeAction(item, index, event)
401
+ }
402
+ }
403
+ } else {
404
+ this.changeAction(item, index, event)
405
+ }
406
+ },
407
+ changeAction(item, index, event) {
408
+ const timer = this.event === 'mouseover' ? 200 : 0 // 跨越式标签切换和鼠标往斜下方移动时避免触发
409
+ clearInterval(this.changeTimer)
410
+ this.changeTimer = setTimeout(()=>{
411
+ if (this.contentType === 'float') {
412
+ if (item.value === this.iValue) {
413
+ if (this.event === 'click') {
414
+ this.showPage = false
415
+ this.iValue = ''
416
+ this.$emit('change', '');
417
+ }
418
+ } else {
419
+ this.iValue = item.value
420
+ this.$emit('change', item.value, item, index);
421
+ }
422
+ this.showPage = true
423
+
424
+ if (this.event === 'mouseover') {
425
+ this.showPage = true
426
+ this.iValue = item.value
427
+ this.$emit('change', item.value, item, index);
428
+ }
429
+
430
+ // 控制层的位置
431
+ this.$refs.page.style.top = this.$refs.tab.getBoundingClientRect().top + this.$refs.tab.offsetHeight + 'px'
432
+ } else {
433
+ if (item.value !== this.iValue) {
434
+ this.iValue = item.value
435
+ this.$emit('change', item.value, item, index);
436
+ }
437
+ }
438
+ clearTimeout(this.changeTimer)
439
+ this.changeTimer = null
440
+ }, timer)
441
+ },
442
+ deleteTab(value, by) {
443
+ if (!this.deletable) {
444
+ return
445
+ }
446
+ let tabs = this.tabs
447
+ let item = null
448
+ let _index = null
449
+ let obj = null
450
+ if (by === 'label') { // by===label
451
+ obj = this.findItemByx(tabs, value, 'label')
452
+ } else if (by === 'value') { // by===value
453
+ obj = this.findItemByx(tabs, value, 'value')
454
+ } else if (by === 'index') { // by===index
455
+ obj = this.findItemByx(tabs, value, 'index')
456
+ } else { // 不传by,默认按value查找
457
+ obj = this.findItemByx(tabs, value, 'value')
458
+ if (obj && obj.item === null && obj._index === null && typeof value === 'string') { // value未找到判断typeof如果是string按label查找
459
+ obj = this.findItemByx(tabs, value, 'label')
460
+ } else if (obj && obj.item === null && obj._index === null && typeof value === 'number') { // value未找到判断typeof如果是number按index查找
461
+ obj = this.findItemByx(tabs, value, 'index')
462
+ }
463
+ }
464
+ item = obj.item
465
+ _index = obj._index
466
+ if (item !== null && _index !== null) {
467
+ this.removeTab(item, _index)
468
+ }
469
+ },
470
+ findItemByx(tabs, value, by) {
471
+ let item = null
472
+ let _index = null
473
+ if (by === 'label') { // by===label
474
+ for (let i = 0; i < tabs.length; i++) {
475
+ if (tabs[i].label === value) {
476
+ item = tabs[i]
477
+ _index = i
478
+ break
479
+ }
480
+ }
481
+ } else if (by === 'value') { // by===value
482
+ for (let i = 0; i < tabs.length; i++) {
483
+ if (tabs[i].value === value) {
484
+ item = tabs[i]
485
+ _index = i
486
+ break
487
+ }
488
+ }
489
+ } else if (by === 'index') { // by===index
490
+ for (let i = 0; i < tabs.length; i++) {
491
+ if (i === value) {
492
+ item = tabs[i]
493
+ _index = i
494
+ break
495
+ }
496
+ }
497
+ }
498
+ return {
499
+ item: item,
500
+ _index: _index
501
+ }
502
+ },
503
+ removeTab(item, index) {
504
+ // 如果删除的是当前项,设置其他为当前项
505
+ this.$emit('before-delete', item, index)
506
+ if (this.value === item.value && this.tabs.length > 1) {
507
+ if (index === 0) {
508
+ this.$emit('change', this.tabs[1].value, this.tabs[1], 1)
509
+ } else {
510
+ this.$emit('change', this.tabs[index - 1].value, this.tabs[index - 1], index - 1)
511
+ }
512
+ }
513
+ this.tabs.splice(index, 1)
514
+ this.setController()
515
+ this.$emit('delete', item, index)
516
+ },
517
+ generateTabsFromSubTabItem() {
518
+ const tabs = [];
519
+ const tabsItem = this.$slots.default || [];
520
+ tabsItem.map(({ componentOptions = { propsData: {} } }) => {
521
+ const {
522
+ tag,
523
+ propsData: { label, value, icon, pic, number, on, data }
524
+ } = componentOptions;
525
+ if (String(tag) === 'to-tab-item') {
526
+ tabs.push({
527
+ label,
528
+ value: value ? value : label,
529
+ icon,
530
+ pic,
531
+ number,
532
+ data
533
+ });
534
+ }
535
+ if (on === '' || on === true) {
536
+ if (value) {
537
+ this.iValue = value
538
+ } else {
539
+ this.iValue = label
540
+ }
541
+ }
542
+ });
543
+ this.tabs = tabs;
544
+ setTimeout(() => {
545
+ this.setController()
546
+ }, 100)
547
+ },
548
+ hidePage() {
549
+ this.showPage = false
550
+ },
551
+ taboutHandle() {
552
+ this.isOnTab = false;
553
+ clearInterval(this.changeTimer)
554
+ let timer = null
555
+ timer = setTimeout(() => {
556
+ if (!this.isOnPage && !this.isOnTab && this.contentType === 'float' && this.event === 'mouseover') {
557
+ this.$emit('change', '')
558
+ this.iValue = ''
559
+ }
560
+ clearTimeout(timer)
561
+ timer = null
562
+ }, 1);
563
+ },
564
+ pageoutHandle() {
565
+ this.isOnPage = false;
566
+ let timer = null
567
+ timer = setTimeout(() => {
568
+ if (!this.isOnPage && !this.isOnTab && this.contentType === 'float' && this.event === 'mouseover') {
569
+ this.$emit('change', '')
570
+ this.iValue = ''
571
+ }
572
+ clearTimeout(timer)
573
+ timer = null
574
+ }, 1);
575
+ },
576
+ // 点击层外关闭,通过递归判断点击是否在绑定此对象实例的 DOM 之内
577
+ blur(e) {
578
+ if (!this.showPage) return false
579
+ let node = e.target
580
+ while (node && node !== this.$el && node !== this.$refs.page && node.nodeName !== 'BODY') {
581
+ node = node.parentNode
582
+ }
583
+ if (node && node.nodeName === 'BODY') {
584
+ this.showPage = false
585
+ this.$emit('change', '');
586
+ }
587
+ }
588
+ }
589
+ };
590
+ </script>