@element-plus/nightly 0.0.20260425 → 0.0.20260427

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 (582) hide show
  1. package/dist/index.full.js +446 -246
  2. package/dist/index.full.min.js +5 -5
  3. package/dist/index.full.min.js.map +1 -1
  4. package/dist/index.full.min.mjs +4 -4
  5. package/dist/index.full.min.mjs.map +1 -1
  6. package/dist/index.full.mjs +446 -246
  7. package/dist/locale/af.js +1 -1
  8. package/dist/locale/af.min.js +1 -1
  9. package/dist/locale/af.min.mjs +1 -1
  10. package/dist/locale/af.mjs +1 -1
  11. package/dist/locale/ar-eg.js +1 -1
  12. package/dist/locale/ar-eg.min.js +1 -1
  13. package/dist/locale/ar-eg.min.mjs +1 -1
  14. package/dist/locale/ar-eg.mjs +1 -1
  15. package/dist/locale/ar.js +1 -1
  16. package/dist/locale/ar.min.js +1 -1
  17. package/dist/locale/ar.min.mjs +1 -1
  18. package/dist/locale/ar.mjs +1 -1
  19. package/dist/locale/az.js +1 -1
  20. package/dist/locale/az.min.js +1 -1
  21. package/dist/locale/az.min.mjs +1 -1
  22. package/dist/locale/az.mjs +1 -1
  23. package/dist/locale/bg.js +1 -1
  24. package/dist/locale/bg.min.js +1 -1
  25. package/dist/locale/bg.min.mjs +1 -1
  26. package/dist/locale/bg.mjs +1 -1
  27. package/dist/locale/bn.js +1 -1
  28. package/dist/locale/bn.min.js +1 -1
  29. package/dist/locale/bn.min.mjs +1 -1
  30. package/dist/locale/bn.mjs +1 -1
  31. package/dist/locale/ca.js +1 -1
  32. package/dist/locale/ca.min.js +1 -1
  33. package/dist/locale/ca.min.mjs +1 -1
  34. package/dist/locale/ca.mjs +1 -1
  35. package/dist/locale/ckb.js +1 -1
  36. package/dist/locale/ckb.min.js +1 -1
  37. package/dist/locale/ckb.min.mjs +1 -1
  38. package/dist/locale/ckb.mjs +1 -1
  39. package/dist/locale/cs.js +1 -1
  40. package/dist/locale/cs.min.js +1 -1
  41. package/dist/locale/cs.min.mjs +1 -1
  42. package/dist/locale/cs.mjs +1 -1
  43. package/dist/locale/da.js +1 -1
  44. package/dist/locale/da.min.js +1 -1
  45. package/dist/locale/da.min.mjs +1 -1
  46. package/dist/locale/da.mjs +1 -1
  47. package/dist/locale/de.js +1 -1
  48. package/dist/locale/de.min.js +1 -1
  49. package/dist/locale/de.min.mjs +1 -1
  50. package/dist/locale/de.mjs +1 -1
  51. package/dist/locale/el.js +1 -1
  52. package/dist/locale/el.min.js +1 -1
  53. package/dist/locale/el.min.mjs +1 -1
  54. package/dist/locale/el.mjs +1 -1
  55. package/dist/locale/en.js +1 -1
  56. package/dist/locale/en.min.js +1 -1
  57. package/dist/locale/en.min.mjs +1 -1
  58. package/dist/locale/en.mjs +1 -1
  59. package/dist/locale/eo.js +1 -1
  60. package/dist/locale/eo.min.js +1 -1
  61. package/dist/locale/eo.min.mjs +1 -1
  62. package/dist/locale/eo.mjs +1 -1
  63. package/dist/locale/es.js +1 -1
  64. package/dist/locale/es.min.js +1 -1
  65. package/dist/locale/es.min.mjs +1 -1
  66. package/dist/locale/es.mjs +1 -1
  67. package/dist/locale/et.js +1 -1
  68. package/dist/locale/et.min.js +1 -1
  69. package/dist/locale/et.min.mjs +1 -1
  70. package/dist/locale/et.mjs +1 -1
  71. package/dist/locale/eu.js +1 -1
  72. package/dist/locale/eu.min.js +1 -1
  73. package/dist/locale/eu.min.mjs +1 -1
  74. package/dist/locale/eu.mjs +1 -1
  75. package/dist/locale/fa.js +1 -1
  76. package/dist/locale/fa.min.js +1 -1
  77. package/dist/locale/fa.min.mjs +1 -1
  78. package/dist/locale/fa.mjs +1 -1
  79. package/dist/locale/fi.js +1 -1
  80. package/dist/locale/fi.min.js +1 -1
  81. package/dist/locale/fi.min.mjs +1 -1
  82. package/dist/locale/fi.mjs +1 -1
  83. package/dist/locale/fr.js +1 -1
  84. package/dist/locale/fr.min.js +1 -1
  85. package/dist/locale/fr.min.mjs +1 -1
  86. package/dist/locale/fr.mjs +1 -1
  87. package/dist/locale/he.js +1 -1
  88. package/dist/locale/he.min.js +1 -1
  89. package/dist/locale/he.min.mjs +1 -1
  90. package/dist/locale/he.mjs +1 -1
  91. package/dist/locale/hi.js +1 -1
  92. package/dist/locale/hi.min.js +1 -1
  93. package/dist/locale/hi.min.mjs +1 -1
  94. package/dist/locale/hi.mjs +1 -1
  95. package/dist/locale/hr.js +1 -1
  96. package/dist/locale/hr.min.js +1 -1
  97. package/dist/locale/hr.min.mjs +1 -1
  98. package/dist/locale/hr.mjs +1 -1
  99. package/dist/locale/hu.js +1 -1
  100. package/dist/locale/hu.min.js +1 -1
  101. package/dist/locale/hu.min.mjs +1 -1
  102. package/dist/locale/hu.mjs +1 -1
  103. package/dist/locale/hy-am.js +1 -1
  104. package/dist/locale/hy-am.min.js +1 -1
  105. package/dist/locale/hy-am.min.mjs +1 -1
  106. package/dist/locale/hy-am.mjs +1 -1
  107. package/dist/locale/id.js +1 -1
  108. package/dist/locale/id.min.js +1 -1
  109. package/dist/locale/id.min.mjs +1 -1
  110. package/dist/locale/id.mjs +1 -1
  111. package/dist/locale/it.js +1 -1
  112. package/dist/locale/it.min.js +1 -1
  113. package/dist/locale/it.min.mjs +1 -1
  114. package/dist/locale/it.mjs +1 -1
  115. package/dist/locale/ja.js +1 -1
  116. package/dist/locale/ja.min.js +1 -1
  117. package/dist/locale/ja.min.mjs +1 -1
  118. package/dist/locale/ja.mjs +1 -1
  119. package/dist/locale/kk.js +1 -1
  120. package/dist/locale/kk.min.js +1 -1
  121. package/dist/locale/kk.min.mjs +1 -1
  122. package/dist/locale/kk.mjs +1 -1
  123. package/dist/locale/km.js +1 -1
  124. package/dist/locale/km.min.js +1 -1
  125. package/dist/locale/km.min.mjs +1 -1
  126. package/dist/locale/km.mjs +1 -1
  127. package/dist/locale/ko.js +1 -1
  128. package/dist/locale/ko.min.js +1 -1
  129. package/dist/locale/ko.min.mjs +1 -1
  130. package/dist/locale/ko.mjs +1 -1
  131. package/dist/locale/ku.js +1 -1
  132. package/dist/locale/ku.min.js +1 -1
  133. package/dist/locale/ku.min.mjs +1 -1
  134. package/dist/locale/ku.mjs +1 -1
  135. package/dist/locale/ky.js +1 -1
  136. package/dist/locale/ky.min.js +1 -1
  137. package/dist/locale/ky.min.mjs +1 -1
  138. package/dist/locale/ky.mjs +1 -1
  139. package/dist/locale/lo.js +1 -1
  140. package/dist/locale/lo.min.js +1 -1
  141. package/dist/locale/lo.min.mjs +1 -1
  142. package/dist/locale/lo.mjs +1 -1
  143. package/dist/locale/lt.js +1 -1
  144. package/dist/locale/lt.min.js +1 -1
  145. package/dist/locale/lt.min.mjs +1 -1
  146. package/dist/locale/lt.mjs +1 -1
  147. package/dist/locale/lv.js +1 -1
  148. package/dist/locale/lv.min.js +1 -1
  149. package/dist/locale/lv.min.mjs +1 -1
  150. package/dist/locale/lv.mjs +1 -1
  151. package/dist/locale/mg.js +1 -1
  152. package/dist/locale/mg.min.js +1 -1
  153. package/dist/locale/mg.min.mjs +1 -1
  154. package/dist/locale/mg.mjs +1 -1
  155. package/dist/locale/mn.js +1 -1
  156. package/dist/locale/mn.min.js +1 -1
  157. package/dist/locale/mn.min.mjs +1 -1
  158. package/dist/locale/mn.mjs +1 -1
  159. package/dist/locale/ms.js +1 -1
  160. package/dist/locale/ms.min.js +1 -1
  161. package/dist/locale/ms.min.mjs +1 -1
  162. package/dist/locale/ms.mjs +1 -1
  163. package/dist/locale/my.js +1 -1
  164. package/dist/locale/my.min.js +1 -1
  165. package/dist/locale/my.min.mjs +1 -1
  166. package/dist/locale/my.mjs +1 -1
  167. package/dist/locale/nb-no.js +1 -1
  168. package/dist/locale/nb-no.min.js +1 -1
  169. package/dist/locale/nb-no.min.mjs +1 -1
  170. package/dist/locale/nb-no.mjs +1 -1
  171. package/dist/locale/nl.js +1 -1
  172. package/dist/locale/nl.min.js +1 -1
  173. package/dist/locale/nl.min.mjs +1 -1
  174. package/dist/locale/nl.mjs +1 -1
  175. package/dist/locale/no.js +1 -1
  176. package/dist/locale/no.min.js +1 -1
  177. package/dist/locale/no.min.mjs +1 -1
  178. package/dist/locale/no.mjs +1 -1
  179. package/dist/locale/pa.js +1 -1
  180. package/dist/locale/pa.min.js +1 -1
  181. package/dist/locale/pa.min.mjs +1 -1
  182. package/dist/locale/pa.mjs +1 -1
  183. package/dist/locale/pl.js +1 -1
  184. package/dist/locale/pl.min.js +1 -1
  185. package/dist/locale/pl.min.mjs +1 -1
  186. package/dist/locale/pl.mjs +1 -1
  187. package/dist/locale/pt-br.js +1 -1
  188. package/dist/locale/pt-br.min.js +1 -1
  189. package/dist/locale/pt-br.min.mjs +1 -1
  190. package/dist/locale/pt-br.mjs +1 -1
  191. package/dist/locale/pt.js +1 -1
  192. package/dist/locale/pt.min.js +1 -1
  193. package/dist/locale/pt.min.mjs +1 -1
  194. package/dist/locale/pt.mjs +1 -1
  195. package/dist/locale/ro.js +1 -1
  196. package/dist/locale/ro.min.js +1 -1
  197. package/dist/locale/ro.min.mjs +1 -1
  198. package/dist/locale/ro.mjs +1 -1
  199. package/dist/locale/ru.js +1 -1
  200. package/dist/locale/ru.min.js +1 -1
  201. package/dist/locale/ru.min.mjs +1 -1
  202. package/dist/locale/ru.mjs +1 -1
  203. package/dist/locale/sk.js +1 -1
  204. package/dist/locale/sk.min.js +1 -1
  205. package/dist/locale/sk.min.mjs +1 -1
  206. package/dist/locale/sk.mjs +1 -1
  207. package/dist/locale/sl.js +1 -1
  208. package/dist/locale/sl.min.js +1 -1
  209. package/dist/locale/sl.min.mjs +1 -1
  210. package/dist/locale/sl.mjs +1 -1
  211. package/dist/locale/sr.js +1 -1
  212. package/dist/locale/sr.min.js +1 -1
  213. package/dist/locale/sr.min.mjs +1 -1
  214. package/dist/locale/sr.mjs +1 -1
  215. package/dist/locale/sv.js +1 -1
  216. package/dist/locale/sv.min.js +1 -1
  217. package/dist/locale/sv.min.mjs +1 -1
  218. package/dist/locale/sv.mjs +1 -1
  219. package/dist/locale/sw.js +1 -1
  220. package/dist/locale/sw.min.js +1 -1
  221. package/dist/locale/sw.min.mjs +1 -1
  222. package/dist/locale/sw.mjs +1 -1
  223. package/dist/locale/ta.js +1 -1
  224. package/dist/locale/ta.min.js +1 -1
  225. package/dist/locale/ta.min.mjs +1 -1
  226. package/dist/locale/ta.mjs +1 -1
  227. package/dist/locale/te.js +1 -1
  228. package/dist/locale/te.min.js +1 -1
  229. package/dist/locale/te.min.mjs +1 -1
  230. package/dist/locale/te.mjs +1 -1
  231. package/dist/locale/th.js +1 -1
  232. package/dist/locale/th.min.js +1 -1
  233. package/dist/locale/th.min.mjs +1 -1
  234. package/dist/locale/th.mjs +1 -1
  235. package/dist/locale/tk.js +1 -1
  236. package/dist/locale/tk.min.js +1 -1
  237. package/dist/locale/tk.min.mjs +1 -1
  238. package/dist/locale/tk.mjs +1 -1
  239. package/dist/locale/tr.js +1 -1
  240. package/dist/locale/tr.min.js +1 -1
  241. package/dist/locale/tr.min.mjs +1 -1
  242. package/dist/locale/tr.mjs +1 -1
  243. package/dist/locale/ug-cn.js +1 -1
  244. package/dist/locale/ug-cn.min.js +1 -1
  245. package/dist/locale/ug-cn.min.mjs +1 -1
  246. package/dist/locale/ug-cn.mjs +1 -1
  247. package/dist/locale/uk.js +1 -1
  248. package/dist/locale/uk.min.js +1 -1
  249. package/dist/locale/uk.min.mjs +1 -1
  250. package/dist/locale/uk.mjs +1 -1
  251. package/dist/locale/uz-uz.js +1 -1
  252. package/dist/locale/uz-uz.min.js +1 -1
  253. package/dist/locale/uz-uz.min.mjs +1 -1
  254. package/dist/locale/uz-uz.mjs +1 -1
  255. package/dist/locale/vi.js +1 -1
  256. package/dist/locale/vi.min.js +1 -1
  257. package/dist/locale/vi.min.mjs +1 -1
  258. package/dist/locale/vi.mjs +1 -1
  259. package/dist/locale/zh-cn.js +1 -1
  260. package/dist/locale/zh-cn.min.js +1 -1
  261. package/dist/locale/zh-cn.min.mjs +1 -1
  262. package/dist/locale/zh-cn.mjs +1 -1
  263. package/dist/locale/zh-hk.js +1 -1
  264. package/dist/locale/zh-hk.min.js +1 -1
  265. package/dist/locale/zh-hk.min.mjs +1 -1
  266. package/dist/locale/zh-hk.mjs +1 -1
  267. package/dist/locale/zh-mo.js +1 -1
  268. package/dist/locale/zh-mo.min.js +1 -1
  269. package/dist/locale/zh-mo.min.mjs +1 -1
  270. package/dist/locale/zh-mo.mjs +1 -1
  271. package/dist/locale/zh-tw.js +1 -1
  272. package/dist/locale/zh-tw.min.js +1 -1
  273. package/dist/locale/zh-tw.min.mjs +1 -1
  274. package/dist/locale/zh-tw.mjs +1 -1
  275. package/es/components/affix/src/affix.vue.d.ts +2 -2
  276. package/es/components/alert/src/alert.d.ts +1 -1
  277. package/es/components/anchor/src/anchor.d.ts +1 -1
  278. package/es/components/anchor/src/anchor.vue.d.ts +1 -1
  279. package/es/components/autocomplete/src/autocomplete.d.ts +4 -4
  280. package/es/components/autocomplete/src/autocomplete.vue.d.ts +4 -4
  281. package/es/components/avatar/src/avatar.d.ts +1 -1
  282. package/es/components/avatar/src/avatar.vue.d.ts +1 -1
  283. package/es/components/backtop/src/backtop.vue.d.ts +1 -1
  284. package/es/components/badge/src/badge.d.ts +1 -1
  285. package/es/components/badge/src/badge.vue.d.ts +1 -1
  286. package/es/components/button/src/button-group.vue.d.ts +1 -1
  287. package/es/components/button/src/button.d.ts +1 -1
  288. package/es/components/button/src/button.vue.d.ts +4 -4
  289. package/es/components/calendar/src/calendar.d.ts +1 -1
  290. package/es/components/card/src/card.vue.d.ts +1 -1
  291. package/es/components/carousel/src/carousel.d.ts +1 -1
  292. package/es/components/carousel/src/carousel.vue.d.ts +2 -2
  293. package/es/components/cascader/src/cascader.d.ts +3 -3
  294. package/es/components/cascader/src/cascader.vue.d.ts +16 -16
  295. package/es/components/cascader-panel/src/index.vue.d.ts +2 -2
  296. package/es/components/cascader-panel/src/menu.vue.d.ts +1 -1
  297. package/es/components/check-tag/src/check-tag.d.ts +1 -1
  298. package/es/components/checkbox/src/checkbox-button.vue.d.ts +4 -4
  299. package/es/components/checkbox/src/checkbox-group.vue.d.ts +1 -1
  300. package/es/components/checkbox/src/checkbox.d.ts +8 -8
  301. package/es/components/checkbox/src/checkbox.vue.d.ts +4 -4
  302. package/es/components/col/src/col.vue.d.ts +1 -1
  303. package/es/components/color-picker/src/color-picker.vue.d.ts +7 -7
  304. package/es/components/color-picker-panel/src/color-picker-panel.vue.d.ts +1 -1
  305. package/es/components/config-provider/src/hooks/use-global-config.d.ts +1 -1
  306. package/es/components/date-picker/src/date-picker.d.ts +14 -14
  307. package/es/components/date-picker/src/props.d.ts +2 -2
  308. package/es/components/date-picker-panel/src/date-picker-panel.d.ts +6 -6
  309. package/es/components/date-picker-panel/src/props/date-picker-panel.d.ts +1 -1
  310. package/es/components/descriptions/src/description-item.d.ts +14 -14
  311. package/es/components/descriptions/src/description.vue.d.ts +1 -1
  312. package/es/components/dialog/src/dialog.vue.d.ts +4 -4
  313. package/es/components/divider/src/divider.vue.d.ts +1 -1
  314. package/es/components/drawer/src/drawer.vue.d.ts +5 -5
  315. package/es/components/dropdown/src/dropdown-item.vue.d.ts +3 -3
  316. package/es/components/dropdown/src/dropdown-menu.vue.d.ts +1 -1
  317. package/es/components/dropdown/src/dropdown.d.ts +4 -4
  318. package/es/components/dropdown/src/dropdown.vue.d.ts +69 -69
  319. package/es/components/form/src/form.vue.d.ts +1 -1
  320. package/es/components/image/src/image.vue.d.ts +5 -5
  321. package/es/components/image-viewer/src/image-viewer.vue.d.ts +1 -1
  322. package/es/components/input/src/input.d.ts +3 -3
  323. package/es/components/input/src/input.vue.d.ts +16 -16
  324. package/es/components/input/src/input.vue_vue_type_script_setup_true_lang.mjs +22 -5
  325. package/es/components/input/src/input.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  326. package/es/components/input/src/input2.mjs.map +1 -1
  327. package/es/components/input-number/src/input-number.d.ts +2 -2
  328. package/es/components/input-number/src/input-number.vue.d.ts +9 -9
  329. package/es/components/input-otp/src/input-otp.vue.d.ts +6 -6
  330. package/es/components/input-tag/src/input-tag.d.ts +2 -2
  331. package/es/components/input-tag/src/input-tag.vue.d.ts +12 -12
  332. package/es/components/link/src/link.d.ts +1 -1
  333. package/es/components/link/src/link.vue.d.ts +1 -1
  334. package/es/components/mention/src/mention.d.ts +3 -3
  335. package/es/components/mention/src/mention.vue.d.ts +4 -4
  336. package/es/components/menu/src/menu.d.ts +5 -5
  337. package/es/components/menu/src/sub-menu.d.ts +1 -1
  338. package/es/components/message/src/message.d.ts +2 -2
  339. package/es/components/message/src/message.vue.d.ts +5 -5
  340. package/es/components/notification/src/notification.d.ts +2 -2
  341. package/es/components/notification/src/notification.vue.d.ts +5 -5
  342. package/es/components/page-header/src/page-header.vue.d.ts +1 -1
  343. package/es/components/pagination/src/pagination.d.ts +4 -4
  344. package/es/components/popconfirm/src/popconfirm.d.ts +2 -2
  345. package/es/components/popconfirm/src/popconfirm.vue.d.ts +2 -2
  346. package/es/components/popover/src/popover.d.ts +2 -2
  347. package/es/components/popover/src/popover.vue.d.ts +13 -13
  348. package/es/components/popper/src/composables/use-content.d.ts +1 -1
  349. package/es/components/popper/src/content.vue.d.ts +8 -8
  350. package/es/components/popper/src/popper.d.ts +2 -2
  351. package/es/components/progress/src/progress.d.ts +1 -1
  352. package/es/components/progress/src/progress.vue.d.ts +3 -3
  353. package/es/components/radio/src/radio-button.d.ts +3 -3
  354. package/es/components/radio/src/radio-button.vue.d.ts +2 -2
  355. package/es/components/radio/src/radio-group.vue.d.ts +4 -4
  356. package/es/components/radio/src/radio.d.ts +6 -6
  357. package/es/components/radio/src/radio.vue.d.ts +3 -3
  358. package/es/components/rate/src/rate.vue.d.ts +1 -1
  359. package/es/components/result/src/result.d.ts +1 -1
  360. package/es/components/row/src/row.vue.d.ts +1 -1
  361. package/es/components/scrollbar/src/scrollbar.vue.d.ts +4 -4
  362. package/es/components/segmented/index.d.ts +2 -2
  363. package/es/components/segmented/src/segmented.d.ts +1 -1
  364. package/es/components/select/src/option.d.ts +2 -2
  365. package/es/components/select/src/option.vue.d.ts +5 -5
  366. package/es/components/select/src/select.d.ts +4 -4
  367. package/es/components/select/src/select.vue.d.ts +82 -82
  368. package/es/components/select-v2/src/defaults.d.ts +2 -2
  369. package/es/components/select-v2/src/select.vue.d.ts +57 -57
  370. package/es/components/skeleton/src/skeleton-item.d.ts +1 -1
  371. package/es/components/skeleton/src/skeleton.vue.d.ts +1 -1
  372. package/es/components/slider/src/button.vue.d.ts +1 -1
  373. package/es/components/slider/src/slider.vue.d.ts +3 -3
  374. package/es/components/space/src/space.d.ts +1 -1
  375. package/es/components/statistic/src/statistic.vue.d.ts +2 -2
  376. package/es/components/steps/src/item.d.ts +1 -1
  377. package/es/components/steps/src/steps.d.ts +2 -2
  378. package/es/components/steps/src/steps.vue.d.ts +2 -2
  379. package/es/components/switch/src/switch.vue.d.ts +1 -1
  380. package/es/components/table/src/config.mjs +1 -0
  381. package/es/components/table/src/config.mjs.map +1 -1
  382. package/es/components/table/src/store/index.d.ts +32 -0
  383. package/es/components/table/src/store/index.mjs +1 -0
  384. package/es/components/table/src/store/index.mjs.map +1 -1
  385. package/es/components/table/src/store/tree.mjs +8 -2
  386. package/es/components/table/src/store/tree.mjs.map +1 -1
  387. package/es/components/table/src/store/watcher.mjs +187 -6
  388. package/es/components/table/src/store/watcher.mjs.map +1 -1
  389. package/es/components/table/src/table-column/index.d.ts +19 -19
  390. package/es/components/table/src/table-footer/index.d.ts +1 -1
  391. package/es/components/table/src/table-header/index.d.ts +13 -13
  392. package/es/components/table/src/table.vue.d.ts +63 -47
  393. package/es/components/table-v2/src/components/row.d.ts +1 -1
  394. package/es/components/table-v2/src/table-grid.d.ts +3 -3
  395. package/es/components/table-v2/src/table-v2.d.ts +3 -3
  396. package/es/components/tabs/src/tab-nav.d.ts +1 -1
  397. package/es/components/tabs/src/tabs.d.ts +2 -2
  398. package/es/components/tag/src/tag.d.ts +1 -1
  399. package/es/components/text/src/text.d.ts +1 -1
  400. package/es/components/time-picker/src/common/picker.vue.d.ts +20 -20
  401. package/es/components/time-picker/src/common/props.d.ts +2 -2
  402. package/es/components/time-picker/src/time-picker.d.ts +14 -14
  403. package/es/components/time-select/src/time-select.vue.d.ts +11 -11
  404. package/es/components/timeline/src/timeline-item.d.ts +1 -1
  405. package/es/components/timeline/src/timeline-item.vue.d.ts +1 -1
  406. package/es/components/tooltip/src/content.vue.d.ts +8 -8
  407. package/es/components/tooltip/src/tooltip.d.ts +2 -2
  408. package/es/components/tooltip/src/tooltip.vue.d.ts +9 -9
  409. package/es/components/tooltip/src/trigger.d.ts +1 -1
  410. package/es/components/tour/src/tour.vue.d.ts +2 -2
  411. package/es/components/tree/src/tree.vue.d.ts +25 -25
  412. package/es/components/tree-select/src/tree-select.vue.d.ts +43 -43
  413. package/es/components/tree-v2/src/tree.vue.d.ts +10 -10
  414. package/es/components/upload/src/upload-content.d.ts +1 -1
  415. package/es/components/upload/src/upload-content.vue.d.ts +2 -2
  416. package/es/components/upload/src/upload-list.d.ts +1 -1
  417. package/es/components/upload/src/upload.d.ts +2 -2
  418. package/es/components/upload/src/upload.vue.d.ts +3 -3
  419. package/es/components/virtual-list/src/builders/build-grid.d.ts +4 -4
  420. package/es/components/virtual-list/src/components/dynamic-size-grid.d.ts +4 -4
  421. package/es/components/virtual-list/src/components/dynamic-size-list.d.ts +6 -6
  422. package/es/components/virtual-list/src/components/fixed-size-grid.d.ts +4 -4
  423. package/es/components/virtual-list/src/components/fixed-size-list.d.ts +6 -6
  424. package/es/hooks/use-popper/index.d.ts +1 -1
  425. package/es/utils/vue/size.d.ts +1 -1
  426. package/es/version.mjs +1 -1
  427. package/es/version.mjs.map +1 -1
  428. package/lib/components/affix/src/affix.vue.d.ts +2 -2
  429. package/lib/components/alert/src/alert.d.ts +1 -1
  430. package/lib/components/anchor/src/anchor.d.ts +1 -1
  431. package/lib/components/anchor/src/anchor.vue.d.ts +1 -1
  432. package/lib/components/autocomplete/src/autocomplete.d.ts +4 -4
  433. package/lib/components/autocomplete/src/autocomplete.vue.d.ts +4 -4
  434. package/lib/components/avatar/src/avatar.d.ts +1 -1
  435. package/lib/components/avatar/src/avatar.vue.d.ts +1 -1
  436. package/lib/components/backtop/src/backtop.vue.d.ts +1 -1
  437. package/lib/components/badge/src/badge.d.ts +1 -1
  438. package/lib/components/badge/src/badge.vue.d.ts +1 -1
  439. package/lib/components/button/src/button-group.vue.d.ts +1 -1
  440. package/lib/components/button/src/button.d.ts +1 -1
  441. package/lib/components/button/src/button.vue.d.ts +4 -4
  442. package/lib/components/calendar/src/calendar.d.ts +1 -1
  443. package/lib/components/card/src/card.vue.d.ts +1 -1
  444. package/lib/components/carousel/src/carousel.d.ts +1 -1
  445. package/lib/components/carousel/src/carousel.vue.d.ts +2 -2
  446. package/lib/components/cascader/src/cascader.d.ts +3 -3
  447. package/lib/components/cascader/src/cascader.vue.d.ts +16 -16
  448. package/lib/components/cascader-panel/src/index.vue.d.ts +2 -2
  449. package/lib/components/cascader-panel/src/menu.vue.d.ts +1 -1
  450. package/lib/components/check-tag/src/check-tag.d.ts +1 -1
  451. package/lib/components/checkbox/src/checkbox-button.vue.d.ts +4 -4
  452. package/lib/components/checkbox/src/checkbox-group.vue.d.ts +1 -1
  453. package/lib/components/checkbox/src/checkbox.d.ts +8 -8
  454. package/lib/components/checkbox/src/checkbox.vue.d.ts +4 -4
  455. package/lib/components/col/src/col.vue.d.ts +1 -1
  456. package/lib/components/color-picker/src/color-picker.vue.d.ts +7 -7
  457. package/lib/components/color-picker-panel/src/color-picker-panel.vue.d.ts +1 -1
  458. package/lib/components/config-provider/src/hooks/use-global-config.d.ts +1 -1
  459. package/lib/components/date-picker/src/date-picker.d.ts +14 -14
  460. package/lib/components/date-picker/src/props.d.ts +2 -2
  461. package/lib/components/date-picker-panel/src/date-picker-panel.d.ts +6 -6
  462. package/lib/components/date-picker-panel/src/props/date-picker-panel.d.ts +1 -1
  463. package/lib/components/descriptions/src/description-item.d.ts +14 -14
  464. package/lib/components/descriptions/src/description.vue.d.ts +1 -1
  465. package/lib/components/dialog/src/dialog.vue.d.ts +4 -4
  466. package/lib/components/divider/src/divider.vue.d.ts +1 -1
  467. package/lib/components/drawer/src/drawer.vue.d.ts +5 -5
  468. package/lib/components/dropdown/src/dropdown-item.vue.d.ts +3 -3
  469. package/lib/components/dropdown/src/dropdown-menu.vue.d.ts +1 -1
  470. package/lib/components/dropdown/src/dropdown.d.ts +4 -4
  471. package/lib/components/dropdown/src/dropdown.vue.d.ts +69 -69
  472. package/lib/components/form/src/form.vue.d.ts +1 -1
  473. package/lib/components/image/src/image.vue.d.ts +5 -5
  474. package/lib/components/image-viewer/src/image-viewer.vue.d.ts +1 -1
  475. package/lib/components/input/src/input.d.ts +3 -3
  476. package/lib/components/input/src/input.vue.d.ts +16 -16
  477. package/lib/components/input/src/input.vue_vue_type_script_setup_true_lang.js +21 -4
  478. package/lib/components/input/src/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
  479. package/lib/components/input/src/input2.js.map +1 -1
  480. package/lib/components/input-number/src/input-number.d.ts +2 -2
  481. package/lib/components/input-number/src/input-number.vue.d.ts +9 -9
  482. package/lib/components/input-otp/src/input-otp.vue.d.ts +6 -6
  483. package/lib/components/input-tag/src/input-tag.d.ts +2 -2
  484. package/lib/components/input-tag/src/input-tag.vue.d.ts +12 -12
  485. package/lib/components/link/src/link.d.ts +1 -1
  486. package/lib/components/link/src/link.vue.d.ts +1 -1
  487. package/lib/components/mention/src/mention.d.ts +3 -3
  488. package/lib/components/mention/src/mention.vue.d.ts +4 -4
  489. package/lib/components/menu/src/menu.d.ts +5 -5
  490. package/lib/components/menu/src/sub-menu.d.ts +1 -1
  491. package/lib/components/message/src/message.d.ts +2 -2
  492. package/lib/components/message/src/message.vue.d.ts +5 -5
  493. package/lib/components/notification/src/notification.d.ts +2 -2
  494. package/lib/components/notification/src/notification.vue.d.ts +5 -5
  495. package/lib/components/page-header/src/page-header.vue.d.ts +1 -1
  496. package/lib/components/pagination/src/pagination.d.ts +4 -4
  497. package/lib/components/popconfirm/src/popconfirm.d.ts +2 -2
  498. package/lib/components/popconfirm/src/popconfirm.vue.d.ts +2 -2
  499. package/lib/components/popover/src/popover.d.ts +2 -2
  500. package/lib/components/popover/src/popover.vue.d.ts +13 -13
  501. package/lib/components/popper/src/composables/use-content.d.ts +1 -1
  502. package/lib/components/popper/src/content.vue.d.ts +8 -8
  503. package/lib/components/popper/src/popper.d.ts +2 -2
  504. package/lib/components/progress/src/progress.d.ts +1 -1
  505. package/lib/components/progress/src/progress.vue.d.ts +3 -3
  506. package/lib/components/radio/src/radio-button.d.ts +3 -3
  507. package/lib/components/radio/src/radio-button.vue.d.ts +2 -2
  508. package/lib/components/radio/src/radio-group.vue.d.ts +4 -4
  509. package/lib/components/radio/src/radio.d.ts +6 -6
  510. package/lib/components/radio/src/radio.vue.d.ts +3 -3
  511. package/lib/components/rate/src/rate.vue.d.ts +1 -1
  512. package/lib/components/result/src/result.d.ts +1 -1
  513. package/lib/components/row/src/row.vue.d.ts +1 -1
  514. package/lib/components/scrollbar/src/scrollbar.vue.d.ts +4 -4
  515. package/lib/components/segmented/index.d.ts +2 -2
  516. package/lib/components/segmented/src/segmented.d.ts +1 -1
  517. package/lib/components/select/src/option.d.ts +2 -2
  518. package/lib/components/select/src/option.vue.d.ts +5 -5
  519. package/lib/components/select/src/select.d.ts +4 -4
  520. package/lib/components/select/src/select.vue.d.ts +82 -82
  521. package/lib/components/select-v2/src/defaults.d.ts +2 -2
  522. package/lib/components/select-v2/src/select.vue.d.ts +57 -57
  523. package/lib/components/skeleton/src/skeleton-item.d.ts +1 -1
  524. package/lib/components/skeleton/src/skeleton.vue.d.ts +1 -1
  525. package/lib/components/slider/src/button.vue.d.ts +1 -1
  526. package/lib/components/slider/src/slider.vue.d.ts +3 -3
  527. package/lib/components/space/src/space.d.ts +1 -1
  528. package/lib/components/statistic/src/statistic.vue.d.ts +2 -2
  529. package/lib/components/steps/src/item.d.ts +1 -1
  530. package/lib/components/steps/src/steps.d.ts +2 -2
  531. package/lib/components/steps/src/steps.vue.d.ts +2 -2
  532. package/lib/components/switch/src/switch.vue.d.ts +1 -1
  533. package/lib/components/table/src/config.js +1 -0
  534. package/lib/components/table/src/config.js.map +1 -1
  535. package/lib/components/table/src/store/index.d.ts +32 -0
  536. package/lib/components/table/src/store/index.js +1 -0
  537. package/lib/components/table/src/store/index.js.map +1 -1
  538. package/lib/components/table/src/store/tree.js +8 -2
  539. package/lib/components/table/src/store/tree.js.map +1 -1
  540. package/lib/components/table/src/store/watcher.js +187 -6
  541. package/lib/components/table/src/store/watcher.js.map +1 -1
  542. package/lib/components/table/src/table-column/index.d.ts +19 -19
  543. package/lib/components/table/src/table-footer/index.d.ts +1 -1
  544. package/lib/components/table/src/table-header/index.d.ts +13 -13
  545. package/lib/components/table/src/table.vue.d.ts +63 -47
  546. package/lib/components/table-v2/src/components/row.d.ts +1 -1
  547. package/lib/components/table-v2/src/table-grid.d.ts +3 -3
  548. package/lib/components/table-v2/src/table-v2.d.ts +3 -3
  549. package/lib/components/tabs/src/tab-nav.d.ts +1 -1
  550. package/lib/components/tabs/src/tabs.d.ts +2 -2
  551. package/lib/components/tag/src/tag.d.ts +1 -1
  552. package/lib/components/text/src/text.d.ts +1 -1
  553. package/lib/components/time-picker/src/common/picker.vue.d.ts +20 -20
  554. package/lib/components/time-picker/src/common/props.d.ts +2 -2
  555. package/lib/components/time-picker/src/time-picker.d.ts +14 -14
  556. package/lib/components/time-select/src/time-select.vue.d.ts +11 -11
  557. package/lib/components/timeline/src/timeline-item.d.ts +1 -1
  558. package/lib/components/timeline/src/timeline-item.vue.d.ts +1 -1
  559. package/lib/components/tooltip/src/content.vue.d.ts +8 -8
  560. package/lib/components/tooltip/src/tooltip.d.ts +2 -2
  561. package/lib/components/tooltip/src/tooltip.vue.d.ts +9 -9
  562. package/lib/components/tooltip/src/trigger.d.ts +1 -1
  563. package/lib/components/tour/src/tour.vue.d.ts +2 -2
  564. package/lib/components/tree/src/tree.vue.d.ts +25 -25
  565. package/lib/components/tree-select/src/tree-select.vue.d.ts +43 -43
  566. package/lib/components/tree-v2/src/tree.vue.d.ts +10 -10
  567. package/lib/components/upload/src/upload-content.d.ts +1 -1
  568. package/lib/components/upload/src/upload-content.vue.d.ts +2 -2
  569. package/lib/components/upload/src/upload-list.d.ts +1 -1
  570. package/lib/components/upload/src/upload.d.ts +2 -2
  571. package/lib/components/upload/src/upload.vue.d.ts +3 -3
  572. package/lib/components/virtual-list/src/builders/build-grid.d.ts +4 -4
  573. package/lib/components/virtual-list/src/components/dynamic-size-grid.d.ts +4 -4
  574. package/lib/components/virtual-list/src/components/dynamic-size-list.d.ts +6 -6
  575. package/lib/components/virtual-list/src/components/fixed-size-grid.d.ts +4 -4
  576. package/lib/components/virtual-list/src/components/fixed-size-list.d.ts +6 -6
  577. package/lib/hooks/use-popper/index.d.ts +1 -1
  578. package/lib/utils/vue/size.d.ts +1 -1
  579. package/lib/version.js +1 -1
  580. package/lib/version.js.map +1 -1
  581. package/package.json +6 -6
  582. package/web-types.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../../../../packages/components/table/src/store/index.ts"],"sourcesContent":["import { getCurrentInstance, nextTick, unref } from 'vue'\nimport { isNull } from 'lodash-unified'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport useWatcher from './watcher'\n\nimport type { Ref } from 'vue'\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type { DefaultRow, Filter, Sort, Table } from '../table/defaults'\n\ninterface WatcherPropsData<T extends DefaultRow> {\n data: Ref<T[]>\n rowKey: Ref<string | null>\n}\n\nfunction replaceColumn<T extends DefaultRow>(\n array: TableColumnCtx<T>[],\n column: TableColumnCtx<T>\n) {\n return array.map((item) => {\n if (item.id === column.id) {\n return column\n } else if (item.children?.length) {\n item.children = replaceColumn(item.children, column)\n }\n return item\n })\n}\n\nfunction sortColumn<T extends DefaultRow>(array: TableColumnCtx<T>[]) {\n array.forEach((item) => {\n item.no = item.getColumnIndex?.()\n if (item.children?.length) {\n sortColumn(item.children)\n }\n })\n array.sort((cur, pre) => cur.no - pre.no)\n}\n\nfunction useStore<T extends DefaultRow>() {\n const instance = getCurrentInstance() as Table<T>\n const watcher = useWatcher<T>()\n const ns = useNamespace('table')\n const { t } = useLocale()\n\n type StoreStates = typeof watcher.states\n const mutations = {\n setData(states: StoreStates, data: T[]) {\n const dataInstanceChanged = unref(states._data) !== data\n states.data.value = data\n states._data.value = data\n instance.store.execQuery()\n // 数据变化,更新部分数据。\n // 没有使用 computed,而是手动更新部分数据 https://github.com/vuejs/vue/issues/6660#issuecomment-331417140\n instance.store.updateCurrentRowData()\n instance.store.updateExpandRows()\n instance.store.updateTreeData(\n instance.store.states.defaultExpandAll.value\n )\n if (unref(states.reserveSelection)) {\n instance.store.assertRowKey()\n } else {\n if (dataInstanceChanged) {\n instance.store.clearSelection()\n } else {\n instance.store.cleanSelection()\n }\n }\n instance.store.updateAllSelected()\n if (instance.$ready) {\n instance.store.scheduleLayout()\n }\n },\n\n insertColumn(\n states: StoreStates,\n column: TableColumnCtx<T>,\n parent: TableColumnCtx<T>,\n updateColumnOrder: () => void\n ) {\n const array = unref(states._columns)\n let newColumns = []\n if (!parent) {\n array.push(column)\n newColumns = array\n } else {\n if (parent && !parent.children) {\n parent.children = []\n }\n parent.children?.push(column)\n newColumns = replaceColumn(array, parent)\n }\n sortColumn(newColumns)\n states._columns.value = newColumns\n states.updateOrderFns.push(updateColumnOrder)\n if (column.type === 'selection') {\n states.selectable.value = column.selectable\n states.reserveSelection.value = column.reserveSelection\n }\n if (instance.$ready) {\n instance.store.updateColumns() // hack for dynamics insert column\n instance.store.scheduleLayout()\n }\n },\n\n updateColumnOrder(states: StoreStates, column: TableColumnCtx<T>) {\n const newColumnIndex = column.getColumnIndex?.()\n if (newColumnIndex === column.no) return\n\n sortColumn(states._columns.value)\n\n if (instance.$ready) {\n instance.store.updateColumns()\n }\n },\n\n removeColumn(\n states: StoreStates,\n column: TableColumnCtx<T>,\n parent: TableColumnCtx<T>,\n updateColumnOrder: () => void\n ) {\n const array = unref(states._columns) || []\n if (parent) {\n parent.children?.splice(\n parent.children.findIndex((item) => item.id === column.id),\n 1\n )\n // fix #10699, delete parent.children immediately will trigger again\n nextTick(() => {\n if (parent.children?.length === 0) {\n delete parent.children\n }\n })\n states._columns.value = replaceColumn(array, parent)\n } else {\n const index = array.indexOf(column)\n if (index > -1) {\n array.splice(index, 1)\n states._columns.value = array\n }\n }\n\n const updateFnIndex = states.updateOrderFns.indexOf(updateColumnOrder)\n updateFnIndex > -1 && states.updateOrderFns.splice(updateFnIndex, 1)\n\n if (instance.$ready) {\n instance.store.updateColumns() // hack for dynamics remove column\n instance.store.scheduleLayout()\n }\n },\n\n sort(states: StoreStates, options: Sort) {\n const { prop, order, init } = options\n if (prop) {\n const column = unref(states.columns).find(\n (column) => column.property === prop\n )\n if (column) {\n column.order = order\n instance.store.updateSort(column, prop, order)\n instance.store.commit('changeSortCondition', { init })\n }\n }\n },\n\n changeSortCondition(states: StoreStates, options: Sort) {\n // 修复 pr https://github.com/ElemeFE/element/pull/15012 导致的 bug\n // https://github.com/element-plus/element-plus/pull/4640\n const { sortingColumn, sortProp, sortOrder } = states\n const columnValue = unref(sortingColumn),\n propValue = unref(sortProp),\n orderValue = unref(sortOrder)\n if (isNull(orderValue)) {\n states.sortingColumn.value = null\n states.sortProp.value = null\n }\n const ignore = { filter: true }\n instance.store.execQuery(ignore)\n\n if (!options || !(options.silent || options.init)) {\n instance.emit('sort-change', {\n column: columnValue,\n prop: propValue,\n order: orderValue,\n })\n }\n\n instance.store.updateTableScrollY()\n },\n\n filterChange(_states: StoreStates, options: Filter<T>) {\n const { column, values, silent } = options\n const newFilters = instance.store.updateFilters(column, values)\n instance.store.execQuery()\n\n if (!silent) {\n instance.emit('filter-change', newFilters)\n }\n instance.store.updateTableScrollY()\n },\n\n toggleAllSelection() {\n instance.store.toggleAllSelection?.()\n },\n\n rowSelectedChanged(_states: StoreStates, row: T) {\n instance.store.toggleRowSelection(row)\n instance.store.updateAllSelected()\n },\n\n setHoverRow(states: StoreStates, row: T) {\n states.hoverRow.value = row\n },\n\n setCurrentRow(_states: StoreStates, row: T) {\n instance.store.updateCurrentRow(row)\n },\n }\n const commit = function (name: keyof typeof mutations, ...args: any[]) {\n const mutations = instance.store.mutations\n if (mutations[name]) {\n ;(mutations[name] as any).apply(instance, [\n instance.store.states,\n ...args,\n ])\n } else {\n throw new Error(`Action not found: ${name}`)\n }\n }\n const updateTableScrollY = function () {\n nextTick(() => instance.layout.updateScrollY.apply(instance.layout))\n }\n return {\n ns,\n t,\n ...watcher,\n mutations,\n commit,\n updateTableScrollY,\n }\n}\n\nexport default useStore\n\nclass HelperStore<T extends DefaultRow> {\n Return = useStore<T>()\n}\n\ntype StoreFilter = Record<string, string[]>\ntype Store<T extends DefaultRow> = HelperStore<T>['Return']\nexport type { WatcherPropsData, Store, StoreFilter }\n"],"mappings":";;;;;;;AAcA,SAAS,cACP,OACA,QACA;AACA,QAAO,MAAM,KAAK,SAAS;AACzB,MAAI,KAAK,OAAO,OAAO,GACrB,QAAO;WACE,KAAK,UAAU,OACxB,MAAK,WAAW,cAAc,KAAK,UAAU,OAAO;AAEtD,SAAO;GACP;;AAGJ,SAAS,WAAiC,OAA4B;AACpE,OAAM,SAAS,SAAS;AACtB,OAAK,KAAK,KAAK,kBAAkB;AACjC,MAAI,KAAK,UAAU,OACjB,YAAW,KAAK,SAAS;GAE3B;AACF,OAAM,MAAM,KAAK,QAAQ,IAAI,KAAK,IAAI,GAAG;;AAG3C,SAAS,WAAiC;CACxC,MAAM,WAAW,oBAAoB;CACrC,MAAM,UAAU,YAAe;CAC/B,MAAM,KAAK,aAAa,QAAQ;CAChC,MAAM,EAAE,MAAM,WAAW;CAGzB,MAAM,YAAY;EAChB,QAAQ,QAAqB,MAAW;GACtC,MAAM,sBAAsB,MAAM,OAAO,MAAM,KAAK;AACpD,UAAO,KAAK,QAAQ;AACpB,UAAO,MAAM,QAAQ;AACrB,YAAS,MAAM,WAAW;AAG1B,YAAS,MAAM,sBAAsB;AACrC,YAAS,MAAM,kBAAkB;AACjC,YAAS,MAAM,eACb,SAAS,MAAM,OAAO,iBAAiB,MACxC;AACD,OAAI,MAAM,OAAO,iBAAiB,CAChC,UAAS,MAAM,cAAc;YAEzB,oBACF,UAAS,MAAM,gBAAgB;OAE/B,UAAS,MAAM,gBAAgB;AAGnC,YAAS,MAAM,mBAAmB;AAClC,OAAI,SAAS,OACX,UAAS,MAAM,gBAAgB;;EAInC,aACE,QACA,QACA,QACA,mBACA;GACA,MAAM,QAAQ,MAAM,OAAO,SAAS;GACpC,IAAI,aAAa,EAAE;AACnB,OAAI,CAAC,QAAQ;AACX,UAAM,KAAK,OAAO;AAClB,iBAAa;UACR;AACL,QAAI,UAAU,CAAC,OAAO,SACpB,QAAO,WAAW,EAAE;AAEtB,WAAO,UAAU,KAAK,OAAO;AAC7B,iBAAa,cAAc,OAAO,OAAO;;AAE3C,cAAW,WAAW;AACtB,UAAO,SAAS,QAAQ;AACxB,UAAO,eAAe,KAAK,kBAAkB;AAC7C,OAAI,OAAO,SAAS,aAAa;AAC/B,WAAO,WAAW,QAAQ,OAAO;AACjC,WAAO,iBAAiB,QAAQ,OAAO;;AAEzC,OAAI,SAAS,QAAQ;AACnB,aAAS,MAAM,eAAe;AAC9B,aAAS,MAAM,gBAAgB;;;EAInC,kBAAkB,QAAqB,QAA2B;AAEhE,OADuB,OAAO,kBAAkB,KACzB,OAAO,GAAI;AAElC,cAAW,OAAO,SAAS,MAAM;AAEjC,OAAI,SAAS,OACX,UAAS,MAAM,eAAe;;EAIlC,aACE,QACA,QACA,QACA,mBACA;GACA,MAAM,QAAQ,MAAM,OAAO,SAAS,IAAI,EAAE;AAC1C,OAAI,QAAQ;AACV,WAAO,UAAU,OACf,OAAO,SAAS,WAAW,SAAS,KAAK,OAAO,OAAO,GAAG,EAC1D,EACD;AAED,mBAAe;AACb,SAAI,OAAO,UAAU,WAAW,EAC9B,QAAO,OAAO;MAEhB;AACF,WAAO,SAAS,QAAQ,cAAc,OAAO,OAAO;UAC/C;IACL,MAAM,QAAQ,MAAM,QAAQ,OAAO;AACnC,QAAI,QAAQ,IAAI;AACd,WAAM,OAAO,OAAO,EAAE;AACtB,YAAO,SAAS,QAAQ;;;GAI5B,MAAM,gBAAgB,OAAO,eAAe,QAAQ,kBAAkB;AACtE,mBAAgB,MAAM,OAAO,eAAe,OAAO,eAAe,EAAE;AAEpE,OAAI,SAAS,QAAQ;AACnB,aAAS,MAAM,eAAe;AAC9B,aAAS,MAAM,gBAAgB;;;EAInC,KAAK,QAAqB,SAAe;GACvC,MAAM,EAAE,MAAM,OAAO,SAAS;AAC9B,OAAI,MAAM;IACR,MAAM,SAAS,MAAM,OAAO,QAAQ,CAAC,MAClC,WAAW,OAAO,aAAa,KACjC;AACD,QAAI,QAAQ;AACV,YAAO,QAAQ;AACf,cAAS,MAAM,WAAW,QAAQ,MAAM,MAAM;AAC9C,cAAS,MAAM,OAAO,uBAAuB,EAAE,MAAM,CAAC;;;;EAK5D,oBAAoB,QAAqB,SAAe;GAGtD,MAAM,EAAE,eAAe,UAAU,cAAc;GAC/C,MAAM,cAAc,MAAM,cAAc,EACtC,YAAY,MAAM,SAAS,EAC3B,aAAa,MAAM,UAAU;AAC/B,OAAI,OAAO,WAAW,EAAE;AACtB,WAAO,cAAc,QAAQ;AAC7B,WAAO,SAAS,QAAQ;;AAG1B,YAAS,MAAM,UADA,EAAE,QAAQ,MAAM,CACC;AAEhC,OAAI,CAAC,WAAW,EAAE,QAAQ,UAAU,QAAQ,MAC1C,UAAS,KAAK,eAAe;IAC3B,QAAQ;IACR,MAAM;IACN,OAAO;IACR,CAAC;AAGJ,YAAS,MAAM,oBAAoB;;EAGrC,aAAa,SAAsB,SAAoB;GACrD,MAAM,EAAE,QAAQ,QAAQ,WAAW;GACnC,MAAM,aAAa,SAAS,MAAM,cAAc,QAAQ,OAAO;AAC/D,YAAS,MAAM,WAAW;AAE1B,OAAI,CAAC,OACH,UAAS,KAAK,iBAAiB,WAAW;AAE5C,YAAS,MAAM,oBAAoB;;EAGrC,qBAAqB;AACnB,YAAS,MAAM,sBAAsB;;EAGvC,mBAAmB,SAAsB,KAAQ;AAC/C,YAAS,MAAM,mBAAmB,IAAI;AACtC,YAAS,MAAM,mBAAmB;;EAGpC,YAAY,QAAqB,KAAQ;AACvC,UAAO,SAAS,QAAQ;;EAG1B,cAAc,SAAsB,KAAQ;AAC1C,YAAS,MAAM,iBAAiB,IAAI;;EAEvC;CACD,MAAM,SAAS,SAAU,MAA8B,GAAG,MAAa;EACrE,MAAM,YAAY,SAAS,MAAM;AACjC,MAAI,UAAU,MACX,CAAC,UAAU,MAAc,MAAM,UAAU,CACxC,SAAS,MAAM,QACf,GAAG,KACJ,CAAC;MAEF,OAAM,IAAI,MAAM,qBAAqB,OAAO;;CAGhD,MAAM,qBAAqB,WAAY;AACrC,iBAAe,SAAS,OAAO,cAAc,MAAM,SAAS,OAAO,CAAC;;AAEtE,QAAO;EACL;EACA;EACA,GAAG;EACH;EACA;EACA;EACD"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../../../../packages/components/table/src/store/index.ts"],"sourcesContent":["import { getCurrentInstance, nextTick, unref } from 'vue'\nimport { isNull } from 'lodash-unified'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport useWatcher from './watcher'\n\nimport type { Ref } from 'vue'\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type { DefaultRow, Filter, Sort, Table } from '../table/defaults'\n\ninterface WatcherPropsData<T extends DefaultRow> {\n data: Ref<T[]>\n rowKey: Ref<string | null>\n}\n\nfunction replaceColumn<T extends DefaultRow>(\n array: TableColumnCtx<T>[],\n column: TableColumnCtx<T>\n) {\n return array.map((item) => {\n if (item.id === column.id) {\n return column\n } else if (item.children?.length) {\n item.children = replaceColumn(item.children, column)\n }\n return item\n })\n}\n\nfunction sortColumn<T extends DefaultRow>(array: TableColumnCtx<T>[]) {\n array.forEach((item) => {\n item.no = item.getColumnIndex?.()\n if (item.children?.length) {\n sortColumn(item.children)\n }\n })\n array.sort((cur, pre) => cur.no - pre.no)\n}\n\nfunction useStore<T extends DefaultRow>() {\n const instance = getCurrentInstance() as Table<T>\n const watcher = useWatcher<T>()\n const ns = useNamespace('table')\n const { t } = useLocale()\n\n type StoreStates = typeof watcher.states\n const mutations = {\n setData(states: StoreStates, data: T[]) {\n const dataInstanceChanged = unref(states._data) !== data\n states.data.value = data\n states._data.value = data\n instance.store.execQuery()\n // 数据变化,更新部分数据。\n // 没有使用 computed,而是手动更新部分数据 https://github.com/vuejs/vue/issues/6660#issuecomment-331417140\n instance.store.updateCurrentRowData()\n instance.store.updateExpandRows()\n instance.store.updateTreeData(\n instance.store.states.defaultExpandAll.value\n )\n if (unref(states.reserveSelection)) {\n instance.store.assertRowKey()\n } else {\n if (dataInstanceChanged) {\n instance.store.clearSelection()\n } else {\n instance.store.cleanSelection()\n }\n }\n instance.store.updateSelectionByChildren({ emitChange: false })\n instance.store.updateAllSelected()\n if (instance.$ready) {\n instance.store.scheduleLayout()\n }\n },\n\n insertColumn(\n states: StoreStates,\n column: TableColumnCtx<T>,\n parent: TableColumnCtx<T>,\n updateColumnOrder: () => void\n ) {\n const array = unref(states._columns)\n let newColumns = []\n if (!parent) {\n array.push(column)\n newColumns = array\n } else {\n if (parent && !parent.children) {\n parent.children = []\n }\n parent.children?.push(column)\n newColumns = replaceColumn(array, parent)\n }\n sortColumn(newColumns)\n states._columns.value = newColumns\n states.updateOrderFns.push(updateColumnOrder)\n if (column.type === 'selection') {\n states.selectable.value = column.selectable\n states.reserveSelection.value = column.reserveSelection\n }\n if (instance.$ready) {\n instance.store.updateColumns() // hack for dynamics insert column\n instance.store.scheduleLayout()\n }\n },\n\n updateColumnOrder(states: StoreStates, column: TableColumnCtx<T>) {\n const newColumnIndex = column.getColumnIndex?.()\n if (newColumnIndex === column.no) return\n\n sortColumn(states._columns.value)\n\n if (instance.$ready) {\n instance.store.updateColumns()\n }\n },\n\n removeColumn(\n states: StoreStates,\n column: TableColumnCtx<T>,\n parent: TableColumnCtx<T>,\n updateColumnOrder: () => void\n ) {\n const array = unref(states._columns) || []\n if (parent) {\n parent.children?.splice(\n parent.children.findIndex((item) => item.id === column.id),\n 1\n )\n // fix #10699, delete parent.children immediately will trigger again\n nextTick(() => {\n if (parent.children?.length === 0) {\n delete parent.children\n }\n })\n states._columns.value = replaceColumn(array, parent)\n } else {\n const index = array.indexOf(column)\n if (index > -1) {\n array.splice(index, 1)\n states._columns.value = array\n }\n }\n\n const updateFnIndex = states.updateOrderFns.indexOf(updateColumnOrder)\n updateFnIndex > -1 && states.updateOrderFns.splice(updateFnIndex, 1)\n\n if (instance.$ready) {\n instance.store.updateColumns() // hack for dynamics remove column\n instance.store.scheduleLayout()\n }\n },\n\n sort(states: StoreStates, options: Sort) {\n const { prop, order, init } = options\n if (prop) {\n const column = unref(states.columns).find(\n (column) => column.property === prop\n )\n if (column) {\n column.order = order\n instance.store.updateSort(column, prop, order)\n instance.store.commit('changeSortCondition', { init })\n }\n }\n },\n\n changeSortCondition(states: StoreStates, options: Sort) {\n // 修复 pr https://github.com/ElemeFE/element/pull/15012 导致的 bug\n // https://github.com/element-plus/element-plus/pull/4640\n const { sortingColumn, sortProp, sortOrder } = states\n const columnValue = unref(sortingColumn),\n propValue = unref(sortProp),\n orderValue = unref(sortOrder)\n if (isNull(orderValue)) {\n states.sortingColumn.value = null\n states.sortProp.value = null\n }\n const ignore = { filter: true }\n instance.store.execQuery(ignore)\n\n if (!options || !(options.silent || options.init)) {\n instance.emit('sort-change', {\n column: columnValue,\n prop: propValue,\n order: orderValue,\n })\n }\n\n instance.store.updateTableScrollY()\n },\n\n filterChange(_states: StoreStates, options: Filter<T>) {\n const { column, values, silent } = options\n const newFilters = instance.store.updateFilters(column, values)\n instance.store.execQuery()\n\n if (!silent) {\n instance.emit('filter-change', newFilters)\n }\n instance.store.updateTableScrollY()\n },\n\n toggleAllSelection() {\n instance.store.toggleAllSelection?.()\n },\n\n rowSelectedChanged(_states: StoreStates, row: T) {\n instance.store.toggleRowSelection(row)\n instance.store.updateAllSelected()\n },\n\n setHoverRow(states: StoreStates, row: T) {\n states.hoverRow.value = row\n },\n\n setCurrentRow(_states: StoreStates, row: T) {\n instance.store.updateCurrentRow(row)\n },\n }\n const commit = function (name: keyof typeof mutations, ...args: any[]) {\n const mutations = instance.store.mutations\n if (mutations[name]) {\n ;(mutations[name] as any).apply(instance, [\n instance.store.states,\n ...args,\n ])\n } else {\n throw new Error(`Action not found: ${name}`)\n }\n }\n const updateTableScrollY = function () {\n nextTick(() => instance.layout.updateScrollY.apply(instance.layout))\n }\n return {\n ns,\n t,\n ...watcher,\n mutations,\n commit,\n updateTableScrollY,\n }\n}\n\nexport default useStore\n\nclass HelperStore<T extends DefaultRow> {\n Return = useStore<T>()\n}\n\ntype StoreFilter = Record<string, string[]>\ntype Store<T extends DefaultRow> = HelperStore<T>['Return']\nexport type { WatcherPropsData, Store, StoreFilter }\n"],"mappings":"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"}
@@ -151,7 +151,10 @@ function useTree(watcherData) {
151
151
  treeData.value[key].loading = false;
152
152
  treeData.value[key].loaded = true;
153
153
  treeData.value[key].expanded = true;
154
- if (data.length) lazyTreeNodeMap.value[key] = data;
154
+ if (data.length) lazyTreeNodeMap.value = {
155
+ ...lazyTreeNodeMap.value,
156
+ [key]: data
157
+ };
155
158
  instance.emit("expand-change", row, true);
156
159
  });
157
160
  }
@@ -160,7 +163,10 @@ function useTree(watcherData) {
160
163
  const { lazy, rowKey } = instance.props;
161
164
  if (!lazy) return;
162
165
  if (!rowKey) throw new Error("[Table] rowKey is required in updateKeyChild");
163
- if (lazyTreeNodeMap.value[key]) lazyTreeNodeMap.value[key] = data;
166
+ if (lazyTreeNodeMap.value[key]) lazyTreeNodeMap.value = {
167
+ ...lazyTreeNodeMap.value,
168
+ [key]: data
169
+ };
164
170
  };
165
171
  return {
166
172
  loadData,
@@ -1 +1 @@
1
- {"version":3,"file":"tree.mjs","names":[],"sources":["../../../../../../../packages/components/table/src/store/tree.ts"],"sourcesContent":["import { computed, getCurrentInstance, ref, unref, watch } from 'vue'\nimport { isArray, isUndefined } from '@element-plus/utils'\nimport { getRowIdentity, walkTreeNode } from '../util'\n\nimport type { WatcherPropsData } from '.'\nimport type { DefaultRow, Table, TableProps, TreeNode } from '../table/defaults'\n\nexport interface TreeData extends TreeNode {\n children?: string[]\n lazy?: boolean\n loaded?: boolean\n}\n\nfunction useTree<T extends DefaultRow>(watcherData: WatcherPropsData<T>) {\n const expandRowKeys = ref<Array<string>>([])\n const treeData = ref<Record<string, TreeData>>({})\n const indent = ref(16)\n const lazy = ref(false)\n const lazyTreeNodeMap = ref<Record<string, T[]>>({})\n const lazyColumnIdentifier = ref('hasChildren')\n const childrenColumnName = ref('children')\n const checkStrictly = ref(false)\n const instance = getCurrentInstance() as Table<T>\n const normalizedData = computed(() => {\n if (!watcherData.rowKey.value) return {}\n const data = watcherData.data.value || []\n return normalize(data)\n })\n const normalizedLazyNode = computed(() => {\n const rowKey = watcherData.rowKey.value\n const keys = Object.keys(lazyTreeNodeMap.value)\n const res: Record<string, { children: string[] }> = {}\n if (!keys.length) return res\n keys.forEach((key) => {\n if (lazyTreeNodeMap.value[key].length) {\n const item: (typeof res)[number] = { children: [] }\n lazyTreeNodeMap.value[key].forEach((row) => {\n const currentRowKey = getRowIdentity(row, rowKey)\n item.children.push(currentRowKey)\n if (row[lazyColumnIdentifier.value] && !res[currentRowKey]) {\n res[currentRowKey] = { children: [] }\n }\n })\n res[key] = item\n }\n })\n return res\n })\n\n const normalize = (data: T[]) => {\n const rowKey = watcherData.rowKey.value\n const res = {} as Record<string, TreeData>\n walkTreeNode(\n data,\n (parent, children, level) => {\n const parentId = getRowIdentity(parent, rowKey)\n if (isArray(children)) {\n res[parentId] = {\n children: children.map((row) => getRowIdentity(row, rowKey)),\n level,\n }\n } else if (lazy.value) {\n // 当 children 不存在且 lazy 为 true,该节点即为懒加载的节点\n res[parentId] = {\n children: [],\n lazy: true,\n level,\n }\n }\n },\n childrenColumnName.value,\n lazyColumnIdentifier.value,\n lazy.value\n )\n return res\n }\n\n const updateTreeData = (\n ifChangeExpandRowKeys = false,\n ifExpandAll?: boolean\n ) => {\n ifExpandAll ||= instance.store?.states.defaultExpandAll.value\n const nested = normalizedData.value\n const normalizedLazyNode_ = normalizedLazyNode.value\n const keys = Object.keys(nested)\n const newTreeData: Record<string, TreeData> = {}\n if (keys.length) {\n const oldTreeData = unref(treeData)\n const rootLazyRowKeys: string[] = []\n const getExpanded = (oldValue: TreeData, key: string) => {\n if (ifChangeExpandRowKeys) {\n if (expandRowKeys.value) {\n return ifExpandAll || expandRowKeys.value.includes(key)\n } else {\n return !!(ifExpandAll || oldValue?.expanded)\n }\n } else {\n const included =\n ifExpandAll ||\n (expandRowKeys.value && expandRowKeys.value.includes(key))\n return !!(oldValue?.expanded || included)\n }\n }\n // 合并 expanded 与 display,确保数据刷新后,状态不变\n keys.forEach((key) => {\n const oldValue = oldTreeData[key]\n const newValue = { ...nested[key] }\n newValue.expanded = getExpanded(oldValue, key)\n if (newValue.lazy) {\n const { loaded = false, loading = false } = oldValue || {}\n newValue.loaded = !!loaded\n newValue.loading = !!loading\n rootLazyRowKeys.push(key)\n }\n newTreeData[key] = newValue\n })\n // 根据懒加载数据更新 treeData\n const lazyKeys = Object.keys(normalizedLazyNode_)\n if (lazy.value && lazyKeys.length && rootLazyRowKeys.length) {\n lazyKeys.forEach((key) => {\n const oldValue = oldTreeData[key]\n const lazyNodeChildren = normalizedLazyNode_[key].children\n if (rootLazyRowKeys.includes(key)) {\n // 懒加载的 root 节点,更新一下原有的数据,原来的 children 一定是空数组\n if (newTreeData[key].children?.length !== 0) {\n throw new Error('[ElTable]children must be an empty array.')\n }\n newTreeData[key].children = lazyNodeChildren\n } else {\n const { loaded = false, loading = false } = oldValue || {}\n newTreeData[key] = {\n lazy: true,\n loaded: !!loaded,\n loading: !!loading,\n expanded: getExpanded(oldValue, key),\n children: lazyNodeChildren,\n level: undefined,\n }\n }\n })\n }\n }\n treeData.value = newTreeData\n instance.store?.updateTableScrollY()\n }\n\n watch(\n () => expandRowKeys.value,\n () => {\n updateTreeData(true)\n },\n { deep: true }\n )\n\n watch(\n () => normalizedData.value,\n () => {\n updateTreeData()\n }\n )\n watch(\n () => normalizedLazyNode.value,\n () => {\n updateTreeData()\n }\n )\n\n const updateTreeExpandKeys = (value: string[]) => {\n expandRowKeys.value = value\n updateTreeData()\n }\n const isUseLazy = (data: TreeData) => {\n return lazy.value && data && 'loaded' in data && !data.loaded\n }\n const toggleTreeExpansion = (row: T, expanded?: boolean) => {\n instance.store.assertRowKey()\n\n const rowKey = watcherData.rowKey.value\n const id = getRowIdentity(row, rowKey)\n const data = id && treeData.value[id]\n if (id && data && 'expanded' in data) {\n const oldExpanded = data.expanded\n expanded = isUndefined(expanded) ? !data.expanded : expanded\n treeData.value[id].expanded = expanded\n if (oldExpanded !== expanded) {\n instance.emit('expand-change', row, expanded)\n }\n expanded && isUseLazy(data) && loadData(row, id, data)\n instance.store.updateTableScrollY()\n }\n }\n\n const loadOrToggle = (row: T) => {\n instance.store.assertRowKey()\n const rowKey = watcherData.rowKey.value\n const id = getRowIdentity(row, rowKey)\n const data = treeData.value[id]\n if (isUseLazy(data)) {\n loadData(row, id, data)\n } else {\n toggleTreeExpansion(row, undefined)\n }\n }\n\n const loadData = (row: T, key: string, treeNode: TreeNode) => {\n const { load } = instance.props as unknown as TableProps<T>\n if (load && !treeData.value[key].loaded) {\n treeData.value[key].loading = true\n load(row, treeNode, (data) => {\n if (!isArray(data)) {\n throw new TypeError('[ElTable] data must be an array')\n }\n treeData.value[key].loading = false\n treeData.value[key].loaded = true\n treeData.value[key].expanded = true\n if (data.length) {\n lazyTreeNodeMap.value[key] = data\n }\n instance.emit('expand-change', row, true)\n })\n }\n }\n\n const updateKeyChildren = (key: string, data: T[]) => {\n const { lazy, rowKey } = instance.props as unknown as TableProps<T>\n if (!lazy) return\n if (!rowKey) throw new Error('[Table] rowKey is required in updateKeyChild')\n\n if (lazyTreeNodeMap.value[key]) {\n lazyTreeNodeMap.value[key] = data\n }\n }\n\n return {\n loadData,\n loadOrToggle,\n toggleTreeExpansion,\n updateTreeExpandKeys,\n updateTreeData,\n updateKeyChildren,\n normalize,\n states: {\n expandRowKeys,\n treeData,\n indent,\n lazy,\n lazyTreeNodeMap,\n lazyColumnIdentifier,\n childrenColumnName,\n checkStrictly,\n },\n }\n}\n\nexport default useTree\n"],"mappings":";;;;;AAaA,SAAS,QAA8B,aAAkC;CACvE,MAAM,gBAAgB,IAAmB,EAAE,CAAC;CAC5C,MAAM,WAAW,IAA8B,EAAE,CAAC;CAClD,MAAM,SAAS,IAAI,GAAG;CACtB,MAAM,OAAO,IAAI,MAAM;CACvB,MAAM,kBAAkB,IAAyB,EAAE,CAAC;CACpD,MAAM,uBAAuB,IAAI,cAAc;CAC/C,MAAM,qBAAqB,IAAI,WAAW;CAC1C,MAAM,gBAAgB,IAAI,MAAM;CAChC,MAAM,WAAW,oBAAoB;CACrC,MAAM,iBAAiB,eAAe;AACpC,MAAI,CAAC,YAAY,OAAO,MAAO,QAAO,EAAE;AAExC,SAAO,UADM,YAAY,KAAK,SAAS,EAAE,CACnB;GACtB;CACF,MAAM,qBAAqB,eAAe;EACxC,MAAM,SAAS,YAAY,OAAO;EAClC,MAAM,OAAO,OAAO,KAAK,gBAAgB,MAAM;EAC/C,MAAM,MAA8C,EAAE;AACtD,MAAI,CAAC,KAAK,OAAQ,QAAO;AACzB,OAAK,SAAS,QAAQ;AACpB,OAAI,gBAAgB,MAAM,KAAK,QAAQ;IACrC,MAAM,OAA6B,EAAE,UAAU,EAAE,EAAE;AACnD,oBAAgB,MAAM,KAAK,SAAS,QAAQ;KAC1C,MAAM,gBAAgB,eAAe,KAAK,OAAO;AACjD,UAAK,SAAS,KAAK,cAAc;AACjC,SAAI,IAAI,qBAAqB,UAAU,CAAC,IAAI,eAC1C,KAAI,iBAAiB,EAAE,UAAU,EAAE,EAAE;MAEvC;AACF,QAAI,OAAO;;IAEb;AACF,SAAO;GACP;CAEF,MAAM,aAAa,SAAc;EAC/B,MAAM,SAAS,YAAY,OAAO;EAClC,MAAM,MAAM,EAAE;AACd,eACE,OACC,QAAQ,UAAU,UAAU;GAC3B,MAAM,WAAW,eAAe,QAAQ,OAAO;AAC/C,OAAI,QAAQ,SAAS,CACnB,KAAI,YAAY;IACd,UAAU,SAAS,KAAK,QAAQ,eAAe,KAAK,OAAO,CAAC;IAC5D;IACD;YACQ,KAAK,MAEd,KAAI,YAAY;IACd,UAAU,EAAE;IACZ,MAAM;IACN;IACD;KAGL,mBAAmB,OACnB,qBAAqB,OACrB,KAAK,MACN;AACD,SAAO;;CAGT,MAAM,kBACJ,wBAAwB,OACxB,gBACG;AACH,kBAAgB,SAAS,OAAO,OAAO,iBAAiB;EACxD,MAAM,SAAS,eAAe;EAC9B,MAAM,sBAAsB,mBAAmB;EAC/C,MAAM,OAAO,OAAO,KAAK,OAAO;EAChC,MAAM,cAAwC,EAAE;AAChD,MAAI,KAAK,QAAQ;GACf,MAAM,cAAc,MAAM,SAAS;GACnC,MAAM,kBAA4B,EAAE;GACpC,MAAM,eAAe,UAAoB,QAAgB;AACvD,QAAI,sBACF,KAAI,cAAc,MAChB,QAAO,eAAe,cAAc,MAAM,SAAS,IAAI;QAEvD,QAAO,CAAC,EAAE,eAAe,UAAU;SAEhC;KACL,MAAM,WACJ,eACC,cAAc,SAAS,cAAc,MAAM,SAAS,IAAI;AAC3D,YAAO,CAAC,EAAE,UAAU,YAAY;;;AAIpC,QAAK,SAAS,QAAQ;IACpB,MAAM,WAAW,YAAY;IAC7B,MAAM,WAAW,EAAE,GAAG,OAAO,MAAM;AACnC,aAAS,WAAW,YAAY,UAAU,IAAI;AAC9C,QAAI,SAAS,MAAM;KACjB,MAAM,EAAE,SAAS,OAAO,UAAU,UAAU,YAAY,EAAE;AAC1D,cAAS,SAAS,CAAC,CAAC;AACpB,cAAS,UAAU,CAAC,CAAC;AACrB,qBAAgB,KAAK,IAAI;;AAE3B,gBAAY,OAAO;KACnB;GAEF,MAAM,WAAW,OAAO,KAAK,oBAAoB;AACjD,OAAI,KAAK,SAAS,SAAS,UAAU,gBAAgB,OACnD,UAAS,SAAS,QAAQ;IACxB,MAAM,WAAW,YAAY;IAC7B,MAAM,mBAAmB,oBAAoB,KAAK;AAClD,QAAI,gBAAgB,SAAS,IAAI,EAAE;AAEjC,SAAI,YAAY,KAAK,UAAU,WAAW,EACxC,OAAM,IAAI,MAAM,4CAA4C;AAE9D,iBAAY,KAAK,WAAW;WACvB;KACL,MAAM,EAAE,SAAS,OAAO,UAAU,UAAU,YAAY,EAAE;AAC1D,iBAAY,OAAO;MACjB,MAAM;MACN,QAAQ,CAAC,CAAC;MACV,SAAS,CAAC,CAAC;MACX,UAAU,YAAY,UAAU,IAAI;MACpC,UAAU;MACV,OAAO;MACR;;KAEH;;AAGN,WAAS,QAAQ;AACjB,WAAS,OAAO,oBAAoB;;AAGtC,aACQ,cAAc,aACd;AACJ,iBAAe,KAAK;IAEtB,EAAE,MAAM,MAAM,CACf;AAED,aACQ,eAAe,aACf;AACJ,kBAAgB;GAEnB;AACD,aACQ,mBAAmB,aACnB;AACJ,kBAAgB;GAEnB;CAED,MAAM,wBAAwB,UAAoB;AAChD,gBAAc,QAAQ;AACtB,kBAAgB;;CAElB,MAAM,aAAa,SAAmB;AACpC,SAAO,KAAK,SAAS,QAAQ,YAAY,QAAQ,CAAC,KAAK;;CAEzD,MAAM,uBAAuB,KAAQ,aAAuB;AAC1D,WAAS,MAAM,cAAc;EAE7B,MAAM,SAAS,YAAY,OAAO;EAClC,MAAM,KAAK,eAAe,KAAK,OAAO;EACtC,MAAM,OAAO,MAAM,SAAS,MAAM;AAClC,MAAI,MAAM,QAAQ,cAAc,MAAM;GACpC,MAAM,cAAc,KAAK;AACzB,cAAW,YAAY,SAAS,GAAG,CAAC,KAAK,WAAW;AACpD,YAAS,MAAM,IAAI,WAAW;AAC9B,OAAI,gBAAgB,SAClB,UAAS,KAAK,iBAAiB,KAAK,SAAS;AAE/C,eAAY,UAAU,KAAK,IAAI,SAAS,KAAK,IAAI,KAAK;AACtD,YAAS,MAAM,oBAAoB;;;CAIvC,MAAM,gBAAgB,QAAW;AAC/B,WAAS,MAAM,cAAc;EAC7B,MAAM,SAAS,YAAY,OAAO;EAClC,MAAM,KAAK,eAAe,KAAK,OAAO;EACtC,MAAM,OAAO,SAAS,MAAM;AAC5B,MAAI,UAAU,KAAK,CACjB,UAAS,KAAK,IAAI,KAAK;MAEvB,qBAAoB,KAAK,OAAU;;CAIvC,MAAM,YAAY,KAAQ,KAAa,aAAuB;EAC5D,MAAM,EAAE,SAAS,SAAS;AAC1B,MAAI,QAAQ,CAAC,SAAS,MAAM,KAAK,QAAQ;AACvC,YAAS,MAAM,KAAK,UAAU;AAC9B,QAAK,KAAK,WAAW,SAAS;AAC5B,QAAI,CAAC,QAAQ,KAAK,CAChB,OAAM,IAAI,UAAU,kCAAkC;AAExD,aAAS,MAAM,KAAK,UAAU;AAC9B,aAAS,MAAM,KAAK,SAAS;AAC7B,aAAS,MAAM,KAAK,WAAW;AAC/B,QAAI,KAAK,OACP,iBAAgB,MAAM,OAAO;AAE/B,aAAS,KAAK,iBAAiB,KAAK,KAAK;KACzC;;;CAIN,MAAM,qBAAqB,KAAa,SAAc;EACpD,MAAM,EAAE,MAAM,WAAW,SAAS;AAClC,MAAI,CAAC,KAAM;AACX,MAAI,CAAC,OAAQ,OAAM,IAAI,MAAM,+CAA+C;AAE5E,MAAI,gBAAgB,MAAM,KACxB,iBAAgB,MAAM,OAAO;;AAIjC,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;GACN;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD;EACF"}
1
+ {"version":3,"file":"tree.mjs","names":[],"sources":["../../../../../../../packages/components/table/src/store/tree.ts"],"sourcesContent":["import { computed, getCurrentInstance, ref, unref, watch } from 'vue'\nimport { isArray, isUndefined } from '@element-plus/utils'\nimport { getRowIdentity, walkTreeNode } from '../util'\n\nimport type { WatcherPropsData } from '.'\nimport type { DefaultRow, Table, TableProps, TreeNode } from '../table/defaults'\n\nexport interface TreeData extends TreeNode {\n children?: string[]\n lazy?: boolean\n loaded?: boolean\n}\n\nfunction useTree<T extends DefaultRow>(watcherData: WatcherPropsData<T>) {\n const expandRowKeys = ref<Array<string>>([])\n const treeData = ref<Record<string, TreeData>>({})\n const indent = ref(16)\n const lazy = ref(false)\n const lazyTreeNodeMap = ref<Record<string, T[]>>({})\n const lazyColumnIdentifier = ref('hasChildren')\n const childrenColumnName = ref('children')\n const checkStrictly = ref(false)\n const instance = getCurrentInstance() as Table<T>\n const normalizedData = computed(() => {\n if (!watcherData.rowKey.value) return {}\n const data = watcherData.data.value || []\n return normalize(data)\n })\n const normalizedLazyNode = computed(() => {\n const rowKey = watcherData.rowKey.value\n const keys = Object.keys(lazyTreeNodeMap.value)\n const res: Record<string, { children: string[] }> = {}\n if (!keys.length) return res\n keys.forEach((key) => {\n if (lazyTreeNodeMap.value[key].length) {\n const item: (typeof res)[number] = { children: [] }\n lazyTreeNodeMap.value[key].forEach((row) => {\n const currentRowKey = getRowIdentity(row, rowKey)\n item.children.push(currentRowKey)\n if (row[lazyColumnIdentifier.value] && !res[currentRowKey]) {\n res[currentRowKey] = { children: [] }\n }\n })\n res[key] = item\n }\n })\n return res\n })\n\n const normalize = (data: T[]) => {\n const rowKey = watcherData.rowKey.value\n const res = {} as Record<string, TreeData>\n walkTreeNode(\n data,\n (parent, children, level) => {\n const parentId = getRowIdentity(parent, rowKey)\n if (isArray(children)) {\n res[parentId] = {\n children: children.map((row) => getRowIdentity(row, rowKey)),\n level,\n }\n } else if (lazy.value) {\n // 当 children 不存在且 lazy 为 true,该节点即为懒加载的节点\n res[parentId] = {\n children: [],\n lazy: true,\n level,\n }\n }\n },\n childrenColumnName.value,\n lazyColumnIdentifier.value,\n lazy.value\n )\n return res\n }\n\n const updateTreeData = (\n ifChangeExpandRowKeys = false,\n ifExpandAll?: boolean\n ) => {\n ifExpandAll ||= instance.store?.states.defaultExpandAll.value\n const nested = normalizedData.value\n const normalizedLazyNode_ = normalizedLazyNode.value\n const keys = Object.keys(nested)\n const newTreeData: Record<string, TreeData> = {}\n if (keys.length) {\n const oldTreeData = unref(treeData)\n const rootLazyRowKeys: string[] = []\n const getExpanded = (oldValue: TreeData, key: string) => {\n if (ifChangeExpandRowKeys) {\n if (expandRowKeys.value) {\n return ifExpandAll || expandRowKeys.value.includes(key)\n } else {\n return !!(ifExpandAll || oldValue?.expanded)\n }\n } else {\n const included =\n ifExpandAll ||\n (expandRowKeys.value && expandRowKeys.value.includes(key))\n return !!(oldValue?.expanded || included)\n }\n }\n // 合并 expanded 与 display,确保数据刷新后,状态不变\n keys.forEach((key) => {\n const oldValue = oldTreeData[key]\n const newValue = { ...nested[key] }\n newValue.expanded = getExpanded(oldValue, key)\n if (newValue.lazy) {\n const { loaded = false, loading = false } = oldValue || {}\n newValue.loaded = !!loaded\n newValue.loading = !!loading\n rootLazyRowKeys.push(key)\n }\n newTreeData[key] = newValue\n })\n // 根据懒加载数据更新 treeData\n const lazyKeys = Object.keys(normalizedLazyNode_)\n if (lazy.value && lazyKeys.length && rootLazyRowKeys.length) {\n lazyKeys.forEach((key) => {\n const oldValue = oldTreeData[key]\n const lazyNodeChildren = normalizedLazyNode_[key].children\n if (rootLazyRowKeys.includes(key)) {\n // 懒加载的 root 节点,更新一下原有的数据,原来的 children 一定是空数组\n if (newTreeData[key].children?.length !== 0) {\n throw new Error('[ElTable]children must be an empty array.')\n }\n newTreeData[key].children = lazyNodeChildren\n } else {\n const { loaded = false, loading = false } = oldValue || {}\n newTreeData[key] = {\n lazy: true,\n loaded: !!loaded,\n loading: !!loading,\n expanded: getExpanded(oldValue, key),\n children: lazyNodeChildren,\n level: undefined,\n }\n }\n })\n }\n }\n treeData.value = newTreeData\n instance.store?.updateTableScrollY()\n }\n\n watch(\n () => expandRowKeys.value,\n () => {\n updateTreeData(true)\n },\n { deep: true }\n )\n\n watch(\n () => normalizedData.value,\n () => {\n updateTreeData()\n }\n )\n watch(\n () => normalizedLazyNode.value,\n () => {\n updateTreeData()\n }\n )\n\n const updateTreeExpandKeys = (value: string[]) => {\n expandRowKeys.value = value\n updateTreeData()\n }\n const isUseLazy = (data: TreeData) => {\n return lazy.value && data && 'loaded' in data && !data.loaded\n }\n const toggleTreeExpansion = (row: T, expanded?: boolean) => {\n instance.store.assertRowKey()\n\n const rowKey = watcherData.rowKey.value\n const id = getRowIdentity(row, rowKey)\n const data = id && treeData.value[id]\n if (id && data && 'expanded' in data) {\n const oldExpanded = data.expanded\n expanded = isUndefined(expanded) ? !data.expanded : expanded\n treeData.value[id].expanded = expanded\n if (oldExpanded !== expanded) {\n instance.emit('expand-change', row, expanded)\n }\n expanded && isUseLazy(data) && loadData(row, id, data)\n instance.store.updateTableScrollY()\n }\n }\n\n const loadOrToggle = (row: T) => {\n instance.store.assertRowKey()\n const rowKey = watcherData.rowKey.value\n const id = getRowIdentity(row, rowKey)\n const data = treeData.value[id]\n if (isUseLazy(data)) {\n loadData(row, id, data)\n } else {\n toggleTreeExpansion(row, undefined)\n }\n }\n\n const loadData = (row: T, key: string, treeNode: TreeNode) => {\n const { load } = instance.props as unknown as TableProps<T>\n if (load && !treeData.value[key].loaded) {\n treeData.value[key].loading = true\n load(row, treeNode, (data) => {\n if (!isArray(data)) {\n throw new TypeError('[ElTable] data must be an array')\n }\n treeData.value[key].loading = false\n treeData.value[key].loaded = true\n treeData.value[key].expanded = true\n if (data.length) {\n lazyTreeNodeMap.value = { ...lazyTreeNodeMap.value, [key]: data }\n }\n instance.emit('expand-change', row, true)\n })\n }\n }\n\n const updateKeyChildren = (key: string, data: T[]) => {\n const { lazy, rowKey } = instance.props as unknown as TableProps<T>\n if (!lazy) return\n if (!rowKey) throw new Error('[Table] rowKey is required in updateKeyChild')\n\n if (lazyTreeNodeMap.value[key]) {\n lazyTreeNodeMap.value = { ...lazyTreeNodeMap.value, [key]: data }\n }\n }\n\n return {\n loadData,\n loadOrToggle,\n toggleTreeExpansion,\n updateTreeExpandKeys,\n updateTreeData,\n updateKeyChildren,\n normalize,\n states: {\n expandRowKeys,\n treeData,\n indent,\n lazy,\n lazyTreeNodeMap,\n lazyColumnIdentifier,\n childrenColumnName,\n checkStrictly,\n },\n }\n}\n\nexport default useTree\n"],"mappings":"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"}
@@ -42,6 +42,7 @@ function useWatcher() {
42
42
  const rightFixedLeafColumnsLength = ref(0);
43
43
  const isAllSelected = ref(false);
44
44
  const selection = ref([]);
45
+ const selectionIndeterminate = ref({});
45
46
  const reserveSelection = ref(false);
46
47
  const selectOnIndeterminate = ref(false);
47
48
  const selectable = ref(null);
@@ -55,6 +56,13 @@ function useWatcher() {
55
56
  const selectedMap = computed(() => {
56
57
  return rowKey.value ? getKeysMap(selection.value, rowKey.value) : void 0;
57
58
  });
59
+ const getRowChildren = (row) => {
60
+ const { childrenColumnName, lazyTreeNodeMap } = instance.store.states;
61
+ const inlineChildren = row[childrenColumnName.value] ?? [];
62
+ if (!rowKey.value) return inlineChildren;
63
+ const id = getRowIdentity(row, rowKey.value);
64
+ return [...lazyTreeNodeMap.value?.[id] ?? [], ...inlineChildren];
65
+ };
58
66
  watch(data, () => {
59
67
  if (instance.state) {
60
68
  scheduleLayout(false);
@@ -104,10 +112,109 @@ function useWatcher() {
104
112
  if (selectedMap.value) return !!selectedMap.value[getRowIdentity(row, rowKey.value)];
105
113
  else return selection.value.includes(row);
106
114
  };
115
+ const rowIndexMap = computed(() => {
116
+ const map = /* @__PURE__ */ new Map();
117
+ if (!rowKey.value || !selectable.value) return map;
118
+ let index = 0;
119
+ const _traverse = (rows) => {
120
+ if (!isArray(rows)) return;
121
+ rows.forEach((row) => {
122
+ const id = getRowIdentity(row, rowKey.value);
123
+ map.set(id, index);
124
+ index += 1;
125
+ const children = getRowChildren(row);
126
+ if (children.length) _traverse(children);
127
+ });
128
+ };
129
+ _traverse(data.value || []);
130
+ return map;
131
+ });
132
+ const updateSelectionByChildren = (options = {}) => {
133
+ const { emitChange = true } = options;
134
+ if (treeStates.checkStrictly.value || !rowKey.value) {
135
+ selectionIndeterminate.value = {};
136
+ return;
137
+ }
138
+ const rowKeyValue = rowKey.value;
139
+ const rowIndexMapValue = options.rowIndexMap ?? rowIndexMap.value;
140
+ const selectableFn = selectable.value;
141
+ const rowIdCache = /* @__PURE__ */ new WeakMap();
142
+ const getCachedRowId = (row) => {
143
+ const cachedId = rowIdCache.get(row);
144
+ if (cachedId) return cachedId;
145
+ const id = getRowIdentity(row, rowKeyValue);
146
+ rowIdCache.set(row, id);
147
+ return id;
148
+ };
149
+ const indeterminateMap = {};
150
+ const selectedIdSet = new Set(selection.value.map((row) => getCachedRowId(row)));
151
+ const rowsToAdd = [];
152
+ let selectionChanged = false;
153
+ const _updateSelectionForRow = (row, id, selected) => {
154
+ const isRowSelected = selectedIdSet.has(id);
155
+ if (selected && !isRowSelected) {
156
+ rowsToAdd.push(row);
157
+ selectedIdSet.add(id);
158
+ selectionChanged = true;
159
+ } else if (!selected && isRowSelected) {
160
+ selectedIdSet.delete(id);
161
+ selectionChanged = true;
162
+ }
163
+ };
164
+ const _walk = (rows) => {
165
+ let selectedCount = 0;
166
+ let selectableCount = 0;
167
+ if (!isArray(rows)) return {
168
+ selectedCount,
169
+ selectableCount
170
+ };
171
+ rows.forEach((row) => {
172
+ const id = getCachedRowId(row);
173
+ const children = getRowChildren(row);
174
+ let childSelectedCount = 0;
175
+ let childSelectableCount = 0;
176
+ if (children.length) {
177
+ const childResult = _walk(children);
178
+ childSelectedCount = childResult.selectedCount;
179
+ childSelectableCount = childResult.selectableCount;
180
+ }
181
+ const rowSelectable = selectableFn ? selectableFn.call(null, row, rowIndexMapValue.get(id) ?? 0) : true;
182
+ if (rowSelectable) {
183
+ if (childSelectableCount > 0) {
184
+ const allSelected = childSelectedCount === childSelectableCount;
185
+ if (!allSelected && !(childSelectedCount === 0)) indeterminateMap[id] = true;
186
+ _updateSelectionForRow(row, id, allSelected);
187
+ }
188
+ }
189
+ if (rowSelectable) {
190
+ selectableCount += 1;
191
+ if (selectedIdSet.has(id)) selectedCount += 1;
192
+ }
193
+ selectedCount += childSelectedCount;
194
+ selectableCount += childSelectableCount;
195
+ });
196
+ return {
197
+ selectedCount,
198
+ selectableCount
199
+ };
200
+ };
201
+ _walk(data.value || []);
202
+ if (selectionChanged) {
203
+ const nextSelection = selection.value.filter((row) => selectedIdSet.has(getCachedRowId(row)));
204
+ rowsToAdd.forEach((row) => {
205
+ if (!selectedIdSet.has(getCachedRowId(row))) return;
206
+ nextSelection.push(row);
207
+ });
208
+ selection.value = nextSelection;
209
+ }
210
+ selectionIndeterminate.value = indeterminateMap;
211
+ if (selectionChanged && emitChange) instance.emit("selection-change", selection.value ? selection.value.slice() : []);
212
+ };
107
213
  const clearSelection = () => {
108
214
  isAllSelected.value = false;
109
215
  const oldSelection = selection.value;
110
216
  selection.value = [];
217
+ selectionIndeterminate.value = {};
111
218
  if (oldSelection.length) instance.emit("selection-change", []);
112
219
  };
113
220
  const cleanSelection = () => {
@@ -116,23 +223,58 @@ function useWatcher() {
116
223
  deleted = [];
117
224
  const childrenKey = instance?.store?.states?.childrenColumnName.value;
118
225
  const dataMap = getKeysMap(data.value, rowKey.value, true, childrenKey);
226
+ const { lazyTreeNodeMap } = instance.store.states;
227
+ if (lazyTreeNodeMap.value) Object.entries(lazyTreeNodeMap.value).forEach(([parentId, lazyRows]) => {
228
+ if (dataMap[parentId]) lazyRows.forEach((row) => {
229
+ const id = getRowIdentity(row, rowKey.value);
230
+ if (!dataMap[id]) dataMap[id] = {
231
+ row,
232
+ index: -1
233
+ };
234
+ });
235
+ });
119
236
  for (const key in selectedMap.value) if (hasOwn(selectedMap.value, key) && !dataMap[key]) deleted.push(selectedMap.value[key].row);
120
237
  } else deleted = selection.value.filter((item) => !data.value.includes(item));
121
238
  if (deleted.length) {
122
239
  const newSelection = selection.value.filter((item) => !deleted.includes(item));
123
240
  selection.value = newSelection;
124
- instance.emit("selection-change", newSelection.slice());
241
+ updateSelectionByChildren({ emitChange: false });
242
+ instance.emit("selection-change", [...newSelection]);
125
243
  }
126
244
  };
127
245
  const getSelectionRows = () => {
128
246
  return (selection.value || []).slice();
129
247
  };
248
+ const cascadeToLazyChildren = (row, selected, rowIndexMap) => {
249
+ if (!rowKey.value || treeStates.checkStrictly.value || !treeStates.lazy.value) return;
250
+ const { lazyTreeNodeMap, childrenColumnName } = instance.store.states;
251
+ const id = getRowIdentity(row, rowKey.value);
252
+ const lazyChildren = lazyTreeNodeMap.value?.[id] ?? [];
253
+ const inlineChildren = row[childrenColumnName.value] ?? [];
254
+ const treeProps = {
255
+ children: childrenColumnName.value,
256
+ checkStrictly: false
257
+ };
258
+ for (const child of lazyChildren) {
259
+ const childIndex = rowIndexMap.get(getRowIdentity(child, rowKey.value)) ?? 0;
260
+ toggleRowStatus(selection.value, child, selected, treeProps, selectable.value, childIndex, rowKey.value);
261
+ cascadeToLazyChildren(child, selected, rowIndexMap);
262
+ }
263
+ for (const child of inlineChildren) cascadeToLazyChildren(child, selected, rowIndexMap);
264
+ };
130
265
  const toggleRowSelection = (row, selected, emitChange = true, ignoreSelectable = false) => {
131
266
  const treeProps = {
132
267
  children: instance?.store?.states?.childrenColumnName.value,
133
268
  checkStrictly: instance?.store?.states?.checkStrictly.value
134
269
  };
135
270
  if (toggleRowStatus(selection.value, row, selected, treeProps, ignoreSelectable ? void 0 : selectable.value, data.value.indexOf(row), rowKey.value)) {
271
+ if (treeStates.lazy.value && !treeStates.checkStrictly.value) {
272
+ cascadeToLazyChildren(row, selected ?? isSelected(row), rowIndexMap.value);
273
+ updateSelectionByChildren({
274
+ emitChange: false,
275
+ rowIndexMap: rowIndexMap.value
276
+ });
277
+ } else updateSelectionByChildren({ emitChange: false });
136
278
  const newSelection = (selection.value || []).slice();
137
279
  if (emitChange) instance.emit("select", newSelection, row);
138
280
  instance.emit("selection-change", newSelection);
@@ -154,7 +296,17 @@ function useWatcher() {
154
296
  if (toggleRowStatus(selection.value, row, value, treeProps, selectable.value, rowIndex, rowKey)) selectionChanged = true;
155
297
  childrenCount += getChildrenCount(getRowIdentity(row, rowKey));
156
298
  });
157
- if (selectionChanged) instance.emit("selection-change", selection.value ? selection.value.slice() : []);
299
+ const rowIndexMapVal = rowIndexMap.value;
300
+ if (treeStates.lazy.value && !treeStates.checkStrictly.value && rowKey) for (const lazyRows of Object.values(treeStates.lazyTreeNodeMap.value)) for (const child of lazyRows) {
301
+ const childIndex = rowIndexMapVal.get(getRowIdentity(child, rowKey)) ?? 0;
302
+ if (toggleRowStatus(selection.value, child, value, treeProps, selectable.value, childIndex, rowKey)) selectionChanged = true;
303
+ cascadeToLazyChildren(child, value, rowIndexMapVal);
304
+ }
305
+ updateSelectionByChildren({
306
+ emitChange: false,
307
+ rowIndexMap: rowIndexMapVal
308
+ });
309
+ if (selectionChanged) instance.emit("selection-change", selection.value ? [...selection.value] : []);
158
310
  instance.emit("select-all", (selection.value || []).slice());
159
311
  };
160
312
  const updateAllSelected = () => {
@@ -162,23 +314,28 @@ function useWatcher() {
162
314
  isAllSelected.value = false;
163
315
  return;
164
316
  }
165
- const { childrenColumnName } = instance.store.states;
166
317
  let rowIndex = 0;
167
318
  let selectedCount = 0;
168
- const checkSelectedStatus = (data) => {
169
- for (const row of data) {
319
+ const checkSelectedStatus = (rows) => {
320
+ for (const row of rows) {
170
321
  const isRowSelectable = selectable.value && selectable.value.call(null, row, rowIndex);
171
322
  if (!isSelected(row)) {
172
323
  if (!selectable.value || isRowSelectable) return false;
173
324
  } else selectedCount++;
174
325
  rowIndex++;
175
- if (row[childrenColumnName.value]?.length && !checkSelectedStatus(row[childrenColumnName.value])) return false;
326
+ const children = getRowChildren(row);
327
+ if (children.length && !checkSelectedStatus(children)) return false;
176
328
  }
177
329
  return true;
178
330
  };
179
331
  const isAllSelected_ = checkSelectedStatus(data.value || []);
180
332
  isAllSelected.value = selectedCount === 0 ? false : isAllSelected_;
181
333
  };
334
+ const getRowIndeterminate = (row) => {
335
+ if (!rowKey.value) return false;
336
+ const id = getRowIdentity(row, rowKey.value);
337
+ return !!selectionIndeterminate.value[id];
338
+ };
182
339
  const getChildrenCount = (rowKey) => {
183
340
  if (!instance || !instance.store) return 0;
184
341
  const { treeData } = instance.store.states;
@@ -286,6 +443,27 @@ function useWatcher() {
286
443
  if (columns.value.some(({ type }) => type === "expand")) toggleRowExpansion(row, expanded);
287
444
  else toggleTreeExpansion(row, expanded);
288
445
  };
446
+ watch(() => treeStates.checkStrictly.value, (value) => {
447
+ if (value) selectionIndeterminate.value = {};
448
+ else updateSelectionByChildren({ emitChange: false });
449
+ updateAllSelected();
450
+ });
451
+ watch(() => treeStates.lazyTreeNodeMap.value, () => {
452
+ if (!treeStates.lazy.value || treeStates.checkStrictly.value || !rowKey.value) return;
453
+ const rowIndexMapVal = rowIndexMap.value;
454
+ const prevLen = selection.value.length;
455
+ for (const parentId of Object.keys(treeStates.lazyTreeNodeMap.value)) {
456
+ if (!selectedMap.value?.[parentId]) continue;
457
+ cascadeToLazyChildren(selectedMap.value[parentId].row, true, rowIndexMapVal);
458
+ }
459
+ const cascadeChanged = selection.value.length !== prevLen;
460
+ updateSelectionByChildren({
461
+ emitChange: !cascadeChanged,
462
+ rowIndexMap: rowIndexMapVal
463
+ });
464
+ updateAllSelected();
465
+ if (cascadeChanged) instance.emit("selection-change", [...selection.value]);
466
+ });
289
467
  return {
290
468
  assertRowKey,
291
469
  updateColumns,
@@ -298,6 +476,8 @@ function useWatcher() {
298
476
  _toggleAllSelection,
299
477
  toggleAllSelection: null,
300
478
  updateAllSelected,
479
+ updateSelectionByChildren,
480
+ getRowIndeterminate,
301
481
  updateFilters,
302
482
  updateCurrentRow,
303
483
  updateSort,
@@ -336,6 +516,7 @@ function useWatcher() {
336
516
  rightFixedLeafColumnsLength,
337
517
  isAllSelected,
338
518
  selection,
519
+ selectionIndeterminate,
339
520
  reserveSelection,
340
521
  selectOnIndeterminate,
341
522
  selectable,
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.mjs","names":[],"sources":["../../../../../../../packages/components/table/src/store/watcher.ts"],"sourcesContent":["import { computed, getCurrentInstance, ref, toRefs, unref, watch } from 'vue'\nimport { ensureArray, hasOwn, isArray, isString } from '@element-plus/utils'\nimport {\n getColumnById,\n getColumnByKey,\n getKeysMap,\n getRowIdentity,\n orderBy,\n toggleRowStatus,\n} from '../util'\nimport useExpand from './expand'\nimport useCurrent from './current'\nimport useTree from './tree'\n\nimport type { Ref } from 'vue'\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type {\n DefaultRow,\n Table,\n TableRefs,\n TableSortOrder,\n} from '../table/defaults'\nimport type { StoreFilter } from '.'\n\nconst sortData = <T extends DefaultRow>(\n data: T[],\n states: {\n sortingColumn: TableColumnCtx<T> | null\n sortProp: string | null\n sortOrder: string | number | null\n }\n) => {\n const sortingColumn = states.sortingColumn\n if (!sortingColumn || isString(sortingColumn.sortable)) {\n return data\n }\n return orderBy(\n data,\n states.sortProp,\n states.sortOrder,\n sortingColumn.sortMethod,\n sortingColumn.sortBy\n )\n}\n\nconst doFlattenColumns = <T extends DefaultRow>(\n columns: TableColumnCtx<T>[]\n) => {\n const result: TableColumnCtx<T>[] = []\n columns.forEach((column) => {\n if (column.children && column.children.length > 0) {\n // eslint-disable-next-line prefer-spread\n result.push.apply(result, doFlattenColumns(column.children))\n } else {\n result.push(column)\n }\n })\n return result\n}\n\nfunction useWatcher<T extends DefaultRow>() {\n const instance = getCurrentInstance() as Table<T>\n const { size: tableSize } = toRefs(instance.proxy?.$props as any)\n const rowKey: Ref<string | null> = ref(null)\n const data: Ref<T[]> = ref([])\n const _data: Ref<T[]> = ref([])\n const isComplex = ref(false)\n const _columns: Ref<TableColumnCtx<T>[]> = ref([])\n const originColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const columns: Ref<TableColumnCtx<T>[]> = ref([])\n const fixedColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const rightFixedColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const leafColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const fixedLeafColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const rightFixedLeafColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const updateOrderFns: (() => void)[] = []\n const leafColumnsLength = ref(0)\n const fixedLeafColumnsLength = ref(0)\n const rightFixedLeafColumnsLength = ref(0)\n const isAllSelected = ref(false)\n const selection: Ref<T[]> = ref([])\n const reserveSelection = ref(false)\n const selectOnIndeterminate = ref(false)\n const selectable: Ref<((row: T, index: number) => boolean) | null> = ref(null)\n const rowExpandable: Ref<((row: T, index: number) => boolean) | null> =\n ref(null)\n const filters: Ref<StoreFilter> = ref({})\n const filteredData: Ref<T[] | null> = ref(null)\n const sortingColumn: Ref<TableColumnCtx<T> | null> = ref(null)\n const sortProp: Ref<string | null> = ref(null)\n const sortOrder: Ref<string | number | null> = ref(null)\n const hoverRow: Ref<T | null> = ref(null)\n\n const selectedMap = computed(() => {\n return rowKey.value ? getKeysMap(selection.value, rowKey.value) : undefined\n })\n\n watch(\n data,\n () => {\n if (instance.state) {\n scheduleLayout(false)\n const needUpdateFixed = instance.props.tableLayout === 'auto'\n if (needUpdateFixed) {\n instance.refs.tableHeaderRef?.updateFixedColumnStyle()\n }\n }\n },\n {\n deep: true,\n }\n )\n\n // 检查 rowKey 是否存在\n const assertRowKey = () => {\n if (!rowKey.value) throw new Error('[ElTable] prop row-key is required')\n }\n\n // 更新 fixed\n const updateChildFixed = (column: TableColumnCtx<T>) => {\n column.children?.forEach((childColumn) => {\n childColumn.fixed = column.fixed\n updateChildFixed(childColumn)\n })\n }\n\n // 更新列\n const updateColumns = () => {\n _columns.value.forEach((column) => {\n updateChildFixed(column)\n })\n fixedColumns.value = _columns.value.filter((column) =>\n [true, 'left'].includes(column.fixed)\n )\n\n const selectColumn = _columns.value.find(\n (column) => column.type === 'selection'\n )\n\n let selectColFixLeft: boolean\n if (\n selectColumn &&\n selectColumn.fixed !== 'right' &&\n !fixedColumns.value.includes(selectColumn)\n ) {\n const selectColumnIndex = _columns.value.indexOf(selectColumn)\n if (selectColumnIndex === 0 && fixedColumns.value.length) {\n fixedColumns.value.unshift(selectColumn)\n selectColFixLeft = true\n }\n }\n\n rightFixedColumns.value = _columns.value.filter(\n (column) => column.fixed === 'right'\n )\n\n const notFixedColumns = _columns.value.filter(\n (column) =>\n (selectColFixLeft ? column.type !== 'selection' : true) && !column.fixed\n )\n\n originColumns.value = Array.from(fixedColumns.value)\n .concat(notFixedColumns)\n .concat(rightFixedColumns.value)\n const leafColumns = doFlattenColumns(notFixedColumns)\n const fixedLeafColumns = doFlattenColumns(fixedColumns.value)\n const rightFixedLeafColumns = doFlattenColumns(rightFixedColumns.value)\n\n leafColumnsLength.value = leafColumns.length\n fixedLeafColumnsLength.value = fixedLeafColumns.length\n rightFixedLeafColumnsLength.value = rightFixedLeafColumns.length\n\n columns.value = Array.from(fixedLeafColumns)\n .concat(leafColumns)\n .concat(rightFixedLeafColumns)\n isComplex.value =\n fixedColumns.value.length > 0 || rightFixedColumns.value.length > 0\n }\n\n // 更新 DOM\n const scheduleLayout = (needUpdateColumns?: boolean, immediate = false) => {\n if (needUpdateColumns) {\n updateColumns()\n }\n if (immediate) {\n instance.state.doLayout()\n } else {\n instance.state.debouncedUpdateLayout()\n }\n }\n\n // 选择\n const isSelected = (row: T) => {\n if (selectedMap.value) {\n return !!selectedMap.value[getRowIdentity(row, rowKey.value)]\n } else {\n return selection.value.includes(row)\n }\n }\n\n const clearSelection = () => {\n isAllSelected.value = false\n const oldSelection = selection.value\n selection.value = []\n if (oldSelection.length) {\n instance.emit('selection-change', [])\n }\n }\n\n const cleanSelection = () => {\n let deleted\n if (rowKey.value) {\n deleted = []\n const childrenKey = instance?.store?.states?.childrenColumnName.value\n const dataMap = getKeysMap(data.value, rowKey.value, true, childrenKey)\n for (const key in selectedMap.value) {\n if (hasOwn(selectedMap.value, key) && !dataMap[key]) {\n deleted.push(selectedMap.value[key].row)\n }\n }\n } else {\n deleted = selection.value.filter((item) => !data.value.includes(item))\n }\n if (deleted.length) {\n const newSelection = selection.value.filter(\n (item) => !deleted.includes(item)\n )\n selection.value = newSelection\n instance.emit('selection-change', newSelection.slice())\n }\n }\n\n const getSelectionRows = () => {\n return (selection.value || []).slice()\n }\n\n const toggleRowSelection = (\n row: T,\n selected?: boolean,\n emitChange = true,\n ignoreSelectable = false\n ) => {\n const treeProps = {\n children: instance?.store?.states?.childrenColumnName.value,\n checkStrictly: instance?.store?.states?.checkStrictly.value,\n }\n const changed = toggleRowStatus(\n selection.value,\n row,\n selected,\n treeProps,\n ignoreSelectable ? undefined : selectable.value,\n data.value.indexOf(row),\n rowKey.value\n )\n if (changed) {\n const newSelection = (selection.value || []).slice()\n // 调用 API 修改选中值,不触发 select 事件\n if (emitChange) {\n instance.emit('select', newSelection, row)\n }\n instance.emit('selection-change', newSelection)\n }\n }\n\n const _toggleAllSelection = () => {\n // when only some rows are selected (but not all), select or deselect all of them\n // depending on the value of selectOnIndeterminate\n const value = selectOnIndeterminate.value\n ? !isAllSelected.value\n : !(isAllSelected.value || selection.value.length)\n isAllSelected.value = value\n\n let selectionChanged = false\n let childrenCount = 0\n const rowKey = instance?.store?.states?.rowKey.value\n const { childrenColumnName } = instance.store.states\n const treeProps = {\n children: childrenColumnName.value,\n checkStrictly: false, // Disable checkStrictly when selecting all\n }\n\n data.value.forEach((row, index) => {\n const rowIndex = index + childrenCount\n if (\n toggleRowStatus(\n selection.value,\n row,\n value,\n treeProps,\n selectable.value,\n rowIndex,\n rowKey\n )\n ) {\n selectionChanged = true\n }\n childrenCount += getChildrenCount(getRowIdentity(row, rowKey))\n })\n\n if (selectionChanged) {\n instance.emit(\n 'selection-change',\n selection.value ? selection.value.slice() : []\n )\n }\n instance.emit('select-all', (selection.value || []).slice())\n }\n\n const updateAllSelected = () => {\n // data 为 null 时,解构时的默认值会被忽略\n if (data.value?.length === 0) {\n isAllSelected.value = false\n return\n }\n\n const { childrenColumnName } = instance.store.states\n let rowIndex = 0\n let selectedCount = 0\n\n const checkSelectedStatus = (data: T[]) => {\n for (const row of data) {\n const isRowSelectable =\n selectable.value && selectable.value.call(null, row, rowIndex)\n\n if (!isSelected(row)) {\n if (!selectable.value || isRowSelectable) {\n return false\n }\n } else {\n selectedCount++\n }\n rowIndex++\n\n if (\n row[childrenColumnName.value]?.length &&\n !checkSelectedStatus(row[childrenColumnName.value])\n ) {\n return false\n }\n }\n return true\n }\n\n const isAllSelected_ = checkSelectedStatus(data.value || [])\n isAllSelected.value = selectedCount === 0 ? false : isAllSelected_\n }\n\n const getChildrenCount = (rowKey: string) => {\n if (!instance || !instance.store) return 0\n const { treeData } = instance.store.states\n let count = 0\n const children = treeData.value[rowKey]?.children\n if (children) {\n count += children.length\n children.forEach((childKey) => {\n count += getChildrenCount(childKey)\n })\n }\n return count\n }\n\n // 过滤与排序\n const updateFilters = (column: TableColumnCtx<T>, values: string[]) => {\n const filters_: Record<string, string[]> = {}\n ensureArray(column).forEach((col) => {\n filters.value[col.id] = values\n filters_[col.columnKey || col.id] = values\n })\n return filters_\n }\n\n const updateSort = (\n column: TableColumnCtx<T> | null,\n prop: string | null,\n order: TableSortOrder | null\n ) => {\n if (sortingColumn.value && sortingColumn.value !== column) {\n sortingColumn.value.order = null\n }\n sortingColumn.value = column\n sortProp.value = prop\n sortOrder.value = order\n }\n\n const execFilter = () => {\n let sourceData = unref(_data)\n Object.keys(filters.value).forEach((columnId) => {\n const values = filters.value[columnId]\n if (!values || values.length === 0) return\n const column = getColumnById(\n {\n columns: columns.value,\n },\n columnId\n )\n if (column && column.filterMethod) {\n sourceData = sourceData.filter((row) => {\n return values.some((value) =>\n column.filterMethod.call(null, value, row, column)\n )\n })\n }\n })\n filteredData.value = sourceData\n }\n\n const execSort = () => {\n data.value = sortData(filteredData.value ?? [], {\n sortingColumn: sortingColumn.value,\n sortProp: sortProp.value,\n sortOrder: sortOrder.value,\n })\n }\n\n // 根据 filters 与 sort 去过滤 data\n const execQuery = (ignore: { filter: boolean } | undefined = undefined) => {\n if (!ignore?.filter) {\n execFilter()\n }\n execSort()\n }\n\n const clearFilter = (columnKeys?: string[] | string) => {\n const { tableHeaderRef } = instance.refs as TableRefs\n if (!tableHeaderRef) return\n const panels = Object.assign({}, tableHeaderRef.filterPanels)\n\n const keys = Object.keys(panels)\n if (!keys.length) return\n\n if (isString(columnKeys)) {\n columnKeys = [columnKeys]\n }\n\n if (isArray(columnKeys)) {\n const columns_ = columnKeys.map((key) =>\n getColumnByKey(\n {\n columns: columns.value,\n },\n key\n )\n )\n keys.forEach((key) => {\n const column = columns_.find((col) => col.id === key)\n if (column) {\n column.filteredValue = []\n }\n })\n instance.store.commit('filterChange', {\n column: columns_,\n values: [],\n silent: true,\n multi: true,\n })\n } else {\n keys.forEach((key) => {\n const column = columns.value.find((col) => col.id === key)\n if (column) {\n column.filteredValue = []\n }\n })\n\n filters.value = {}\n instance.store.commit('filterChange', {\n column: {},\n values: [],\n silent: true,\n })\n }\n }\n\n const clearSort = () => {\n if (!sortingColumn.value) return\n\n updateSort(null, null, null)\n instance.store.commit('changeSortCondition', {\n silent: true,\n })\n }\n const {\n setExpandRowKeys,\n toggleRowExpansion,\n updateExpandRows,\n states: expandStates,\n isRowExpanded,\n } = useExpand({\n data,\n rowKey,\n })\n const {\n updateTreeExpandKeys,\n toggleTreeExpansion,\n updateTreeData,\n updateKeyChildren,\n loadOrToggle,\n states: treeStates,\n } = useTree({\n data,\n rowKey,\n })\n const {\n updateCurrentRowData,\n updateCurrentRow,\n setCurrentRowKey,\n states: currentData,\n } = useCurrent({\n data,\n rowKey,\n })\n // 适配层,expand-row-keys 在 Expand 与 TreeTable 中都有使用\n const setExpandRowKeysAdapter = (val: string[]) => {\n // 这里会触发额外的计算,但为了兼容性,暂时这么做\n setExpandRowKeys(val)\n updateTreeExpandKeys(val)\n }\n\n // 展开行与 TreeTable 都要使用\n const toggleRowExpansionAdapter = (row: T, expanded?: boolean) => {\n const hasExpandColumn = columns.value.some(({ type }) => type === 'expand')\n if (hasExpandColumn) {\n toggleRowExpansion(row, expanded)\n } else {\n toggleTreeExpansion(row, expanded)\n }\n }\n\n return {\n assertRowKey,\n updateColumns,\n scheduleLayout,\n isSelected,\n clearSelection,\n cleanSelection,\n getSelectionRows,\n toggleRowSelection,\n _toggleAllSelection,\n toggleAllSelection: null as (() => void) | null,\n updateAllSelected,\n updateFilters,\n updateCurrentRow,\n updateSort,\n execFilter,\n execSort,\n execQuery,\n clearFilter,\n clearSort,\n toggleRowExpansion,\n setExpandRowKeysAdapter,\n setCurrentRowKey,\n toggleRowExpansionAdapter,\n isRowExpanded,\n updateExpandRows,\n updateCurrentRowData,\n loadOrToggle,\n updateTreeData,\n updateKeyChildren,\n states: {\n tableSize,\n rowKey,\n data,\n _data,\n isComplex,\n _columns,\n originColumns,\n columns,\n fixedColumns,\n rightFixedColumns,\n leafColumns,\n fixedLeafColumns,\n rightFixedLeafColumns,\n updateOrderFns,\n leafColumnsLength,\n fixedLeafColumnsLength,\n rightFixedLeafColumnsLength,\n isAllSelected,\n selection,\n reserveSelection,\n selectOnIndeterminate,\n selectable,\n rowExpandable,\n filters,\n filteredData,\n sortingColumn,\n sortProp,\n sortOrder,\n hoverRow,\n ...expandStates,\n ...treeStates,\n ...currentData,\n },\n }\n}\n\nexport default useWatcher\n"],"mappings":"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"}
1
+ {"version":3,"file":"watcher.mjs","names":[],"sources":["../../../../../../../packages/components/table/src/store/watcher.ts"],"sourcesContent":["import { computed, getCurrentInstance, ref, toRefs, unref, watch } from 'vue'\nimport { ensureArray, hasOwn, isArray, isString } from '@element-plus/utils'\nimport {\n getColumnById,\n getColumnByKey,\n getKeysMap,\n getRowIdentity,\n orderBy,\n toggleRowStatus,\n} from '../util'\nimport useExpand from './expand'\nimport useCurrent from './current'\nimport useTree from './tree'\n\nimport type { Ref } from 'vue'\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type {\n DefaultRow,\n Table,\n TableRefs,\n TableSortOrder,\n} from '../table/defaults'\nimport type { StoreFilter } from '.'\n\nconst sortData = <T extends DefaultRow>(\n data: T[],\n states: {\n sortingColumn: TableColumnCtx<T> | null\n sortProp: string | null\n sortOrder: string | number | null\n }\n) => {\n const sortingColumn = states.sortingColumn\n if (!sortingColumn || isString(sortingColumn.sortable)) {\n return data\n }\n return orderBy(\n data,\n states.sortProp,\n states.sortOrder,\n sortingColumn.sortMethod,\n sortingColumn.sortBy\n )\n}\n\nconst doFlattenColumns = <T extends DefaultRow>(\n columns: TableColumnCtx<T>[]\n) => {\n const result: TableColumnCtx<T>[] = []\n columns.forEach((column) => {\n if (column.children && column.children.length > 0) {\n // eslint-disable-next-line prefer-spread\n result.push.apply(result, doFlattenColumns(column.children))\n } else {\n result.push(column)\n }\n })\n return result\n}\n\nfunction useWatcher<T extends DefaultRow>() {\n const instance = getCurrentInstance() as Table<T>\n const { size: tableSize } = toRefs(instance.proxy?.$props as any)\n const rowKey: Ref<string | null> = ref(null)\n const data: Ref<T[]> = ref([])\n const _data: Ref<T[]> = ref([])\n const isComplex = ref(false)\n const _columns: Ref<TableColumnCtx<T>[]> = ref([])\n const originColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const columns: Ref<TableColumnCtx<T>[]> = ref([])\n const fixedColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const rightFixedColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const leafColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const fixedLeafColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const rightFixedLeafColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const updateOrderFns: (() => void)[] = []\n const leafColumnsLength = ref(0)\n const fixedLeafColumnsLength = ref(0)\n const rightFixedLeafColumnsLength = ref(0)\n const isAllSelected = ref(false)\n const selection: Ref<T[]> = ref([])\n const selectionIndeterminate = ref<Record<string, boolean>>({})\n const reserveSelection = ref(false)\n const selectOnIndeterminate = ref(false)\n const selectable: Ref<((row: T, index: number) => boolean) | null> = ref(null)\n const rowExpandable: Ref<((row: T, index: number) => boolean) | null> =\n ref(null)\n const filters: Ref<StoreFilter> = ref({})\n const filteredData: Ref<T[] | null> = ref(null)\n const sortingColumn: Ref<TableColumnCtx<T> | null> = ref(null)\n const sortProp: Ref<string | null> = ref(null)\n const sortOrder: Ref<string | number | null> = ref(null)\n const hoverRow: Ref<T | null> = ref(null)\n\n const selectedMap = computed(() => {\n return rowKey.value ? getKeysMap(selection.value, rowKey.value) : undefined\n })\n\n const getRowChildren = (row: T): T[] => {\n const { childrenColumnName, lazyTreeNodeMap } = instance.store.states\n const inlineChildren = (row[childrenColumnName.value] ?? []) as T[]\n if (!rowKey.value) return inlineChildren\n const id = getRowIdentity(row, rowKey.value)\n const lazyChildren = (lazyTreeNodeMap.value?.[id] ?? []) as T[]\n return [...lazyChildren, ...inlineChildren]\n }\n\n watch(\n data,\n () => {\n if (instance.state) {\n scheduleLayout(false)\n const needUpdateFixed = instance.props.tableLayout === 'auto'\n if (needUpdateFixed) {\n instance.refs.tableHeaderRef?.updateFixedColumnStyle()\n }\n }\n },\n {\n deep: true,\n }\n )\n\n const assertRowKey = () => {\n if (!rowKey.value) throw new Error('[ElTable] prop row-key is required')\n }\n\n const updateChildFixed = (column: TableColumnCtx<T>) => {\n column.children?.forEach((childColumn) => {\n childColumn.fixed = column.fixed\n updateChildFixed(childColumn)\n })\n }\n\n const updateColumns = () => {\n _columns.value.forEach((column) => {\n updateChildFixed(column)\n })\n fixedColumns.value = _columns.value.filter((column) =>\n [true, 'left'].includes(column.fixed)\n )\n\n const selectColumn = _columns.value.find(\n (column) => column.type === 'selection'\n )\n\n let selectColFixLeft: boolean\n if (\n selectColumn &&\n selectColumn.fixed !== 'right' &&\n !fixedColumns.value.includes(selectColumn)\n ) {\n const selectColumnIndex = _columns.value.indexOf(selectColumn)\n if (selectColumnIndex === 0 && fixedColumns.value.length) {\n fixedColumns.value.unshift(selectColumn)\n selectColFixLeft = true\n }\n }\n\n rightFixedColumns.value = _columns.value.filter(\n (column) => column.fixed === 'right'\n )\n\n const notFixedColumns = _columns.value.filter(\n (column) =>\n (selectColFixLeft ? column.type !== 'selection' : true) && !column.fixed\n )\n\n originColumns.value = Array.from(fixedColumns.value)\n .concat(notFixedColumns)\n .concat(rightFixedColumns.value)\n const leafColumns = doFlattenColumns(notFixedColumns)\n const fixedLeafColumns = doFlattenColumns(fixedColumns.value)\n const rightFixedLeafColumns = doFlattenColumns(rightFixedColumns.value)\n\n leafColumnsLength.value = leafColumns.length\n fixedLeafColumnsLength.value = fixedLeafColumns.length\n rightFixedLeafColumnsLength.value = rightFixedLeafColumns.length\n\n columns.value = Array.from(fixedLeafColumns)\n .concat(leafColumns)\n .concat(rightFixedLeafColumns)\n isComplex.value =\n fixedColumns.value.length > 0 || rightFixedColumns.value.length > 0\n }\n\n const scheduleLayout = (needUpdateColumns?: boolean, immediate = false) => {\n if (needUpdateColumns) {\n updateColumns()\n }\n if (immediate) {\n instance.state.doLayout()\n } else {\n instance.state.debouncedUpdateLayout()\n }\n }\n\n const isSelected = (row: T) => {\n if (selectedMap.value) {\n return !!selectedMap.value[getRowIdentity(row, rowKey.value)]\n } else {\n return selection.value.includes(row)\n }\n }\n\n // Used by selectable to compute row indices in tree-shaped data\n const rowIndexMap = computed(() => {\n const map = new Map<string, number>()\n if (!rowKey.value || !selectable.value) return map\n let index = 0\n const _traverse = (rows: T[]) => {\n if (!isArray(rows)) return\n rows.forEach((row) => {\n const id = getRowIdentity(row, rowKey.value)\n map.set(id, index)\n index += 1\n const children = getRowChildren(row)\n if (children.length) _traverse(children)\n })\n }\n _traverse(data.value || [])\n return map\n })\n\n // Update parent selection and indeterminate state based on children selection\n const updateSelectionByChildren = (\n options: {\n emitChange?: boolean\n rowIndexMap?: Map<string, number>\n } = {}\n ) => {\n const { emitChange = true } = options\n if (treeStates.checkStrictly.value || !rowKey.value) {\n selectionIndeterminate.value = {}\n return\n }\n const rowKeyValue = rowKey.value\n const rowIndexMapValue = options.rowIndexMap ?? rowIndexMap.value\n const selectableFn = selectable.value\n const rowIdCache = new WeakMap<T, string>()\n const getCachedRowId = (row: T) => {\n const cachedId = rowIdCache.get(row)\n if (cachedId) return cachedId\n const id = getRowIdentity(row, rowKeyValue)\n rowIdCache.set(row, id)\n return id\n }\n const indeterminateMap: Record<string, boolean> = {}\n const selectedIdSet = new Set(\n selection.value.map((row) => getCachedRowId(row))\n )\n const rowsToAdd: T[] = []\n let selectionChanged = false\n // Sync parent selection without triggering external select event\n const _updateSelectionForRow = (row: T, id: string, selected: boolean) => {\n const isRowSelected = selectedIdSet.has(id)\n if (selected && !isRowSelected) {\n rowsToAdd.push(row)\n selectedIdSet.add(id)\n selectionChanged = true\n } else if (!selected && isRowSelected) {\n selectedIdSet.delete(id)\n selectionChanged = true\n }\n }\n const _walk = (rows: T[]) => {\n let selectedCount = 0\n let selectableCount = 0\n if (!isArray(rows)) return { selectedCount, selectableCount }\n rows.forEach((row) => {\n const id = getCachedRowId(row)\n const children = getRowChildren(row)\n let childSelectedCount = 0\n let childSelectableCount = 0\n if (children.length) {\n const childResult = _walk(children)\n childSelectedCount = childResult.selectedCount\n childSelectableCount = childResult.selectableCount\n }\n const rowSelectable = selectableFn\n ? selectableFn.call(null, row, rowIndexMapValue.get(id) ?? 0)\n : true\n if (rowSelectable) {\n if (childSelectableCount > 0) {\n const allSelected = childSelectedCount === childSelectableCount\n const noneSelected = childSelectedCount === 0\n if (!allSelected && !noneSelected) {\n indeterminateMap[id] = true\n }\n _updateSelectionForRow(row, id, allSelected)\n }\n }\n if (rowSelectable) {\n selectableCount += 1\n if (selectedIdSet.has(id)) {\n selectedCount += 1\n }\n }\n selectedCount += childSelectedCount\n selectableCount += childSelectableCount\n })\n return { selectedCount, selectableCount }\n }\n _walk(data.value || [])\n if (selectionChanged) {\n const nextSelection = selection.value.filter((row) =>\n selectedIdSet.has(getCachedRowId(row))\n )\n rowsToAdd.forEach((row) => {\n if (!selectedIdSet.has(getCachedRowId(row))) return\n nextSelection.push(row)\n })\n selection.value = nextSelection\n }\n selectionIndeterminate.value = indeterminateMap\n if (selectionChanged && emitChange) {\n instance.emit(\n 'selection-change',\n selection.value ? selection.value.slice() : []\n )\n }\n }\n\n const clearSelection = () => {\n isAllSelected.value = false\n const oldSelection = selection.value\n selection.value = []\n selectionIndeterminate.value = {}\n if (oldSelection.length) {\n instance.emit('selection-change', [])\n }\n }\n\n const cleanSelection = () => {\n let deleted\n if (rowKey.value) {\n deleted = []\n const childrenKey = instance?.store?.states?.childrenColumnName.value\n const dataMap = getKeysMap(data.value, rowKey.value, true, childrenKey)\n // Include lazy-loaded children only if their parent is still in data\n const { lazyTreeNodeMap } = instance.store.states\n if (lazyTreeNodeMap.value) {\n Object.entries(lazyTreeNodeMap.value).forEach(\n ([parentId, lazyRows]) => {\n if (dataMap[parentId]) {\n ;(lazyRows as T[]).forEach((row) => {\n const id = getRowIdentity(row, rowKey.value)\n if (!dataMap[id]) {\n dataMap[id] = { row, index: -1 }\n }\n })\n }\n }\n )\n }\n for (const key in selectedMap.value) {\n if (hasOwn(selectedMap.value, key) && !dataMap[key]) {\n deleted.push(selectedMap.value[key].row)\n }\n }\n } else {\n deleted = selection.value.filter((item) => !data.value.includes(item))\n }\n if (deleted.length) {\n const newSelection = selection.value.filter(\n (item) => !deleted.includes(item)\n )\n selection.value = newSelection\n updateSelectionByChildren({ emitChange: false })\n instance.emit('selection-change', [...newSelection])\n }\n }\n\n const getSelectionRows = () => {\n return (selection.value || []).slice()\n }\n\n const cascadeToLazyChildren = (\n row: T,\n selected: boolean,\n rowIndexMap: Map<string, number>\n ) => {\n if (\n !rowKey.value ||\n treeStates.checkStrictly.value ||\n !treeStates.lazy.value\n )\n return\n const { lazyTreeNodeMap, childrenColumnName } = instance.store.states\n const id = getRowIdentity(row, rowKey.value)\n const lazyChildren = (lazyTreeNodeMap.value?.[id] ?? []) as T[]\n const inlineChildren = (row[childrenColumnName.value] ?? []) as T[]\n const treeProps = {\n children: childrenColumnName.value,\n checkStrictly: false,\n }\n\n for (const child of lazyChildren) {\n const childIndex =\n rowIndexMap.get(getRowIdentity(child, rowKey.value)) ?? 0\n toggleRowStatus(\n selection.value,\n child,\n selected,\n treeProps,\n selectable.value,\n childIndex,\n rowKey.value\n )\n // Recursively handle lazy children's inline descendants\n cascadeToLazyChildren(child, selected, rowIndexMap)\n }\n // Only recurse into inline children (lazy children handled above)\n for (const child of inlineChildren) {\n cascadeToLazyChildren(child, selected, rowIndexMap)\n }\n }\n\n const toggleRowSelection = (\n row: T,\n selected?: boolean,\n emitChange = true,\n ignoreSelectable = false\n ) => {\n const treeProps = {\n children: instance?.store?.states?.childrenColumnName.value,\n checkStrictly: instance?.store?.states?.checkStrictly.value,\n }\n const changed = toggleRowStatus(\n selection.value,\n row,\n selected,\n treeProps,\n ignoreSelectable ? undefined : selectable.value,\n data.value.indexOf(row),\n rowKey.value\n )\n if (changed) {\n // lazy mode and non-strict mode, sync lazy children selection status\n if (treeStates.lazy.value && !treeStates.checkStrictly.value) {\n const finalSelected = selected ?? isSelected(row)\n cascadeToLazyChildren(row, finalSelected, rowIndexMap.value)\n updateSelectionByChildren({\n emitChange: false,\n rowIndexMap: rowIndexMap.value,\n })\n } else {\n updateSelectionByChildren({ emitChange: false })\n }\n const newSelection = (selection.value || []).slice()\n // API call to modify selection, don't trigger select event\n if (emitChange) {\n instance.emit('select', newSelection, row)\n }\n instance.emit('selection-change', newSelection)\n }\n }\n\n const _toggleAllSelection = () => {\n // when only some rows are selected (but not all), select or deselect all of them\n // depending on the value of selectOnIndeterminate\n const value = selectOnIndeterminate.value\n ? !isAllSelected.value\n : !(isAllSelected.value || selection.value.length)\n isAllSelected.value = value\n\n let selectionChanged = false\n let childrenCount = 0\n const rowKey = instance?.store?.states?.rowKey.value\n const { childrenColumnName } = instance.store.states\n const treeProps = {\n children: childrenColumnName.value,\n checkStrictly: false, // Disable checkStrictly when selecting all\n }\n\n data.value.forEach((row, index) => {\n const rowIndex = index + childrenCount\n if (\n toggleRowStatus(\n selection.value,\n row,\n value,\n treeProps,\n selectable.value,\n rowIndex,\n rowKey\n )\n ) {\n selectionChanged = true\n }\n childrenCount += getChildrenCount(getRowIdentity(row, rowKey))\n })\n\n const rowIndexMapVal = rowIndexMap.value\n\n if (treeStates.lazy.value && !treeStates.checkStrictly.value && rowKey) {\n for (const lazyRows of Object.values(treeStates.lazyTreeNodeMap.value)) {\n for (const child of lazyRows as T[]) {\n const childIndex =\n rowIndexMapVal.get(getRowIdentity(child, rowKey)) ?? 0\n if (\n toggleRowStatus(\n selection.value,\n child,\n value,\n treeProps,\n selectable.value,\n childIndex,\n rowKey\n )\n )\n selectionChanged = true\n cascadeToLazyChildren(child, value, rowIndexMapVal)\n }\n }\n }\n\n updateSelectionByChildren({\n emitChange: false,\n rowIndexMap: rowIndexMapVal,\n })\n\n if (selectionChanged) {\n instance.emit(\n 'selection-change',\n selection.value ? [...selection.value] : []\n )\n }\n instance.emit('select-all', (selection.value || []).slice())\n }\n\n const updateAllSelected = () => {\n // When data is null, default values during destructuring are ignored\n if (data.value?.length === 0) {\n isAllSelected.value = false\n return\n }\n\n let rowIndex = 0\n let selectedCount = 0\n\n const checkSelectedStatus = (rows: T[]) => {\n for (const row of rows) {\n const isRowSelectable =\n selectable.value && selectable.value.call(null, row, rowIndex)\n\n if (!isSelected(row)) {\n if (!selectable.value || isRowSelectable) {\n return false\n }\n } else {\n selectedCount++\n }\n rowIndex++\n\n const children = getRowChildren(row)\n if (children.length && !checkSelectedStatus(children)) {\n return false\n }\n }\n return true\n }\n\n const isAllSelected_ = checkSelectedStatus(data.value || [])\n isAllSelected.value = selectedCount === 0 ? false : isAllSelected_\n }\n\n const getRowIndeterminate = (row: T) => {\n if (!rowKey.value) return false\n const id = getRowIdentity(row, rowKey.value)\n return !!selectionIndeterminate.value[id]\n }\n\n const getChildrenCount = (rowKey: string) => {\n if (!instance || !instance.store) return 0\n const { treeData } = instance.store.states\n let count = 0\n const children = treeData.value[rowKey]?.children\n if (children) {\n count += children.length\n children.forEach((childKey) => {\n count += getChildrenCount(childKey)\n })\n }\n return count\n }\n\n const updateFilters = (column: TableColumnCtx<T>, values: string[]) => {\n const filters_: Record<string, string[]> = {}\n ensureArray(column).forEach((col) => {\n filters.value[col.id] = values\n filters_[col.columnKey || col.id] = values\n })\n return filters_\n }\n\n const updateSort = (\n column: TableColumnCtx<T> | null,\n prop: string | null,\n order: TableSortOrder | null\n ) => {\n if (sortingColumn.value && sortingColumn.value !== column) {\n sortingColumn.value.order = null\n }\n sortingColumn.value = column\n sortProp.value = prop\n sortOrder.value = order\n }\n\n const execFilter = () => {\n let sourceData = unref(_data)\n Object.keys(filters.value).forEach((columnId) => {\n const values = filters.value[columnId]\n if (!values || values.length === 0) return\n const column = getColumnById(\n {\n columns: columns.value,\n },\n columnId\n )\n if (column && column.filterMethod) {\n sourceData = sourceData.filter((row) => {\n return values.some((value) =>\n column.filterMethod.call(null, value, row, column)\n )\n })\n }\n })\n filteredData.value = sourceData\n }\n\n const execSort = () => {\n data.value = sortData(filteredData.value ?? [], {\n sortingColumn: sortingColumn.value,\n sortProp: sortProp.value,\n sortOrder: sortOrder.value,\n })\n }\n\n // Filter and sort data based on filters and sort conditions\n const execQuery = (ignore: { filter: boolean } | undefined = undefined) => {\n if (!ignore?.filter) {\n execFilter()\n }\n execSort()\n }\n\n const clearFilter = (columnKeys?: string[] | string) => {\n const { tableHeaderRef } = instance.refs as TableRefs\n if (!tableHeaderRef) return\n const panels = Object.assign({}, tableHeaderRef.filterPanels)\n\n const keys = Object.keys(panels)\n if (!keys.length) return\n\n if (isString(columnKeys)) {\n columnKeys = [columnKeys]\n }\n\n if (isArray(columnKeys)) {\n const columns_ = columnKeys.map((key) =>\n getColumnByKey(\n {\n columns: columns.value,\n },\n key\n )\n )\n keys.forEach((key) => {\n const column = columns_.find((col) => col.id === key)\n if (column) {\n column.filteredValue = []\n }\n })\n instance.store.commit('filterChange', {\n column: columns_,\n values: [],\n silent: true,\n multi: true,\n })\n } else {\n keys.forEach((key) => {\n const column = columns.value.find((col) => col.id === key)\n if (column) {\n column.filteredValue = []\n }\n })\n\n filters.value = {}\n instance.store.commit('filterChange', {\n column: {},\n values: [],\n silent: true,\n })\n }\n }\n\n const clearSort = () => {\n if (!sortingColumn.value) return\n\n updateSort(null, null, null)\n instance.store.commit('changeSortCondition', {\n silent: true,\n })\n }\n const {\n setExpandRowKeys,\n toggleRowExpansion,\n updateExpandRows,\n states: expandStates,\n isRowExpanded,\n } = useExpand({\n data,\n rowKey,\n })\n const {\n updateTreeExpandKeys,\n toggleTreeExpansion,\n updateTreeData,\n updateKeyChildren,\n loadOrToggle,\n states: treeStates,\n } = useTree({\n data,\n rowKey,\n })\n const {\n updateCurrentRowData,\n updateCurrentRow,\n setCurrentRowKey,\n states: currentData,\n } = useCurrent({\n data,\n rowKey,\n })\n // Adapter layer, expand-row-keys is used in both Expand and TreeTable\n const setExpandRowKeysAdapter = (val: string[]) => {\n // Triggers extra computation, but kept for compatibility\n setExpandRowKeys(val)\n updateTreeExpandKeys(val)\n }\n\n // Used for both expand rows and TreeTable\n const toggleRowExpansionAdapter = (row: T, expanded?: boolean) => {\n const hasExpandColumn = columns.value.some(({ type }) => type === 'expand')\n if (hasExpandColumn) {\n toggleRowExpansion(row, expanded)\n } else {\n toggleTreeExpansion(row, expanded)\n }\n }\n\n watch(\n () => treeStates.checkStrictly.value,\n (value) => {\n if (value) {\n selectionIndeterminate.value = {}\n } else {\n // Internal sync when switching strict mode, avoid triggering selection-change\n updateSelectionByChildren({ emitChange: false })\n }\n updateAllSelected()\n }\n )\n\n watch(\n () => treeStates.lazyTreeNodeMap.value,\n () => {\n if (\n !treeStates.lazy.value ||\n treeStates.checkStrictly.value ||\n !rowKey.value\n )\n return\n const rowIndexMapVal = rowIndexMap.value\n const prevLen = selection.value.length\n\n for (const parentId of Object.keys(treeStates.lazyTreeNodeMap.value)) {\n if (!selectedMap.value?.[parentId]) continue\n cascadeToLazyChildren(\n selectedMap.value[parentId].row,\n true,\n rowIndexMapVal\n )\n }\n\n const cascadeChanged = selection.value.length !== prevLen\n updateSelectionByChildren({\n emitChange: !cascadeChanged,\n rowIndexMap: rowIndexMapVal,\n })\n updateAllSelected()\n if (cascadeChanged) {\n instance.emit('selection-change', [...selection.value])\n }\n }\n )\n\n return {\n assertRowKey,\n updateColumns,\n scheduleLayout,\n isSelected,\n clearSelection,\n cleanSelection,\n getSelectionRows,\n toggleRowSelection,\n _toggleAllSelection,\n toggleAllSelection: null as (() => void) | null,\n updateAllSelected,\n updateSelectionByChildren,\n getRowIndeterminate,\n updateFilters,\n updateCurrentRow,\n updateSort,\n execFilter,\n execSort,\n execQuery,\n clearFilter,\n clearSort,\n toggleRowExpansion,\n setExpandRowKeysAdapter,\n setCurrentRowKey,\n toggleRowExpansionAdapter,\n isRowExpanded,\n updateExpandRows,\n updateCurrentRowData,\n loadOrToggle,\n updateTreeData,\n updateKeyChildren,\n states: {\n tableSize,\n rowKey,\n data,\n _data,\n isComplex,\n _columns,\n originColumns,\n columns,\n fixedColumns,\n rightFixedColumns,\n leafColumns,\n fixedLeafColumns,\n rightFixedLeafColumns,\n updateOrderFns,\n leafColumnsLength,\n fixedLeafColumnsLength,\n rightFixedLeafColumnsLength,\n isAllSelected,\n selection,\n selectionIndeterminate,\n reserveSelection,\n selectOnIndeterminate,\n selectable,\n rowExpandable,\n filters,\n filteredData,\n sortingColumn,\n sortProp,\n sortOrder,\n hoverRow,\n ...expandStates,\n ...treeStates,\n ...currentData,\n },\n }\n}\n\nexport default useWatcher\n"],"mappings":"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AEjC,qBAAoB,KAAK,SAAS;;AAItC,aACQ,WAAW,cAAc,QAC9B,UAAU;AACT,MAAI,MACF,wBAAuB,QAAQ,EAAE;MAGjC,2BAA0B,EAAE,YAAY,OAAO,CAAC;AAElD,qBAAmB;GAEtB;AAED,aACQ,WAAW,gBAAgB,aAC3B;AACJ,MACE,CAAC,WAAW,KAAK,SACjB,WAAW,cAAc,SACzB,CAAC,OAAO,MAER;EACF,MAAM,iBAAiB,YAAY;EACnC,MAAM,UAAU,UAAU,MAAM;AAEhC,OAAK,MAAM,YAAY,OAAO,KAAK,WAAW,gBAAgB,MAAM,EAAE;AACpE,OAAI,CAAC,YAAY,QAAQ,UAAW;AACpC,yBACE,YAAY,MAAM,UAAU,KAC5B,MACA,eACD;;EAGH,MAAM,iBAAiB,UAAU,MAAM,WAAW;AAClD,4BAA0B;GACxB,YAAY,CAAC;GACb,aAAa;GACd,CAAC;AACF,qBAAmB;AACnB,MAAI,eACF,UAAS,KAAK,oBAAoB,CAAC,GAAG,UAAU,MAAM,CAAC;GAG5D;AAED,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,oBAAoB;EACpB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;GACN;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,GAAG;GACH,GAAG;GACH,GAAG;GACJ;EACF"}