element-sim 1.1.8 → 1.1.9

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 (575) hide show
  1. package/CHANGELOG.en-US.md +2085 -2085
  2. package/CHANGELOG.es.md +2092 -2092
  3. package/CHANGELOG.fr-FR.md +2085 -2085
  4. package/CHANGELOG.zh-CN.md +27 -22
  5. package/LICENSE +21 -21
  6. package/README.md +148 -148
  7. package/lib/cascader-panel.js +2 -2
  8. package/lib/cascader.js +2 -2
  9. package/lib/date-picker.js +5 -5
  10. package/lib/element-sim.common.js +62 -51
  11. package/lib/index.js +1 -1
  12. package/lib/input.js +14 -3
  13. package/lib/locale/format.js +10 -10
  14. package/lib/menu.js +25 -25
  15. package/lib/mixins/migrating.js +20 -20
  16. package/lib/result.js +8 -8
  17. package/lib/theme-chalk/base.css +1 -1
  18. package/lib/theme-chalk/icon.css +1 -1
  19. package/lib/theme-chalk/index.css +1 -1
  20. package/lib/time-picker.js +5 -5
  21. package/lib/time-select.js +5 -5
  22. package/lib/utils/after-leave.js +7 -7
  23. package/lib/utils/aria-dialog.js +16 -16
  24. package/lib/utils/aria-utils.js +25 -25
  25. package/lib/utils/clickoutside.js +7 -7
  26. package/lib/utils/date.js +37 -37
  27. package/lib/utils/lodash.js +9292 -9292
  28. package/lib/utils/popper.js +321 -321
  29. package/lib/utils/types.js +3 -3
  30. package/lib/utils/vue-popper.js +7 -7
  31. package/package.json +151 -151
  32. package/packages/alert/index.js +8 -8
  33. package/packages/alert/src/main.vue +94 -94
  34. package/packages/aside/index.js +8 -8
  35. package/packages/aside/src/main.vue +20 -20
  36. package/packages/autocomplete/index.js +8 -8
  37. package/packages/autocomplete/src/autocomplete-suggestions.vue +76 -76
  38. package/packages/autocomplete/src/autocomplete.vue +285 -285
  39. package/packages/avatar/index.js +8 -8
  40. package/packages/avatar/src/main.vue +107 -107
  41. package/packages/backtop/index.js +8 -8
  42. package/packages/backtop/src/main.vue +110 -110
  43. package/packages/badge/index.js +8 -8
  44. package/packages/badge/src/main.vue +53 -53
  45. package/packages/breadcrumb/index.js +8 -8
  46. package/packages/breadcrumb/src/breadcrumb-item.vue +41 -41
  47. package/packages/breadcrumb/src/breadcrumb.vue +34 -34
  48. package/packages/breadcrumb-item/index.js +8 -8
  49. package/packages/button/index.js +8 -8
  50. package/packages/button/src/button-group.vue +10 -10
  51. package/packages/button/src/button.vue +78 -78
  52. package/packages/button-group/index.js +8 -8
  53. package/packages/calendar/index.js +8 -8
  54. package/packages/calendar/src/date-table.vue +200 -200
  55. package/packages/calendar/src/main.vue +280 -280
  56. package/packages/card/index.js +8 -8
  57. package/packages/card/src/main.vue +23 -23
  58. package/packages/carousel/index.js +8 -8
  59. package/packages/carousel/src/item.vue +138 -138
  60. package/packages/carousel/src/main.vue +315 -315
  61. package/packages/carousel-item/index.js +8 -8
  62. package/packages/cascader/index.js +8 -8
  63. package/packages/cascader/src/cascader.vue +663 -663
  64. package/packages/cascader-panel/index.js +8 -8
  65. package/packages/cascader-panel/src/cascader-menu.vue +138 -138
  66. package/packages/cascader-panel/src/cascader-node.vue +246 -246
  67. package/packages/cascader-panel/src/cascader-panel.vue +391 -391
  68. package/packages/cascader-panel/src/node.js +166 -166
  69. package/packages/cascader-panel/src/store.js +58 -58
  70. package/packages/checkbox/index.js +8 -8
  71. package/packages/checkbox/src/checkbox-button.vue +199 -199
  72. package/packages/checkbox/src/checkbox-group.vue +48 -48
  73. package/packages/checkbox/src/checkbox.vue +222 -222
  74. package/packages/checkbox-button/index.js +8 -8
  75. package/packages/checkbox-group/index.js +8 -8
  76. package/packages/col/index.js +9 -9
  77. package/packages/col/src/col.js +71 -71
  78. package/packages/collapse/index.js +9 -9
  79. package/packages/collapse/src/collapse-item.vue +114 -114
  80. package/packages/collapse/src/collapse.vue +73 -73
  81. package/packages/collapse-item/index.js +8 -8
  82. package/packages/color-picker/index.js +8 -8
  83. package/packages/color-picker/src/color.js +317 -317
  84. package/packages/color-picker/src/components/alpha-slider.vue +132 -132
  85. package/packages/color-picker/src/components/hue-slider.vue +123 -123
  86. package/packages/color-picker/src/components/picker-dropdown.vue +121 -121
  87. package/packages/color-picker/src/components/predefine.vue +60 -60
  88. package/packages/color-picker/src/components/sv-panel.vue +100 -100
  89. package/packages/color-picker/src/draggable.js +36 -36
  90. package/packages/color-picker/src/main.vue +188 -188
  91. package/packages/container/index.js +8 -8
  92. package/packages/container/src/main.vue +33 -33
  93. package/packages/date-picker/index.js +8 -8
  94. package/packages/date-picker/src/basic/date-table.vue +441 -441
  95. package/packages/date-picker/src/basic/month-table.vue +269 -269
  96. package/packages/date-picker/src/basic/time-spinner.vue +304 -304
  97. package/packages/date-picker/src/basic/year-table.vue +111 -111
  98. package/packages/date-picker/src/panel/date-range.vue +680 -680
  99. package/packages/date-picker/src/panel/date.vue +609 -609
  100. package/packages/date-picker/src/panel/month-range.vue +289 -289
  101. package/packages/date-picker/src/panel/time-range.vue +248 -248
  102. package/packages/date-picker/src/panel/time-select.vue +178 -178
  103. package/packages/date-picker/src/panel/time.vue +186 -186
  104. package/packages/date-picker/src/picker/date-picker.js +43 -43
  105. package/packages/date-picker/src/picker/time-picker.js +39 -39
  106. package/packages/date-picker/src/picker/time-select.js +21 -21
  107. package/packages/date-picker/src/picker.vue +956 -956
  108. package/packages/descriptions/index.js +8 -8
  109. package/packages/descriptions/src/descriptions-item.js +30 -30
  110. package/packages/descriptions/src/descriptions-row.js +116 -116
  111. package/packages/descriptions/src/index.js +180 -180
  112. package/packages/descriptions-item/index.js +8 -8
  113. package/packages/dialog/index.js +8 -8
  114. package/packages/dialog/src/component.vue +212 -212
  115. package/packages/divider/index.js +8 -8
  116. package/packages/divider/src/main.vue +37 -37
  117. package/packages/drawer/index.js +8 -8
  118. package/packages/drawer/src/main.vue +208 -208
  119. package/packages/dropdown/index.js +8 -8
  120. package/packages/dropdown/src/dropdown-item.vue +37 -37
  121. package/packages/dropdown/src/dropdown-menu.vue +63 -63
  122. package/packages/dropdown/src/dropdown.vue +293 -293
  123. package/packages/dropdown-item/index.js +8 -8
  124. package/packages/dropdown-menu/index.js +8 -8
  125. package/packages/empty/index.js +7 -7
  126. package/packages/empty/src/img-empty.vue +132 -132
  127. package/packages/empty/src/index.vue +50 -50
  128. package/packages/footer/index.js +8 -8
  129. package/packages/footer/src/main.vue +20 -20
  130. package/packages/form/index.js +8 -8
  131. package/packages/form/src/form-item.vue +324 -324
  132. package/packages/form/src/form.vue +182 -182
  133. package/packages/form/src/label-wrap.vue +78 -78
  134. package/packages/form-item/index.js +8 -8
  135. package/packages/header/index.js +8 -8
  136. package/packages/header/src/main.vue +20 -20
  137. package/packages/icon/index.js +8 -8
  138. package/packages/icon/src/icon.vue +13 -13
  139. package/packages/image/index.js +8 -8
  140. package/packages/image/src/image-viewer.vue +330 -330
  141. package/packages/image/src/main.vue +249 -249
  142. package/packages/infinite-scroll/index.js +8 -8
  143. package/packages/infinite-scroll/src/main.js +150 -150
  144. package/packages/input/index.js +8 -8
  145. package/packages/input/src/calcTextareaHeight.js +104 -104
  146. package/packages/input/src/input.vue +444 -440
  147. package/packages/input-number/index.js +8 -8
  148. package/packages/input-number/src/input-number.vue +283 -283
  149. package/packages/link/index.js +8 -8
  150. package/packages/link/src/main.vue +53 -53
  151. package/packages/loading/index.js +11 -11
  152. package/packages/loading/src/directive.js +133 -133
  153. package/packages/loading/src/index.js +106 -106
  154. package/packages/loading/src/loading.vue +41 -41
  155. package/packages/main/index.js +8 -8
  156. package/packages/main/src/main.vue +12 -12
  157. package/packages/menu/index.js +8 -8
  158. package/packages/menu/src/menu-item-group.vue +45 -45
  159. package/packages/menu/src/menu-item.vue +112 -112
  160. package/packages/menu/src/menu-mixin.js +44 -44
  161. package/packages/menu/src/menu.vue +325 -325
  162. package/packages/menu/src/submenu.vue +349 -349
  163. package/packages/menu-item/index.js +8 -8
  164. package/packages/menu-item-group/index.js +8 -8
  165. package/packages/message/index.js +2 -2
  166. package/packages/message/src/main.js +91 -91
  167. package/packages/message/src/main.vue +117 -117
  168. package/packages/message-box/index.js +2 -2
  169. package/packages/message-box/src/main.js +216 -216
  170. package/packages/message-box/src/main.vue +332 -332
  171. package/packages/notification/index.js +2 -2
  172. package/packages/notification/src/main.js +94 -94
  173. package/packages/notification/src/main.vue +152 -152
  174. package/packages/option/index.js +8 -8
  175. package/packages/option-group/index.js +8 -8
  176. package/packages/page-header/index.js +8 -8
  177. package/packages/page-header/src/main.vue +30 -30
  178. package/packages/pagination/index.js +8 -8
  179. package/packages/pagination/src/pager.vue +163 -163
  180. package/packages/pagination/src/pagination.js +386 -386
  181. package/packages/popconfirm/index.js +8 -8
  182. package/packages/popconfirm/src/main.vue +104 -104
  183. package/packages/popover/index.js +14 -14
  184. package/packages/popover/src/directive.js +20 -20
  185. package/packages/popover/src/main.vue +237 -237
  186. package/packages/progress/index.js +8 -8
  187. package/packages/progress/src/progress.vue +235 -235
  188. package/packages/radio/index.js +8 -8
  189. package/packages/radio/src/radio-button.vue +115 -115
  190. package/packages/radio/src/radio-group.vue +113 -113
  191. package/packages/radio/src/radio.vue +134 -134
  192. package/packages/radio-button/index.js +8 -8
  193. package/packages/radio-group/index.js +8 -8
  194. package/packages/rate/index.js +8 -8
  195. package/packages/rate/src/main.vue +348 -348
  196. package/packages/result/index.js +8 -8
  197. package/packages/result/src/icon-error.vue +13 -13
  198. package/packages/result/src/icon-info.vue +13 -13
  199. package/packages/result/src/icon-success.vue +13 -13
  200. package/packages/result/src/icon-warning.vue +13 -13
  201. package/packages/result/src/index.vue +65 -65
  202. package/packages/row/index.js +9 -9
  203. package/packages/row/src/row.js +44 -44
  204. package/packages/scrollbar/index.js +8 -8
  205. package/packages/scrollbar/src/bar.js +92 -92
  206. package/packages/scrollbar/src/main.js +130 -130
  207. package/packages/scrollbar/src/util.js +34 -34
  208. package/packages/select/index.js +8 -8
  209. package/packages/select/src/navigation-mixin.js +54 -54
  210. package/packages/select/src/option-group.vue +60 -60
  211. package/packages/select/src/option.vue +168 -168
  212. package/packages/select/src/select-dropdown.vue +74 -74
  213. package/packages/select/src/select.vue +900 -900
  214. package/packages/skeleton/index.js +8 -8
  215. package/packages/skeleton/src/img-placeholder.vue +16 -16
  216. package/packages/skeleton/src/index.vue +76 -76
  217. package/packages/skeleton/src/item.vue +21 -21
  218. package/packages/skeleton-item/index.js +8 -8
  219. package/packages/slider/index.js +8 -8
  220. package/packages/slider/src/button.vue +238 -238
  221. package/packages/slider/src/main.vue +427 -427
  222. package/packages/slider/src/marker.js +18 -18
  223. package/packages/spinner/index.js +8 -8
  224. package/packages/spinner/src/spinner.vue +27 -27
  225. package/packages/statistic/index.js +8 -8
  226. package/packages/statistic/src/main.vue +204 -204
  227. package/packages/step/index.js +8 -8
  228. package/packages/steps/README.md +69 -69
  229. package/packages/steps/index.js +8 -8
  230. package/packages/steps/src/step.vue +184 -184
  231. package/packages/steps/src/steps.vue +68 -68
  232. package/packages/submenu/index.js +8 -8
  233. package/packages/switch/index.js +9 -9
  234. package/packages/switch/src/component.vue +174 -174
  235. package/packages/tab-pane/index.js +8 -8
  236. package/packages/table/index.js +8 -8
  237. package/packages/table/src/config.js +124 -124
  238. package/packages/table/src/dropdown.js +28 -28
  239. package/packages/table/src/filter-panel.vue +194 -194
  240. package/packages/table/src/layout-observer.js +68 -68
  241. package/packages/table/src/store/current.js +76 -76
  242. package/packages/table/src/store/expand.js +65 -65
  243. package/packages/table/src/store/helper.js +41 -41
  244. package/packages/table/src/store/index.js +147 -147
  245. package/packages/table/src/store/tree.js +209 -209
  246. package/packages/table/src/store/watcher.js +381 -381
  247. package/packages/table/src/table-body.js +469 -469
  248. package/packages/table/src/table-column.js +319 -319
  249. package/packages/table/src/table-footer.js +153 -153
  250. package/packages/table/src/table-header.js +511 -511
  251. package/packages/table/src/table-layout.js +249 -249
  252. package/packages/table/src/table-row.js +101 -101
  253. package/packages/table/src/table.vue +712 -712
  254. package/packages/table/src/util.js +273 -273
  255. package/packages/table-column/index.js +8 -8
  256. package/packages/tabs/index.js +8 -8
  257. package/packages/tabs/src/tab-bar.vue +57 -57
  258. package/packages/tabs/src/tab-nav.vue +294 -294
  259. package/packages/tabs/src/tab-pane.vue +56 -56
  260. package/packages/tabs/src/tabs.vue +191 -191
  261. package/packages/tag/index.js +8 -8
  262. package/packages/tag/src/tag.vue +58 -58
  263. package/packages/theme-chalk/README.md +33 -33
  264. package/packages/theme-chalk/lib/base.css +1 -1
  265. package/packages/theme-chalk/lib/icon.css +1 -1
  266. package/packages/theme-chalk/lib/index.css +1 -1
  267. package/packages/theme-chalk/package.json +35 -35
  268. package/packages/theme-chalk/src/.DS_Store +0 -0
  269. package/packages/theme-chalk/src/alert.scss +147 -147
  270. package/packages/theme-chalk/src/aside.scss +7 -7
  271. package/packages/theme-chalk/src/autocomplete.scss +80 -80
  272. package/packages/theme-chalk/src/avatar.scss +51 -51
  273. package/packages/theme-chalk/src/backtop.scss +22 -22
  274. package/packages/theme-chalk/src/badge.scss +57 -57
  275. package/packages/theme-chalk/src/base.scss +2 -2
  276. package/packages/theme-chalk/src/breadcrumb.scss +55 -55
  277. package/packages/theme-chalk/src/button.scss +262 -262
  278. package/packages/theme-chalk/src/calendar.scss +79 -79
  279. package/packages/theme-chalk/src/card.scss +32 -32
  280. package/packages/theme-chalk/src/carousel-item.scss +49 -49
  281. package/packages/theme-chalk/src/carousel.scss +161 -161
  282. package/packages/theme-chalk/src/cascader-panel.scss +120 -120
  283. package/packages/theme-chalk/src/cascader.scss +182 -182
  284. package/packages/theme-chalk/src/checkbox.scss +359 -359
  285. package/packages/theme-chalk/src/col.scss +155 -155
  286. package/packages/theme-chalk/src/collapse.scss +63 -63
  287. package/packages/theme-chalk/src/color-picker.scss +384 -384
  288. package/packages/theme-chalk/src/common/popup.scss +42 -42
  289. package/packages/theme-chalk/src/common/transition.scss +98 -98
  290. package/packages/theme-chalk/src/common/var.scss +1030 -1030
  291. package/packages/theme-chalk/src/container.scss +14 -14
  292. package/packages/theme-chalk/src/date-picker/date-picker.scss +97 -97
  293. package/packages/theme-chalk/src/date-picker/date-range-picker.scss +101 -101
  294. package/packages/theme-chalk/src/date-picker/date-table.scss +151 -151
  295. package/packages/theme-chalk/src/date-picker/month-table.scss +82 -82
  296. package/packages/theme-chalk/src/date-picker/picker-panel.scss +117 -117
  297. package/packages/theme-chalk/src/date-picker/picker.scss +197 -197
  298. package/packages/theme-chalk/src/date-picker/time-picker.scss +85 -85
  299. package/packages/theme-chalk/src/date-picker/time-range-picker.scss +31 -31
  300. package/packages/theme-chalk/src/date-picker/time-spinner.scss +110 -110
  301. package/packages/theme-chalk/src/date-picker/year-table.scss +51 -51
  302. package/packages/theme-chalk/src/date-picker.scss +11 -11
  303. package/packages/theme-chalk/src/descriptions-item.scss +42 -42
  304. package/packages/theme-chalk/src/descriptions.scss +111 -111
  305. package/packages/theme-chalk/src/dialog.scss +123 -123
  306. package/packages/theme-chalk/src/display.scss +12 -12
  307. package/packages/theme-chalk/src/divider.scss +46 -46
  308. package/packages/theme-chalk/src/drawer.scss +219 -219
  309. package/packages/theme-chalk/src/dropdown.scss +182 -182
  310. package/packages/theme-chalk/src/empty.scss +45 -45
  311. package/packages/theme-chalk/src/footer.scss +8 -8
  312. package/packages/theme-chalk/src/form.scss +167 -167
  313. package/packages/theme-chalk/src/header.scss +8 -8
  314. package/packages/theme-chalk/src/icon.scss +1342 -1167
  315. package/packages/theme-chalk/src/image.scss +179 -179
  316. package/packages/theme-chalk/src/input-number.scss +180 -180
  317. package/packages/theme-chalk/src/input.scss +360 -360
  318. package/packages/theme-chalk/src/link.scss +81 -81
  319. package/packages/theme-chalk/src/loading.scss +96 -96
  320. package/packages/theme-chalk/src/main.scss +12 -12
  321. package/packages/theme-chalk/src/menu.scss +289 -289
  322. package/packages/theme-chalk/src/message-box.scss +226 -226
  323. package/packages/theme-chalk/src/message.scss +120 -120
  324. package/packages/theme-chalk/src/mixins/_button.scss +81 -81
  325. package/packages/theme-chalk/src/mixins/config.scss +4 -4
  326. package/packages/theme-chalk/src/mixins/function.scss +44 -44
  327. package/packages/theme-chalk/src/mixins/mixins.scss +190 -190
  328. package/packages/theme-chalk/src/mixins/utils.scss +38 -38
  329. package/packages/theme-chalk/src/notification.scss +99 -99
  330. package/packages/theme-chalk/src/option-group.scss +42 -42
  331. package/packages/theme-chalk/src/option.scss +36 -36
  332. package/packages/theme-chalk/src/page-header.scss +41 -41
  333. package/packages/theme-chalk/src/pagination.scss +295 -295
  334. package/packages/theme-chalk/src/popconfirm.scss +16 -16
  335. package/packages/theme-chalk/src/popover.scss +40 -40
  336. package/packages/theme-chalk/src/popper.scss +100 -100
  337. package/packages/theme-chalk/src/progress.scss +141 -141
  338. package/packages/theme-chalk/src/radio-button.scss +113 -113
  339. package/packages/theme-chalk/src/radio-group.scss +9 -9
  340. package/packages/theme-chalk/src/radio.scss +199 -199
  341. package/packages/theme-chalk/src/rate.scss +49 -49
  342. package/packages/theme-chalk/src/reset.scss +79 -79
  343. package/packages/theme-chalk/src/result.scss +61 -61
  344. package/packages/theme-chalk/src/row.scss +43 -43
  345. package/packages/theme-chalk/src/scrollbar.scss +72 -72
  346. package/packages/theme-chalk/src/select-dropdown.scss +62 -62
  347. package/packages/theme-chalk/src/select.scss +152 -152
  348. package/packages/theme-chalk/src/skeleton-item.scss +84 -84
  349. package/packages/theme-chalk/src/skeleton.scss +40 -40
  350. package/packages/theme-chalk/src/slider.scss +250 -250
  351. package/packages/theme-chalk/src/spinner.scss +44 -44
  352. package/packages/theme-chalk/src/statistic.scss +38 -38
  353. package/packages/theme-chalk/src/step.scss +317 -317
  354. package/packages/theme-chalk/src/steps.scss +20 -20
  355. package/packages/theme-chalk/src/switch.scss +116 -116
  356. package/packages/theme-chalk/src/table-column.scss +96 -96
  357. package/packages/theme-chalk/src/table.scss +564 -564
  358. package/packages/theme-chalk/src/tabs.scss +602 -602
  359. package/packages/theme-chalk/src/tag.scss +163 -163
  360. package/packages/theme-chalk/src/time-picker.scss +8 -8
  361. package/packages/theme-chalk/src/time-select.scss +37 -37
  362. package/packages/theme-chalk/src/timeline-item.scss +86 -86
  363. package/packages/theme-chalk/src/timeline.scss +14 -14
  364. package/packages/theme-chalk/src/tooltip.scss +141 -141
  365. package/packages/theme-chalk/src/transfer.scss +227 -227
  366. package/packages/theme-chalk/src/tree.scss +123 -123
  367. package/packages/theme-chalk/src/upload.scss +603 -603
  368. package/packages/time-picker/index.js +8 -8
  369. package/packages/time-select/index.js +8 -8
  370. package/packages/timeline/index.js +8 -8
  371. package/packages/timeline/src/item.vue +73 -73
  372. package/packages/timeline/src/main.vue +33 -33
  373. package/packages/timeline-item/index.js +8 -8
  374. package/packages/tooltip/index.js +8 -8
  375. package/packages/tooltip/src/main.js +242 -242
  376. package/packages/transfer/index.js +8 -8
  377. package/packages/transfer/src/main.vue +231 -231
  378. package/packages/transfer/src/transfer-panel.vue +251 -251
  379. package/packages/tree/index.js +8 -8
  380. package/packages/tree/src/model/node.js +484 -484
  381. package/packages/tree/src/model/tree-store.js +340 -340
  382. package/packages/tree/src/model/util.js +27 -27
  383. package/packages/tree/src/tree-node.vue +279 -279
  384. package/packages/tree/src/tree.vue +496 -496
  385. package/packages/upload/index.js +8 -8
  386. package/packages/upload/src/ajax.js +85 -85
  387. package/packages/upload/src/index.vue +338 -338
  388. package/packages/upload/src/upload-dragger.vue +70 -70
  389. package/packages/upload/src/upload-list.vue +105 -105
  390. package/packages/upload/src/upload.vue +211 -211
  391. package/src/directives/mousewheel.js +18 -18
  392. package/src/directives/repeat-click.js +26 -26
  393. package/src/index.js +259 -259
  394. package/src/locale/format.js +46 -46
  395. package/src/locale/index.js +48 -48
  396. package/src/locale/lang/af-ZA.js +123 -123
  397. package/src/locale/lang/ar.js +122 -122
  398. package/src/locale/lang/az.js +126 -126
  399. package/src/locale/lang/bg.js +123 -123
  400. package/src/locale/lang/bn.js +126 -126
  401. package/src/locale/lang/ca.js +122 -122
  402. package/src/locale/lang/cs-CZ.js +125 -125
  403. package/src/locale/lang/da.js +122 -122
  404. package/src/locale/lang/de.js +124 -124
  405. package/src/locale/lang/ee.js +123 -123
  406. package/src/locale/lang/el.js +123 -123
  407. package/src/locale/lang/en.js +123 -123
  408. package/src/locale/lang/eo.js +123 -123
  409. package/src/locale/lang/es.js +122 -122
  410. package/src/locale/lang/eu.js +123 -123
  411. package/src/locale/lang/fa.js +123 -123
  412. package/src/locale/lang/fi.js +123 -123
  413. package/src/locale/lang/fr.js +122 -122
  414. package/src/locale/lang/he.js +123 -123
  415. package/src/locale/lang/hr.js +123 -123
  416. package/src/locale/lang/hu.js +122 -122
  417. package/src/locale/lang/hy-AM.js +123 -123
  418. package/src/locale/lang/id.js +123 -123
  419. package/src/locale/lang/is.js +124 -124
  420. package/src/locale/lang/it.js +122 -122
  421. package/src/locale/lang/ja.js +123 -123
  422. package/src/locale/lang/kg.js +123 -123
  423. package/src/locale/lang/km.js +123 -123
  424. package/src/locale/lang/ko.js +123 -123
  425. package/src/locale/lang/ku.js +123 -123
  426. package/src/locale/lang/kz.js +123 -123
  427. package/src/locale/lang/lo-LA.js +126 -126
  428. package/src/locale/lang/lt.js +123 -123
  429. package/src/locale/lang/lv.js +123 -123
  430. package/src/locale/lang/mn.js +123 -123
  431. package/src/locale/lang/ms.js +122 -122
  432. package/src/locale/lang/nb-NO.js +122 -122
  433. package/src/locale/lang/nl.js +123 -123
  434. package/src/locale/lang/pl.js +123 -123
  435. package/src/locale/lang/pt-br.js +123 -123
  436. package/src/locale/lang/pt.js +123 -123
  437. package/src/locale/lang/ro.js +123 -123
  438. package/src/locale/lang/ru-RU.js +123 -123
  439. package/src/locale/lang/si.js +123 -123
  440. package/src/locale/lang/sk.js +125 -125
  441. package/src/locale/lang/sl.js +123 -123
  442. package/src/locale/lang/sr-Latn.js +123 -123
  443. package/src/locale/lang/sr.js +123 -123
  444. package/src/locale/lang/sv-SE.js +123 -123
  445. package/src/locale/lang/sw.js +123 -123
  446. package/src/locale/lang/ta.js +122 -122
  447. package/src/locale/lang/th.js +123 -123
  448. package/src/locale/lang/tk.js +123 -123
  449. package/src/locale/lang/tr-TR.js +123 -123
  450. package/src/locale/lang/ua.js +123 -123
  451. package/src/locale/lang/ug-CN.js +123 -123
  452. package/src/locale/lang/uz-UZ.js +123 -123
  453. package/src/locale/lang/vi.js +123 -123
  454. package/src/locale/lang/zh-CN.js +123 -123
  455. package/src/locale/lang/zh-TW.js +123 -123
  456. package/src/mixins/emitter.js +33 -33
  457. package/src/mixins/focus.js +9 -9
  458. package/src/mixins/locale.js +9 -9
  459. package/src/mixins/migrating.js +54 -54
  460. package/src/transitions/collapse-transition.js +77 -77
  461. package/src/utils/after-leave.js +27 -27
  462. package/src/utils/aria-dialog.js +90 -90
  463. package/src/utils/aria-utils.js +122 -122
  464. package/src/utils/clickoutside.js +76 -76
  465. package/src/utils/date-util.js +282 -282
  466. package/src/utils/date.js +368 -368
  467. package/src/utils/dom.js +227 -227
  468. package/src/utils/lodash.js +18075 -18075
  469. package/src/utils/menu/aria-menubar.js +14 -14
  470. package/src/utils/menu/aria-menuitem.js +49 -49
  471. package/src/utils/menu/aria-submenu.js +59 -59
  472. package/src/utils/merge.js +15 -15
  473. package/src/utils/popper.js +1276 -1276
  474. package/src/utils/popup/index.js +218 -218
  475. package/src/utils/popup/popup-manager.js +194 -194
  476. package/src/utils/resize-event.js +36 -36
  477. package/src/utils/scroll-into-view.js +27 -27
  478. package/src/utils/scrollbar-width.js +29 -29
  479. package/src/utils/shared.js +7 -7
  480. package/src/utils/types.js +40 -40
  481. package/src/utils/util.js +245 -245
  482. package/src/utils/vdom.js +5 -5
  483. package/src/utils/vue-popper.js +198 -198
  484. package/types/alert.d.ts +31 -31
  485. package/types/aside.d.ts +7 -7
  486. package/types/autocomplete.d.ts +78 -78
  487. package/types/avatar.d.ts +20 -20
  488. package/types/backtop.d.ts +16 -16
  489. package/types/badge.d.ts +16 -16
  490. package/types/breadcrumb-item.d.ts +10 -10
  491. package/types/breadcrumb.d.ts +10 -10
  492. package/types/button-group.d.ts +4 -4
  493. package/types/button.d.ts +37 -37
  494. package/types/calendar.d.ts +15 -15
  495. package/types/card.d.ts +26 -26
  496. package/types/carousel-item.d.ts +10 -10
  497. package/types/carousel.d.ts +57 -57
  498. package/types/cascader-panel.d.ts +72 -72
  499. package/types/cascader.d.ts +65 -65
  500. package/types/checkbox-button.d.ts +22 -22
  501. package/types/checkbox-group.d.ts +22 -22
  502. package/types/checkbox.d.ts +34 -34
  503. package/types/col.d.ts +46 -46
  504. package/types/collapse-item.d.ts +26 -26
  505. package/types/collapse.d.ts +10 -10
  506. package/types/color-picker.d.ts +21 -21
  507. package/types/component.d.ts +13 -13
  508. package/types/container.d.ts +7 -7
  509. package/types/date-picker.d.ts +124 -124
  510. package/types/descriptions-item.d.ts +37 -37
  511. package/types/descriptions.d.ts +52 -52
  512. package/types/dialog.d.ts +62 -62
  513. package/types/divider.d.ts +12 -12
  514. package/types/drawer.d.ts +63 -63
  515. package/types/dropdown-item.d.ts +16 -16
  516. package/types/dropdown-menu.d.ts +4 -4
  517. package/types/dropdown.d.ts +38 -38
  518. package/types/element-ui.d.ts +381 -381
  519. package/types/empty.d.ts +31 -31
  520. package/types/footer.d.ts +7 -7
  521. package/types/form-item.d.ts +37 -37
  522. package/types/form.d.ts +82 -82
  523. package/types/header.d.ts +7 -7
  524. package/types/icon.d.ts +7 -7
  525. package/types/image.d.ts +43 -43
  526. package/types/index.d.ts +4 -4
  527. package/types/infinite-scroll.d.ts +5 -5
  528. package/types/input-number.d.ts +47 -47
  529. package/types/input.d.ts +107 -107
  530. package/types/link.d.ts +25 -25
  531. package/types/loading.d.ts +62 -62
  532. package/types/main.d.ts +4 -4
  533. package/types/menu-item-group.d.ts +7 -7
  534. package/types/menu-item.d.ts +10 -10
  535. package/types/menu.d.ts +46 -46
  536. package/types/message-box.d.ts +176 -176
  537. package/types/message.d.ts +90 -90
  538. package/types/notification.d.ts +84 -84
  539. package/types/option-group.d.ts +10 -10
  540. package/types/option.d.ts +13 -13
  541. package/types/page-header.d.ts +10 -10
  542. package/types/pagination.d.ts +43 -43
  543. package/types/popconfirm.d.ts +29 -29
  544. package/types/popover.d.ts +71 -71
  545. package/types/progress.d.ts +37 -37
  546. package/types/radio-button.d.ts +16 -16
  547. package/types/radio-group.d.ts +18 -18
  548. package/types/radio.d.ts +19 -19
  549. package/types/rate.d.ts +64 -64
  550. package/types/result.d.ts +33 -33
  551. package/types/row.d.ts +25 -25
  552. package/types/select.d.ts +90 -90
  553. package/types/skeleton-item.d.ts +7 -7
  554. package/types/skeleton.d.ts +33 -33
  555. package/types/slider.d.ts +68 -68
  556. package/types/spinner.d.ts +16 -16
  557. package/types/statistic.d.ts +37 -37
  558. package/types/step.d.ts +34 -34
  559. package/types/steps.d.ts +28 -28
  560. package/types/submenu.d.ts +22 -22
  561. package/types/switch.d.ts +43 -43
  562. package/types/tab-pane.d.ts +19 -19
  563. package/types/table-column.d.ts +117 -117
  564. package/types/table.d.ts +177 -177
  565. package/types/tabs.d.ts +31 -31
  566. package/types/tag.d.ts +28 -28
  567. package/types/time-picker.d.ts +63 -63
  568. package/types/time-select.d.ts +56 -56
  569. package/types/timeline-item.d.ts +20 -20
  570. package/types/timeline.d.ts +6 -6
  571. package/types/tooltip.d.ts +52 -52
  572. package/types/transfer.d.ts +73 -73
  573. package/types/tree.d.ts +266 -266
  574. package/types/upload.d.ts +124 -124
  575. package/web-types.json +4195 -4195
