element-sim 1.1.8 → 1.1.10

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 (579) 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 +32 -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/dialog.css +1 -1
  19. package/lib/theme-chalk/drawer.css +1 -1
  20. package/lib/theme-chalk/icon.css +1 -1
  21. package/lib/theme-chalk/index.css +1 -1
  22. package/lib/time-picker.js +5 -5
  23. package/lib/time-select.js +5 -5
  24. package/lib/utils/after-leave.js +7 -7
  25. package/lib/utils/aria-dialog.js +16 -16
  26. package/lib/utils/aria-utils.js +25 -25
  27. package/lib/utils/clickoutside.js +7 -7
  28. package/lib/utils/date.js +37 -37
  29. package/lib/utils/lodash.js +9292 -9292
  30. package/lib/utils/popper.js +321 -321
  31. package/lib/utils/types.js +3 -3
  32. package/lib/utils/vue-popper.js +7 -7
  33. package/package.json +151 -151
  34. package/packages/alert/index.js +8 -8
  35. package/packages/alert/src/main.vue +94 -94
  36. package/packages/aside/index.js +8 -8
  37. package/packages/aside/src/main.vue +20 -20
  38. package/packages/autocomplete/index.js +8 -8
  39. package/packages/autocomplete/src/autocomplete-suggestions.vue +76 -76
  40. package/packages/autocomplete/src/autocomplete.vue +285 -285
  41. package/packages/avatar/index.js +8 -8
  42. package/packages/avatar/src/main.vue +107 -107
  43. package/packages/backtop/index.js +8 -8
  44. package/packages/backtop/src/main.vue +110 -110
  45. package/packages/badge/index.js +8 -8
  46. package/packages/badge/src/main.vue +53 -53
  47. package/packages/breadcrumb/index.js +8 -8
  48. package/packages/breadcrumb/src/breadcrumb-item.vue +41 -41
  49. package/packages/breadcrumb/src/breadcrumb.vue +34 -34
  50. package/packages/breadcrumb-item/index.js +8 -8
  51. package/packages/button/index.js +8 -8
  52. package/packages/button/src/button-group.vue +10 -10
  53. package/packages/button/src/button.vue +78 -78
  54. package/packages/button-group/index.js +8 -8
  55. package/packages/calendar/index.js +8 -8
  56. package/packages/calendar/src/date-table.vue +200 -200
  57. package/packages/calendar/src/main.vue +280 -280
  58. package/packages/card/index.js +8 -8
  59. package/packages/card/src/main.vue +23 -23
  60. package/packages/carousel/index.js +8 -8
  61. package/packages/carousel/src/item.vue +138 -138
  62. package/packages/carousel/src/main.vue +315 -315
  63. package/packages/carousel-item/index.js +8 -8
  64. package/packages/cascader/index.js +8 -8
  65. package/packages/cascader/src/cascader.vue +663 -663
  66. package/packages/cascader-panel/index.js +8 -8
  67. package/packages/cascader-panel/src/cascader-menu.vue +138 -138
  68. package/packages/cascader-panel/src/cascader-node.vue +246 -246
  69. package/packages/cascader-panel/src/cascader-panel.vue +391 -391
  70. package/packages/cascader-panel/src/node.js +166 -166
  71. package/packages/cascader-panel/src/store.js +58 -58
  72. package/packages/checkbox/index.js +8 -8
  73. package/packages/checkbox/src/checkbox-button.vue +199 -199
  74. package/packages/checkbox/src/checkbox-group.vue +48 -48
  75. package/packages/checkbox/src/checkbox.vue +222 -222
  76. package/packages/checkbox-button/index.js +8 -8
  77. package/packages/checkbox-group/index.js +8 -8
  78. package/packages/col/index.js +9 -9
  79. package/packages/col/src/col.js +71 -71
  80. package/packages/collapse/index.js +9 -9
  81. package/packages/collapse/src/collapse-item.vue +114 -114
  82. package/packages/collapse/src/collapse.vue +73 -73
  83. package/packages/collapse-item/index.js +8 -8
  84. package/packages/color-picker/index.js +8 -8
  85. package/packages/color-picker/src/color.js +317 -317
  86. package/packages/color-picker/src/components/alpha-slider.vue +132 -132
  87. package/packages/color-picker/src/components/hue-slider.vue +123 -123
  88. package/packages/color-picker/src/components/picker-dropdown.vue +121 -121
  89. package/packages/color-picker/src/components/predefine.vue +60 -60
  90. package/packages/color-picker/src/components/sv-panel.vue +100 -100
  91. package/packages/color-picker/src/draggable.js +36 -36
  92. package/packages/color-picker/src/main.vue +188 -188
  93. package/packages/container/index.js +8 -8
  94. package/packages/container/src/main.vue +33 -33
  95. package/packages/date-picker/index.js +8 -8
  96. package/packages/date-picker/src/basic/date-table.vue +441 -441
  97. package/packages/date-picker/src/basic/month-table.vue +269 -269
  98. package/packages/date-picker/src/basic/time-spinner.vue +304 -304
  99. package/packages/date-picker/src/basic/year-table.vue +111 -111
  100. package/packages/date-picker/src/panel/date-range.vue +680 -680
  101. package/packages/date-picker/src/panel/date.vue +609 -609
  102. package/packages/date-picker/src/panel/month-range.vue +289 -289
  103. package/packages/date-picker/src/panel/time-range.vue +248 -248
  104. package/packages/date-picker/src/panel/time-select.vue +178 -178
  105. package/packages/date-picker/src/panel/time.vue +186 -186
  106. package/packages/date-picker/src/picker/date-picker.js +43 -43
  107. package/packages/date-picker/src/picker/time-picker.js +39 -39
  108. package/packages/date-picker/src/picker/time-select.js +21 -21
  109. package/packages/date-picker/src/picker.vue +956 -956
  110. package/packages/descriptions/index.js +8 -8
  111. package/packages/descriptions/src/descriptions-item.js +30 -30
  112. package/packages/descriptions/src/descriptions-row.js +116 -116
  113. package/packages/descriptions/src/index.js +180 -180
  114. package/packages/descriptions-item/index.js +8 -8
  115. package/packages/dialog/index.js +8 -8
  116. package/packages/dialog/src/component.vue +212 -212
  117. package/packages/divider/index.js +8 -8
  118. package/packages/divider/src/main.vue +37 -37
  119. package/packages/drawer/index.js +8 -8
  120. package/packages/drawer/src/main.vue +208 -208
  121. package/packages/dropdown/index.js +8 -8
  122. package/packages/dropdown/src/dropdown-item.vue +37 -37
  123. package/packages/dropdown/src/dropdown-menu.vue +63 -63
  124. package/packages/dropdown/src/dropdown.vue +293 -293
  125. package/packages/dropdown-item/index.js +8 -8
  126. package/packages/dropdown-menu/index.js +8 -8
  127. package/packages/empty/index.js +7 -7
  128. package/packages/empty/src/img-empty.vue +132 -132
  129. package/packages/empty/src/index.vue +50 -50
  130. package/packages/footer/index.js +8 -8
  131. package/packages/footer/src/main.vue +20 -20
  132. package/packages/form/index.js +8 -8
  133. package/packages/form/src/form-item.vue +324 -324
  134. package/packages/form/src/form.vue +182 -182
  135. package/packages/form/src/label-wrap.vue +78 -78
  136. package/packages/form-item/index.js +8 -8
  137. package/packages/header/index.js +8 -8
  138. package/packages/header/src/main.vue +20 -20
  139. package/packages/icon/index.js +8 -8
  140. package/packages/icon/src/icon.vue +13 -13
  141. package/packages/image/index.js +8 -8
  142. package/packages/image/src/image-viewer.vue +330 -330
  143. package/packages/image/src/main.vue +249 -249
  144. package/packages/infinite-scroll/index.js +8 -8
  145. package/packages/infinite-scroll/src/main.js +150 -150
  146. package/packages/input/index.js +8 -8
  147. package/packages/input/src/calcTextareaHeight.js +104 -104
  148. package/packages/input/src/input.vue +444 -440
  149. package/packages/input-number/index.js +8 -8
  150. package/packages/input-number/src/input-number.vue +283 -283
  151. package/packages/link/index.js +8 -8
  152. package/packages/link/src/main.vue +53 -53
  153. package/packages/loading/index.js +11 -11
  154. package/packages/loading/src/directive.js +133 -133
  155. package/packages/loading/src/index.js +106 -106
  156. package/packages/loading/src/loading.vue +41 -41
  157. package/packages/main/index.js +8 -8
  158. package/packages/main/src/main.vue +12 -12
  159. package/packages/menu/index.js +8 -8
  160. package/packages/menu/src/menu-item-group.vue +45 -45
  161. package/packages/menu/src/menu-item.vue +112 -112
  162. package/packages/menu/src/menu-mixin.js +44 -44
  163. package/packages/menu/src/menu.vue +325 -325
  164. package/packages/menu/src/submenu.vue +349 -349
  165. package/packages/menu-item/index.js +8 -8
  166. package/packages/menu-item-group/index.js +8 -8
  167. package/packages/message/index.js +2 -2
  168. package/packages/message/src/main.js +91 -91
  169. package/packages/message/src/main.vue +117 -117
  170. package/packages/message-box/index.js +2 -2
  171. package/packages/message-box/src/main.js +216 -216
  172. package/packages/message-box/src/main.vue +332 -332
  173. package/packages/notification/index.js +2 -2
  174. package/packages/notification/src/main.js +94 -94
  175. package/packages/notification/src/main.vue +152 -152
  176. package/packages/option/index.js +8 -8
  177. package/packages/option-group/index.js +8 -8
  178. package/packages/page-header/index.js +8 -8
  179. package/packages/page-header/src/main.vue +30 -30
  180. package/packages/pagination/index.js +8 -8
  181. package/packages/pagination/src/pager.vue +163 -163
  182. package/packages/pagination/src/pagination.js +386 -386
  183. package/packages/popconfirm/index.js +8 -8
  184. package/packages/popconfirm/src/main.vue +104 -104
  185. package/packages/popover/index.js +14 -14
  186. package/packages/popover/src/directive.js +20 -20
  187. package/packages/popover/src/main.vue +237 -237
  188. package/packages/progress/index.js +8 -8
  189. package/packages/progress/src/progress.vue +235 -235
  190. package/packages/radio/index.js +8 -8
  191. package/packages/radio/src/radio-button.vue +115 -115
  192. package/packages/radio/src/radio-group.vue +113 -113
  193. package/packages/radio/src/radio.vue +134 -134
  194. package/packages/radio-button/index.js +8 -8
  195. package/packages/radio-group/index.js +8 -8
  196. package/packages/rate/index.js +8 -8
  197. package/packages/rate/src/main.vue +348 -348
  198. package/packages/result/index.js +8 -8
  199. package/packages/result/src/icon-error.vue +13 -13
  200. package/packages/result/src/icon-info.vue +13 -13
  201. package/packages/result/src/icon-success.vue +13 -13
  202. package/packages/result/src/icon-warning.vue +13 -13
  203. package/packages/result/src/index.vue +65 -65
  204. package/packages/row/index.js +9 -9
  205. package/packages/row/src/row.js +44 -44
  206. package/packages/scrollbar/index.js +8 -8
  207. package/packages/scrollbar/src/bar.js +92 -92
  208. package/packages/scrollbar/src/main.js +130 -130
  209. package/packages/scrollbar/src/util.js +34 -34
  210. package/packages/select/index.js +8 -8
  211. package/packages/select/src/navigation-mixin.js +54 -54
  212. package/packages/select/src/option-group.vue +60 -60
  213. package/packages/select/src/option.vue +168 -168
  214. package/packages/select/src/select-dropdown.vue +74 -74
  215. package/packages/select/src/select.vue +900 -900
  216. package/packages/skeleton/index.js +8 -8
  217. package/packages/skeleton/src/img-placeholder.vue +16 -16
  218. package/packages/skeleton/src/index.vue +76 -76
  219. package/packages/skeleton/src/item.vue +21 -21
  220. package/packages/skeleton-item/index.js +8 -8
  221. package/packages/slider/index.js +8 -8
  222. package/packages/slider/src/button.vue +238 -238
  223. package/packages/slider/src/main.vue +427 -427
  224. package/packages/slider/src/marker.js +18 -18
  225. package/packages/spinner/index.js +8 -8
  226. package/packages/spinner/src/spinner.vue +27 -27
  227. package/packages/statistic/index.js +8 -8
  228. package/packages/statistic/src/main.vue +204 -204
  229. package/packages/step/index.js +8 -8
  230. package/packages/steps/README.md +69 -69
  231. package/packages/steps/index.js +8 -8
  232. package/packages/steps/src/step.vue +184 -184
  233. package/packages/steps/src/steps.vue +68 -68
  234. package/packages/submenu/index.js +8 -8
  235. package/packages/switch/index.js +9 -9
  236. package/packages/switch/src/component.vue +174 -174
  237. package/packages/tab-pane/index.js +8 -8
  238. package/packages/table/index.js +8 -8
  239. package/packages/table/src/config.js +124 -124
  240. package/packages/table/src/dropdown.js +28 -28
  241. package/packages/table/src/filter-panel.vue +194 -194
  242. package/packages/table/src/layout-observer.js +68 -68
  243. package/packages/table/src/store/current.js +76 -76
  244. package/packages/table/src/store/expand.js +65 -65
  245. package/packages/table/src/store/helper.js +41 -41
  246. package/packages/table/src/store/index.js +147 -147
  247. package/packages/table/src/store/tree.js +209 -209
  248. package/packages/table/src/store/watcher.js +381 -381
  249. package/packages/table/src/table-body.js +469 -469
  250. package/packages/table/src/table-column.js +319 -319
  251. package/packages/table/src/table-footer.js +153 -153
  252. package/packages/table/src/table-header.js +511 -511
  253. package/packages/table/src/table-layout.js +249 -249
  254. package/packages/table/src/table-row.js +101 -101
  255. package/packages/table/src/table.vue +712 -712
  256. package/packages/table/src/util.js +273 -273
  257. package/packages/table-column/index.js +8 -8
  258. package/packages/tabs/index.js +8 -8
  259. package/packages/tabs/src/tab-bar.vue +57 -57
  260. package/packages/tabs/src/tab-nav.vue +294 -294
  261. package/packages/tabs/src/tab-pane.vue +56 -56
  262. package/packages/tabs/src/tabs.vue +191 -191
  263. package/packages/tag/index.js +8 -8
  264. package/packages/tag/src/tag.vue +58 -58
  265. package/packages/theme-chalk/README.md +33 -33
  266. package/packages/theme-chalk/lib/base.css +1 -1
  267. package/packages/theme-chalk/lib/dialog.css +1 -1
  268. package/packages/theme-chalk/lib/drawer.css +1 -1
  269. package/packages/theme-chalk/lib/icon.css +1 -1
  270. package/packages/theme-chalk/lib/index.css +1 -1
  271. package/packages/theme-chalk/package.json +35 -35
  272. package/packages/theme-chalk/src/.DS_Store +0 -0
  273. package/packages/theme-chalk/src/alert.scss +147 -147
  274. package/packages/theme-chalk/src/aside.scss +7 -7
  275. package/packages/theme-chalk/src/autocomplete.scss +80 -80
  276. package/packages/theme-chalk/src/avatar.scss +51 -51
  277. package/packages/theme-chalk/src/backtop.scss +22 -22
  278. package/packages/theme-chalk/src/badge.scss +57 -57
  279. package/packages/theme-chalk/src/base.scss +2 -2
  280. package/packages/theme-chalk/src/breadcrumb.scss +55 -55
  281. package/packages/theme-chalk/src/button.scss +262 -262
  282. package/packages/theme-chalk/src/calendar.scss +79 -79
  283. package/packages/theme-chalk/src/card.scss +32 -32
  284. package/packages/theme-chalk/src/carousel-item.scss +49 -49
  285. package/packages/theme-chalk/src/carousel.scss +161 -161
  286. package/packages/theme-chalk/src/cascader-panel.scss +120 -120
  287. package/packages/theme-chalk/src/cascader.scss +182 -182
  288. package/packages/theme-chalk/src/checkbox.scss +359 -359
  289. package/packages/theme-chalk/src/col.scss +155 -155
  290. package/packages/theme-chalk/src/collapse.scss +63 -63
  291. package/packages/theme-chalk/src/color-picker.scss +384 -384
  292. package/packages/theme-chalk/src/common/popup.scss +42 -42
  293. package/packages/theme-chalk/src/common/transition.scss +98 -98
  294. package/packages/theme-chalk/src/common/var.scss +1030 -1030
  295. package/packages/theme-chalk/src/container.scss +14 -14
  296. package/packages/theme-chalk/src/date-picker/date-picker.scss +97 -97
  297. package/packages/theme-chalk/src/date-picker/date-range-picker.scss +101 -101
  298. package/packages/theme-chalk/src/date-picker/date-table.scss +151 -151
  299. package/packages/theme-chalk/src/date-picker/month-table.scss +82 -82
  300. package/packages/theme-chalk/src/date-picker/picker-panel.scss +117 -117
  301. package/packages/theme-chalk/src/date-picker/picker.scss +197 -197
  302. package/packages/theme-chalk/src/date-picker/time-picker.scss +85 -85
  303. package/packages/theme-chalk/src/date-picker/time-range-picker.scss +31 -31
  304. package/packages/theme-chalk/src/date-picker/time-spinner.scss +110 -110
  305. package/packages/theme-chalk/src/date-picker/year-table.scss +51 -51
  306. package/packages/theme-chalk/src/date-picker.scss +11 -11
  307. package/packages/theme-chalk/src/descriptions-item.scss +42 -42
  308. package/packages/theme-chalk/src/descriptions.scss +111 -111
  309. package/packages/theme-chalk/src/dialog.scss +125 -123
  310. package/packages/theme-chalk/src/display.scss +12 -12
  311. package/packages/theme-chalk/src/divider.scss +46 -46
  312. package/packages/theme-chalk/src/drawer.scss +220 -219
  313. package/packages/theme-chalk/src/dropdown.scss +182 -182
  314. package/packages/theme-chalk/src/empty.scss +45 -45
  315. package/packages/theme-chalk/src/footer.scss +8 -8
  316. package/packages/theme-chalk/src/form.scss +167 -167
  317. package/packages/theme-chalk/src/header.scss +8 -8
  318. package/packages/theme-chalk/src/icon.scss +1393 -1167
  319. package/packages/theme-chalk/src/image.scss +179 -179
  320. package/packages/theme-chalk/src/input-number.scss +180 -180
  321. package/packages/theme-chalk/src/input.scss +360 -360
  322. package/packages/theme-chalk/src/link.scss +81 -81
  323. package/packages/theme-chalk/src/loading.scss +96 -96
  324. package/packages/theme-chalk/src/main.scss +12 -12
  325. package/packages/theme-chalk/src/menu.scss +289 -289
  326. package/packages/theme-chalk/src/message-box.scss +226 -226
  327. package/packages/theme-chalk/src/message.scss +120 -120
  328. package/packages/theme-chalk/src/mixins/_button.scss +81 -81
  329. package/packages/theme-chalk/src/mixins/config.scss +4 -4
  330. package/packages/theme-chalk/src/mixins/function.scss +44 -44
  331. package/packages/theme-chalk/src/mixins/mixins.scss +190 -190
  332. package/packages/theme-chalk/src/mixins/utils.scss +38 -38
  333. package/packages/theme-chalk/src/notification.scss +99 -99
  334. package/packages/theme-chalk/src/option-group.scss +42 -42
  335. package/packages/theme-chalk/src/option.scss +36 -36
  336. package/packages/theme-chalk/src/page-header.scss +41 -41
  337. package/packages/theme-chalk/src/pagination.scss +295 -295
  338. package/packages/theme-chalk/src/popconfirm.scss +16 -16
  339. package/packages/theme-chalk/src/popover.scss +40 -40
  340. package/packages/theme-chalk/src/popper.scss +100 -100
  341. package/packages/theme-chalk/src/progress.scss +141 -141
  342. package/packages/theme-chalk/src/radio-button.scss +113 -113
  343. package/packages/theme-chalk/src/radio-group.scss +9 -9
  344. package/packages/theme-chalk/src/radio.scss +199 -199
  345. package/packages/theme-chalk/src/rate.scss +49 -49
  346. package/packages/theme-chalk/src/reset.scss +79 -79
  347. package/packages/theme-chalk/src/result.scss +61 -61
  348. package/packages/theme-chalk/src/row.scss +43 -43
  349. package/packages/theme-chalk/src/scrollbar.scss +72 -72
  350. package/packages/theme-chalk/src/select-dropdown.scss +62 -62
  351. package/packages/theme-chalk/src/select.scss +152 -152
  352. package/packages/theme-chalk/src/skeleton-item.scss +84 -84
  353. package/packages/theme-chalk/src/skeleton.scss +40 -40
  354. package/packages/theme-chalk/src/slider.scss +250 -250
  355. package/packages/theme-chalk/src/spinner.scss +44 -44
  356. package/packages/theme-chalk/src/statistic.scss +38 -38
  357. package/packages/theme-chalk/src/step.scss +317 -317
  358. package/packages/theme-chalk/src/steps.scss +20 -20
  359. package/packages/theme-chalk/src/switch.scss +116 -116
  360. package/packages/theme-chalk/src/table-column.scss +96 -96
  361. package/packages/theme-chalk/src/table.scss +564 -564
  362. package/packages/theme-chalk/src/tabs.scss +602 -602
  363. package/packages/theme-chalk/src/tag.scss +163 -163
  364. package/packages/theme-chalk/src/time-picker.scss +8 -8
  365. package/packages/theme-chalk/src/time-select.scss +37 -37
  366. package/packages/theme-chalk/src/timeline-item.scss +86 -86
  367. package/packages/theme-chalk/src/timeline.scss +14 -14
  368. package/packages/theme-chalk/src/tooltip.scss +141 -141
  369. package/packages/theme-chalk/src/transfer.scss +227 -227
  370. package/packages/theme-chalk/src/tree.scss +123 -123
  371. package/packages/theme-chalk/src/upload.scss +603 -603
  372. package/packages/time-picker/index.js +8 -8
  373. package/packages/time-select/index.js +8 -8
  374. package/packages/timeline/index.js +8 -8
  375. package/packages/timeline/src/item.vue +73 -73
  376. package/packages/timeline/src/main.vue +33 -33
  377. package/packages/timeline-item/index.js +8 -8
  378. package/packages/tooltip/index.js +8 -8
  379. package/packages/tooltip/src/main.js +242 -242
  380. package/packages/transfer/index.js +8 -8
  381. package/packages/transfer/src/main.vue +231 -231
  382. package/packages/transfer/src/transfer-panel.vue +251 -251
  383. package/packages/tree/index.js +8 -8
  384. package/packages/tree/src/model/node.js +484 -484
  385. package/packages/tree/src/model/tree-store.js +340 -340
  386. package/packages/tree/src/model/util.js +27 -27
  387. package/packages/tree/src/tree-node.vue +279 -279
  388. package/packages/tree/src/tree.vue +496 -496
  389. package/packages/upload/index.js +8 -8
  390. package/packages/upload/src/ajax.js +85 -85
  391. package/packages/upload/src/index.vue +338 -338
  392. package/packages/upload/src/upload-dragger.vue +70 -70
  393. package/packages/upload/src/upload-list.vue +105 -105
  394. package/packages/upload/src/upload.vue +211 -211
  395. package/src/directives/mousewheel.js +18 -18
  396. package/src/directives/repeat-click.js +26 -26
  397. package/src/index.js +259 -259
  398. package/src/locale/format.js +46 -46
  399. package/src/locale/index.js +48 -48
  400. package/src/locale/lang/af-ZA.js +123 -123
  401. package/src/locale/lang/ar.js +122 -122
  402. package/src/locale/lang/az.js +126 -126
  403. package/src/locale/lang/bg.js +123 -123
  404. package/src/locale/lang/bn.js +126 -126
  405. package/src/locale/lang/ca.js +122 -122
  406. package/src/locale/lang/cs-CZ.js +125 -125
  407. package/src/locale/lang/da.js +122 -122
  408. package/src/locale/lang/de.js +124 -124
  409. package/src/locale/lang/ee.js +123 -123
  410. package/src/locale/lang/el.js +123 -123
  411. package/src/locale/lang/en.js +123 -123
  412. package/src/locale/lang/eo.js +123 -123
  413. package/src/locale/lang/es.js +122 -122
  414. package/src/locale/lang/eu.js +123 -123
  415. package/src/locale/lang/fa.js +123 -123
  416. package/src/locale/lang/fi.js +123 -123
  417. package/src/locale/lang/fr.js +122 -122
  418. package/src/locale/lang/he.js +123 -123
  419. package/src/locale/lang/hr.js +123 -123
  420. package/src/locale/lang/hu.js +122 -122
  421. package/src/locale/lang/hy-AM.js +123 -123
  422. package/src/locale/lang/id.js +123 -123
  423. package/src/locale/lang/is.js +124 -124
  424. package/src/locale/lang/it.js +122 -122
  425. package/src/locale/lang/ja.js +123 -123
  426. package/src/locale/lang/kg.js +123 -123
  427. package/src/locale/lang/km.js +123 -123
  428. package/src/locale/lang/ko.js +123 -123
  429. package/src/locale/lang/ku.js +123 -123
  430. package/src/locale/lang/kz.js +123 -123
  431. package/src/locale/lang/lo-LA.js +126 -126
  432. package/src/locale/lang/lt.js +123 -123
  433. package/src/locale/lang/lv.js +123 -123
  434. package/src/locale/lang/mn.js +123 -123
  435. package/src/locale/lang/ms.js +122 -122
  436. package/src/locale/lang/nb-NO.js +122 -122
  437. package/src/locale/lang/nl.js +123 -123
  438. package/src/locale/lang/pl.js +123 -123
  439. package/src/locale/lang/pt-br.js +123 -123
  440. package/src/locale/lang/pt.js +123 -123
  441. package/src/locale/lang/ro.js +123 -123
  442. package/src/locale/lang/ru-RU.js +123 -123
  443. package/src/locale/lang/si.js +123 -123
  444. package/src/locale/lang/sk.js +125 -125
  445. package/src/locale/lang/sl.js +123 -123
  446. package/src/locale/lang/sr-Latn.js +123 -123
  447. package/src/locale/lang/sr.js +123 -123
  448. package/src/locale/lang/sv-SE.js +123 -123
  449. package/src/locale/lang/sw.js +123 -123
  450. package/src/locale/lang/ta.js +122 -122
  451. package/src/locale/lang/th.js +123 -123
  452. package/src/locale/lang/tk.js +123 -123
  453. package/src/locale/lang/tr-TR.js +123 -123
  454. package/src/locale/lang/ua.js +123 -123
  455. package/src/locale/lang/ug-CN.js +123 -123
  456. package/src/locale/lang/uz-UZ.js +123 -123
  457. package/src/locale/lang/vi.js +123 -123
  458. package/src/locale/lang/zh-CN.js +123 -123
  459. package/src/locale/lang/zh-TW.js +123 -123
  460. package/src/mixins/emitter.js +33 -33
  461. package/src/mixins/focus.js +9 -9
  462. package/src/mixins/locale.js +9 -9
  463. package/src/mixins/migrating.js +54 -54
  464. package/src/transitions/collapse-transition.js +77 -77
  465. package/src/utils/after-leave.js +27 -27
  466. package/src/utils/aria-dialog.js +90 -90
  467. package/src/utils/aria-utils.js +122 -122
  468. package/src/utils/clickoutside.js +76 -76
  469. package/src/utils/date-util.js +282 -282
  470. package/src/utils/date.js +368 -368
  471. package/src/utils/dom.js +227 -227
  472. package/src/utils/lodash.js +18075 -18075
  473. package/src/utils/menu/aria-menubar.js +14 -14
  474. package/src/utils/menu/aria-menuitem.js +49 -49
  475. package/src/utils/menu/aria-submenu.js +59 -59
  476. package/src/utils/merge.js +15 -15
  477. package/src/utils/popper.js +1276 -1276
  478. package/src/utils/popup/index.js +218 -218
  479. package/src/utils/popup/popup-manager.js +194 -194
  480. package/src/utils/resize-event.js +36 -36
  481. package/src/utils/scroll-into-view.js +27 -27
  482. package/src/utils/scrollbar-width.js +29 -29
  483. package/src/utils/shared.js +7 -7
  484. package/src/utils/types.js +40 -40
  485. package/src/utils/util.js +245 -245
  486. package/src/utils/vdom.js +5 -5
  487. package/src/utils/vue-popper.js +198 -198
  488. package/types/alert.d.ts +31 -31
  489. package/types/aside.d.ts +7 -7
  490. package/types/autocomplete.d.ts +78 -78
  491. package/types/avatar.d.ts +20 -20
  492. package/types/backtop.d.ts +16 -16
  493. package/types/badge.d.ts +16 -16
  494. package/types/breadcrumb-item.d.ts +10 -10
  495. package/types/breadcrumb.d.ts +10 -10
  496. package/types/button-group.d.ts +4 -4
  497. package/types/button.d.ts +37 -37
  498. package/types/calendar.d.ts +15 -15
  499. package/types/card.d.ts +26 -26
  500. package/types/carousel-item.d.ts +10 -10
  501. package/types/carousel.d.ts +57 -57
  502. package/types/cascader-panel.d.ts +72 -72
  503. package/types/cascader.d.ts +65 -65
  504. package/types/checkbox-button.d.ts +22 -22
  505. package/types/checkbox-group.d.ts +22 -22
  506. package/types/checkbox.d.ts +34 -34
  507. package/types/col.d.ts +46 -46
  508. package/types/collapse-item.d.ts +26 -26
  509. package/types/collapse.d.ts +10 -10
  510. package/types/color-picker.d.ts +21 -21
  511. package/types/component.d.ts +13 -13
  512. package/types/container.d.ts +7 -7
  513. package/types/date-picker.d.ts +124 -124
  514. package/types/descriptions-item.d.ts +37 -37
  515. package/types/descriptions.d.ts +52 -52
  516. package/types/dialog.d.ts +62 -62
  517. package/types/divider.d.ts +12 -12
  518. package/types/drawer.d.ts +63 -63
  519. package/types/dropdown-item.d.ts +16 -16
  520. package/types/dropdown-menu.d.ts +4 -4
  521. package/types/dropdown.d.ts +38 -38
  522. package/types/element-ui.d.ts +381 -381
  523. package/types/empty.d.ts +31 -31
  524. package/types/footer.d.ts +7 -7
  525. package/types/form-item.d.ts +37 -37
  526. package/types/form.d.ts +82 -82
  527. package/types/header.d.ts +7 -7
  528. package/types/icon.d.ts +7 -7
  529. package/types/image.d.ts +43 -43
  530. package/types/index.d.ts +4 -4
  531. package/types/infinite-scroll.d.ts +5 -5
  532. package/types/input-number.d.ts +47 -47
  533. package/types/input.d.ts +107 -107
  534. package/types/link.d.ts +25 -25
  535. package/types/loading.d.ts +62 -62
  536. package/types/main.d.ts +4 -4
  537. package/types/menu-item-group.d.ts +7 -7
  538. package/types/menu-item.d.ts +10 -10
  539. package/types/menu.d.ts +46 -46
  540. package/types/message-box.d.ts +176 -176
  541. package/types/message.d.ts +90 -90
  542. package/types/notification.d.ts +84 -84
  543. package/types/option-group.d.ts +10 -10
  544. package/types/option.d.ts +13 -13
  545. package/types/page-header.d.ts +10 -10
  546. package/types/pagination.d.ts +43 -43
  547. package/types/popconfirm.d.ts +29 -29
  548. package/types/popover.d.ts +71 -71
  549. package/types/progress.d.ts +37 -37
  550. package/types/radio-button.d.ts +16 -16
  551. package/types/radio-group.d.ts +18 -18
  552. package/types/radio.d.ts +19 -19
  553. package/types/rate.d.ts +64 -64
  554. package/types/result.d.ts +33 -33
  555. package/types/row.d.ts +25 -25
  556. package/types/select.d.ts +90 -90
  557. package/types/skeleton-item.d.ts +7 -7
  558. package/types/skeleton.d.ts +33 -33
  559. package/types/slider.d.ts +68 -68
  560. package/types/spinner.d.ts +16 -16
  561. package/types/statistic.d.ts +37 -37
  562. package/types/step.d.ts +34 -34
  563. package/types/steps.d.ts +28 -28
  564. package/types/submenu.d.ts +22 -22
  565. package/types/switch.d.ts +43 -43
  566. package/types/tab-pane.d.ts +19 -19
  567. package/types/table-column.d.ts +117 -117
  568. package/types/table.d.ts +177 -177
  569. package/types/tabs.d.ts +31 -31
  570. package/types/tag.d.ts +28 -28
  571. package/types/time-picker.d.ts +63 -63
  572. package/types/time-select.d.ts +56 -56
  573. package/types/timeline-item.d.ts +20 -20
  574. package/types/timeline.d.ts +6 -6
  575. package/types/tooltip.d.ts +52 -52
  576. package/types/transfer.d.ts +73 -73
  577. package/types/tree.d.ts +266 -266
  578. package/types/upload.d.ts +124 -124
  579. 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
+ });