@element-plus/nightly 0.0.20260425 → 0.0.20260426

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 (576) hide show
  1. package/dist/index.full.js +426 -242
  2. package/dist/index.full.min.js +4 -4
  3. package/dist/index.full.min.js.map +1 -1
  4. package/dist/index.full.min.mjs +3 -3
  5. package/dist/index.full.min.mjs.map +1 -1
  6. package/dist/index.full.mjs +426 -242
  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-number/src/input-number.d.ts +2 -2
  325. package/es/components/input-number/src/input-number.vue.d.ts +9 -9
  326. package/es/components/input-otp/src/input-otp.vue.d.ts +6 -6
  327. package/es/components/input-tag/src/input-tag.d.ts +2 -2
  328. package/es/components/input-tag/src/input-tag.vue.d.ts +12 -12
  329. package/es/components/link/src/link.d.ts +1 -1
  330. package/es/components/link/src/link.vue.d.ts +1 -1
  331. package/es/components/mention/src/mention.d.ts +3 -3
  332. package/es/components/mention/src/mention.vue.d.ts +4 -4
  333. package/es/components/menu/src/menu.d.ts +5 -5
  334. package/es/components/menu/src/sub-menu.d.ts +1 -1
  335. package/es/components/message/src/message.d.ts +1 -1
  336. package/es/components/message/src/message.vue.d.ts +5 -5
  337. package/es/components/notification/src/notification.d.ts +1 -1
  338. package/es/components/notification/src/notification.vue.d.ts +5 -5
  339. package/es/components/page-header/src/page-header.vue.d.ts +1 -1
  340. package/es/components/pagination/src/pagination.d.ts +4 -4
  341. package/es/components/popconfirm/src/popconfirm.d.ts +2 -2
  342. package/es/components/popconfirm/src/popconfirm.vue.d.ts +2 -2
  343. package/es/components/popover/src/popover.d.ts +2 -2
  344. package/es/components/popover/src/popover.vue.d.ts +13 -13
  345. package/es/components/popper/src/composables/use-content.d.ts +1 -1
  346. package/es/components/popper/src/content.vue.d.ts +8 -8
  347. package/es/components/popper/src/popper.d.ts +2 -2
  348. package/es/components/progress/src/progress.d.ts +1 -1
  349. package/es/components/progress/src/progress.vue.d.ts +3 -3
  350. package/es/components/radio/src/radio-button.d.ts +3 -3
  351. package/es/components/radio/src/radio-button.vue.d.ts +2 -2
  352. package/es/components/radio/src/radio-group.vue.d.ts +4 -4
  353. package/es/components/radio/src/radio.d.ts +6 -6
  354. package/es/components/radio/src/radio.vue.d.ts +3 -3
  355. package/es/components/rate/src/rate.vue.d.ts +1 -1
  356. package/es/components/result/src/result.d.ts +1 -1
  357. package/es/components/row/src/row.vue.d.ts +1 -1
  358. package/es/components/scrollbar/src/scrollbar.vue.d.ts +4 -4
  359. package/es/components/segmented/index.d.ts +2 -2
  360. package/es/components/segmented/src/segmented.d.ts +1 -1
  361. package/es/components/select/src/option.d.ts +2 -2
  362. package/es/components/select/src/option.vue.d.ts +5 -5
  363. package/es/components/select/src/select.d.ts +4 -4
  364. package/es/components/select/src/select.vue.d.ts +82 -82
  365. package/es/components/select-v2/src/defaults.d.ts +2 -2
  366. package/es/components/select-v2/src/select.vue.d.ts +57 -57
  367. package/es/components/skeleton/src/skeleton-item.d.ts +1 -1
  368. package/es/components/skeleton/src/skeleton.vue.d.ts +1 -1
  369. package/es/components/slider/src/button.vue.d.ts +1 -1
  370. package/es/components/slider/src/slider.vue.d.ts +3 -3
  371. package/es/components/space/src/space.d.ts +1 -1
  372. package/es/components/statistic/src/statistic.vue.d.ts +2 -2
  373. package/es/components/steps/src/item.d.ts +1 -1
  374. package/es/components/steps/src/steps.d.ts +2 -2
  375. package/es/components/steps/src/steps.vue.d.ts +2 -2
  376. package/es/components/switch/src/switch.vue.d.ts +1 -1
  377. package/es/components/table/src/config.mjs +1 -0
  378. package/es/components/table/src/config.mjs.map +1 -1
  379. package/es/components/table/src/store/index.d.ts +32 -0
  380. package/es/components/table/src/store/index.mjs +1 -0
  381. package/es/components/table/src/store/index.mjs.map +1 -1
  382. package/es/components/table/src/store/tree.mjs +8 -2
  383. package/es/components/table/src/store/tree.mjs.map +1 -1
  384. package/es/components/table/src/store/watcher.mjs +187 -6
  385. package/es/components/table/src/store/watcher.mjs.map +1 -1
  386. package/es/components/table/src/table-column/index.d.ts +19 -19
  387. package/es/components/table/src/table-footer/index.d.ts +1 -1
  388. package/es/components/table/src/table-header/index.d.ts +13 -13
  389. package/es/components/table/src/table.vue.d.ts +63 -47
  390. package/es/components/table-v2/src/components/row.d.ts +1 -1
  391. package/es/components/table-v2/src/table-grid.d.ts +3 -3
  392. package/es/components/table-v2/src/table-v2.d.ts +3 -3
  393. package/es/components/tabs/src/tab-nav.d.ts +1 -1
  394. package/es/components/tabs/src/tabs.d.ts +2 -2
  395. package/es/components/tag/src/tag.d.ts +1 -1
  396. package/es/components/text/src/text.d.ts +1 -1
  397. package/es/components/time-picker/src/common/picker.vue.d.ts +20 -20
  398. package/es/components/time-picker/src/common/props.d.ts +2 -2
  399. package/es/components/time-picker/src/time-picker.d.ts +14 -14
  400. package/es/components/time-select/src/time-select.vue.d.ts +11 -11
  401. package/es/components/timeline/src/timeline-item.d.ts +1 -1
  402. package/es/components/timeline/src/timeline-item.vue.d.ts +1 -1
  403. package/es/components/tooltip/src/content.vue.d.ts +8 -8
  404. package/es/components/tooltip/src/tooltip.d.ts +2 -2
  405. package/es/components/tooltip/src/tooltip.vue.d.ts +9 -9
  406. package/es/components/tooltip/src/trigger.d.ts +1 -1
  407. package/es/components/tour/src/tour.vue.d.ts +2 -2
  408. package/es/components/tree/src/tree.vue.d.ts +25 -25
  409. package/es/components/tree-select/src/tree-select.vue.d.ts +43 -43
  410. package/es/components/tree-v2/src/tree.vue.d.ts +10 -10
  411. package/es/components/upload/src/upload-content.d.ts +1 -1
  412. package/es/components/upload/src/upload-content.vue.d.ts +2 -2
  413. package/es/components/upload/src/upload-list.d.ts +1 -1
  414. package/es/components/upload/src/upload.d.ts +2 -2
  415. package/es/components/upload/src/upload.vue.d.ts +3 -3
  416. package/es/components/virtual-list/src/builders/build-grid.d.ts +4 -4
  417. package/es/components/virtual-list/src/components/dynamic-size-grid.d.ts +4 -4
  418. package/es/components/virtual-list/src/components/dynamic-size-list.d.ts +6 -6
  419. package/es/components/virtual-list/src/components/fixed-size-grid.d.ts +4 -4
  420. package/es/components/virtual-list/src/components/fixed-size-list.d.ts +6 -6
  421. package/es/hooks/use-popper/index.d.ts +1 -1
  422. package/es/utils/vue/size.d.ts +1 -1
  423. package/es/version.mjs +1 -1
  424. package/es/version.mjs.map +1 -1
  425. package/lib/components/affix/src/affix.vue.d.ts +2 -2
  426. package/lib/components/alert/src/alert.d.ts +1 -1
  427. package/lib/components/anchor/src/anchor.d.ts +1 -1
  428. package/lib/components/anchor/src/anchor.vue.d.ts +1 -1
  429. package/lib/components/autocomplete/src/autocomplete.d.ts +4 -4
  430. package/lib/components/autocomplete/src/autocomplete.vue.d.ts +4 -4
  431. package/lib/components/avatar/src/avatar.d.ts +1 -1
  432. package/lib/components/avatar/src/avatar.vue.d.ts +1 -1
  433. package/lib/components/backtop/src/backtop.vue.d.ts +1 -1
  434. package/lib/components/badge/src/badge.d.ts +1 -1
  435. package/lib/components/badge/src/badge.vue.d.ts +1 -1
  436. package/lib/components/button/src/button-group.vue.d.ts +1 -1
  437. package/lib/components/button/src/button.d.ts +1 -1
  438. package/lib/components/button/src/button.vue.d.ts +4 -4
  439. package/lib/components/calendar/src/calendar.d.ts +1 -1
  440. package/lib/components/card/src/card.vue.d.ts +1 -1
  441. package/lib/components/carousel/src/carousel.d.ts +1 -1
  442. package/lib/components/carousel/src/carousel.vue.d.ts +2 -2
  443. package/lib/components/cascader/src/cascader.d.ts +3 -3
  444. package/lib/components/cascader/src/cascader.vue.d.ts +16 -16
  445. package/lib/components/cascader-panel/src/index.vue.d.ts +2 -2
  446. package/lib/components/cascader-panel/src/menu.vue.d.ts +1 -1
  447. package/lib/components/check-tag/src/check-tag.d.ts +1 -1
  448. package/lib/components/checkbox/src/checkbox-button.vue.d.ts +4 -4
  449. package/lib/components/checkbox/src/checkbox-group.vue.d.ts +1 -1
  450. package/lib/components/checkbox/src/checkbox.d.ts +8 -8
  451. package/lib/components/checkbox/src/checkbox.vue.d.ts +4 -4
  452. package/lib/components/col/src/col.vue.d.ts +1 -1
  453. package/lib/components/color-picker/src/color-picker.vue.d.ts +7 -7
  454. package/lib/components/color-picker-panel/src/color-picker-panel.vue.d.ts +1 -1
  455. package/lib/components/config-provider/src/hooks/use-global-config.d.ts +1 -1
  456. package/lib/components/date-picker/src/date-picker.d.ts +14 -14
  457. package/lib/components/date-picker/src/props.d.ts +2 -2
  458. package/lib/components/date-picker-panel/src/date-picker-panel.d.ts +6 -6
  459. package/lib/components/date-picker-panel/src/props/date-picker-panel.d.ts +1 -1
  460. package/lib/components/descriptions/src/description-item.d.ts +14 -14
  461. package/lib/components/descriptions/src/description.vue.d.ts +1 -1
  462. package/lib/components/dialog/src/dialog.vue.d.ts +4 -4
  463. package/lib/components/divider/src/divider.vue.d.ts +1 -1
  464. package/lib/components/drawer/src/drawer.vue.d.ts +5 -5
  465. package/lib/components/dropdown/src/dropdown-item.vue.d.ts +3 -3
  466. package/lib/components/dropdown/src/dropdown-menu.vue.d.ts +1 -1
  467. package/lib/components/dropdown/src/dropdown.d.ts +4 -4
  468. package/lib/components/dropdown/src/dropdown.vue.d.ts +69 -69
  469. package/lib/components/form/src/form.vue.d.ts +1 -1
  470. package/lib/components/image/src/image.vue.d.ts +5 -5
  471. package/lib/components/image-viewer/src/image-viewer.vue.d.ts +1 -1
  472. package/lib/components/input/src/input.d.ts +3 -3
  473. package/lib/components/input/src/input.vue.d.ts +16 -16
  474. package/lib/components/input-number/src/input-number.d.ts +2 -2
  475. package/lib/components/input-number/src/input-number.vue.d.ts +9 -9
  476. package/lib/components/input-otp/src/input-otp.vue.d.ts +6 -6
  477. package/lib/components/input-tag/src/input-tag.d.ts +2 -2
  478. package/lib/components/input-tag/src/input-tag.vue.d.ts +12 -12
  479. package/lib/components/link/src/link.d.ts +1 -1
  480. package/lib/components/link/src/link.vue.d.ts +1 -1
  481. package/lib/components/mention/src/mention.d.ts +3 -3
  482. package/lib/components/mention/src/mention.vue.d.ts +4 -4
  483. package/lib/components/menu/src/menu.d.ts +5 -5
  484. package/lib/components/menu/src/sub-menu.d.ts +1 -1
  485. package/lib/components/message/src/message.d.ts +1 -1
  486. package/lib/components/message/src/message.vue.d.ts +5 -5
  487. package/lib/components/notification/src/notification.d.ts +1 -1
  488. package/lib/components/notification/src/notification.vue.d.ts +5 -5
  489. package/lib/components/page-header/src/page-header.vue.d.ts +1 -1
  490. package/lib/components/pagination/src/pagination.d.ts +4 -4
  491. package/lib/components/popconfirm/src/popconfirm.d.ts +2 -2
  492. package/lib/components/popconfirm/src/popconfirm.vue.d.ts +2 -2
  493. package/lib/components/popover/src/popover.d.ts +2 -2
  494. package/lib/components/popover/src/popover.vue.d.ts +13 -13
  495. package/lib/components/popper/src/composables/use-content.d.ts +1 -1
  496. package/lib/components/popper/src/content.vue.d.ts +8 -8
  497. package/lib/components/popper/src/popper.d.ts +2 -2
  498. package/lib/components/progress/src/progress.d.ts +1 -1
  499. package/lib/components/progress/src/progress.vue.d.ts +3 -3
  500. package/lib/components/radio/src/radio-button.d.ts +3 -3
  501. package/lib/components/radio/src/radio-button.vue.d.ts +2 -2
  502. package/lib/components/radio/src/radio-group.vue.d.ts +4 -4
  503. package/lib/components/radio/src/radio.d.ts +6 -6
  504. package/lib/components/radio/src/radio.vue.d.ts +3 -3
  505. package/lib/components/rate/src/rate.vue.d.ts +1 -1
  506. package/lib/components/result/src/result.d.ts +1 -1
  507. package/lib/components/row/src/row.vue.d.ts +1 -1
  508. package/lib/components/scrollbar/src/scrollbar.vue.d.ts +4 -4
  509. package/lib/components/segmented/index.d.ts +2 -2
  510. package/lib/components/segmented/src/segmented.d.ts +1 -1
  511. package/lib/components/select/src/option.d.ts +2 -2
  512. package/lib/components/select/src/option.vue.d.ts +5 -5
  513. package/lib/components/select/src/select.d.ts +4 -4
  514. package/lib/components/select/src/select.vue.d.ts +82 -82
  515. package/lib/components/select-v2/src/defaults.d.ts +2 -2
  516. package/lib/components/select-v2/src/select.vue.d.ts +57 -57
  517. package/lib/components/skeleton/src/skeleton-item.d.ts +1 -1
  518. package/lib/components/skeleton/src/skeleton.vue.d.ts +1 -1
  519. package/lib/components/slider/src/button.vue.d.ts +1 -1
  520. package/lib/components/slider/src/slider.vue.d.ts +3 -3
  521. package/lib/components/space/src/space.d.ts +1 -1
  522. package/lib/components/statistic/src/statistic.vue.d.ts +2 -2
  523. package/lib/components/steps/src/item.d.ts +1 -1
  524. package/lib/components/steps/src/steps.d.ts +2 -2
  525. package/lib/components/steps/src/steps.vue.d.ts +2 -2
  526. package/lib/components/switch/src/switch.vue.d.ts +1 -1
  527. package/lib/components/table/src/config.js +1 -0
  528. package/lib/components/table/src/config.js.map +1 -1
  529. package/lib/components/table/src/store/index.d.ts +32 -0
  530. package/lib/components/table/src/store/index.js +1 -0
  531. package/lib/components/table/src/store/index.js.map +1 -1
  532. package/lib/components/table/src/store/tree.js +8 -2
  533. package/lib/components/table/src/store/tree.js.map +1 -1
  534. package/lib/components/table/src/store/watcher.js +187 -6
  535. package/lib/components/table/src/store/watcher.js.map +1 -1
  536. package/lib/components/table/src/table-column/index.d.ts +19 -19
  537. package/lib/components/table/src/table-footer/index.d.ts +1 -1
  538. package/lib/components/table/src/table-header/index.d.ts +13 -13
  539. package/lib/components/table/src/table.vue.d.ts +63 -47
  540. package/lib/components/table-v2/src/components/row.d.ts +1 -1
  541. package/lib/components/table-v2/src/table-grid.d.ts +3 -3
  542. package/lib/components/table-v2/src/table-v2.d.ts +3 -3
  543. package/lib/components/tabs/src/tab-nav.d.ts +1 -1
  544. package/lib/components/tabs/src/tabs.d.ts +2 -2
  545. package/lib/components/tag/src/tag.d.ts +1 -1
  546. package/lib/components/text/src/text.d.ts +1 -1
  547. package/lib/components/time-picker/src/common/picker.vue.d.ts +20 -20
  548. package/lib/components/time-picker/src/common/props.d.ts +2 -2
  549. package/lib/components/time-picker/src/time-picker.d.ts +14 -14
  550. package/lib/components/time-select/src/time-select.vue.d.ts +11 -11
  551. package/lib/components/timeline/src/timeline-item.d.ts +1 -1
  552. package/lib/components/timeline/src/timeline-item.vue.d.ts +1 -1
  553. package/lib/components/tooltip/src/content.vue.d.ts +8 -8
  554. package/lib/components/tooltip/src/tooltip.d.ts +2 -2
  555. package/lib/components/tooltip/src/tooltip.vue.d.ts +9 -9
  556. package/lib/components/tooltip/src/trigger.d.ts +1 -1
  557. package/lib/components/tour/src/tour.vue.d.ts +2 -2
  558. package/lib/components/tree/src/tree.vue.d.ts +25 -25
  559. package/lib/components/tree-select/src/tree-select.vue.d.ts +43 -43
  560. package/lib/components/tree-v2/src/tree.vue.d.ts +10 -10
  561. package/lib/components/upload/src/upload-content.d.ts +1 -1
  562. package/lib/components/upload/src/upload-content.vue.d.ts +2 -2
  563. package/lib/components/upload/src/upload-list.d.ts +1 -1
  564. package/lib/components/upload/src/upload.d.ts +2 -2
  565. package/lib/components/upload/src/upload.vue.d.ts +3 -3
  566. package/lib/components/virtual-list/src/builders/build-grid.d.ts +4 -4
  567. package/lib/components/virtual-list/src/components/dynamic-size-grid.d.ts +4 -4
  568. package/lib/components/virtual-list/src/components/dynamic-size-list.d.ts +6 -6
  569. package/lib/components/virtual-list/src/components/fixed-size-grid.d.ts +4 -4
  570. package/lib/components/virtual-list/src/components/fixed-size-list.d.ts +6 -6
  571. package/lib/hooks/use-popper/index.d.ts +1 -1
  572. package/lib/utils/vue/size.d.ts +1 -1
  573. package/lib/version.js +1 -1
  574. package/lib/version.js.map +1 -1
  575. package/package.json +5 -5
  576. package/web-types.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useWatcher","useNamespace","useLocale"],"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":"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"}