@@ -1,381 +1,381 @@
1
- import Vue from 'vue';
2
- import merge from 'element-sim/src/utils/merge';
3
- import { getKeysMap, getRowIdentity, getColumnById, getColumnByKey, orderBy, toggleRowStatus } from '../util';
4
- import expand from './expand';
5
- import current from './current';
6
- import tree from './tree';
7
-
8
- const sortData = (data, states) => {
9
- const sortingColumn = states.sortingColumn;
10
- if (!sortingColumn || typeof sortingColumn.sortable === 'string') {
11
- return data;
12
- }
13
- return orderBy(data, states.sortProp, states.sortOrder, sortingColumn.sortMethod, sortingColumn.sortBy);
14
- };
15
-
16
- const doFlattenColumns = (columns) => {
17
- const result = [];
18
- columns.forEach((column) => {
19
- if (column.children) {
20
- result.push.apply(result, doFlattenColumns(column.children));
21
- } else {
22
- result.push(column);
23
- }
24
- });
25
- return result;
26
- };
27
-
28
- export default Vue.extend({
29
- data() {
30
- return {
31
- states: {
32
- // 3.0 版本后要求必须设置该属性
33
- rowKey: null,
34
-
35
- // 渲染的数据来源,是对 table 中的 data 过滤排序后的结果
36
- data: [],
37
-
38
- // 是否包含固定列
39
- isComplex: false,
40
-
41
- // 列
42
- _columns: [], // 不可响应的
43
- originColumns: [],
44
- columns: [],
45
- fixedColumns: [],
46
- rightFixedColumns: [],
47
- leafColumns: [],
48
- fixedLeafColumns: [],
49
- rightFixedLeafColumns: [],
50
- leafColumnsLength: 0,
51
- fixedLeafColumnsLength: 0,
52
- rightFixedLeafColumnsLength: 0,
53
-
54
- // 选择
55
- isAllSelected: false,
56
- selection: [],
57
- reserveSelection: false,
58
- selectOnIndeterminate: false,
59
- selectable: null,
60
-
61
- // 过滤
62
- filters: {}, // 不可响应的
63
- filteredData: null,
64
-
65
- // 排序
66
- sortingColumn: null,
67
- sortProp: null,
68
- sortOrder: null,
69
-
70
- hoverRow: null
71
- }
72
- };
73
- },
74
-
75
- mixins: [expand, current, tree],
76
-
77
- methods: {
78
- // 检查 rowKey 是否存在
79
- assertRowKey() {
80
- const rowKey = this.states.rowKey;
81
- if (!rowKey) throw new Error('[ElTable] prop row-key is required');
82
- },
83
-
84
- // 更新列
85
- updateColumns() {
86
- const states = this.states;
87
- const _columns = states._columns || [];
88
- states.fixedColumns = _columns.filter((column) => column.fixed === true || column.fixed === 'left');
89
- states.rightFixedColumns = _columns.filter((column) => column.fixed === 'right');
90
-
91
- if (states.fixedColumns.length > 0 && _columns[0] && _columns[0].type === 'selection' && !_columns[0].fixed) {
92
- _columns[0].fixed = true;
93
- states.fixedColumns.unshift(_columns[0]);
94
- }
95
-
96
- const notFixedColumns = _columns.filter(column => !column.fixed);
97
- states.originColumns = [].concat(states.fixedColumns).concat(notFixedColumns).concat(states.rightFixedColumns);
98
-
99
- const leafColumns = doFlattenColumns(notFixedColumns);
100
- const fixedLeafColumns = doFlattenColumns(states.fixedColumns);
101
- const rightFixedLeafColumns = doFlattenColumns(states.rightFixedColumns);
102
-
103
- states.leafColumnsLength = leafColumns.length;
104
- states.fixedLeafColumnsLength = fixedLeafColumns.length;
105
- states.rightFixedLeafColumnsLength = rightFixedLeafColumns.length;
106
-
107
- states.columns = [].concat(fixedLeafColumns).concat(leafColumns).concat(rightFixedLeafColumns);
108
- states.isComplex = states.fixedColumns.length > 0 || states.rightFixedColumns.length > 0;
109
- },
110
-
111
- // 更新 DOM
112
- scheduleLayout(needUpdateColumns) {
113
- if (needUpdateColumns) {
114
- this.updateColumns();
115
- }
116
- this.table.debouncedUpdateLayout();
117
- },
118
-
119
- // 选择
120
- isSelected(row) {
121
- const { selection = [] } = this.states;
122
- return selection.indexOf(row) > -1;
123
- },
124
-
125
- clearSelection() {
126
- const states = this.states;
127
- states.isAllSelected = false;
128
- const oldSelection = states.selection;
129
- if (oldSelection.length) {
130
- states.selection = [];
131
- this.table.$emit('selection-change', []);
132
- }
133
- },
134
-
135
- cleanSelection() {
136
- const states = this.states;
137
- const { data, rowKey, selection } = states;
138
- let deleted;
139
- if (rowKey) {
140
- deleted = [];
141
- const selectedMap = getKeysMap(selection, rowKey);
142
- const dataMap = getKeysMap(data, rowKey);
143
- for (let key in selectedMap) {
144
- if (selectedMap.hasOwnProperty(key) && !dataMap[key]) {
145
- deleted.push(selectedMap[key].row);
146
- }
147
- }
148
- } else {
149
- deleted = selection.filter(item => data.indexOf(item) === -1);
150
- }
151
- if (deleted.length) {
152
- const newSelection = selection.filter(item => deleted.indexOf(item) === -1);
153
- states.selection = newSelection;
154
- this.table.$emit('selection-change', newSelection.slice());
155
- }
156
- },
157
-
158
- toggleRowSelection(row, selected, emitChange = true) {
159
- const changed = toggleRowStatus(this.states.selection, row, selected);
160
- if (changed) {
161
- const newSelection = (this.states.selection || []).slice();
162
- // 调用 API 修改选中值,不触发 select 事件
163
- if (emitChange) {
164
- this.table.$emit('select', newSelection, row);
165
- }
166
- this.table.$emit('selection-change', newSelection);
167
- }
168
- },
169
-
170
- _toggleAllSelection() {
171
- const states = this.states;
172
- const { data = [], selection } = states;
173
- // when only some rows are selected (but not all), select or deselect all of them
174
- // depending on the value of selectOnIndeterminate
175
- const value = states.selectOnIndeterminate
176
- ? !states.isAllSelected
177
- : !(states.isAllSelected || selection.length);
178
- states.isAllSelected = value;
179
-
180
- let selectionChanged = false;
181
- data.forEach((row, index) => {
182
- if (states.selectable) {
183
- if (states.selectable.call(null, row, index) && toggleRowStatus(selection, row, value)) {
184
- selectionChanged = true;
185
- }
186
- } else {
187
- if (toggleRowStatus(selection, row, value)) {
188
- selectionChanged = true;
189
- }
190
- }
191
- });
192
-
193
- if (selectionChanged) {
194
- this.table.$emit('selection-change', selection ? selection.slice() : []);
195
- }
196
- this.table.$emit('select-all', selection);
197
- },
198
-
199
- updateSelectionByRowKey() {
200
- const states = this.states;
201
- const { selection, rowKey, data } = states;
202
- const selectedMap = getKeysMap(selection, rowKey);
203
- data.forEach(row => {
204
- const rowId = getRowIdentity(row, rowKey);
205
- const rowInfo = selectedMap[rowId];
206
- if (rowInfo) {
207
- selection[rowInfo.index] = row;
208
- }
209
- });
210
- },
211
-
212
- updateAllSelected() {
213
- const states = this.states;
214
- const { selection, rowKey, selectable } = states;
215
- // data 为 null 时,解构时的默认值会被忽略
216
- const data = states.data || [];
217
- if (data.length === 0) {
218
- states.isAllSelected = false;
219
- return;
220
- }
221
-
222
- let selectedMap;
223
- if (rowKey) {
224
- selectedMap = getKeysMap(selection, rowKey);
225
- }
226
- const isSelected = function(row) {
227
- if (selectedMap) {
228
- return !!selectedMap[getRowIdentity(row, rowKey)];
229
- } else {
230
- return selection.indexOf(row) !== -1;
231
- }
232
- };
233
- let isAllSelected = true;
234
- let selectedCount = 0;
235
- for (let i = 0, j = data.length; i < j; i++) {
236
- const item = data[i];
237
- const isRowSelectable = selectable && selectable.call(null, item, i);
238
- if (!isSelected(item)) {
239
- if (!selectable || isRowSelectable) {
240
- isAllSelected = false;
241
- break;
242
- }
243
- } else {
244
- selectedCount++;
245
- }
246
- }
247
-
248
- if (selectedCount === 0) isAllSelected = false;
249
- states.isAllSelected = isAllSelected;
250
- },
251
-
252
- // 过滤与排序
253
- updateFilters(columns, values) {
254
- if (!Array.isArray(columns)) {
255
- columns = [columns];
256
- }
257
- const states = this.states;
258
- const filters = {};
259
- columns.forEach(col => {
260
- states.filters[col.id] = values;
261
- filters[col.columnKey || col.id] = values;
262
- });
263
-
264
- return filters;
265
- },
266
-
267
- updateSort(column, prop, order) {
268
- if (this.states.sortingColumn && this.states.sortingColumn !== column) {
269
- this.states.sortingColumn.order = null;
270
- }
271
- this.states.sortingColumn = column;
272
- this.states.sortProp = prop;
273
- this.states.sortOrder = order;
274
- },
275
-
276
- execFilter() {
277
- const states = this.states;
278
- const { _data, filters } = states;
279
- let data = _data;
280
-
281
- Object.keys(filters).forEach((columnId) => {
282
- const values = states.filters[columnId];
283
- if (!values || values.length === 0) return;
284
- const column = getColumnById(this.states, columnId);
285
- if (column && column.filterMethod) {
286
- data = data.filter((row) => {
287
- return values.some(value => column.filterMethod.call(null, value, row, column));
288
- });
289
- }
290
- });
291
-
292
- states.filteredData = data;
293
- },
294
-
295
- execSort() {
296
- const states = this.states;
297
- states.data = sortData(states.filteredData, states);
298
- },
299
-
300
- // 根据 filters 与 sort 去过滤 data
301
- execQuery(ignore) {
302
- if (!(ignore && ignore.filter)) {
303
- this.execFilter();
304
- }
305
- this.execSort();
306
- },
307
-
308
- clearFilter(columnKeys) {
309
- const states = this.states;
310
- const { tableHeader, fixedTableHeader, rightFixedTableHeader } = this.table.$refs;
311
-
312
- let panels = {};
313
- if (tableHeader) panels = merge(panels, tableHeader.filterPanels);
314
- if (fixedTableHeader) panels = merge(panels, fixedTableHeader.filterPanels);
315
- if (rightFixedTableHeader) panels = merge(panels, rightFixedTableHeader.filterPanels);
316
-
317
- const keys = Object.keys(panels);
318
- if (!keys.length) return;
319
-
320
- if (typeof columnKeys === 'string') {
321
- columnKeys = [columnKeys];
322
- }
323
-
324
- if (Array.isArray(columnKeys)) {
325
- const columns = columnKeys.map(key => getColumnByKey(states, key));
326
- keys.forEach(key => {
327
- const column = columns.find(col => col.id === key);
328
- if (column) {
329
- // TODO: 优化这里的代码
330
- panels[key].filteredValue = [];
331
- }
332
- });
333
- this.commit('filterChange', {
334
- column: columns,
335
- values: [],
336
- silent: true,
337
- multi: true
338
- });
339
- } else {
340
- keys.forEach(key => {
341
- // TODO: 优化这里的代码
342
- panels[key].filteredValue = [];
343
- });
344
-
345
- states.filters = {};
346
- this.commit('filterChange', {
347
- column: {},
348
- values: [],
349
- silent: true
350
- });
351
- }
352
- },
353
-
354
- clearSort() {
355
- const states = this.states;
356
- if (!states.sortingColumn) return;
357
-
358
- this.updateSort(null, null, null);
359
- this.commit('changeSortCondition', {
360
- silent: true
361
- });
362
- },
363
-
364
- // 适配层,expand-row-keys 在 Expand 与 TreeTable 中都有使用
365
- setExpandRowKeysAdapter(val) {
366
- // 这里会触发额外的计算,但为了兼容性,暂时这么做
367
- this.setExpandRowKeys(val);
368
- this.updateTreeExpandKeys(val);
369
- },
370
-
371
- // 展开行与 TreeTable 都要使用
372
- toggleRowExpansionAdapter(row, expanded) {
373
- const hasExpandColumn = this.states.columns.some(({ type }) => type === 'expand');
374
- if (hasExpandColumn) {
375
- this.toggleRowExpansion(row, expanded);
376
- } else {
377
- this.toggleTreeExpansion(row, expanded);
378
- }
379
- }
380
- }
381
- });
1
+ import Vue from 'vue';
2
+ import merge from 'element-sim/src/utils/merge';
3
+ import { getKeysMap, getRowIdentity, getColumnById, getColumnByKey, orderBy, toggleRowStatus } from '../util';
4
+ import expand from './expand';
5
+ import current from './current';
6
+ import tree from './tree';
7
+
8
+ const sortData = (data, states) => {
9
+ const sortingColumn = states.sortingColumn;
10
+ if (!sortingColumn || typeof sortingColumn.sortable === 'string') {
11
+ return data;
12
+ }
13
+ return orderBy(data, states.sortProp, states.sortOrder, sortingColumn.sortMethod, sortingColumn.sortBy);
14
+ };
15
+
16
+ const doFlattenColumns = (columns) => {
17
+ const result = [];
18
+ columns.forEach((column) => {
19
+ if (column.children) {
20
+ result.push.apply(result, doFlattenColumns(column.children));
21
+ } else {
22
+ result.push(column);
23
+ }
24
+ });
25
+ return result;
26
+ };
27
+
28
+ export default Vue.extend({
29
+ data() {
30
+ return {
31
+ states: {
32
+ // 3.0 版本后要求必须设置该属性
33
+ rowKey: null,
34
+
35
+ // 渲染的数据来源,是对 table 中的 data 过滤排序后的结果
36
+ data: [],
37
+
38
+ // 是否包含固定列
39
+ isComplex: false,
40
+
41
+ // 列
42
+ _columns: [], // 不可响应的
43
+ originColumns: [],
44
+ columns: [],
45
+ fixedColumns: [],
46
+ rightFixedColumns: [],
47
+ leafColumns: [],
48
+ fixedLeafColumns: [],
49
+ rightFixedLeafColumns: [],
50
+ leafColumnsLength: 0,
51
+ fixedLeafColumnsLength: 0,
52
+ rightFixedLeafColumnsLength: 0,
53
+
54
+ // 选择
55
+ isAllSelected: false,
56
+ selection: [],
57
+ reserveSelection: false,
58
+ selectOnIndeterminate: false,
59
+ selectable: null,
60
+
61
+ // 过滤
62
+ filters: {}, // 不可响应的
63
+ filteredData: null,
64
+
65
+ // 排序
66
+ sortingColumn: null,
67
+ sortProp: null,
68
+ sortOrder: null,
69
+
70
+ hoverRow: null
71
+ }
72
+ };
73
+ },
74
+
75
+ mixins: [expand, current, tree],
76
+
77
+ methods: {
78
+ // 检查 rowKey 是否存在
79
+ assertRowKey() {
80
+ const rowKey = this.states.rowKey;
81
+ if (!rowKey) throw new Error('[ElTable] prop row-key is required');
82
+ },
83
+
84
+ // 更新列
85
+ updateColumns() {
86
+ const states = this.states;
87
+ const _columns = states._columns || [];
88
+ states.fixedColumns = _columns.filter((column) => column.fixed === true || column.fixed === 'left');
89
+ states.rightFixedColumns = _columns.filter((column) => column.fixed === 'right');
90
+
91
+ if (states.fixedColumns.length > 0 && _columns[0] && _columns[0].type === 'selection' && !_columns[0].fixed) {
92
+ _columns[0].fixed = true;
93
+ states.fixedColumns.unshift(_columns[0]);
94
+ }
95
+
96
+ const notFixedColumns = _columns.filter(column => !column.fixed);
97
+ states.originColumns = [].concat(states.fixedColumns).concat(notFixedColumns).concat(states.rightFixedColumns);
98
+
99
+ const leafColumns = doFlattenColumns(notFixedColumns);
100
+ const fixedLeafColumns = doFlattenColumns(states.fixedColumns);
101
+ const rightFixedLeafColumns = doFlattenColumns(states.rightFixedColumns);
102
+
103
+ states.leafColumnsLength = leafColumns.length;
104
+ states.fixedLeafColumnsLength = fixedLeafColumns.length;
105
+ states.rightFixedLeafColumnsLength = rightFixedLeafColumns.length;
106
+
107
+ states.columns = [].concat(fixedLeafColumns).concat(leafColumns).concat(rightFixedLeafColumns);
108
+ states.isComplex = states.fixedColumns.length > 0 || states.rightFixedColumns.length > 0;
109
+ },
110
+
111
+ // 更新 DOM
112
+ scheduleLayout(needUpdateColumns) {
113
+ if (needUpdateColumns) {
114
+ this.updateColumns();
115
+ }
116
+ this.table.debouncedUpdateLayout();
117
+ },
118
+
119
+ // 选择
120
+ isSelected(row) {
121
+ const { selection = [] } = this.states;
122
+ return selection.indexOf(row) > -1;
123
+ },
124
+
125
+ clearSelection() {
126
+ const states = this.states;
127
+ states.isAllSelected = false;
128
+ const oldSelection = states.selection;
129
+ if (oldSelection.length) {
130
+ states.selection = [];
131
+ this.table.$emit('selection-change', []);
132
+ }
133
+ },
134
+
135
+ cleanSelection() {
136
+ const states = this.states;
137
+ const { data, rowKey, selection } = states;
138
+ let deleted;
139
+ if (rowKey) {
140
+ deleted = [];
141
+ const selectedMap = getKeysMap(selection, rowKey);
142
+ const dataMap = getKeysMap(data, rowKey);
143
+ for (let key in selectedMap) {
144
+ if (selectedMap.hasOwnProperty(key) && !dataMap[key]) {
145
+ deleted.push(selectedMap[key].row);
146
+ }
147
+ }
148
+ } else {
149
+ deleted = selection.filter(item => data.indexOf(item) === -1);
150
+ }
151
+ if (deleted.length) {
152
+ const newSelection = selection.filter(item => deleted.indexOf(item) === -1);
153
+ states.selection = newSelection;
154
+ this.table.$emit('selection-change', newSelection.slice());
155
+ }
156
+ },
157
+
158
+ toggleRowSelection(row, selected, emitChange = true) {
159
+ const changed = toggleRowStatus(this.states.selection, row, selected);
160
+ if (changed) {
161
+ const newSelection = (this.states.selection || []).slice();
162
+ // 调用 API 修改选中值,不触发 select 事件
163
+ if (emitChange) {
164
+ this.table.$emit('select', newSelection, row);
165
+ }
166
+ this.table.$emit('selection-change', newSelection);
167
+ }
168
+ },
169
+
170
+ _toggleAllSelection() {
171
+ const states = this.states;
172
+ const { data = [], selection } = states;
173
+ // when only some rows are selected (but not all), select or deselect all of them
174
+ // depending on the value of selectOnIndeterminate
175
+ const value = states.selectOnIndeterminate
176
+ ? !states.isAllSelected
177
+ : !(states.isAllSelected || selection.length);
178
+ states.isAllSelected = value;
179
+
180
+ let selectionChanged = false;
181
+ data.forEach((row, index) => {
182
+ if (states.selectable) {
183
+ if (states.selectable.call(null, row, index) && toggleRowStatus(selection, row, value)) {
184
+ selectionChanged = true;
185
+ }
186
+ } else {
187
+ if (toggleRowStatus(selection, row, value)) {
188
+ selectionChanged = true;
189
+ }
190
+ }
191
+ });
192
+
193
+ if (selectionChanged) {
194
+ this.table.$emit('selection-change', selection ? selection.slice() : []);
195
+ }
196
+ this.table.$emit('select-all', selection);
197
+ },
198
+
199
+ updateSelectionByRowKey() {
200
+ const states = this.states;
201
+ const { selection, rowKey, data } = states;
202
+ const selectedMap = getKeysMap(selection, rowKey);
203
+ data.forEach(row => {
204
+ const rowId = getRowIdentity(row, rowKey);
205
+ const rowInfo = selectedMap[rowId];
206
+ if (rowInfo) {
207
+ selection[rowInfo.index] = row;
208
+ }
209
+ });
210
+ },
211
+
212
+ updateAllSelected() {
213
+ const states = this.states;
214
+ const { selection, rowKey, selectable } = states;
215
+ // data 为 null 时,解构时的默认值会被忽略
216
+ const data = states.data || [];
217
+ if (data.length === 0) {
218
+ states.isAllSelected = false;
219
+ return;
220
+ }
221
+
222
+ let selectedMap;
223
+ if (rowKey) {
224
+ selectedMap = getKeysMap(selection, rowKey);
225
+ }
226
+ const isSelected = function(row) {
227
+ if (selectedMap) {
228
+ return !!selectedMap[getRowIdentity(row, rowKey)];
229
+ } else {
230
+ return selection.indexOf(row) !== -1;
231
+ }
232
+ };
233
+ let isAllSelected = true;
234
+ let selectedCount = 0;
235
+ for (let i = 0, j = data.length; i < j; i++) {
236
+ const item = data[i];
237
+ const isRowSelectable = selectable && selectable.call(null, item, i);
238
+ if (!isSelected(item)) {
239
+ if (!selectable || isRowSelectable) {
240
+ isAllSelected = false;
241
+ break;
242
+ }
243
+ } else {
244
+ selectedCount++;
245
+ }
246
+ }
247
+
248
+ if (selectedCount === 0) isAllSelected = false;
249
+ states.isAllSelected = isAllSelected;
250
+ },
251
+
252
+ // 过滤与排序
253
+ updateFilters(columns, values) {
254
+ if (!Array.isArray(columns)) {
255
+ columns = [columns];
256
+ }
257
+ const states = this.states;
258
+ const filters = {};
259
+ columns.forEach(col => {
260
+ states.filters[col.id] = values;
261
+ filters[col.columnKey || col.id] = values;
262
+ });
263
+
264
+ return filters;
265
+ },
266
+
267
+ updateSort(column, prop, order) {
268
+ if (this.states.sortingColumn && this.states.sortingColumn !== column) {
269
+ this.states.sortingColumn.order = null;
270
+ }
271
+ this.states.sortingColumn = column;
272
+ this.states.sortProp = prop;
273
+ this.states.sortOrder = order;
274
+ },
275
+
276
+ execFilter() {
277
+ const states = this.states;
278
+ const { _data, filters } = states;
279
+ let data = _data;
280
+
281
+ Object.keys(filters).forEach((columnId) => {
282
+ const values = states.filters[columnId];
283
+ if (!values || values.length === 0) return;
284
+ const column = getColumnById(this.states, columnId);
285
+ if (column && column.filterMethod) {
286
+ data = data.filter((row) => {
287
+ return values.some(value => column.filterMethod.call(null, value, row, column));
288
+ });
289
+ }
290
+ });
291
+
292
+ states.filteredData = data;
293
+ },
294
+
295
+ execSort() {
296
+ const states = this.states;
297
+ states.data = sortData(states.filteredData, states);
298
+ },
299
+
300
+ // 根据 filters 与 sort 去过滤 data
301
+ execQuery(ignore) {
302
+ if (!(ignore && ignore.filter)) {
303
+ this.execFilter();
304
+ }
305
+ this.execSort();
306
+ },
307
+
308
+ clearFilter(columnKeys) {
309
+ const states = this.states;
310
+ const { tableHeader, fixedTableHeader, rightFixedTableHeader } = this.table.$refs;
311
+
312
+ let panels = {};
313
+ if (tableHeader) panels = merge(panels, tableHeader.filterPanels);
314
+ if (fixedTableHeader) panels = merge(panels, fixedTableHeader.filterPanels);
315
+ if (rightFixedTableHeader) panels = merge(panels, rightFixedTableHeader.filterPanels);
316
+
317
+ const keys = Object.keys(panels);
318
+ if (!keys.length) return;
319
+
320
+ if (typeof columnKeys === 'string') {
321
+ columnKeys = [columnKeys];
322
+ }
323
+
324
+ if (Array.isArray(columnKeys)) {
325
+ const columns = columnKeys.map(key => getColumnByKey(states, key));
326
+ keys.forEach(key => {
327
+ const column = columns.find(col => col.id === key);
328
+ if (column) {
329
+ // TODO: 优化这里的代码
330
+ panels[key].filteredValue = [];
331
+ }
332
+ });
333
+ this.commit('filterChange', {
334
+ column: columns,
335
+ values: [],
336
+ silent: true,
337
+ multi: true
338
+ });
339
+ } else {
340
+ keys.forEach(key => {
341
+ // TODO: 优化这里的代码
342
+ panels[key].filteredValue = [];
343
+ });
344
+
345
+ states.filters = {};
346
+ this.commit('filterChange', {
347
+ column: {},
348
+ values: [],
349
+ silent: true
350
+ });
351
+ }
352
+ },
353
+
354
+ clearSort() {
355
+ const states = this.states;
356
+ if (!states.sortingColumn) return;
357
+
358
+ this.updateSort(null, null, null);
359
+ this.commit('changeSortCondition', {
360
+ silent: true
361
+ });
362
+ },
363
+
364
+ // 适配层,expand-row-keys 在 Expand 与 TreeTable 中都有使用
365
+ setExpandRowKeysAdapter(val) {
366
+ // 这里会触发额外的计算,但为了兼容性,暂时这么做
367
+ this.setExpandRowKeys(val);
368
+ this.updateTreeExpandKeys(val);
369
+ },
370
+
371
+ // 展开行与 TreeTable 都要使用
372
+ toggleRowExpansionAdapter(row, expanded) {
373
+ const hasExpandColumn = this.states.columns.some(({ type }) => type === 'expand');
374
+ if (hasExpandColumn) {
375
+ this.toggleRowExpansion(row, expanded);
376
+ } else {
377
+ this.toggleTreeExpansion(row, expanded);
378
+ }
379
+ }
380
+ }
381
+ });