1
+ {"version":3,"file":"index.js","names":["useWatcher","useNamespace","useLocale"],"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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"}
@@ -154,7 +154,10 @@ function useTree(watcherData) {
154
154
  treeData.value[key].loading = false;
155
155
  treeData.value[key].loaded = true;
156
156
  treeData.value[key].expanded = true;
157
- if (data.length) lazyTreeNodeMap.value[key] = data;
157
+ if (data.length) lazyTreeNodeMap.value = {
158
+ ...lazyTreeNodeMap.value,
159
+ [key]: data
160
+ };
158
161
  instance.emit("expand-change", row, true);
159
162
  });
160
163
  }
@@ -163,7 +166,10 @@ function useTree(watcherData) {
163
166
  const { lazy, rowKey } = instance.props;
164
167
  if (!lazy) return;
165
168
  if (!rowKey) throw new Error("[Table] rowKey is required in updateKeyChild");
166
- if (lazyTreeNodeMap.value[key]) lazyTreeNodeMap.value[key] = data;
169
+ if (lazyTreeNodeMap.value[key]) lazyTreeNodeMap.value = {
170
+ ...lazyTreeNodeMap.value,
171
+ [key]: data
172
+ };
167
173
  };
168
174
  return {
169
175
  loadData,
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","names":["getRowIdentity","isUndefined"],"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":"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"}
1
+ {"version":3,"file":"tree.js","names":["getRowIdentity","isUndefined"],"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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"}
@@ -43,6 +43,7 @@ function useWatcher() {
43
43
  const rightFixedLeafColumnsLength = (0, vue.ref)(0);
44
44
  const isAllSelected = (0, vue.ref)(false);
45
45
  const selection = (0, vue.ref)([]);
46
+ const selectionIndeterminate = (0, vue.ref)({});
46
47
  const reserveSelection = (0, vue.ref)(false);
47
48
  const selectOnIndeterminate = (0, vue.ref)(false);
48
49
  const selectable = (0, vue.ref)(null);
@@ -56,6 +57,13 @@ function useWatcher() {
56
57
  const selectedMap = (0, vue.computed)(() => {
57
58
  return rowKey.value ? require_util.getKeysMap(selection.value, rowKey.value) : void 0;
58
59
  });
60
+ const getRowChildren = (row) => {
61
+ const { childrenColumnName, lazyTreeNodeMap } = instance.store.states;
62
+ const inlineChildren = row[childrenColumnName.value] ?? [];
63
+ if (!rowKey.value) return inlineChildren;
64
+ const id = require_util.getRowIdentity(row, rowKey.value);
65
+ return [...lazyTreeNodeMap.value?.[id] ?? [], ...inlineChildren];
66
+ };
59
67
  (0, vue.watch)(data, () => {
60
68
  if (instance.state) {
61
69
  scheduleLayout(false);
@@ -105,10 +113,109 @@ function useWatcher() {
105
113
  if (selectedMap.value) return !!selectedMap.value[require_util.getRowIdentity(row, rowKey.value)];
106
114
  else return selection.value.includes(row);
107
115
  };
116
+ const rowIndexMap = (0, vue.computed)(() => {
117
+ const map = /* @__PURE__ */ new Map();
118
+ if (!rowKey.value || !selectable.value) return map;
119
+ let index = 0;
120
+ const _traverse = (rows) => {
121
+ if (!(0, _vue_shared.isArray)(rows)) return;
122
+ rows.forEach((row) => {
123
+ const id = require_util.getRowIdentity(row, rowKey.value);
124
+ map.set(id, index);
125
+ index += 1;
126
+ const children = getRowChildren(row);
127
+ if (children.length) _traverse(children);
128
+ });
129
+ };
130
+ _traverse(data.value || []);
131
+ return map;
132
+ });
133
+ const updateSelectionByChildren = (options = {}) => {
134
+ const { emitChange = true } = options;
135
+ if (treeStates.checkStrictly.value || !rowKey.value) {
136
+ selectionIndeterminate.value = {};
137
+ return;
138
+ }
139
+ const rowKeyValue = rowKey.value;
140
+ const rowIndexMapValue = options.rowIndexMap ?? rowIndexMap.value;
141
+ const selectableFn = selectable.value;
142
+ const rowIdCache = /* @__PURE__ */ new WeakMap();
143
+ const getCachedRowId = (row) => {
144
+ const cachedId = rowIdCache.get(row);
145
+ if (cachedId) return cachedId;
146
+ const id = require_util.getRowIdentity(row, rowKeyValue);
147
+ rowIdCache.set(row, id);
148
+ return id;
149
+ };
150
+ const indeterminateMap = {};
151
+ const selectedIdSet = new Set(selection.value.map((row) => getCachedRowId(row)));
152
+ const rowsToAdd = [];
153
+ let selectionChanged = false;
154
+ const _updateSelectionForRow = (row, id, selected) => {
155
+ const isRowSelected = selectedIdSet.has(id);
156
+ if (selected && !isRowSelected) {
157
+ rowsToAdd.push(row);
158
+ selectedIdSet.add(id);
159
+ selectionChanged = true;
160
+ } else if (!selected && isRowSelected) {
161
+ selectedIdSet.delete(id);
162
+ selectionChanged = true;
163
+ }
164
+ };
165
+ const _walk = (rows) => {
166
+ let selectedCount = 0;
167
+ let selectableCount = 0;
168
+ if (!(0, _vue_shared.isArray)(rows)) return {
169
+ selectedCount,
170
+ selectableCount
171
+ };
172
+ rows.forEach((row) => {
173
+ const id = getCachedRowId(row);
174
+ const children = getRowChildren(row);
175
+ let childSelectedCount = 0;
176
+ let childSelectableCount = 0;
177
+ if (children.length) {
178
+ const childResult = _walk(children);
179
+ childSelectedCount = childResult.selectedCount;
180
+ childSelectableCount = childResult.selectableCount;
181
+ }
182
+ const rowSelectable = selectableFn ? selectableFn.call(null, row, rowIndexMapValue.get(id) ?? 0) : true;
183
+ if (rowSelectable) {
184
+ if (childSelectableCount > 0) {
185
+ const allSelected = childSelectedCount === childSelectableCount;
186
+ if (!allSelected && !(childSelectedCount === 0)) indeterminateMap[id] = true;
187
+ _updateSelectionForRow(row, id, allSelected);
188
+ }
189
+ }
190
+ if (rowSelectable) {
191
+ selectableCount += 1;
192
+ if (selectedIdSet.has(id)) selectedCount += 1;
193
+ }
194
+ selectedCount += childSelectedCount;
195
+ selectableCount += childSelectableCount;
196
+ });
197
+ return {
198
+ selectedCount,
199
+ selectableCount
200
+ };
201
+ };
202
+ _walk(data.value || []);
203
+ if (selectionChanged) {
204
+ const nextSelection = selection.value.filter((row) => selectedIdSet.has(getCachedRowId(row)));
205
+ rowsToAdd.forEach((row) => {
206
+ if (!selectedIdSet.has(getCachedRowId(row))) return;
207
+ nextSelection.push(row);
208
+ });
209
+ selection.value = nextSelection;
210
+ }
211
+ selectionIndeterminate.value = indeterminateMap;
212
+ if (selectionChanged && emitChange) instance.emit("selection-change", selection.value ? selection.value.slice() : []);
213
+ };
108
214
  const clearSelection = () => {
109
215
  isAllSelected.value = false;
110
216
  const oldSelection = selection.value;
111
217
  selection.value = [];
218
+ selectionIndeterminate.value = {};
112
219
  if (oldSelection.length) instance.emit("selection-change", []);
113
220
  };
114
221
  const cleanSelection = () => {
@@ -117,23 +224,58 @@ function useWatcher() {
117
224
  deleted = [];
118
225
  const childrenKey = instance?.store?.states?.childrenColumnName.value;
119
226
  const dataMap = require_util.getKeysMap(data.value, rowKey.value, true, childrenKey);
227
+ const { lazyTreeNodeMap } = instance.store.states;
228
+ if (lazyTreeNodeMap.value) Object.entries(lazyTreeNodeMap.value).forEach(([parentId, lazyRows]) => {
229
+ if (dataMap[parentId]) lazyRows.forEach((row) => {
230
+ const id = require_util.getRowIdentity(row, rowKey.value);
231
+ if (!dataMap[id]) dataMap[id] = {
232
+ row,
233
+ index: -1
234
+ };
235
+ });
236
+ });
120
237
  for (const key in selectedMap.value) if ((0, _vue_shared.hasOwn)(selectedMap.value, key) && !dataMap[key]) deleted.push(selectedMap.value[key].row);
121
238
  } else deleted = selection.value.filter((item) => !data.value.includes(item));
122
239
  if (deleted.length) {
123
240
  const newSelection = selection.value.filter((item) => !deleted.includes(item));
124
241
  selection.value = newSelection;
125
- instance.emit("selection-change", newSelection.slice());
242
+ updateSelectionByChildren({ emitChange: false });
243
+ instance.emit("selection-change", [...newSelection]);
126
244
  }
127
245
  };
128
246
  const getSelectionRows = () => {
129
247
  return (selection.value || []).slice();
130
248
  };
249
+ const cascadeToLazyChildren = (row, selected, rowIndexMap) => {
250
+ if (!rowKey.value || treeStates.checkStrictly.value || !treeStates.lazy.value) return;
251
+ const { lazyTreeNodeMap, childrenColumnName } = instance.store.states;
252
+ const id = require_util.getRowIdentity(row, rowKey.value);
253
+ const lazyChildren = lazyTreeNodeMap.value?.[id] ?? [];
254
+ const inlineChildren = row[childrenColumnName.value] ?? [];
255
+ const treeProps = {
256
+ children: childrenColumnName.value,
257
+ checkStrictly: false
258
+ };
259
+ for (const child of lazyChildren) {
260
+ const childIndex = rowIndexMap.get(require_util.getRowIdentity(child, rowKey.value)) ?? 0;
261
+ require_util.toggleRowStatus(selection.value, child, selected, treeProps, selectable.value, childIndex, rowKey.value);
262
+ cascadeToLazyChildren(child, selected, rowIndexMap);
263
+ }
264
+ for (const child of inlineChildren) cascadeToLazyChildren(child, selected, rowIndexMap);
265
+ };
131
266
  const toggleRowSelection = (row, selected, emitChange = true, ignoreSelectable = false) => {
132
267
  const treeProps = {
133
268
  children: instance?.store?.states?.childrenColumnName.value,
134
269
  checkStrictly: instance?.store?.states?.checkStrictly.value
135
270
  };
136
271
  if (require_util.toggleRowStatus(selection.value, row, selected, treeProps, ignoreSelectable ? void 0 : selectable.value, data.value.indexOf(row), rowKey.value)) {
272
+ if (treeStates.lazy.value && !treeStates.checkStrictly.value) {
273
+ cascadeToLazyChildren(row, selected ?? isSelected(row), rowIndexMap.value);
274
+ updateSelectionByChildren({
275
+ emitChange: false,
276
+ rowIndexMap: rowIndexMap.value
277
+ });
278
+ } else updateSelectionByChildren({ emitChange: false });
137
279
  const newSelection = (selection.value || []).slice();
138
280
  if (emitChange) instance.emit("select", newSelection, row);
139
281
  instance.emit("selection-change", newSelection);
@@ -155,7 +297,17 @@ function useWatcher() {
155
297
  if (require_util.toggleRowStatus(selection.value, row, value, treeProps, selectable.value, rowIndex, rowKey)) selectionChanged = true;
156
298
  childrenCount += getChildrenCount(require_util.getRowIdentity(row, rowKey));
157
299
  });
158
- if (selectionChanged) instance.emit("selection-change", selection.value ? selection.value.slice() : []);
300
+ const rowIndexMapVal = rowIndexMap.value;
301
+ if (treeStates.lazy.value && !treeStates.checkStrictly.value && rowKey) for (const lazyRows of Object.values(treeStates.lazyTreeNodeMap.value)) for (const child of lazyRows) {
302
+ const childIndex = rowIndexMapVal.get(require_util.getRowIdentity(child, rowKey)) ?? 0;
303
+ if (require_util.toggleRowStatus(selection.value, child, value, treeProps, selectable.value, childIndex, rowKey)) selectionChanged = true;
304
+ cascadeToLazyChildren(child, value, rowIndexMapVal);
305
+ }
306
+ updateSelectionByChildren({
307
+ emitChange: false,
308
+ rowIndexMap: rowIndexMapVal
309
+ });
310
+ if (selectionChanged) instance.emit("selection-change", selection.value ? [...selection.value] : []);
159
311
  instance.emit("select-all", (selection.value || []).slice());
160
312
  };
161
313
  const updateAllSelected = () => {
@@ -163,23 +315,28 @@ function useWatcher() {
163
315
  isAllSelected.value = false;
164
316
  return;
165
317
  }
166
- const { childrenColumnName } = instance.store.states;
167
318
  let rowIndex = 0;
168
319
  let selectedCount = 0;
169
- const checkSelectedStatus = (data) => {
170
- for (const row of data) {
320
+ const checkSelectedStatus = (rows) => {
321
+ for (const row of rows) {
171
322
  const isRowSelectable = selectable.value && selectable.value.call(null, row, rowIndex);
172
323
  if (!isSelected(row)) {
173
324
  if (!selectable.value || isRowSelectable) return false;
174
325
  } else selectedCount++;
175
326
  rowIndex++;
176
- if (row[childrenColumnName.value]?.length && !checkSelectedStatus(row[childrenColumnName.value])) return false;
327
+ const children = getRowChildren(row);
328
+ if (children.length && !checkSelectedStatus(children)) return false;
177
329
  }
178
330
  return true;
179
331
  };
180
332
  const isAllSelected_ = checkSelectedStatus(data.value || []);
181
333
  isAllSelected.value = selectedCount === 0 ? false : isAllSelected_;
182
334
  };
335
+ const getRowIndeterminate = (row) => {
336
+ if (!rowKey.value) return false;
337
+ const id = require_util.getRowIdentity(row, rowKey.value);
338
+ return !!selectionIndeterminate.value[id];
339
+ };
183
340
  const getChildrenCount = (rowKey) => {
184
341
  if (!instance || !instance.store) return 0;
185
342
  const { treeData } = instance.store.states;
@@ -287,6 +444,27 @@ function useWatcher() {
287
444
  if (columns.value.some(({ type }) => type === "expand")) toggleRowExpansion(row, expanded);
288
445
  else toggleTreeExpansion(row, expanded);
289
446
  };
447
+ (0, vue.watch)(() => treeStates.checkStrictly.value, (value) => {
448
+ if (value) selectionIndeterminate.value = {};
449
+ else updateSelectionByChildren({ emitChange: false });
450
+ updateAllSelected();
451
+ });
452
+ (0, vue.watch)(() => treeStates.lazyTreeNodeMap.value, () => {
453
+ if (!treeStates.lazy.value || treeStates.checkStrictly.value || !rowKey.value) return;
454
+ const rowIndexMapVal = rowIndexMap.value;
455
+ const prevLen = selection.value.length;
456
+ for (const parentId of Object.keys(treeStates.lazyTreeNodeMap.value)) {
457
+ if (!selectedMap.value?.[parentId]) continue;
458
+ cascadeToLazyChildren(selectedMap.value[parentId].row, true, rowIndexMapVal);
459
+ }
460
+ const cascadeChanged = selection.value.length !== prevLen;
461
+ updateSelectionByChildren({
462
+ emitChange: !cascadeChanged,
463
+ rowIndexMap: rowIndexMapVal
464
+ });
465
+ updateAllSelected();
466
+ if (cascadeChanged) instance.emit("selection-change", [...selection.value]);
467
+ });
290
468
  return {
291
469
  assertRowKey,
292
470
  updateColumns,
@@ -299,6 +477,8 @@ function useWatcher() {
299
477
  _toggleAllSelection,
300
478
  toggleAllSelection: null,
301
479
  updateAllSelected,
480
+ updateSelectionByChildren,
481
+ getRowIndeterminate,
302
482
  updateFilters,
303
483
  updateCurrentRow,
304
484
  updateSort,
@@ -337,6 +517,7 @@ function useWatcher() {
337
517
  rightFixedLeafColumnsLength,
338
518
  isAllSelected,
339
519
  selection,
520
+ selectionIndeterminate,
340
521
  reserveSelection,
341
522
  selectOnIndeterminate,
342
523
  selectable,
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.js","names":["orderBy","getKeysMap","getRowIdentity","toggleRowStatus","getColumnById","getColumnByKey","useExpand","useTree","useCurrent"],"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.js","names":["orderBy","getKeysMap","getRowIdentity","toggleRowStatus","getColumnById","getColumnByKey","useExpand","useTree","useCurrent"],"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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D,qBAAmB;GAEtB;AAED,sBACQ,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"}