element-plus 1.3.0-beta.7 → 1.3.0-beta.8

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 (558) hide show
  1. package/dist/index.full.js +612 -462
  2. package/dist/index.full.min.js +6 -6
  3. package/dist/index.full.min.js.map +1 -1
  4. package/dist/index.full.min.mjs +6 -6
  5. package/dist/index.full.min.mjs.map +1 -1
  6. package/dist/index.full.mjs +612 -462
  7. package/dist/locale/af.js +6 -8
  8. package/dist/locale/af.min.js +1 -1
  9. package/dist/locale/af.min.js.map +1 -1
  10. package/dist/locale/af.min.mjs +1 -1
  11. package/dist/locale/af.mjs +1 -1
  12. package/dist/locale/ar.js +6 -8
  13. package/dist/locale/ar.min.js +1 -1
  14. package/dist/locale/ar.min.js.map +1 -1
  15. package/dist/locale/ar.min.mjs +1 -1
  16. package/dist/locale/ar.mjs +1 -1
  17. package/dist/locale/bg.js +6 -8
  18. package/dist/locale/bg.min.js +1 -1
  19. package/dist/locale/bg.min.js.map +1 -1
  20. package/dist/locale/bg.min.mjs +1 -1
  21. package/dist/locale/bg.mjs +1 -1
  22. package/dist/locale/bn.js +6 -8
  23. package/dist/locale/bn.min.js +1 -1
  24. package/dist/locale/bn.min.js.map +1 -1
  25. package/dist/locale/bn.min.mjs +1 -1
  26. package/dist/locale/bn.mjs +1 -1
  27. package/dist/locale/ca.js +6 -8
  28. package/dist/locale/ca.min.js +1 -1
  29. package/dist/locale/ca.min.js.map +1 -1
  30. package/dist/locale/ca.min.mjs +1 -1
  31. package/dist/locale/ca.mjs +1 -1
  32. package/dist/locale/cs.js +6 -8
  33. package/dist/locale/cs.min.js +1 -1
  34. package/dist/locale/cs.min.js.map +1 -1
  35. package/dist/locale/cs.min.mjs +1 -1
  36. package/dist/locale/cs.mjs +1 -1
  37. package/dist/locale/da.js +6 -8
  38. package/dist/locale/da.min.js +1 -1
  39. package/dist/locale/da.min.js.map +1 -1
  40. package/dist/locale/da.min.mjs +1 -1
  41. package/dist/locale/da.mjs +1 -1
  42. package/dist/locale/de.js +6 -8
  43. package/dist/locale/de.min.js +1 -1
  44. package/dist/locale/de.min.js.map +1 -1
  45. package/dist/locale/de.min.mjs +1 -1
  46. package/dist/locale/de.mjs +1 -1
  47. package/dist/locale/el.js +6 -8
  48. package/dist/locale/el.min.js +1 -1
  49. package/dist/locale/el.min.js.map +1 -1
  50. package/dist/locale/el.min.mjs +1 -1
  51. package/dist/locale/el.mjs +1 -1
  52. package/dist/locale/en.js +6 -8
  53. package/dist/locale/en.min.js +1 -1
  54. package/dist/locale/en.min.js.map +1 -1
  55. package/dist/locale/en.min.mjs +1 -1
  56. package/dist/locale/en.mjs +1 -1
  57. package/dist/locale/eo.js +6 -8
  58. package/dist/locale/eo.min.js +1 -1
  59. package/dist/locale/eo.min.js.map +1 -1
  60. package/dist/locale/eo.min.mjs +1 -1
  61. package/dist/locale/eo.mjs +1 -1
  62. package/dist/locale/es.js +6 -8
  63. package/dist/locale/es.min.js +1 -1
  64. package/dist/locale/es.min.js.map +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 +6 -8
  68. package/dist/locale/et.min.js +1 -1
  69. package/dist/locale/et.min.js.map +1 -1
  70. package/dist/locale/et.min.mjs +1 -1
  71. package/dist/locale/et.mjs +1 -1
  72. package/dist/locale/eu.js +6 -8
  73. package/dist/locale/eu.min.js +1 -1
  74. package/dist/locale/eu.min.js.map +1 -1
  75. package/dist/locale/eu.min.mjs +1 -1
  76. package/dist/locale/eu.mjs +1 -1
  77. package/dist/locale/fa.js +6 -8
  78. package/dist/locale/fa.min.js +1 -1
  79. package/dist/locale/fa.min.js.map +1 -1
  80. package/dist/locale/fa.min.mjs +1 -1
  81. package/dist/locale/fa.mjs +1 -1
  82. package/dist/locale/fi.js +6 -8
  83. package/dist/locale/fi.min.js +1 -1
  84. package/dist/locale/fi.min.js.map +1 -1
  85. package/dist/locale/fi.min.mjs +1 -1
  86. package/dist/locale/fi.mjs +1 -1
  87. package/dist/locale/fr.js +6 -8
  88. package/dist/locale/fr.min.js +1 -1
  89. package/dist/locale/fr.min.js.map +1 -1
  90. package/dist/locale/fr.min.mjs +1 -1
  91. package/dist/locale/fr.mjs +1 -1
  92. package/dist/locale/he.js +6 -8
  93. package/dist/locale/he.min.js +1 -1
  94. package/dist/locale/he.min.js.map +1 -1
  95. package/dist/locale/he.min.mjs +1 -1
  96. package/dist/locale/he.mjs +1 -1
  97. package/dist/locale/hr.js +6 -8
  98. package/dist/locale/hr.min.js +1 -1
  99. package/dist/locale/hr.min.js.map +1 -1
  100. package/dist/locale/hr.min.mjs +1 -1
  101. package/dist/locale/hr.mjs +1 -1
  102. package/dist/locale/hu.js +6 -8
  103. package/dist/locale/hu.min.js +1 -1
  104. package/dist/locale/hu.min.js.map +1 -1
  105. package/dist/locale/hu.min.mjs +1 -1
  106. package/dist/locale/hu.mjs +1 -1
  107. package/dist/locale/hy-am.js +6 -8
  108. package/dist/locale/hy-am.min.js +1 -1
  109. package/dist/locale/hy-am.min.js.map +1 -1
  110. package/dist/locale/hy-am.min.mjs +1 -1
  111. package/dist/locale/hy-am.mjs +1 -1
  112. package/dist/locale/id.js +6 -8
  113. package/dist/locale/id.min.js +1 -1
  114. package/dist/locale/id.min.js.map +1 -1
  115. package/dist/locale/id.min.mjs +1 -1
  116. package/dist/locale/id.mjs +1 -1
  117. package/dist/locale/it.js +6 -8
  118. package/dist/locale/it.min.js +1 -1
  119. package/dist/locale/it.min.js.map +1 -1
  120. package/dist/locale/it.min.mjs +1 -1
  121. package/dist/locale/it.mjs +1 -1
  122. package/dist/locale/ja.js +6 -8
  123. package/dist/locale/ja.min.js +1 -1
  124. package/dist/locale/ja.min.js.map +1 -1
  125. package/dist/locale/ja.min.mjs +1 -1
  126. package/dist/locale/ja.mjs +1 -1
  127. package/dist/locale/kk.js +6 -8
  128. package/dist/locale/kk.min.js +1 -1
  129. package/dist/locale/kk.min.js.map +1 -1
  130. package/dist/locale/kk.min.mjs +1 -1
  131. package/dist/locale/kk.mjs +1 -1
  132. package/dist/locale/km.js +6 -8
  133. package/dist/locale/km.min.js +1 -1
  134. package/dist/locale/km.min.js.map +1 -1
  135. package/dist/locale/km.min.mjs +1 -1
  136. package/dist/locale/km.mjs +1 -1
  137. package/dist/locale/ko.js +6 -8
  138. package/dist/locale/ko.min.js +1 -1
  139. package/dist/locale/ko.min.js.map +1 -1
  140. package/dist/locale/ko.min.mjs +1 -1
  141. package/dist/locale/ko.mjs +1 -1
  142. package/dist/locale/ku.js +6 -8
  143. package/dist/locale/ku.min.js +1 -1
  144. package/dist/locale/ku.min.js.map +1 -1
  145. package/dist/locale/ku.min.mjs +1 -1
  146. package/dist/locale/ku.mjs +1 -1
  147. package/dist/locale/ky.js +6 -8
  148. package/dist/locale/ky.min.js +1 -1
  149. package/dist/locale/ky.min.js.map +1 -1
  150. package/dist/locale/ky.min.mjs +1 -1
  151. package/dist/locale/ky.mjs +1 -1
  152. package/dist/locale/lt.js +6 -8
  153. package/dist/locale/lt.min.js +1 -1
  154. package/dist/locale/lt.min.js.map +1 -1
  155. package/dist/locale/lt.min.mjs +1 -1
  156. package/dist/locale/lt.mjs +1 -1
  157. package/dist/locale/lv.js +6 -8
  158. package/dist/locale/lv.min.js +1 -1
  159. package/dist/locale/lv.min.js.map +1 -1
  160. package/dist/locale/lv.min.mjs +1 -1
  161. package/dist/locale/lv.mjs +1 -1
  162. package/dist/locale/mn.js +6 -8
  163. package/dist/locale/mn.min.js +1 -1
  164. package/dist/locale/mn.min.js.map +1 -1
  165. package/dist/locale/mn.min.mjs +1 -1
  166. package/dist/locale/mn.mjs +1 -1
  167. package/dist/locale/nb-no.js +6 -8
  168. package/dist/locale/nb-no.min.js +1 -1
  169. package/dist/locale/nb-no.min.js.map +1 -1
  170. package/dist/locale/nb-no.min.mjs +1 -1
  171. package/dist/locale/nb-no.mjs +1 -1
  172. package/dist/locale/nl.js +6 -8
  173. package/dist/locale/nl.min.js +1 -1
  174. package/dist/locale/nl.min.js.map +1 -1
  175. package/dist/locale/nl.min.mjs +1 -1
  176. package/dist/locale/nl.mjs +1 -1
  177. package/dist/locale/pa.js +6 -8
  178. package/dist/locale/pa.min.js +1 -1
  179. package/dist/locale/pa.min.js.map +1 -1
  180. package/dist/locale/pa.min.mjs +1 -1
  181. package/dist/locale/pa.mjs +1 -1
  182. package/dist/locale/pl.js +6 -8
  183. package/dist/locale/pl.min.js +1 -1
  184. package/dist/locale/pl.min.js.map +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 +6 -8
  188. package/dist/locale/pt-br.min.js +1 -1
  189. package/dist/locale/pt-br.min.js.map +1 -1
  190. package/dist/locale/pt-br.min.mjs +1 -1
  191. package/dist/locale/pt-br.mjs +1 -1
  192. package/dist/locale/pt.js +6 -8
  193. package/dist/locale/pt.min.js +1 -1
  194. package/dist/locale/pt.min.js.map +1 -1
  195. package/dist/locale/pt.min.mjs +1 -1
  196. package/dist/locale/pt.mjs +1 -1
  197. package/dist/locale/ro.js +6 -8
  198. package/dist/locale/ro.min.js +1 -1
  199. package/dist/locale/ro.min.js.map +1 -1
  200. package/dist/locale/ro.min.mjs +1 -1
  201. package/dist/locale/ro.mjs +1 -1
  202. package/dist/locale/ru.js +6 -8
  203. package/dist/locale/ru.min.js +1 -1
  204. package/dist/locale/ru.min.js.map +1 -1
  205. package/dist/locale/ru.min.mjs +1 -1
  206. package/dist/locale/ru.mjs +1 -1
  207. package/dist/locale/sk.js +6 -8
  208. package/dist/locale/sk.min.js +1 -1
  209. package/dist/locale/sk.min.js.map +1 -1
  210. package/dist/locale/sk.min.mjs +1 -1
  211. package/dist/locale/sk.mjs +1 -1
  212. package/dist/locale/sl.js +6 -8
  213. package/dist/locale/sl.min.js +1 -1
  214. package/dist/locale/sl.min.js.map +1 -1
  215. package/dist/locale/sl.min.mjs +1 -1
  216. package/dist/locale/sl.mjs +1 -1
  217. package/dist/locale/sr.js +6 -8
  218. package/dist/locale/sr.min.js +1 -1
  219. package/dist/locale/sr.min.js.map +1 -1
  220. package/dist/locale/sr.min.mjs +1 -1
  221. package/dist/locale/sr.mjs +1 -1
  222. package/dist/locale/sv.js +6 -8
  223. package/dist/locale/sv.min.js +1 -1
  224. package/dist/locale/sv.min.js.map +1 -1
  225. package/dist/locale/sv.min.mjs +1 -1
  226. package/dist/locale/sv.mjs +1 -1
  227. package/dist/locale/ta.js +6 -8
  228. package/dist/locale/ta.min.js +1 -1
  229. package/dist/locale/ta.min.js.map +1 -1
  230. package/dist/locale/ta.min.mjs +1 -1
  231. package/dist/locale/ta.mjs +1 -1
  232. package/dist/locale/th.js +6 -8
  233. package/dist/locale/th.min.js +1 -1
  234. package/dist/locale/th.min.js.map +1 -1
  235. package/dist/locale/th.min.mjs +1 -1
  236. package/dist/locale/th.mjs +1 -1
  237. package/dist/locale/tk.js +6 -8
  238. package/dist/locale/tk.min.js +1 -1
  239. package/dist/locale/tk.min.js.map +1 -1
  240. package/dist/locale/tk.min.mjs +1 -1
  241. package/dist/locale/tk.mjs +1 -1
  242. package/dist/locale/tr.js +6 -8
  243. package/dist/locale/tr.min.js +1 -1
  244. package/dist/locale/tr.min.js.map +1 -1
  245. package/dist/locale/tr.min.mjs +1 -1
  246. package/dist/locale/tr.mjs +1 -1
  247. package/dist/locale/ug-cn.js +6 -8
  248. package/dist/locale/ug-cn.min.js +1 -1
  249. package/dist/locale/ug-cn.min.js.map +1 -1
  250. package/dist/locale/ug-cn.min.mjs +1 -1
  251. package/dist/locale/ug-cn.mjs +1 -1
  252. package/dist/locale/uk.js +6 -8
  253. package/dist/locale/uk.min.js +1 -1
  254. package/dist/locale/uk.min.js.map +1 -1
  255. package/dist/locale/uk.min.mjs +1 -1
  256. package/dist/locale/uk.mjs +1 -1
  257. package/dist/locale/uz-uz.js +6 -8
  258. package/dist/locale/uz-uz.min.js +1 -1
  259. package/dist/locale/uz-uz.min.js.map +1 -1
  260. package/dist/locale/uz-uz.min.mjs +1 -1
  261. package/dist/locale/uz-uz.mjs +1 -1
  262. package/dist/locale/vi.js +6 -8
  263. package/dist/locale/vi.min.js +1 -1
  264. package/dist/locale/vi.min.js.map +1 -1
  265. package/dist/locale/vi.min.mjs +1 -1
  266. package/dist/locale/vi.mjs +1 -1
  267. package/dist/locale/zh-cn.js +6 -8
  268. package/dist/locale/zh-cn.min.js +1 -1
  269. package/dist/locale/zh-cn.min.js.map +1 -1
  270. package/dist/locale/zh-cn.min.mjs +1 -1
  271. package/dist/locale/zh-cn.mjs +1 -1
  272. package/dist/locale/zh-tw.js +6 -8
  273. package/dist/locale/zh-tw.min.js +1 -1
  274. package/dist/locale/zh-tw.min.js.map +1 -1
  275. package/dist/locale/zh-tw.min.mjs +1 -1
  276. package/dist/locale/zh-tw.mjs +1 -1
  277. package/es/components/affix/src/affix2.mjs +2 -1
  278. package/es/components/affix/src/affix2.mjs.map +1 -1
  279. package/es/components/autocomplete/index.d.ts +22 -0
  280. package/es/components/autocomplete/src/index.mjs +17 -16
  281. package/es/components/autocomplete/src/index.mjs.map +1 -1
  282. package/es/components/autocomplete/src/index.vue.d.ts +11 -0
  283. package/es/components/backtop/index.d.ts +11 -0
  284. package/es/components/backtop/src/backtop.vue.d.ts +11 -0
  285. package/es/components/backtop/src/backtop2.mjs +18 -9
  286. package/es/components/backtop/src/backtop2.mjs.map +1 -1
  287. package/es/components/breadcrumb/src/breadcrumb-item2.mjs +2 -2
  288. package/es/components/breadcrumb/src/breadcrumb-item2.mjs.map +1 -1
  289. package/es/components/button/src/button2.mjs +11 -7
  290. package/es/components/button/src/button2.mjs.map +1 -1
  291. package/es/components/carousel/src/item.mjs +4 -2
  292. package/es/components/carousel/src/item.mjs.map +1 -1
  293. package/es/components/cascader/src/index.mjs +38 -21
  294. package/es/components/cascader/src/index.mjs.map +1 -1
  295. package/es/components/cascader-panel/src/index.mjs +16 -13
  296. package/es/components/cascader-panel/src/index.mjs.map +1 -1
  297. package/es/components/cascader-panel/src/menu.mjs +25 -22
  298. package/es/components/cascader-panel/src/menu.mjs.map +1 -1
  299. package/es/components/cascader-panel/src/node2.mjs +6 -2
  300. package/es/components/cascader-panel/src/node2.mjs.map +1 -1
  301. package/es/components/checkbox/index.d.ts +33 -0
  302. package/es/components/checkbox/src/checkbox-button.mjs +21 -15
  303. package/es/components/checkbox/src/checkbox-button.mjs.map +1 -1
  304. package/es/components/checkbox/src/checkbox-button.vue.d.ts +11 -0
  305. package/es/components/checkbox/src/checkbox-group.mjs +5 -2
  306. package/es/components/checkbox/src/checkbox-group.mjs.map +1 -1
  307. package/es/components/checkbox/src/checkbox.mjs +36 -28
  308. package/es/components/checkbox/src/checkbox.mjs.map +1 -1
  309. package/es/components/checkbox/src/checkbox.vue.d.ts +11 -0
  310. package/es/components/collapse/src/collapse-item.mjs +3 -3
  311. package/es/components/collapse/src/collapse-item.mjs.map +1 -1
  312. package/es/components/color-picker/src/index.mjs +8 -5
  313. package/es/components/color-picker/src/index.mjs.map +1 -1
  314. package/es/components/date-picker/src/date-picker-com/basic-date-table.mjs +2 -1
  315. package/es/components/date-picker/src/date-picker-com/basic-date-table.mjs.map +1 -1
  316. package/es/components/date-picker/src/date-picker-com/basic-month-table.mjs +2 -1
  317. package/es/components/date-picker/src/date-picker-com/basic-month-table.mjs.map +1 -1
  318. package/es/components/date-picker/src/date-picker-com/panel-date-pick.mjs +1 -1
  319. package/es/components/date-picker/src/date-picker-com/panel-date-pick.mjs.map +1 -1
  320. package/es/components/descriptions/src/index.mjs +7 -2
  321. package/es/components/descriptions/src/index.mjs.map +1 -1
  322. package/es/components/dialog/src/dialog.mjs +1 -3
  323. package/es/components/dialog/src/dialog.mjs.map +1 -1
  324. package/es/components/dropdown/src/dropdown-item.mjs +12 -6
  325. package/es/components/dropdown/src/dropdown-item.mjs.map +1 -1
  326. package/es/components/dropdown/src/dropdown-menu.mjs +2 -1
  327. package/es/components/dropdown/src/dropdown-menu.mjs.map +1 -1
  328. package/es/components/dropdown/src/dropdown2.mjs +9 -5
  329. package/es/components/dropdown/src/dropdown2.mjs.map +1 -1
  330. package/es/components/focus-trap/src/focus-trap.mjs +1 -1
  331. package/es/components/focus-trap/src/focus-trap.mjs.map +1 -1
  332. package/es/components/form/src/form-item.mjs +6 -4
  333. package/es/components/form/src/form-item.mjs.map +1 -1
  334. package/es/components/image/src/image2.mjs +3 -2
  335. package/es/components/image/src/image2.mjs.map +1 -1
  336. package/es/components/image-viewer/src/image-viewer2.mjs +3 -2
  337. package/es/components/image-viewer/src/image-viewer2.mjs.map +1 -1
  338. package/es/components/input/src/input2.mjs +17 -8
  339. package/es/components/input/src/input2.mjs.map +1 -1
  340. package/es/components/input-number/src/input-number2.mjs +12 -6
  341. package/es/components/input-number/src/input-number2.mjs.map +1 -1
  342. package/es/components/message/src/message2.mjs +1 -1
  343. package/es/components/message-box/src/index.mjs +4 -2
  344. package/es/components/message-box/src/index.mjs.map +1 -1
  345. package/es/components/notification/src/notification2.mjs +1 -1
  346. package/es/components/pagination/src/components/jumper.mjs +5 -2
  347. package/es/components/pagination/src/components/jumper.mjs.map +1 -1
  348. package/es/components/pagination/src/components/sizes.mjs +2 -1
  349. package/es/components/pagination/src/components/sizes.mjs.map +1 -1
  350. package/es/components/popconfirm/src/popconfirm2.mjs +6 -3
  351. package/es/components/popconfirm/src/popconfirm2.mjs.map +1 -1
  352. package/es/components/popover/src/index.mjs +4 -2
  353. package/es/components/popover/src/index.mjs.map +1 -1
  354. package/es/components/popper/src/content.mjs +5 -3
  355. package/es/components/popper/src/content.mjs.map +1 -1
  356. package/es/components/popper/src/trigger.mjs +1 -1
  357. package/es/components/popper/src/trigger.mjs.map +1 -1
  358. package/es/components/progress/src/progress2.mjs +2 -1
  359. package/es/components/progress/src/progress2.mjs.map +1 -1
  360. package/es/components/radio/src/radio-button2.mjs +4 -4
  361. package/es/components/radio/src/radio-button2.mjs.map +1 -1
  362. package/es/components/radio/src/radio-group2.mjs +1 -1
  363. package/es/components/radio/src/radio-group2.mjs.map +1 -1
  364. package/es/components/roving-focus-group/src/roving-focus-group-impl.mjs +10 -6
  365. package/es/components/roving-focus-group/src/roving-focus-group-impl.mjs.map +1 -1
  366. package/es/components/scrollbar/src/bar2.mjs +2 -1
  367. package/es/components/scrollbar/src/bar2.mjs.map +1 -1
  368. package/es/components/scrollbar/src/scrollbar2.mjs +2 -2
  369. package/es/components/select/src/option-group.mjs +2 -1
  370. package/es/components/select/src/option-group.mjs.map +1 -1
  371. package/es/components/select/src/select-dropdown.mjs +2 -1
  372. package/es/components/select/src/select-dropdown.mjs.map +1 -1
  373. package/es/components/select/src/select.mjs +2 -1
  374. package/es/components/select/src/select.mjs.map +1 -1
  375. package/es/components/select-v2/src/select-dropdown.mjs +2 -1
  376. package/es/components/select-v2/src/select-dropdown.mjs.map +1 -1
  377. package/es/components/select-v2/src/select.mjs +192 -186
  378. package/es/components/select-v2/src/select.mjs.map +1 -1
  379. package/es/components/slider/src/index.mjs +3 -2
  380. package/es/components/slider/src/index.mjs.map +1 -1
  381. package/es/components/slider/src/marker.mjs +2 -1
  382. package/es/components/slider/src/marker.mjs.map +1 -1
  383. package/es/components/steps/src/item.mjs +2 -1
  384. package/es/components/steps/src/item.mjs.map +1 -1
  385. package/es/components/switch/src/switch2.mjs +4 -2
  386. package/es/components/switch/src/switch2.mjs.map +1 -1
  387. package/es/components/table/src/filter-panel.mjs +7 -3
  388. package/es/components/table/src/filter-panel.mjs.map +1 -1
  389. package/es/components/tabs/src/tab-bar2.mjs +3 -2
  390. package/es/components/tabs/src/tab-bar2.mjs.map +1 -1
  391. package/es/components/time-picker/src/common/picker.mjs +16 -8
  392. package/es/components/time-picker/src/common/picker.mjs.map +1 -1
  393. package/es/components/time-select/src/time-select.mjs +4 -2
  394. package/es/components/time-select/src/time-select.mjs.map +1 -1
  395. package/es/components/tooltip/src/content.mjs +9 -4
  396. package/es/components/tooltip/src/content.mjs.map +1 -1
  397. package/es/components/tooltip/src/tooltip2.mjs +2 -1
  398. package/es/components/tooltip/src/tooltip2.mjs.map +1 -1
  399. package/es/components/transfer/src/index.mjs +2 -1
  400. package/es/components/transfer/src/index.mjs.map +1 -1
  401. package/es/components/tree/src/tree.mjs +2 -1
  402. package/es/components/tree/src/tree.mjs.map +1 -1
  403. package/es/components/tree-v2/src/tree-node.mjs +11 -7
  404. package/es/components/tree-v2/src/tree-node.mjs.map +1 -1
  405. package/es/components/tree-v2/src/tree.mjs +2 -1
  406. package/es/components/tree-v2/src/tree.mjs.map +1 -1
  407. package/es/components/upload/src/index.mjs +3 -2
  408. package/es/components/upload/src/index.mjs.map +1 -1
  409. package/es/components/upload/src/upload-dragger.mjs +2 -1
  410. package/es/components/upload/src/upload-dragger.mjs.map +1 -1
  411. package/es/utils/validators.d.ts +0 -1
  412. package/es/utils/validators.mjs +1 -9
  413. package/es/utils/validators.mjs.map +1 -1
  414. package/es/version.d.ts +1 -1
  415. package/es/version.mjs +1 -1
  416. package/es/version.mjs.map +1 -1
  417. package/lib/components/affix/src/affix2.js +2 -1
  418. package/lib/components/affix/src/affix2.js.map +1 -1
  419. package/lib/components/autocomplete/index.d.ts +22 -0
  420. package/lib/components/autocomplete/src/index.js +19 -18
  421. package/lib/components/autocomplete/src/index.js.map +1 -1
  422. package/lib/components/autocomplete/src/index.vue.d.ts +11 -0
  423. package/lib/components/backtop/index.d.ts +11 -0
  424. package/lib/components/backtop/src/backtop.vue.d.ts +11 -0
  425. package/lib/components/backtop/src/backtop2.js +17 -8
  426. package/lib/components/backtop/src/backtop2.js.map +1 -1
  427. package/lib/components/breadcrumb/src/breadcrumb-item2.js +2 -2
  428. package/lib/components/breadcrumb/src/breadcrumb-item2.js.map +1 -1
  429. package/lib/components/button/src/button2.js +11 -7
  430. package/lib/components/button/src/button2.js.map +1 -1
  431. package/lib/components/carousel/src/item.js +4 -2
  432. package/lib/components/carousel/src/item.js.map +1 -1
  433. package/lib/components/cascader/src/index.js +38 -21
  434. package/lib/components/cascader/src/index.js.map +1 -1
  435. package/lib/components/cascader-panel/src/index.js +16 -13
  436. package/lib/components/cascader-panel/src/index.js.map +1 -1
  437. package/lib/components/cascader-panel/src/menu.js +25 -22
  438. package/lib/components/cascader-panel/src/menu.js.map +1 -1
  439. package/lib/components/cascader-panel/src/node2.js +6 -2
  440. package/lib/components/cascader-panel/src/node2.js.map +1 -1
  441. package/lib/components/checkbox/index.d.ts +33 -0
  442. package/lib/components/checkbox/src/checkbox-button.js +21 -15
  443. package/lib/components/checkbox/src/checkbox-button.js.map +1 -1
  444. package/lib/components/checkbox/src/checkbox-button.vue.d.ts +11 -0
  445. package/lib/components/checkbox/src/checkbox-group.js +5 -2
  446. package/lib/components/checkbox/src/checkbox-group.js.map +1 -1
  447. package/lib/components/checkbox/src/checkbox.js +35 -27
  448. package/lib/components/checkbox/src/checkbox.js.map +1 -1
  449. package/lib/components/checkbox/src/checkbox.vue.d.ts +11 -0
  450. package/lib/components/collapse/src/collapse-item.js +3 -3
  451. package/lib/components/collapse/src/collapse-item.js.map +1 -1
  452. package/lib/components/color-picker/src/index.js +8 -5
  453. package/lib/components/color-picker/src/index.js.map +1 -1
  454. package/lib/components/date-picker/src/date-picker-com/basic-date-table.js +2 -1
  455. package/lib/components/date-picker/src/date-picker-com/basic-date-table.js.map +1 -1
  456. package/lib/components/date-picker/src/date-picker-com/basic-month-table.js +2 -1
  457. package/lib/components/date-picker/src/date-picker-com/basic-month-table.js.map +1 -1
  458. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.js +1 -1
  459. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.js.map +1 -1
  460. package/lib/components/descriptions/src/index.js +7 -2
  461. package/lib/components/descriptions/src/index.js.map +1 -1
  462. package/lib/components/dialog/src/dialog.js +1 -3
  463. package/lib/components/dialog/src/dialog.js.map +1 -1
  464. package/lib/components/dropdown/src/dropdown-item.js +12 -6
  465. package/lib/components/dropdown/src/dropdown-item.js.map +1 -1
  466. package/lib/components/dropdown/src/dropdown-menu.js +2 -1
  467. package/lib/components/dropdown/src/dropdown-menu.js.map +1 -1
  468. package/lib/components/dropdown/src/dropdown2.js +9 -5
  469. package/lib/components/dropdown/src/dropdown2.js.map +1 -1
  470. package/lib/components/focus-trap/src/focus-trap.js +1 -1
  471. package/lib/components/focus-trap/src/focus-trap.js.map +1 -1
  472. package/lib/components/form/src/form-item.js +6 -4
  473. package/lib/components/form/src/form-item.js.map +1 -1
  474. package/lib/components/image/src/image2.js +3 -2
  475. package/lib/components/image/src/image2.js.map +1 -1
  476. package/lib/components/image-viewer/src/image-viewer2.js +3 -2
  477. package/lib/components/image-viewer/src/image-viewer2.js.map +1 -1
  478. package/lib/components/input/src/input2.js +17 -8
  479. package/lib/components/input/src/input2.js.map +1 -1
  480. package/lib/components/input-number/src/input-number2.js +12 -6
  481. package/lib/components/input-number/src/input-number2.js.map +1 -1
  482. package/lib/components/message/src/message2.js +1 -1
  483. package/lib/components/message-box/src/index.js +4 -2
  484. package/lib/components/message-box/src/index.js.map +1 -1
  485. package/lib/components/notification/src/notification2.js +1 -1
  486. package/lib/components/pagination/src/components/jumper.js +5 -2
  487. package/lib/components/pagination/src/components/jumper.js.map +1 -1
  488. package/lib/components/pagination/src/components/sizes.js +2 -1
  489. package/lib/components/pagination/src/components/sizes.js.map +1 -1
  490. package/lib/components/popconfirm/src/popconfirm2.js +6 -3
  491. package/lib/components/popconfirm/src/popconfirm2.js.map +1 -1
  492. package/lib/components/popover/src/index.js +4 -2
  493. package/lib/components/popover/src/index.js.map +1 -1
  494. package/lib/components/popper/src/content.js +5 -3
  495. package/lib/components/popper/src/content.js.map +1 -1
  496. package/lib/components/popper/src/trigger.js +1 -1
  497. package/lib/components/popper/src/trigger.js.map +1 -1
  498. package/lib/components/progress/src/progress2.js +2 -1
  499. package/lib/components/progress/src/progress2.js.map +1 -1
  500. package/lib/components/radio/src/radio-button2.js +4 -4
  501. package/lib/components/radio/src/radio-button2.js.map +1 -1
  502. package/lib/components/radio/src/radio-group2.js +1 -1
  503. package/lib/components/radio/src/radio-group2.js.map +1 -1
  504. package/lib/components/roving-focus-group/src/roving-focus-group-impl.js +10 -6
  505. package/lib/components/roving-focus-group/src/roving-focus-group-impl.js.map +1 -1
  506. package/lib/components/scrollbar/src/bar2.js +2 -1
  507. package/lib/components/scrollbar/src/bar2.js.map +1 -1
  508. package/lib/components/scrollbar/src/scrollbar2.js +2 -2
  509. package/lib/components/select/src/option-group.js +2 -1
  510. package/lib/components/select/src/option-group.js.map +1 -1
  511. package/lib/components/select/src/select-dropdown.js +2 -1
  512. package/lib/components/select/src/select-dropdown.js.map +1 -1
  513. package/lib/components/select/src/select.js +2 -1
  514. package/lib/components/select/src/select.js.map +1 -1
  515. package/lib/components/select-v2/src/select-dropdown.js +2 -1
  516. package/lib/components/select-v2/src/select-dropdown.js.map +1 -1
  517. package/lib/components/select-v2/src/select.js +192 -186
  518. package/lib/components/select-v2/src/select.js.map +1 -1
  519. package/lib/components/slider/src/index.js +3 -2
  520. package/lib/components/slider/src/index.js.map +1 -1
  521. package/lib/components/slider/src/marker.js +2 -1
  522. package/lib/components/slider/src/marker.js.map +1 -1
  523. package/lib/components/steps/src/item.js +2 -1
  524. package/lib/components/steps/src/item.js.map +1 -1
  525. package/lib/components/switch/src/switch2.js +4 -2
  526. package/lib/components/switch/src/switch2.js.map +1 -1
  527. package/lib/components/table/src/filter-panel.js +7 -3
  528. package/lib/components/table/src/filter-panel.js.map +1 -1
  529. package/lib/components/tabs/src/tab-bar2.js +3 -2
  530. package/lib/components/tabs/src/tab-bar2.js.map +1 -1
  531. package/lib/components/time-picker/src/common/picker.js +16 -8
  532. package/lib/components/time-picker/src/common/picker.js.map +1 -1
  533. package/lib/components/time-select/src/time-select.js +4 -2
  534. package/lib/components/time-select/src/time-select.js.map +1 -1
  535. package/lib/components/tooltip/src/content.js +9 -4
  536. package/lib/components/tooltip/src/content.js.map +1 -1
  537. package/lib/components/tooltip/src/tooltip2.js +2 -1
  538. package/lib/components/tooltip/src/tooltip2.js.map +1 -1
  539. package/lib/components/transfer/src/index.js +2 -1
  540. package/lib/components/transfer/src/index.js.map +1 -1
  541. package/lib/components/tree/src/tree.js +2 -1
  542. package/lib/components/tree/src/tree.js.map +1 -1
  543. package/lib/components/tree-v2/src/tree-node.js +11 -7
  544. package/lib/components/tree-v2/src/tree-node.js.map +1 -1
  545. package/lib/components/tree-v2/src/tree.js +2 -1
  546. package/lib/components/tree-v2/src/tree.js.map +1 -1
  547. package/lib/components/upload/src/index.js +3 -2
  548. package/lib/components/upload/src/index.js.map +1 -1
  549. package/lib/components/upload/src/upload-dragger.js +2 -1
  550. package/lib/components/upload/src/upload-dragger.js.map +1 -1
  551. package/lib/utils/validators.d.ts +0 -1
  552. package/lib/utils/validators.js +0 -9
  553. package/lib/utils/validators.js.map +1 -1
  554. package/lib/version.d.ts +1 -1
  555. package/lib/version.js +1 -1
  556. package/lib/version.js.map +1 -1
  557. package/package.json +2 -2
  558. package/web-types.json +1 -1
@@ -139,7 +139,10 @@ const _sfc_main = defineComponent({
139
139
  const multiple = computed(() => !!props.props.multiple);
140
140
  const readonly = computed(() => !props.filterable || multiple.value);
141
141
  const searchKeyword = computed(() => multiple.value ? searchInputValue.value : inputValue.value);
142
- const checkedNodes = computed(() => panel.value?.checkedNodes || []);
142
+ const checkedNodes = computed(() => {
143
+ var _a;
144
+ return ((_a = panel.value) == null ? void 0 : _a.checkedNodes) || [];
145
+ });
143
146
  const clearBtnVisible = computed(() => {
144
147
  if (!props.clearable || isDisabled.value || filtering.value || !inputHover.value)
145
148
  return false;
@@ -155,24 +158,27 @@ const _sfc_main = defineComponent({
155
158
  return props.modelValue;
156
159
  },
157
160
  set(val) {
161
+ var _a;
158
162
  emit(UPDATE_MODEL_EVENT, val);
159
163
  emit(CHANGE_EVENT, val);
160
- elFormItem.validate?.("change");
164
+ (_a = elFormItem.validate) == null ? void 0 : _a.call(elFormItem, "change");
161
165
  }
162
166
  });
163
167
  const popperPaneRef = computed(() => {
164
- return tooltipRef.value?.popperRef?.contentRef;
168
+ var _a, _b;
169
+ return (_b = (_a = tooltipRef.value) == null ? void 0 : _a.popperRef) == null ? void 0 : _b.contentRef;
165
170
  });
166
171
  const togglePopperVisible = (visible) => {
172
+ var _a, _b, _c;
167
173
  if (isDisabled.value)
168
174
  return;
169
- visible = visible ?? !popperVisible.value;
175
+ visible = visible != null ? visible : !popperVisible.value;
170
176
  if (visible !== popperVisible.value) {
171
177
  popperVisible.value = visible;
172
- input.value?.input?.setAttribute("aria-expanded", `${visible}`);
178
+ (_b = (_a = input.value) == null ? void 0 : _a.input) == null ? void 0 : _b.setAttribute("aria-expanded", `${visible}`);
173
179
  if (visible) {
174
180
  updatePopperPosition();
175
- nextTick(panel.value?.scrollToExpandingNode);
181
+ nextTick((_c = panel.value) == null ? void 0 : _c.scrollToExpandingNode);
176
182
  } else if (props.filterable) {
177
183
  const { value } = presentText;
178
184
  inputValue.value = value;
@@ -183,7 +189,8 @@ const _sfc_main = defineComponent({
183
189
  };
184
190
  const updatePopperPosition = () => {
185
191
  nextTick(() => {
186
- tooltipRef.value?.updatePopper();
192
+ var _a;
193
+ (_a = tooltipRef.value) == null ? void 0 : _a.updatePopper();
187
194
  });
188
195
  };
189
196
  const hideSuggestionPanel = () => {
@@ -200,9 +207,10 @@ const _sfc_main = defineComponent({
200
207
  };
201
208
  };
202
209
  const deleteTag = (tag) => {
210
+ var _a;
203
211
  const node = tag.node;
204
212
  node.doCheck(false);
205
- panel.value?.calculateCheckedValue();
213
+ (_a = panel.value) == null ? void 0 : _a.calculateCheckedValue();
206
214
  emit("remove-tag", node.valueByOption);
207
215
  };
208
216
  const calculatePresentTags = () => {
@@ -229,8 +237,9 @@ const _sfc_main = defineComponent({
229
237
  presentTags.value = tags;
230
238
  };
231
239
  const calculateSuggestions = () => {
240
+ var _a, _b;
232
241
  const { filterMethod, showAllLevels, separator } = props;
233
- const res = panel.value?.getFlattedNodes(!props.props.checkStrictly)?.filter((node) => {
242
+ const res = (_b = (_a = panel.value) == null ? void 0 : _a.getFlattedNodes(!props.props.checkStrictly)) == null ? void 0 : _b.filter((node) => {
234
243
  if (node.isDisabled)
235
244
  return false;
236
245
  node.calcText(showAllLevels, separator);
@@ -246,11 +255,12 @@ const _sfc_main = defineComponent({
246
255
  updatePopperPosition();
247
256
  };
248
257
  const focusFirstNode = () => {
258
+ var _a;
249
259
  let firstNode;
250
260
  if (filtering.value && suggestionPanel.value) {
251
261
  firstNode = suggestionPanel.value.$el.querySelector(".el-cascader__suggestion-item");
252
262
  } else {
253
- firstNode = panel.value?.$el.querySelector('.el-cascader-node[tabindex="-1"]');
263
+ firstNode = (_a = panel.value) == null ? void 0 : _a.$el.querySelector('.el-cascader-node[tabindex="-1"]');
254
264
  }
255
265
  if (firstNode) {
256
266
  firstNode.focus();
@@ -258,9 +268,10 @@ const _sfc_main = defineComponent({
258
268
  }
259
269
  };
260
270
  const updateStyle = () => {
261
- const inputInner = input.value?.input;
271
+ var _a, _b;
272
+ const inputInner = (_a = input.value) == null ? void 0 : _a.input;
262
273
  const tagWrapperEl = tagWrapper.value;
263
- const suggestionPanelEl = suggestionPanel.value?.$el;
274
+ const suggestionPanelEl = (_b = suggestionPanel.value) == null ? void 0 : _b.$el;
264
275
  if (!isClient || !inputInner)
265
276
  return;
266
277
  if (suggestionPanelEl) {
@@ -275,14 +286,16 @@ const _sfc_main = defineComponent({
275
286
  }
276
287
  };
277
288
  const getCheckedNodes = (leafOnly) => {
278
- return panel.value?.getCheckedNodes(leafOnly);
289
+ var _a;
290
+ return (_a = panel.value) == null ? void 0 : _a.getCheckedNodes(leafOnly);
279
291
  };
280
292
  const handleExpandChange = (value) => {
281
293
  updatePopperPosition();
282
294
  emit("expand-change", value);
283
295
  };
284
296
  const handleComposition = (event) => {
285
- const text = event.target?.value;
297
+ var _a;
298
+ const text = (_a = event.target) == null ? void 0 : _a.value;
286
299
  if (event.type === "compositionend") {
287
300
  isOnComposition.value = false;
288
301
  nextTick(() => handleInput(text));
@@ -310,15 +323,17 @@ const _sfc_main = defineComponent({
310
323
  }
311
324
  };
312
325
  const handleClear = () => {
313
- panel.value?.clearCheckedNodes();
326
+ var _a;
327
+ (_a = panel.value) == null ? void 0 : _a.clearCheckedNodes();
314
328
  togglePopperVisible(false);
315
329
  };
316
330
  const handleSuggestionClick = (node) => {
331
+ var _a, _b;
317
332
  const { checked } = node;
318
333
  if (multiple.value) {
319
- panel.value?.handleCheckChange(node, !checked, false);
334
+ (_a = panel.value) == null ? void 0 : _a.handleCheckChange(node, !checked, false);
320
335
  } else {
321
- !checked && panel.value?.handleCheckChange(node, true, false);
336
+ !checked && ((_b = panel.value) == null ? void 0 : _b.handleCheckChange(node, true, false));
322
337
  togglePopperVisible(false);
323
338
  }
324
339
  };
@@ -369,7 +384,7 @@ const _sfc_main = defineComponent({
369
384
  }, props.debounce);
370
385
  const handleInput = (val, e) => {
371
386
  !popperVisible.value && togglePopperVisible(true);
372
- if (e?.isComposing)
387
+ if (e == null ? void 0 : e.isComposing)
373
388
  return;
374
389
  val ? handleFilter() : hideSuggestionPanel();
375
390
  };
@@ -380,12 +395,14 @@ const _sfc_main = defineComponent({
380
395
  });
381
396
  watch(presentText, (val) => inputValue.value = val, { immediate: true });
382
397
  onMounted(() => {
383
- const inputEl = input.value?.$el;
384
- inputInitialHeight = inputEl?.offsetHeight || INPUT_HEIGHT_MAP[realSize.value] || DEFAULT_INPUT_HEIGHT;
398
+ var _a;
399
+ const inputEl = (_a = input.value) == null ? void 0 : _a.$el;
400
+ inputInitialHeight = (inputEl == null ? void 0 : inputEl.offsetHeight) || INPUT_HEIGHT_MAP[realSize.value] || DEFAULT_INPUT_HEIGHT;
385
401
  addResizeListener(inputEl, updateStyle);
386
402
  });
387
403
  onBeforeUnmount(() => {
388
- removeResizeListener(input.value?.$el, updateStyle);
404
+ var _a;
405
+ removeResizeListener((_a = input.value) == null ? void 0 : _a.$el, updateStyle);
389
406
  });
390
407
  return {
391
408
  popperOptions,
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/cascader/src/index.vue"],"sourcesContent":["<template>\n <el-tooltip\n ref=\"tooltipRef\"\n v-model:visible=\"popperVisible\"\n :append-to-body=\"popperAppendToBody\"\n :popper-class=\"`el-cascader__dropdown ${popperClass}`\"\n :popper-options=\"popperOptions\"\n :fallback-placements=\"[\n 'bottom-start',\n 'bottom',\n 'top-start',\n 'top',\n 'right',\n 'left',\n ]\"\n :stop-popper-mouse-event=\"false\"\n :gpu-acceleration=\"false\"\n placement=\"bottom-start\"\n transition=\"el-zoom-in-top\"\n effect=\"light\"\n pure\n persistent\n @hide=\"hideSuggestionPanel\"\n >\n <template #default>\n <div\n v-clickoutside:[popperPaneRef]=\"() => togglePopperVisible(false)\"\n :class=\"[\n 'el-cascader',\n realSize && `el-cascader--${realSize}`,\n { 'is-disabled': isDisabled },\n $attrs.class,\n ]\"\n :style=\"$attrs.style\"\n @click=\"() => togglePopperVisible(readonly ? undefined : true)\"\n @keydown=\"handleKeyDown\"\n @mouseenter=\"inputHover = true\"\n @mouseleave=\"inputHover = false\"\n >\n <el-input\n ref=\"input\"\n v-model.trim=\"inputValue\"\n :placeholder=\"inputPlaceholder\"\n :readonly=\"readonly\"\n :disabled=\"isDisabled\"\n :validate-event=\"false\"\n :size=\"realSize\"\n :class=\"{ 'is-focus': popperVisible }\"\n @compositionstart=\"handleComposition\"\n @compositionupdate=\"handleComposition\"\n @compositionend=\"handleComposition\"\n @focus=\"(e) => $emit('focus', e)\"\n @blur=\"(e) => $emit('blur', e)\"\n @input=\"handleInput\"\n >\n <template #suffix>\n <el-icon\n v-if=\"clearBtnVisible\"\n key=\"clear\"\n class=\"el-input__icon icon-circle-close\"\n @click.stop=\"handleClear\"\n >\n <circle-close />\n </el-icon>\n <el-icon\n v-else\n key=\"arrow-down\"\n :class=\"[\n 'el-input__icon',\n 'icon-arrow-down',\n popperVisible && 'is-reverse',\n ]\"\n @click.stop=\"togglePopperVisible()\"\n >\n <arrow-down />\n </el-icon>\n </template>\n </el-input>\n\n <div v-if=\"multiple\" ref=\"tagWrapper\" class=\"el-cascader__tags\">\n <el-tag\n v-for=\"tag in presentTags\"\n :key=\"tag.key\"\n type=\"info\"\n :size=\"tagSize\"\n :hit=\"tag.hitState\"\n :closable=\"tag.closable\"\n disable-transitions\n @close=\"deleteTag(tag)\"\n >\n <span>{{ tag.text }}</span>\n </el-tag>\n <input\n v-if=\"filterable && !isDisabled\"\n v-model.trim=\"searchInputValue\"\n type=\"text\"\n class=\"el-cascader__search-input\"\n :placeholder=\"presentText ? '' : inputPlaceholder\"\n @input=\"(e) => handleInput(searchInputValue, e)\"\n @click.stop=\"togglePopperVisible(true)\"\n @keydown.delete=\"handleDelete\"\n @compositionstart=\"handleComposition\"\n @compositionupdate=\"handleComposition\"\n @compositionend=\"handleComposition\"\n />\n </div>\n </div>\n </template>\n\n <template #content>\n <el-cascader-panel\n v-show=\"!filtering\"\n ref=\"panel\"\n v-model=\"checkedValue\"\n :options=\"options\"\n :props=\"props\"\n :border=\"false\"\n :render-label=\"$slots.default\"\n @expand-change=\"handleExpandChange\"\n @close=\"$nextTick(() => togglePopperVisible(false))\"\n />\n <el-scrollbar\n v-if=\"filterable\"\n v-show=\"filtering\"\n ref=\"suggestionPanel\"\n tag=\"ul\"\n class=\"el-cascader__suggestion-panel\"\n view-class=\"el-cascader__suggestion-list\"\n @keydown=\"handleSuggestionKeyDown\"\n >\n <template v-if=\"suggestions.length\">\n <li\n v-for=\"item in suggestions\"\n :key=\"item.uid\"\n :class=\"[\n 'el-cascader__suggestion-item',\n item.checked && 'is-checked',\n ]\"\n :tabindex=\"-1\"\n @click=\"handleSuggestionClick(item)\"\n >\n <span>{{ item.text }}</span>\n <el-icon v-if=\"item.checked\"><check /></el-icon>\n </li>\n </template>\n <slot v-else name=\"empty\">\n <li class=\"el-cascader__empty-text\">\n {{ t('el.cascader.noMatch') }}\n </li>\n </slot>\n </el-scrollbar>\n </template>\n </el-tooltip>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n inject,\n nextTick,\n onMounted,\n onBeforeUnmount,\n ref,\n watch,\n} from 'vue'\nimport { isPromise } from '@vue/shared'\nimport debounce from 'lodash/debounce'\n\nimport { isClient } from '@vueuse/core'\nimport ElCascaderPanel, {\n CommonProps,\n} from '@element-plus/components/cascader-panel'\nimport ElInput from '@element-plus/components/input'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport ElTag from '@element-plus/components/tag'\nimport ElIcon from '@element-plus/components/icon'\n\nimport { elFormKey, elFormItemKey } from '@element-plus/tokens'\nimport { ClickOutside as Clickoutside } from '@element-plus/directives'\nimport { useLocale, useSize } from '@element-plus/hooks'\n\nimport { EVENT_CODE, focusNode, getSibling } from '@element-plus/utils/aria'\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '@element-plus/utils/constants'\nimport {\n addResizeListener,\n removeResizeListener,\n} from '@element-plus/utils/resize-event'\nimport { isValidComponentSize } from '@element-plus/utils/validators'\nimport { isKorean } from '@element-plus/utils/isDef'\nimport { CircleClose, Check, ArrowDown } from '@element-plus/icons-vue'\n\nimport type { Options } from '@element-plus/components/popper'\nimport type { ComputedRef, PropType, Ref } from 'vue'\nimport type { ElFormContext, ElFormItemContext } from '@element-plus/tokens'\nimport type {\n CascaderValue,\n CascaderNode,\n Tag,\n} from '@element-plus/components/cascader-panel'\nimport type { ComponentSize } from '@element-plus/utils/types'\n\ntype cascaderPanelType = InstanceType<typeof ElCascaderPanel>\ntype tooltipType = InstanceType<typeof ElTooltip>\ntype inputType = InstanceType<typeof ElInput>\ntype suggestionPanelType = InstanceType<typeof ElScrollbar>\n\nconst DEFAULT_INPUT_HEIGHT = 40\n\nconst INPUT_HEIGHT_MAP = {\n large: 36,\n default: 32,\n small: 28,\n}\n\nconst popperOptions: Partial<Options> = {\n modifiers: [\n {\n name: 'arrowPosition',\n enabled: true,\n phase: 'main',\n fn: ({ state }) => {\n const { modifiersData, placement } = state as any\n if (['right', 'left', 'bottom', 'top'].includes(placement)) return\n modifiersData.arrow.x = 35\n },\n requires: ['arrow'],\n },\n ],\n}\n\nexport default defineComponent({\n name: 'ElCascader',\n\n components: {\n ElCascaderPanel,\n ElInput,\n ElTooltip,\n ElScrollbar,\n ElTag,\n ElIcon,\n CircleClose,\n Check,\n ArrowDown,\n },\n\n directives: {\n Clickoutside,\n },\n\n props: {\n ...CommonProps,\n size: {\n type: String as PropType<ComponentSize>,\n validator: isValidComponentSize,\n },\n placeholder: {\n type: String,\n },\n disabled: Boolean,\n clearable: Boolean,\n filterable: Boolean,\n filterMethod: {\n type: Function as PropType<\n (node: CascaderNode, keyword: string) => boolean\n >,\n default: (node: CascaderNode, keyword: string) =>\n node.text.includes(keyword),\n },\n separator: {\n type: String,\n default: ' / ',\n },\n showAllLevels: {\n type: Boolean,\n default: true,\n },\n collapseTags: Boolean,\n debounce: {\n type: Number,\n default: 300,\n },\n beforeFilter: {\n type: Function as PropType<(value: string) => boolean | Promise<any>>,\n default: () => true,\n },\n popperClass: {\n type: String,\n default: '',\n },\n popperAppendToBody: {\n type: Boolean,\n default: true,\n },\n },\n\n emits: [\n UPDATE_MODEL_EVENT,\n CHANGE_EVENT,\n 'focus',\n 'blur',\n 'visible-change',\n 'expand-change',\n 'remove-tag',\n ],\n\n setup(props, { emit }) {\n let inputInitialHeight = 0\n let pressDeleteCount = 0\n\n const { t } = useLocale()\n const elForm = inject(elFormKey, {} as ElFormContext)\n const elFormItem = inject(elFormItemKey, {} as ElFormItemContext)\n\n const tooltipRef: Ref<tooltipType | null> = ref(null)\n const input: Ref<inputType | null> = ref(null)\n const tagWrapper = ref(null)\n const panel: Ref<cascaderPanelType | null> = ref(null)\n const suggestionPanel: Ref<suggestionPanelType | null> = ref(null)\n const popperVisible = ref(false)\n const inputHover = ref(false)\n const filtering = ref(false)\n const inputValue = ref('')\n const searchInputValue = ref('')\n const presentTags: Ref<Tag[]> = ref([])\n const suggestions: Ref<CascaderNode[]> = ref([])\n const isOnComposition = ref(false)\n\n const isDisabled = computed(() => props.disabled || elForm.disabled)\n const inputPlaceholder = computed(\n () => props.placeholder || t('el.cascader.placeholder')\n )\n const realSize = useSize()\n const tagSize = computed(() =>\n ['small'].includes(realSize.value) ? 'small' : 'default'\n )\n const multiple = computed(() => !!props.props.multiple)\n const readonly = computed(() => !props.filterable || multiple.value)\n const searchKeyword = computed(() =>\n multiple.value ? searchInputValue.value : inputValue.value\n )\n const checkedNodes: ComputedRef<CascaderNode[]> = computed(\n () => panel.value?.checkedNodes || []\n )\n const clearBtnVisible = computed(() => {\n if (\n !props.clearable ||\n isDisabled.value ||\n filtering.value ||\n !inputHover.value\n )\n return false\n\n return !!checkedNodes.value.length\n })\n const presentText = computed(() => {\n const { showAllLevels, separator } = props\n const nodes = checkedNodes.value\n return nodes.length\n ? multiple.value\n ? ' '\n : nodes[0].calcText(showAllLevels, separator)\n : ''\n })\n\n const checkedValue = computed<CascaderValue>({\n get() {\n return props.modelValue\n },\n set(val) {\n emit(UPDATE_MODEL_EVENT, val)\n emit(CHANGE_EVENT, val)\n elFormItem.validate?.('change')\n },\n })\n\n const popperPaneRef = computed(() => {\n return tooltipRef.value?.popperRef?.contentRef\n })\n\n const togglePopperVisible = (visible?: boolean) => {\n if (isDisabled.value) return\n\n visible = visible ?? !popperVisible.value\n\n if (visible !== popperVisible.value) {\n popperVisible.value = visible\n input.value?.input?.setAttribute('aria-expanded', `${visible}`)\n\n if (visible) {\n updatePopperPosition()\n nextTick(panel.value?.scrollToExpandingNode)\n } else if (props.filterable) {\n const { value } = presentText\n inputValue.value = value\n searchInputValue.value = value\n }\n\n emit('visible-change', visible)\n }\n }\n\n const updatePopperPosition = () => {\n nextTick(() => {\n tooltipRef.value?.updatePopper()\n })\n }\n\n const hideSuggestionPanel = () => {\n filtering.value = false\n }\n\n const genTag = (node: CascaderNode): Tag => {\n const { showAllLevels, separator } = props\n return {\n node,\n key: node.uid,\n text: node.calcText(showAllLevels, separator),\n hitState: false,\n closable: !isDisabled.value && !node.isDisabled,\n }\n }\n\n const deleteTag = (tag: Tag) => {\n const node = tag.node as CascaderNode\n node.doCheck(false)\n panel.value?.calculateCheckedValue()\n emit('remove-tag', node.valueByOption)\n }\n\n const calculatePresentTags = () => {\n if (!multiple.value) return\n\n const nodes = checkedNodes.value\n const tags: Tag[] = []\n\n if (nodes.length) {\n const [first, ...rest] = nodes\n const restCount = rest.length\n\n tags.push(genTag(first))\n\n if (restCount) {\n if (props.collapseTags) {\n tags.push({\n key: -1,\n text: `+ ${restCount}`,\n closable: false,\n })\n } else {\n rest.forEach((node) => tags.push(genTag(node)))\n }\n }\n }\n\n presentTags.value = tags\n }\n\n const calculateSuggestions = () => {\n const { filterMethod, showAllLevels, separator } = props\n const res = panel.value\n ?.getFlattedNodes(!props.props.checkStrictly)\n ?.filter((node) => {\n if (node.isDisabled) return false\n node.calcText(showAllLevels, separator)\n return filterMethod(node, searchKeyword.value)\n })\n\n if (multiple.value) {\n presentTags.value.forEach((tag) => {\n tag.hitState = false\n })\n }\n\n filtering.value = true\n suggestions.value = res!\n updatePopperPosition()\n }\n\n const focusFirstNode = () => {\n let firstNode!: HTMLElement\n\n if (filtering.value && suggestionPanel.value) {\n firstNode = suggestionPanel.value.$el.querySelector(\n '.el-cascader__suggestion-item'\n )\n } else {\n firstNode = panel.value?.$el.querySelector(\n '.el-cascader-node[tabindex=\"-1\"]'\n )\n }\n\n if (firstNode) {\n firstNode.focus()\n !filtering.value && firstNode.click()\n }\n }\n\n const updateStyle = () => {\n const inputInner = input.value?.input\n const tagWrapperEl = tagWrapper.value\n const suggestionPanelEl = suggestionPanel.value?.$el\n\n if (!isClient || !inputInner) return\n\n if (suggestionPanelEl) {\n const suggestionList = suggestionPanelEl.querySelector(\n '.el-cascader__suggestion-list'\n )\n suggestionList.style.minWidth = `${inputInner.offsetWidth}px`\n }\n\n if (tagWrapperEl) {\n const { offsetHeight } = tagWrapperEl\n const height =\n presentTags.value.length > 0\n ? `${Math.max(offsetHeight + 6, inputInitialHeight)}px`\n : `${inputInitialHeight}px`\n inputInner.style.height = height\n updatePopperPosition()\n }\n }\n\n const getCheckedNodes = (leafOnly: boolean) => {\n return panel.value?.getCheckedNodes(leafOnly)\n }\n\n const handleExpandChange = (value: CascaderValue) => {\n updatePopperPosition()\n emit('expand-change', value)\n }\n\n const handleComposition = (event: CompositionEvent) => {\n const text = (event.target as HTMLInputElement)?.value\n if (event.type === 'compositionend') {\n isOnComposition.value = false\n nextTick(() => handleInput(text))\n } else {\n const lastCharacter = text[text.length - 1] || ''\n isOnComposition.value = !isKorean(lastCharacter)\n }\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (isOnComposition.value) return\n\n switch (e.code) {\n case EVENT_CODE.enter:\n togglePopperVisible()\n break\n case EVENT_CODE.down:\n togglePopperVisible(true)\n nextTick(focusFirstNode)\n e.preventDefault()\n break\n case EVENT_CODE.esc:\n case EVENT_CODE.tab:\n togglePopperVisible(false)\n break\n }\n }\n\n const handleClear = () => {\n panel.value?.clearCheckedNodes()\n togglePopperVisible(false)\n }\n\n const handleSuggestionClick = (node: CascaderNode) => {\n const { checked } = node\n\n if (multiple.value) {\n panel.value?.handleCheckChange(node, !checked, false)\n } else {\n !checked && panel.value?.handleCheckChange(node, true, false)\n togglePopperVisible(false)\n }\n }\n\n const handleSuggestionKeyDown = (e: KeyboardEvent) => {\n const target = e.target as HTMLElement\n const { code } = e\n\n switch (code) {\n case EVENT_CODE.up:\n case EVENT_CODE.down: {\n const distance = code === EVENT_CODE.up ? -1 : 1\n focusNode(\n getSibling(\n target,\n distance,\n '.el-cascader__suggestion-item[tabindex=\"-1\"]'\n )\n )\n break\n }\n case EVENT_CODE.enter:\n target.click()\n break\n case EVENT_CODE.esc:\n case EVENT_CODE.tab:\n togglePopperVisible(false)\n break\n }\n }\n\n const handleDelete = () => {\n const tags = presentTags.value\n const lastTag = tags[tags.length - 1]\n pressDeleteCount = searchInputValue.value ? 0 : pressDeleteCount + 1\n\n if (!lastTag || !pressDeleteCount) return\n\n if (lastTag.hitState) {\n deleteTag(lastTag)\n } else {\n lastTag.hitState = true\n }\n }\n\n const handleFilter = debounce(() => {\n const { value } = searchKeyword\n\n if (!value) return\n\n const passed = props.beforeFilter(value)\n\n if (isPromise(passed)) {\n passed.then(calculateSuggestions).catch(() => {\n /* prevent log error */\n })\n } else if (passed !== false) {\n calculateSuggestions()\n } else {\n hideSuggestionPanel()\n }\n }, props.debounce)\n\n const handleInput = (val: string, e?: KeyboardEvent) => {\n !popperVisible.value && togglePopperVisible(true)\n\n if (e?.isComposing) return\n\n val ? handleFilter() : hideSuggestionPanel()\n }\n\n watch(filtering, updatePopperPosition)\n\n watch([checkedNodes, isDisabled], calculatePresentTags)\n\n watch(presentTags, () => {\n nextTick(() => updateStyle())\n })\n\n watch(presentText, (val) => (inputValue.value = val), { immediate: true })\n\n onMounted(() => {\n const inputEl = input.value?.$el\n inputInitialHeight =\n inputEl?.offsetHeight ||\n INPUT_HEIGHT_MAP[realSize.value] ||\n DEFAULT_INPUT_HEIGHT\n addResizeListener(inputEl, updateStyle)\n })\n\n onBeforeUnmount(() => {\n removeResizeListener(input.value?.$el, updateStyle)\n })\n\n return {\n popperOptions,\n tooltipRef,\n popperPaneRef,\n input,\n tagWrapper,\n panel,\n suggestionPanel,\n popperVisible,\n inputHover,\n inputPlaceholder,\n filtering,\n presentText,\n checkedValue,\n inputValue,\n searchInputValue,\n presentTags,\n suggestions,\n isDisabled,\n isOnComposition,\n realSize,\n tagSize,\n multiple,\n readonly,\n clearBtnVisible,\n t,\n togglePopperVisible,\n hideSuggestionPanel,\n deleteTag,\n focusFirstNode,\n getCheckedNodes,\n handleExpandChange,\n handleKeyDown,\n handleComposition,\n handleClear,\n handleSuggestionClick,\n handleSuggestionKeyDown,\n handleDelete,\n handleInput,\n }\n },\n})\n</script>\n"],"names":["ElCascaderPanel","Clickoutside","_openBlock","_createBlock","_normalizeStyle","_withCtx","_vModelText","_createVNode","_Fragment","_createElementBlock"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/cascader/src/index.vue"],"sourcesContent":["<template>\n <el-tooltip\n ref=\"tooltipRef\"\n v-model:visible=\"popperVisible\"\n :append-to-body=\"popperAppendToBody\"\n :popper-class=\"`el-cascader__dropdown ${popperClass}`\"\n :popper-options=\"popperOptions\"\n :fallback-placements=\"[\n 'bottom-start',\n 'bottom',\n 'top-start',\n 'top',\n 'right',\n 'left',\n ]\"\n :stop-popper-mouse-event=\"false\"\n :gpu-acceleration=\"false\"\n placement=\"bottom-start\"\n transition=\"el-zoom-in-top\"\n effect=\"light\"\n pure\n persistent\n @hide=\"hideSuggestionPanel\"\n >\n <template #default>\n <div\n v-clickoutside:[popperPaneRef]=\"() => togglePopperVisible(false)\"\n :class=\"[\n 'el-cascader',\n realSize && `el-cascader--${realSize}`,\n { 'is-disabled': isDisabled },\n $attrs.class,\n ]\"\n :style=\"$attrs.style\"\n @click=\"() => togglePopperVisible(readonly ? undefined : true)\"\n @keydown=\"handleKeyDown\"\n @mouseenter=\"inputHover = true\"\n @mouseleave=\"inputHover = false\"\n >\n <el-input\n ref=\"input\"\n v-model.trim=\"inputValue\"\n :placeholder=\"inputPlaceholder\"\n :readonly=\"readonly\"\n :disabled=\"isDisabled\"\n :validate-event=\"false\"\n :size=\"realSize\"\n :class=\"{ 'is-focus': popperVisible }\"\n @compositionstart=\"handleComposition\"\n @compositionupdate=\"handleComposition\"\n @compositionend=\"handleComposition\"\n @focus=\"(e) => $emit('focus', e)\"\n @blur=\"(e) => $emit('blur', e)\"\n @input=\"handleInput\"\n >\n <template #suffix>\n <el-icon\n v-if=\"clearBtnVisible\"\n key=\"clear\"\n class=\"el-input__icon icon-circle-close\"\n @click.stop=\"handleClear\"\n >\n <circle-close />\n </el-icon>\n <el-icon\n v-else\n key=\"arrow-down\"\n :class=\"[\n 'el-input__icon',\n 'icon-arrow-down',\n popperVisible && 'is-reverse',\n ]\"\n @click.stop=\"togglePopperVisible()\"\n >\n <arrow-down />\n </el-icon>\n </template>\n </el-input>\n\n <div v-if=\"multiple\" ref=\"tagWrapper\" class=\"el-cascader__tags\">\n <el-tag\n v-for=\"tag in presentTags\"\n :key=\"tag.key\"\n type=\"info\"\n :size=\"tagSize\"\n :hit=\"tag.hitState\"\n :closable=\"tag.closable\"\n disable-transitions\n @close=\"deleteTag(tag)\"\n >\n <span>{{ tag.text }}</span>\n </el-tag>\n <input\n v-if=\"filterable && !isDisabled\"\n v-model.trim=\"searchInputValue\"\n type=\"text\"\n class=\"el-cascader__search-input\"\n :placeholder=\"presentText ? '' : inputPlaceholder\"\n @input=\"(e) => handleInput(searchInputValue, e)\"\n @click.stop=\"togglePopperVisible(true)\"\n @keydown.delete=\"handleDelete\"\n @compositionstart=\"handleComposition\"\n @compositionupdate=\"handleComposition\"\n @compositionend=\"handleComposition\"\n />\n </div>\n </div>\n </template>\n\n <template #content>\n <el-cascader-panel\n v-show=\"!filtering\"\n ref=\"panel\"\n v-model=\"checkedValue\"\n :options=\"options\"\n :props=\"props\"\n :border=\"false\"\n :render-label=\"$slots.default\"\n @expand-change=\"handleExpandChange\"\n @close=\"$nextTick(() => togglePopperVisible(false))\"\n />\n <el-scrollbar\n v-if=\"filterable\"\n v-show=\"filtering\"\n ref=\"suggestionPanel\"\n tag=\"ul\"\n class=\"el-cascader__suggestion-panel\"\n view-class=\"el-cascader__suggestion-list\"\n @keydown=\"handleSuggestionKeyDown\"\n >\n <template v-if=\"suggestions.length\">\n <li\n v-for=\"item in suggestions\"\n :key=\"item.uid\"\n :class=\"[\n 'el-cascader__suggestion-item',\n item.checked && 'is-checked',\n ]\"\n :tabindex=\"-1\"\n @click=\"handleSuggestionClick(item)\"\n >\n <span>{{ item.text }}</span>\n <el-icon v-if=\"item.checked\"><check /></el-icon>\n </li>\n </template>\n <slot v-else name=\"empty\">\n <li class=\"el-cascader__empty-text\">\n {{ t('el.cascader.noMatch') }}\n </li>\n </slot>\n </el-scrollbar>\n </template>\n </el-tooltip>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n inject,\n nextTick,\n onMounted,\n onBeforeUnmount,\n ref,\n watch,\n} from 'vue'\nimport { isPromise } from '@vue/shared'\nimport debounce from 'lodash/debounce'\n\nimport { isClient } from '@vueuse/core'\nimport ElCascaderPanel, {\n CommonProps,\n} from '@element-plus/components/cascader-panel'\nimport ElInput from '@element-plus/components/input'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport ElTag from '@element-plus/components/tag'\nimport ElIcon from '@element-plus/components/icon'\n\nimport { elFormKey, elFormItemKey } from '@element-plus/tokens'\nimport { ClickOutside as Clickoutside } from '@element-plus/directives'\nimport { useLocale, useSize } from '@element-plus/hooks'\n\nimport { EVENT_CODE, focusNode, getSibling } from '@element-plus/utils/aria'\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '@element-plus/utils/constants'\nimport {\n addResizeListener,\n removeResizeListener,\n} from '@element-plus/utils/resize-event'\nimport { isValidComponentSize } from '@element-plus/utils/validators'\nimport { isKorean } from '@element-plus/utils/isDef'\nimport { CircleClose, Check, ArrowDown } from '@element-plus/icons-vue'\n\nimport type { Options } from '@element-plus/components/popper'\nimport type { ComputedRef, PropType, Ref } from 'vue'\nimport type { ElFormContext, ElFormItemContext } from '@element-plus/tokens'\nimport type {\n CascaderValue,\n CascaderNode,\n Tag,\n} from '@element-plus/components/cascader-panel'\nimport type { ComponentSize } from '@element-plus/utils/types'\n\ntype cascaderPanelType = InstanceType<typeof ElCascaderPanel>\ntype tooltipType = InstanceType<typeof ElTooltip>\ntype inputType = InstanceType<typeof ElInput>\ntype suggestionPanelType = InstanceType<typeof ElScrollbar>\n\nconst DEFAULT_INPUT_HEIGHT = 40\n\nconst INPUT_HEIGHT_MAP = {\n large: 36,\n default: 32,\n small: 28,\n}\n\nconst popperOptions: Partial<Options> = {\n modifiers: [\n {\n name: 'arrowPosition',\n enabled: true,\n phase: 'main',\n fn: ({ state }) => {\n const { modifiersData, placement } = state as any\n if (['right', 'left', 'bottom', 'top'].includes(placement)) return\n modifiersData.arrow.x = 35\n },\n requires: ['arrow'],\n },\n ],\n}\n\nexport default defineComponent({\n name: 'ElCascader',\n\n components: {\n ElCascaderPanel,\n ElInput,\n ElTooltip,\n ElScrollbar,\n ElTag,\n ElIcon,\n CircleClose,\n Check,\n ArrowDown,\n },\n\n directives: {\n Clickoutside,\n },\n\n props: {\n ...CommonProps,\n size: {\n type: String as PropType<ComponentSize>,\n validator: isValidComponentSize,\n },\n placeholder: {\n type: String,\n },\n disabled: Boolean,\n clearable: Boolean,\n filterable: Boolean,\n filterMethod: {\n type: Function as PropType<\n (node: CascaderNode, keyword: string) => boolean\n >,\n default: (node: CascaderNode, keyword: string) =>\n node.text.includes(keyword),\n },\n separator: {\n type: String,\n default: ' / ',\n },\n showAllLevels: {\n type: Boolean,\n default: true,\n },\n collapseTags: Boolean,\n debounce: {\n type: Number,\n default: 300,\n },\n beforeFilter: {\n type: Function as PropType<(value: string) => boolean | Promise<any>>,\n default: () => true,\n },\n popperClass: {\n type: String,\n default: '',\n },\n popperAppendToBody: {\n type: Boolean,\n default: true,\n },\n },\n\n emits: [\n UPDATE_MODEL_EVENT,\n CHANGE_EVENT,\n 'focus',\n 'blur',\n 'visible-change',\n 'expand-change',\n 'remove-tag',\n ],\n\n setup(props, { emit }) {\n let inputInitialHeight = 0\n let pressDeleteCount = 0\n\n const { t } = useLocale()\n const elForm = inject(elFormKey, {} as ElFormContext)\n const elFormItem = inject(elFormItemKey, {} as ElFormItemContext)\n\n const tooltipRef: Ref<tooltipType | null> = ref(null)\n const input: Ref<inputType | null> = ref(null)\n const tagWrapper = ref(null)\n const panel: Ref<cascaderPanelType | null> = ref(null)\n const suggestionPanel: Ref<suggestionPanelType | null> = ref(null)\n const popperVisible = ref(false)\n const inputHover = ref(false)\n const filtering = ref(false)\n const inputValue = ref('')\n const searchInputValue = ref('')\n const presentTags: Ref<Tag[]> = ref([])\n const suggestions: Ref<CascaderNode[]> = ref([])\n const isOnComposition = ref(false)\n\n const isDisabled = computed(() => props.disabled || elForm.disabled)\n const inputPlaceholder = computed(\n () => props.placeholder || t('el.cascader.placeholder')\n )\n const realSize = useSize()\n const tagSize = computed(() =>\n ['small'].includes(realSize.value) ? 'small' : 'default'\n )\n const multiple = computed(() => !!props.props.multiple)\n const readonly = computed(() => !props.filterable || multiple.value)\n const searchKeyword = computed(() =>\n multiple.value ? searchInputValue.value : inputValue.value\n )\n const checkedNodes: ComputedRef<CascaderNode[]> = computed(\n () => panel.value?.checkedNodes || []\n )\n const clearBtnVisible = computed(() => {\n if (\n !props.clearable ||\n isDisabled.value ||\n filtering.value ||\n !inputHover.value\n )\n return false\n\n return !!checkedNodes.value.length\n })\n const presentText = computed(() => {\n const { showAllLevels, separator } = props\n const nodes = checkedNodes.value\n return nodes.length\n ? multiple.value\n ? ' '\n : nodes[0].calcText(showAllLevels, separator)\n : ''\n })\n\n const checkedValue = computed<CascaderValue>({\n get() {\n return props.modelValue\n },\n set(val) {\n emit(UPDATE_MODEL_EVENT, val)\n emit(CHANGE_EVENT, val)\n elFormItem.validate?.('change')\n },\n })\n\n const popperPaneRef = computed(() => {\n return tooltipRef.value?.popperRef?.contentRef\n })\n\n const togglePopperVisible = (visible?: boolean) => {\n if (isDisabled.value) return\n\n visible = visible ?? !popperVisible.value\n\n if (visible !== popperVisible.value) {\n popperVisible.value = visible\n input.value?.input?.setAttribute('aria-expanded', `${visible}`)\n\n if (visible) {\n updatePopperPosition()\n nextTick(panel.value?.scrollToExpandingNode)\n } else if (props.filterable) {\n const { value } = presentText\n inputValue.value = value\n searchInputValue.value = value\n }\n\n emit('visible-change', visible)\n }\n }\n\n const updatePopperPosition = () => {\n nextTick(() => {\n tooltipRef.value?.updatePopper()\n })\n }\n\n const hideSuggestionPanel = () => {\n filtering.value = false\n }\n\n const genTag = (node: CascaderNode): Tag => {\n const { showAllLevels, separator } = props\n return {\n node,\n key: node.uid,\n text: node.calcText(showAllLevels, separator),\n hitState: false,\n closable: !isDisabled.value && !node.isDisabled,\n }\n }\n\n const deleteTag = (tag: Tag) => {\n const node = tag.node as CascaderNode\n node.doCheck(false)\n panel.value?.calculateCheckedValue()\n emit('remove-tag', node.valueByOption)\n }\n\n const calculatePresentTags = () => {\n if (!multiple.value) return\n\n const nodes = checkedNodes.value\n const tags: Tag[] = []\n\n if (nodes.length) {\n const [first, ...rest] = nodes\n const restCount = rest.length\n\n tags.push(genTag(first))\n\n if (restCount) {\n if (props.collapseTags) {\n tags.push({\n key: -1,\n text: `+ ${restCount}`,\n closable: false,\n })\n } else {\n rest.forEach((node) => tags.push(genTag(node)))\n }\n }\n }\n\n presentTags.value = tags\n }\n\n const calculateSuggestions = () => {\n const { filterMethod, showAllLevels, separator } = props\n const res = panel.value\n ?.getFlattedNodes(!props.props.checkStrictly)\n ?.filter((node) => {\n if (node.isDisabled) return false\n node.calcText(showAllLevels, separator)\n return filterMethod(node, searchKeyword.value)\n })\n\n if (multiple.value) {\n presentTags.value.forEach((tag) => {\n tag.hitState = false\n })\n }\n\n filtering.value = true\n suggestions.value = res!\n updatePopperPosition()\n }\n\n const focusFirstNode = () => {\n let firstNode!: HTMLElement\n\n if (filtering.value && suggestionPanel.value) {\n firstNode = suggestionPanel.value.$el.querySelector(\n '.el-cascader__suggestion-item'\n )\n } else {\n firstNode = panel.value?.$el.querySelector(\n '.el-cascader-node[tabindex=\"-1\"]'\n )\n }\n\n if (firstNode) {\n firstNode.focus()\n !filtering.value && firstNode.click()\n }\n }\n\n const updateStyle = () => {\n const inputInner = input.value?.input\n const tagWrapperEl = tagWrapper.value\n const suggestionPanelEl = suggestionPanel.value?.$el\n\n if (!isClient || !inputInner) return\n\n if (suggestionPanelEl) {\n const suggestionList = suggestionPanelEl.querySelector(\n '.el-cascader__suggestion-list'\n )\n suggestionList.style.minWidth = `${inputInner.offsetWidth}px`\n }\n\n if (tagWrapperEl) {\n const { offsetHeight } = tagWrapperEl\n const height =\n presentTags.value.length > 0\n ? `${Math.max(offsetHeight + 6, inputInitialHeight)}px`\n : `${inputInitialHeight}px`\n inputInner.style.height = height\n updatePopperPosition()\n }\n }\n\n const getCheckedNodes = (leafOnly: boolean) => {\n return panel.value?.getCheckedNodes(leafOnly)\n }\n\n const handleExpandChange = (value: CascaderValue) => {\n updatePopperPosition()\n emit('expand-change', value)\n }\n\n const handleComposition = (event: CompositionEvent) => {\n const text = (event.target as HTMLInputElement)?.value\n if (event.type === 'compositionend') {\n isOnComposition.value = false\n nextTick(() => handleInput(text))\n } else {\n const lastCharacter = text[text.length - 1] || ''\n isOnComposition.value = !isKorean(lastCharacter)\n }\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (isOnComposition.value) return\n\n switch (e.code) {\n case EVENT_CODE.enter:\n togglePopperVisible()\n break\n case EVENT_CODE.down:\n togglePopperVisible(true)\n nextTick(focusFirstNode)\n e.preventDefault()\n break\n case EVENT_CODE.esc:\n case EVENT_CODE.tab:\n togglePopperVisible(false)\n break\n }\n }\n\n const handleClear = () => {\n panel.value?.clearCheckedNodes()\n togglePopperVisible(false)\n }\n\n const handleSuggestionClick = (node: CascaderNode) => {\n const { checked } = node\n\n if (multiple.value) {\n panel.value?.handleCheckChange(node, !checked, false)\n } else {\n !checked && panel.value?.handleCheckChange(node, true, false)\n togglePopperVisible(false)\n }\n }\n\n const handleSuggestionKeyDown = (e: KeyboardEvent) => {\n const target = e.target as HTMLElement\n const { code } = e\n\n switch (code) {\n case EVENT_CODE.up:\n case EVENT_CODE.down: {\n const distance = code === EVENT_CODE.up ? -1 : 1\n focusNode(\n getSibling(\n target,\n distance,\n '.el-cascader__suggestion-item[tabindex=\"-1\"]'\n )\n )\n break\n }\n case EVENT_CODE.enter:\n target.click()\n break\n case EVENT_CODE.esc:\n case EVENT_CODE.tab:\n togglePopperVisible(false)\n break\n }\n }\n\n const handleDelete = () => {\n const tags = presentTags.value\n const lastTag = tags[tags.length - 1]\n pressDeleteCount = searchInputValue.value ? 0 : pressDeleteCount + 1\n\n if (!lastTag || !pressDeleteCount) return\n\n if (lastTag.hitState) {\n deleteTag(lastTag)\n } else {\n lastTag.hitState = true\n }\n }\n\n const handleFilter = debounce(() => {\n const { value } = searchKeyword\n\n if (!value) return\n\n const passed = props.beforeFilter(value)\n\n if (isPromise(passed)) {\n passed.then(calculateSuggestions).catch(() => {\n /* prevent log error */\n })\n } else if (passed !== false) {\n calculateSuggestions()\n } else {\n hideSuggestionPanel()\n }\n }, props.debounce)\n\n const handleInput = (val: string, e?: KeyboardEvent) => {\n !popperVisible.value && togglePopperVisible(true)\n\n if (e?.isComposing) return\n\n val ? handleFilter() : hideSuggestionPanel()\n }\n\n watch(filtering, updatePopperPosition)\n\n watch([checkedNodes, isDisabled], calculatePresentTags)\n\n watch(presentTags, () => {\n nextTick(() => updateStyle())\n })\n\n watch(presentText, (val) => (inputValue.value = val), { immediate: true })\n\n onMounted(() => {\n const inputEl = input.value?.$el\n inputInitialHeight =\n inputEl?.offsetHeight ||\n INPUT_HEIGHT_MAP[realSize.value] ||\n DEFAULT_INPUT_HEIGHT\n addResizeListener(inputEl, updateStyle)\n })\n\n onBeforeUnmount(() => {\n removeResizeListener(input.value?.$el, updateStyle)\n })\n\n return {\n popperOptions,\n tooltipRef,\n popperPaneRef,\n input,\n tagWrapper,\n panel,\n suggestionPanel,\n popperVisible,\n inputHover,\n inputPlaceholder,\n filtering,\n presentText,\n checkedValue,\n inputValue,\n searchInputValue,\n presentTags,\n suggestions,\n isDisabled,\n isOnComposition,\n realSize,\n tagSize,\n multiple,\n readonly,\n clearBtnVisible,\n t,\n togglePopperVisible,\n hideSuggestionPanel,\n deleteTag,\n focusFirstNode,\n getCheckedNodes,\n handleExpandChange,\n handleKeyDown,\n handleComposition,\n handleClear,\n handleSuggestionClick,\n handleSuggestionKeyDown,\n handleDelete,\n handleInput,\n }\n },\n})\n</script>\n"],"names":["ElCascaderPanel","Clickoutside","_withCtx"],"mappings":"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"}
@@ -66,7 +66,7 @@ const _sfc_main = defineComponent({
66
66
  const resolve = (dataList) => {
67
67
  const _node = node;
68
68
  const parent = _node.root ? null : _node;
69
- dataList && store?.appendNodes(dataList, parent);
69
+ dataList && (store == null ? void 0 : store.appendNodes(dataList, parent));
70
70
  _node.loading = false;
71
71
  _node.loaded = true;
72
72
  _node.childrenData = _node.childrenData || [];
@@ -75,6 +75,7 @@ const _sfc_main = defineComponent({
75
75
  cfg.lazyLoad(node, resolve);
76
76
  };
77
77
  const expandNode = (node, silent) => {
78
+ var _a;
78
79
  const { level } = node;
79
80
  const newMenus = menus.value.slice(0, level);
80
81
  let newExpandingNode;
@@ -84,17 +85,17 @@ const _sfc_main = defineComponent({
84
85
  newExpandingNode = node;
85
86
  newMenus.push(node.children);
86
87
  }
87
- if (expandingNode.value?.uid !== newExpandingNode?.uid) {
88
+ if (((_a = expandingNode.value) == null ? void 0 : _a.uid) !== (newExpandingNode == null ? void 0 : newExpandingNode.uid)) {
88
89
  expandingNode.value = node;
89
90
  menus.value = newMenus;
90
- !silent && emit("expand-change", node?.pathValues || []);
91
+ !silent && emit("expand-change", (node == null ? void 0 : node.pathValues) || []);
91
92
  }
92
93
  };
93
94
  const handleCheckChange = (node, checked, emitClose = true) => {
94
95
  const { checkStrictly, multiple } = config.value;
95
96
  const oldNode = checkedNodes.value[0];
96
97
  manualChecked = true;
97
- !multiple && oldNode?.doCheck(false);
98
+ !multiple && (oldNode == null ? void 0 : oldNode.doCheck(false));
98
99
  node.doCheck(checked);
99
100
  calculateCheckedValue();
100
101
  emitClose && !multiple && !checkStrictly && emit("close");
@@ -108,23 +109,25 @@ const _sfc_main = defineComponent({
108
109
  node && expandNode(node);
109
110
  };
110
111
  const getFlattedNodes = (leafOnly) => {
111
- return store?.getFlattedNodes(leafOnly);
112
+ return store == null ? void 0 : store.getFlattedNodes(leafOnly);
112
113
  };
113
114
  const getCheckedNodes = (leafOnly) => {
114
- return getFlattedNodes(leafOnly)?.filter((node) => node.checked !== false);
115
+ var _a;
116
+ return (_a = getFlattedNodes(leafOnly)) == null ? void 0 : _a.filter((node) => node.checked !== false);
115
117
  };
116
118
  const clearCheckedNodes = () => {
117
119
  checkedNodes.value.forEach((node) => node.doCheck(false));
118
120
  calculateCheckedValue();
119
121
  };
120
122
  const calculateCheckedValue = () => {
123
+ var _a;
121
124
  const { checkStrictly, multiple } = config.value;
122
125
  const oldNodes = checkedNodes.value;
123
126
  const newNodes = getCheckedNodes(!checkStrictly);
124
127
  const nodes = sortByOriginalOrder(oldNodes, newNodes);
125
128
  const values = nodes.map((node) => node.valueByOption);
126
129
  checkedNodes.value = nodes;
127
- checkedValue.value = multiple ? values : values[0] ?? null;
130
+ checkedValue.value = multiple ? values : (_a = values[0]) != null ? _a : null;
128
131
  };
129
132
  const syncCheckedValue = (loaded = false, forced = false) => {
130
133
  const { modelValue } = props;
@@ -134,7 +137,7 @@ const _sfc_main = defineComponent({
134
137
  return;
135
138
  if (lazy && !loaded) {
136
139
  const values = deduplicate(arrayFlat(coerceTruthyValueToArray(modelValue)));
137
- const nodes = values.map((val) => store?.getNodeByValue(val)).filter((node) => !!node && !node.loaded && !node.loading);
140
+ const nodes = values.map((val) => store == null ? void 0 : store.getNodeByValue(val)).filter((node) => !!node && !node.loaded && !node.loading);
138
141
  if (nodes.length) {
139
142
  nodes.forEach((node) => {
140
143
  lazyLoad(node, () => syncCheckedValue(false, forced));
@@ -144,7 +147,7 @@ const _sfc_main = defineComponent({
144
147
  }
145
148
  } else {
146
149
  const values = multiple ? coerceTruthyValueToArray(modelValue) : [modelValue];
147
- const nodes = deduplicate(values.map((val) => store?.getNodeByValue(val, leafOnly)));
150
+ const nodes = deduplicate(values.map((val) => store == null ? void 0 : store.getNodeByValue(val, leafOnly)));
148
151
  syncMenuState(nodes, false);
149
152
  checkedValue.value = modelValue;
150
153
  }
@@ -153,7 +156,7 @@ const _sfc_main = defineComponent({
153
156
  const { checkStrictly } = config.value;
154
157
  const oldNodes = checkedNodes.value;
155
158
  const newNodes = newCheckedNodes.filter((node) => !!node && (checkStrictly || node.isLeaf));
156
- const oldExpandingNode = store?.getSameNode(expandingNode.value);
159
+ const oldExpandingNode = store == null ? void 0 : store.getSameNode(expandingNode.value);
157
160
  const newExpandingNode = reserveExpandingState && oldExpandingNode || newNodes[0];
158
161
  if (newExpandingNode) {
159
162
  newExpandingNode.pathNodes.forEach((node) => expandNode(node, true));
@@ -169,7 +172,7 @@ const _sfc_main = defineComponent({
169
172
  if (!isClient)
170
173
  return;
171
174
  menuList.value.forEach((menu) => {
172
- const menuElement = menu?.$el;
175
+ const menuElement = menu == null ? void 0 : menu.$el;
173
176
  if (menuElement) {
174
177
  const container = menuElement.querySelector(".el-scrollbar__wrap");
175
178
  const activeNode = menuElement.querySelector(".el-cascader-node.is-active") || menuElement.querySelector(".el-cascader-node.in-active-path");
@@ -191,14 +194,14 @@ const _sfc_main = defineComponent({
191
194
  case EVENT_CODE.left: {
192
195
  e.preventDefault();
193
196
  const preMenu = menuList.value[getMenuIndex(target) - 1];
194
- const expandedNode = preMenu?.$el.querySelector('.el-cascader-node[aria-expanded="true"]');
197
+ const expandedNode = preMenu == null ? void 0 : preMenu.$el.querySelector('.el-cascader-node[aria-expanded="true"]');
195
198
  focusNode(expandedNode);
196
199
  break;
197
200
  }
198
201
  case EVENT_CODE.right: {
199
202
  e.preventDefault();
200
203
  const nextMenu = menuList.value[getMenuIndex(target) + 1];
201
- const firstNode = nextMenu?.$el.querySelector('.el-cascader-node[tabindex="-1"]');
204
+ const firstNode = nextMenu == null ? void 0 : nextMenu.$el.querySelector('.el-cascader-node[tabindex="-1"]');
202
205
  focusNode(firstNode);
203
206
  break;
204
207
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/cascader-panel/src/index.vue"],"sourcesContent":["<template>\n <div\n :class=\"['el-cascader-panel', border && 'is-bordered']\"\n @keydown=\"handleKeyDown\"\n >\n <el-cascader-menu\n v-for=\"(menu, index) in menus\"\n :key=\"index\"\n :ref=\"(item) => (menuList[index] = item)\"\n :index=\"index\"\n :nodes=\"menu\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n nextTick,\n onBeforeUpdate,\n onMounted,\n provide,\n reactive,\n ref,\n watch,\n} from 'vue'\nimport isEqual from 'lodash/isEqual'\nimport { isClient } from '@vueuse/core'\nimport { EVENT_CODE, focusNode, getSibling } from '@element-plus/utils/aria'\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '@element-plus/utils/constants'\nimport scrollIntoView from '@element-plus/utils/scroll-into-view'\nimport {\n arrayFlat,\n coerceTruthyValueToArray,\n deduplicate,\n isEmpty,\n} from '@element-plus/utils/util'\n\nimport ElCascaderMenu from './menu.vue'\nimport Store from './store'\nimport Node, { ExpandTrigger } from './node'\nimport { CommonProps, useCascaderConfig } from './config'\nimport { checkNode, getMenuIndex, sortByOriginalOrder } from './utils'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type { PropType } from 'vue'\nimport type { Nullable } from '@element-plus/utils/types'\nimport type {\n CascaderValue,\n CascaderNodeValue,\n CascaderOption,\n RenderLabel,\n default as CascaderNode,\n} from './node'\n\nimport type { ElCascaderPanelContext } from './types'\n\nexport default defineComponent({\n name: 'ElCascaderPanel',\n\n components: {\n ElCascaderMenu,\n },\n\n props: {\n ...CommonProps,\n border: {\n type: Boolean,\n default: true,\n },\n renderLabel: Function as PropType<RenderLabel>,\n },\n\n emits: [UPDATE_MODEL_EVENT, CHANGE_EVENT, 'close', 'expand-change'],\n\n setup(props, { emit, slots }) {\n // for interrupt sync check status in lazy mode\n let manualChecked = false\n\n const config = useCascaderConfig(props)\n\n let store: Nullable<Store> = null\n const initialLoaded = ref(true)\n const menuList = ref<any[]>([])\n const checkedValue = ref<Nullable<CascaderValue>>(null)\n const menus = ref<CascaderNode[][]>([])\n const expandingNode = ref<Nullable<CascaderNode>>(null)\n const checkedNodes = ref<CascaderNode[]>([])\n\n const isHoverMenu = computed(\n () => config.value.expandTrigger === ExpandTrigger.HOVER\n )\n const renderLabelFn = computed(() => props.renderLabel || slots.default)\n\n const initStore = () => {\n const { options } = props\n const cfg = config.value\n\n manualChecked = false\n store = new Store(options, cfg)\n menus.value = [store.getNodes()]\n\n if (cfg.lazy && isEmpty(props.options)) {\n initialLoaded.value = false\n lazyLoad(undefined, (list) => {\n if (list) {\n store = new Store(list, cfg)\n menus.value = [store.getNodes()]\n }\n initialLoaded.value = true\n syncCheckedValue(false, true)\n })\n } else {\n syncCheckedValue(false, true)\n }\n }\n\n const lazyLoad: ElCascaderPanelContext['lazyLoad'] = (node, cb) => {\n const cfg = config.value\n node! = node || new Node({}, cfg, undefined, true)\n node.loading = true\n\n const resolve = (dataList: CascaderOption[]) => {\n const _node = node as Node\n const parent = _node.root ? null : _node\n dataList && store?.appendNodes(dataList, parent as any)\n _node.loading = false\n _node.loaded = true\n _node.childrenData = _node.childrenData || []\n cb && cb(dataList)\n }\n\n cfg.lazyLoad(node, resolve as any)\n }\n\n const expandNode: ElCascaderPanelContext['expandNode'] = (node, silent) => {\n const { level } = node\n const newMenus = menus.value.slice(0, level)\n let newExpandingNode: Nullable<CascaderNode>\n\n if (node.isLeaf) {\n newExpandingNode = node.pathNodes[level - 2]\n } else {\n newExpandingNode = node\n newMenus.push(node.children)\n }\n\n if (expandingNode.value?.uid !== newExpandingNode?.uid) {\n expandingNode.value = node\n menus.value = newMenus\n !silent && emit('expand-change', node?.pathValues || [])\n }\n }\n\n const handleCheckChange: ElCascaderPanelContext['handleCheckChange'] = (\n node,\n checked,\n emitClose = true\n ) => {\n const { checkStrictly, multiple } = config.value\n const oldNode = checkedNodes.value[0]\n manualChecked = true\n\n !multiple && oldNode?.doCheck(false)\n node.doCheck(checked)\n calculateCheckedValue()\n emitClose && !multiple && !checkStrictly && emit('close')\n !emitClose && !multiple && !checkStrictly && expandParentNode(node)\n }\n\n const expandParentNode = (node) => {\n if (!node) return\n node = node.parent\n expandParentNode(node)\n node && expandNode(node)\n }\n\n const getFlattedNodes = (leafOnly: boolean) => {\n return store?.getFlattedNodes(leafOnly)\n }\n\n const getCheckedNodes = (leafOnly: boolean) => {\n return getFlattedNodes(leafOnly)?.filter((node) => node.checked !== false)\n }\n\n const clearCheckedNodes = () => {\n checkedNodes.value.forEach((node) => node.doCheck(false))\n calculateCheckedValue()\n }\n\n const calculateCheckedValue = () => {\n const { checkStrictly, multiple } = config.value\n const oldNodes = checkedNodes.value\n const newNodes = getCheckedNodes(!checkStrictly)!\n // ensure the original order\n const nodes = sortByOriginalOrder(oldNodes, newNodes)\n const values = nodes.map((node) => node.valueByOption)\n checkedNodes.value = nodes\n checkedValue.value = multiple ? values : values[0] ?? null\n }\n\n const syncCheckedValue = (loaded = false, forced = false) => {\n const { modelValue } = props\n const { lazy, multiple, checkStrictly } = config.value\n const leafOnly = !checkStrictly\n\n if (\n !initialLoaded.value ||\n manualChecked ||\n (!forced && isEqual(modelValue, checkedValue.value))\n )\n return\n\n if (lazy && !loaded) {\n const values: CascaderNodeValue[] = deduplicate(\n arrayFlat(coerceTruthyValueToArray(modelValue))\n )\n const nodes = values\n .map((val) => store?.getNodeByValue(val))\n .filter((node) => !!node && !node.loaded && !node.loading) as Node[]\n\n if (nodes.length) {\n nodes.forEach((node) => {\n lazyLoad(node, () => syncCheckedValue(false, forced))\n })\n } else {\n syncCheckedValue(true, forced)\n }\n } else {\n const values = multiple\n ? coerceTruthyValueToArray(modelValue)\n : [modelValue]\n const nodes = deduplicate(\n values.map((val) => store?.getNodeByValue(val, leafOnly))\n ) as Node[]\n syncMenuState(nodes, false)\n checkedValue.value = modelValue!\n }\n }\n\n const syncMenuState = (\n newCheckedNodes: CascaderNode[],\n reserveExpandingState = true\n ) => {\n const { checkStrictly } = config.value\n const oldNodes = checkedNodes.value\n const newNodes = newCheckedNodes.filter(\n (node) => !!node && (checkStrictly || node.isLeaf)\n )\n const oldExpandingNode = store?.getSameNode(expandingNode.value!)\n const newExpandingNode =\n (reserveExpandingState && oldExpandingNode) || newNodes[0]\n\n if (newExpandingNode) {\n newExpandingNode.pathNodes.forEach((node) => expandNode(node, true))\n } else {\n expandingNode.value = null\n }\n\n oldNodes.forEach((node) => node.doCheck(false))\n newNodes.forEach((node) => node.doCheck(true))\n\n checkedNodes.value = newNodes\n nextTick(scrollToExpandingNode)\n }\n\n const scrollToExpandingNode = () => {\n if (!isClient) return\n\n menuList.value.forEach((menu) => {\n const menuElement = menu?.$el\n if (menuElement) {\n const container = menuElement.querySelector('.el-scrollbar__wrap')\n const activeNode =\n menuElement.querySelector('.el-cascader-node.is-active') ||\n menuElement.querySelector('.el-cascader-node.in-active-path')\n scrollIntoView(container, activeNode)\n }\n })\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n const target = e.target as HTMLElement\n const { code } = e\n\n switch (code) {\n case EVENT_CODE.up:\n case EVENT_CODE.down: {\n e.preventDefault()\n const distance = code === EVENT_CODE.up ? -1 : 1\n focusNode(\n getSibling(target, distance, '.el-cascader-node[tabindex=\"-1\"]')\n )\n break\n }\n case EVENT_CODE.left: {\n e.preventDefault()\n const preMenu = menuList.value[getMenuIndex(target) - 1]\n const expandedNode = preMenu?.$el.querySelector(\n '.el-cascader-node[aria-expanded=\"true\"]'\n )\n focusNode(expandedNode)\n break\n }\n case EVENT_CODE.right: {\n e.preventDefault()\n const nextMenu = menuList.value[getMenuIndex(target) + 1]\n const firstNode = nextMenu?.$el.querySelector(\n '.el-cascader-node[tabindex=\"-1\"]'\n )\n focusNode(firstNode)\n break\n }\n case EVENT_CODE.enter:\n checkNode(target)\n break\n case EVENT_CODE.esc:\n case EVENT_CODE.tab:\n emit('close')\n break\n }\n }\n\n provide(\n CASCADER_PANEL_INJECTION_KEY,\n reactive({\n config,\n expandingNode,\n checkedNodes,\n isHoverMenu,\n initialLoaded,\n renderLabelFn,\n lazyLoad,\n expandNode,\n handleCheckChange,\n })\n )\n\n watch([config, () => props.options], initStore, {\n deep: true,\n immediate: true,\n })\n\n watch(\n () => props.modelValue,\n () => {\n manualChecked = false\n syncCheckedValue()\n }\n )\n\n watch(checkedValue, (val) => {\n if (!isEqual(val, props.modelValue)) {\n emit(UPDATE_MODEL_EVENT, val)\n emit(CHANGE_EVENT, val)\n }\n })\n\n onBeforeUpdate(() => (menuList.value = []))\n\n onMounted(() => !isEmpty(props.modelValue) && syncCheckedValue())\n\n return {\n menuList,\n menus,\n checkedNodes,\n handleKeyDown,\n handleCheckChange,\n getFlattedNodes,\n getCheckedNodes,\n clearCheckedNodes,\n calculateCheckedValue,\n scrollToExpandingNode,\n }\n },\n})\n</script>\n"],"names":["_openBlock","_Fragment","_createBlock"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/cascader-panel/src/index.vue"],"sourcesContent":["<template>\n <div\n :class=\"['el-cascader-panel', border && 'is-bordered']\"\n @keydown=\"handleKeyDown\"\n >\n <el-cascader-menu\n v-for=\"(menu, index) in menus\"\n :key=\"index\"\n :ref=\"(item) => (menuList[index] = item)\"\n :index=\"index\"\n :nodes=\"menu\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n nextTick,\n onBeforeUpdate,\n onMounted,\n provide,\n reactive,\n ref,\n watch,\n} from 'vue'\nimport isEqual from 'lodash/isEqual'\nimport { isClient } from '@vueuse/core'\nimport { EVENT_CODE, focusNode, getSibling } from '@element-plus/utils/aria'\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '@element-plus/utils/constants'\nimport scrollIntoView from '@element-plus/utils/scroll-into-view'\nimport {\n arrayFlat,\n coerceTruthyValueToArray,\n deduplicate,\n isEmpty,\n} from '@element-plus/utils/util'\n\nimport ElCascaderMenu from './menu.vue'\nimport Store from './store'\nimport Node, { ExpandTrigger } from './node'\nimport { CommonProps, useCascaderConfig } from './config'\nimport { checkNode, getMenuIndex, sortByOriginalOrder } from './utils'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type { PropType } from 'vue'\nimport type { Nullable } from '@element-plus/utils/types'\nimport type {\n CascaderValue,\n CascaderNodeValue,\n CascaderOption,\n RenderLabel,\n default as CascaderNode,\n} from './node'\n\nimport type { ElCascaderPanelContext } from './types'\n\nexport default defineComponent({\n name: 'ElCascaderPanel',\n\n components: {\n ElCascaderMenu,\n },\n\n props: {\n ...CommonProps,\n border: {\n type: Boolean,\n default: true,\n },\n renderLabel: Function as PropType<RenderLabel>,\n },\n\n emits: [UPDATE_MODEL_EVENT, CHANGE_EVENT, 'close', 'expand-change'],\n\n setup(props, { emit, slots }) {\n // for interrupt sync check status in lazy mode\n let manualChecked = false\n\n const config = useCascaderConfig(props)\n\n let store: Nullable<Store> = null\n const initialLoaded = ref(true)\n const menuList = ref<any[]>([])\n const checkedValue = ref<Nullable<CascaderValue>>(null)\n const menus = ref<CascaderNode[][]>([])\n const expandingNode = ref<Nullable<CascaderNode>>(null)\n const checkedNodes = ref<CascaderNode[]>([])\n\n const isHoverMenu = computed(\n () => config.value.expandTrigger === ExpandTrigger.HOVER\n )\n const renderLabelFn = computed(() => props.renderLabel || slots.default)\n\n const initStore = () => {\n const { options } = props\n const cfg = config.value\n\n manualChecked = false\n store = new Store(options, cfg)\n menus.value = [store.getNodes()]\n\n if (cfg.lazy && isEmpty(props.options)) {\n initialLoaded.value = false\n lazyLoad(undefined, (list) => {\n if (list) {\n store = new Store(list, cfg)\n menus.value = [store.getNodes()]\n }\n initialLoaded.value = true\n syncCheckedValue(false, true)\n })\n } else {\n syncCheckedValue(false, true)\n }\n }\n\n const lazyLoad: ElCascaderPanelContext['lazyLoad'] = (node, cb) => {\n const cfg = config.value\n node! = node || new Node({}, cfg, undefined, true)\n node.loading = true\n\n const resolve = (dataList: CascaderOption[]) => {\n const _node = node as Node\n const parent = _node.root ? null : _node\n dataList && store?.appendNodes(dataList, parent as any)\n _node.loading = false\n _node.loaded = true\n _node.childrenData = _node.childrenData || []\n cb && cb(dataList)\n }\n\n cfg.lazyLoad(node, resolve as any)\n }\n\n const expandNode: ElCascaderPanelContext['expandNode'] = (node, silent) => {\n const { level } = node\n const newMenus = menus.value.slice(0, level)\n let newExpandingNode: Nullable<CascaderNode>\n\n if (node.isLeaf) {\n newExpandingNode = node.pathNodes[level - 2]\n } else {\n newExpandingNode = node\n newMenus.push(node.children)\n }\n\n if (expandingNode.value?.uid !== newExpandingNode?.uid) {\n expandingNode.value = node\n menus.value = newMenus\n !silent && emit('expand-change', node?.pathValues || [])\n }\n }\n\n const handleCheckChange: ElCascaderPanelContext['handleCheckChange'] = (\n node,\n checked,\n emitClose = true\n ) => {\n const { checkStrictly, multiple } = config.value\n const oldNode = checkedNodes.value[0]\n manualChecked = true\n\n !multiple && oldNode?.doCheck(false)\n node.doCheck(checked)\n calculateCheckedValue()\n emitClose && !multiple && !checkStrictly && emit('close')\n !emitClose && !multiple && !checkStrictly && expandParentNode(node)\n }\n\n const expandParentNode = (node) => {\n if (!node) return\n node = node.parent\n expandParentNode(node)\n node && expandNode(node)\n }\n\n const getFlattedNodes = (leafOnly: boolean) => {\n return store?.getFlattedNodes(leafOnly)\n }\n\n const getCheckedNodes = (leafOnly: boolean) => {\n return getFlattedNodes(leafOnly)?.filter((node) => node.checked !== false)\n }\n\n const clearCheckedNodes = () => {\n checkedNodes.value.forEach((node) => node.doCheck(false))\n calculateCheckedValue()\n }\n\n const calculateCheckedValue = () => {\n const { checkStrictly, multiple } = config.value\n const oldNodes = checkedNodes.value\n const newNodes = getCheckedNodes(!checkStrictly)!\n // ensure the original order\n const nodes = sortByOriginalOrder(oldNodes, newNodes)\n const values = nodes.map((node) => node.valueByOption)\n checkedNodes.value = nodes\n checkedValue.value = multiple ? values : values[0] ?? null\n }\n\n const syncCheckedValue = (loaded = false, forced = false) => {\n const { modelValue } = props\n const { lazy, multiple, checkStrictly } = config.value\n const leafOnly = !checkStrictly\n\n if (\n !initialLoaded.value ||\n manualChecked ||\n (!forced && isEqual(modelValue, checkedValue.value))\n )\n return\n\n if (lazy && !loaded) {\n const values: CascaderNodeValue[] = deduplicate(\n arrayFlat(coerceTruthyValueToArray(modelValue))\n )\n const nodes = values\n .map((val) => store?.getNodeByValue(val))\n .filter((node) => !!node && !node.loaded && !node.loading) as Node[]\n\n if (nodes.length) {\n nodes.forEach((node) => {\n lazyLoad(node, () => syncCheckedValue(false, forced))\n })\n } else {\n syncCheckedValue(true, forced)\n }\n } else {\n const values = multiple\n ? coerceTruthyValueToArray(modelValue)\n : [modelValue]\n const nodes = deduplicate(\n values.map((val) => store?.getNodeByValue(val, leafOnly))\n ) as Node[]\n syncMenuState(nodes, false)\n checkedValue.value = modelValue!\n }\n }\n\n const syncMenuState = (\n newCheckedNodes: CascaderNode[],\n reserveExpandingState = true\n ) => {\n const { checkStrictly } = config.value\n const oldNodes = checkedNodes.value\n const newNodes = newCheckedNodes.filter(\n (node) => !!node && (checkStrictly || node.isLeaf)\n )\n const oldExpandingNode = store?.getSameNode(expandingNode.value!)\n const newExpandingNode =\n (reserveExpandingState && oldExpandingNode) || newNodes[0]\n\n if (newExpandingNode) {\n newExpandingNode.pathNodes.forEach((node) => expandNode(node, true))\n } else {\n expandingNode.value = null\n }\n\n oldNodes.forEach((node) => node.doCheck(false))\n newNodes.forEach((node) => node.doCheck(true))\n\n checkedNodes.value = newNodes\n nextTick(scrollToExpandingNode)\n }\n\n const scrollToExpandingNode = () => {\n if (!isClient) return\n\n menuList.value.forEach((menu) => {\n const menuElement = menu?.$el\n if (menuElement) {\n const container = menuElement.querySelector('.el-scrollbar__wrap')\n const activeNode =\n menuElement.querySelector('.el-cascader-node.is-active') ||\n menuElement.querySelector('.el-cascader-node.in-active-path')\n scrollIntoView(container, activeNode)\n }\n })\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n const target = e.target as HTMLElement\n const { code } = e\n\n switch (code) {\n case EVENT_CODE.up:\n case EVENT_CODE.down: {\n e.preventDefault()\n const distance = code === EVENT_CODE.up ? -1 : 1\n focusNode(\n getSibling(target, distance, '.el-cascader-node[tabindex=\"-1\"]')\n )\n break\n }\n case EVENT_CODE.left: {\n e.preventDefault()\n const preMenu = menuList.value[getMenuIndex(target) - 1]\n const expandedNode = preMenu?.$el.querySelector(\n '.el-cascader-node[aria-expanded=\"true\"]'\n )\n focusNode(expandedNode)\n break\n }\n case EVENT_CODE.right: {\n e.preventDefault()\n const nextMenu = menuList.value[getMenuIndex(target) + 1]\n const firstNode = nextMenu?.$el.querySelector(\n '.el-cascader-node[tabindex=\"-1\"]'\n )\n focusNode(firstNode)\n break\n }\n case EVENT_CODE.enter:\n checkNode(target)\n break\n case EVENT_CODE.esc:\n case EVENT_CODE.tab:\n emit('close')\n break\n }\n }\n\n provide(\n CASCADER_PANEL_INJECTION_KEY,\n reactive({\n config,\n expandingNode,\n checkedNodes,\n isHoverMenu,\n initialLoaded,\n renderLabelFn,\n lazyLoad,\n expandNode,\n handleCheckChange,\n })\n )\n\n watch([config, () => props.options], initStore, {\n deep: true,\n immediate: true,\n })\n\n watch(\n () => props.modelValue,\n () => {\n manualChecked = false\n syncCheckedValue()\n }\n )\n\n watch(checkedValue, (val) => {\n if (!isEqual(val, props.modelValue)) {\n emit(UPDATE_MODEL_EVENT, val)\n emit(CHANGE_EVENT, val)\n }\n })\n\n onBeforeUpdate(() => (menuList.value = []))\n\n onMounted(() => !isEmpty(props.modelValue) && syncCheckedValue())\n\n return {\n menuList,\n menus,\n checkedNodes,\n handleKeyDown,\n handleCheckChange,\n getFlattedNodes,\n getCheckedNodes,\n clearCheckedNodes,\n calculateCheckedValue,\n scrollToExpandingNode,\n }\n },\n})\n</script>\n"],"names":["_openBlock"],"mappings":"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"}
@@ -113,28 +113,31 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
113
113
  onMousemove: _ctx.handleMouseMove,
114
114
  onMouseleave: _ctx.clearHoverZone
115
115
  }, {
116
- default: withCtx(() => [
117
- (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.nodes, (node) => {
118
- return openBlock(), createBlock(_component_el_cascader_node, {
119
- key: node.uid,
120
- node,
121
- "menu-id": _ctx.menuId,
122
- onExpand: _ctx.handleExpand
123
- }, null, 8, ["node", "menu-id", "onExpand"]);
124
- }), 128)),
125
- _ctx.isLoading ? (openBlock(), createElementBlock("div", _hoisted_1, [
126
- createVNode(_component_el_icon, {
127
- size: "14",
128
- class: "is-loading"
129
- }, {
130
- default: withCtx(() => [
131
- createVNode(_component_loading)
132
- ]),
133
- _: 1
134
- }),
135
- createTextVNode(" " + toDisplayString(_ctx.t("el.cascader.loading")), 1)
136
- ])) : _ctx.isEmpty ? (openBlock(), createElementBlock("div", _hoisted_2, toDisplayString(_ctx.t("el.cascader.noData")), 1)) : _ctx.panel?.isHoverMenu ? (openBlock(), createElementBlock("svg", _hoisted_3, null, 512)) : createCommentVNode("v-if", true)
137
- ]),
116
+ default: withCtx(() => {
117
+ var _a;
118
+ return [
119
+ (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.nodes, (node) => {
120
+ return openBlock(), createBlock(_component_el_cascader_node, {
121
+ key: node.uid,
122
+ node,
123
+ "menu-id": _ctx.menuId,
124
+ onExpand: _ctx.handleExpand
125
+ }, null, 8, ["node", "menu-id", "onExpand"]);
126
+ }), 128)),
127
+ _ctx.isLoading ? (openBlock(), createElementBlock("div", _hoisted_1, [
128
+ createVNode(_component_el_icon, {
129
+ size: "14",
130
+ class: "is-loading"
131
+ }, {
132
+ default: withCtx(() => [
133
+ createVNode(_component_loading)
134
+ ]),
135
+ _: 1
136
+ }),
137
+ createTextVNode(" " + toDisplayString(_ctx.t("el.cascader.loading")), 1)
138
+ ])) : _ctx.isEmpty ? (openBlock(), createElementBlock("div", _hoisted_2, toDisplayString(_ctx.t("el.cascader.noData")), 1)) : ((_a = _ctx.panel) == null ? void 0 : _a.isHoverMenu) ? (openBlock(), createElementBlock("svg", _hoisted_3, null, 512)) : createCommentVNode("v-if", true)
139
+ ];
140
+ }),
138
141
  _: 1
139
142
  }, 8, ["view-class", "onMousemove", "onMouseleave"]);
140
143
  }
@@ -1 +1 @@
1
- {"version":3,"file":"menu.mjs","sources":["../../../../../../packages/components/cascader-panel/src/menu.vue"],"sourcesContent":["<template>\n <el-scrollbar\n :key=\"menuId\"\n tag=\"ul\"\n role=\"menu\"\n class=\"el-cascader-menu\"\n wrap-class=\"el-cascader-menu__wrap\"\n :view-class=\"['el-cascader-menu__list', isEmpty && 'is-empty']\"\n @mousemove=\"handleMouseMove\"\n @mouseleave=\"clearHoverZone\"\n >\n <el-cascader-node\n v-for=\"node in nodes\"\n :key=\"node.uid\"\n :node=\"node\"\n :menu-id=\"menuId\"\n @expand=\"handleExpand\"\n />\n <div v-if=\"isLoading\" class=\"el-cascader-menu__empty-text\">\n <el-icon size=\"14\" class=\"is-loading\">\n <loading />\n </el-icon>\n {{ t('el.cascader.loading') }}\n </div>\n <div v-else-if=\"isEmpty\" class=\"el-cascader-menu__empty-text\">\n {{ t('el.cascader.noData') }}\n </div>\n <svg\n v-else-if=\"panel?.isHoverMenu\"\n ref=\"hoverZone\"\n class=\"el-cascader-menu__hover-zone\"\n ></svg>\n </el-scrollbar>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, getCurrentInstance, inject, ref } from 'vue'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport { useLocale } from '@element-plus/hooks'\nimport { generateId } from '@element-plus/utils/util'\nimport { Loading } from '@element-plus/icons-vue'\nimport ElIcon from '@element-plus/components/icon'\nimport ElCascaderNode from './node.vue'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type { default as CascaderNode } from './node'\nimport type { PropType } from 'vue'\nimport type { TimeoutHandle, Nullable } from '@element-plus/utils/types'\n\nexport default defineComponent({\n name: 'ElCascaderMenu',\n\n components: {\n Loading,\n ElIcon,\n ElScrollbar,\n ElCascaderNode,\n },\n\n props: {\n nodes: {\n type: Array as PropType<CascaderNode[]>,\n required: true,\n },\n index: {\n type: Number,\n required: true,\n },\n },\n\n setup(props) {\n const instance = getCurrentInstance()!\n const { t } = useLocale()\n const id = generateId()\n let activeNode: Nullable<HTMLElement> = null\n let hoverTimer: Nullable<TimeoutHandle> = null\n\n const panel = inject(CASCADER_PANEL_INJECTION_KEY)!\n\n const hoverZone = ref<null | SVGSVGElement>(null)\n\n const isEmpty = computed(() => !props.nodes.length)\n const isLoading = computed(() => !panel.initialLoaded)\n const menuId = computed(() => `cascader-menu-${id}-${props.index}`)\n\n const handleExpand = (e: MouseEvent) => {\n activeNode = e.target as HTMLElement\n }\n\n const handleMouseMove = (e: MouseEvent) => {\n if (!panel.isHoverMenu || !activeNode || !hoverZone.value) return\n\n if (activeNode.contains(e.target as HTMLElement)) {\n clearHoverTimer()\n\n const el = instance.vnode.el as HTMLElement\n const { left } = el.getBoundingClientRect()\n const { offsetWidth, offsetHeight } = el\n const startX = e.clientX - left\n const top = activeNode.offsetTop\n const bottom = top + activeNode.offsetHeight\n\n hoverZone.value.innerHTML = `\n <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M${startX} ${top} L${offsetWidth} 0 V${top} Z\" />\n <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M${startX} ${bottom} L${offsetWidth} ${offsetHeight} V${bottom} Z\" />\n `\n } else if (!hoverTimer) {\n hoverTimer = window.setTimeout(\n clearHoverZone,\n panel.config.hoverThreshold\n )\n }\n }\n\n const clearHoverTimer = () => {\n if (!hoverTimer) return\n clearTimeout(hoverTimer)\n hoverTimer = null\n }\n\n const clearHoverZone = () => {\n if (!hoverZone.value) return\n hoverZone.value.innerHTML = ''\n clearHoverTimer()\n }\n return {\n panel,\n hoverZone,\n isEmpty,\n isLoading,\n menuId,\n t,\n handleExpand,\n handleMouseMove,\n clearHoverZone,\n }\n },\n})\n</script>\n"],"names":["_openBlock","_createBlock","_Fragment","_createElementBlock","_withCtx"],"mappings":";;;;;;;;;;;AAiDA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EAEN,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAGF,OAAO;AAAA,IACL,OAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA;AAAA,IAEZ,OAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA;AAAA;AAAA,EAId,MAAM,OAAO;AACX,UAAM,WAAW;AACjB,UAAM,EAAE,MAAM;AACd,UAAM,KAAK;AACX,QAAI,aAAoC;AACxC,QAAI,aAAsC;AAE1C,UAAM,QAAQ,OAAO;AAErB,UAAM,YAAY,IAA0B;AAE5C,UAAM,UAAU,SAAS,MAAM,CAAC,MAAM,MAAM;AAC5C,UAAM,YAAY,SAAS,MAAM,CAAC,MAAM;AACxC,UAAM,SAAS,SAAS,MAAM,iBAAiB,MAAM,MAAM;AAE3D,UAAM,eAAe,CAAC,MAAkB;AACtC,mBAAa,EAAE;AAAA;AAGjB,UAAM,kBAAkB,CAAC,MAAkB;AACzC,UAAI,CAAC,MAAM,eAAe,CAAC,cAAc,CAAC,UAAU;AAAO;AAE3D,UAAI,WAAW,SAAS,EAAE,SAAwB;AAChD;AAEA,cAAM,KAAK,SAAS,MAAM;AAC1B,cAAM,EAAE,SAAS,GAAG;AACpB,cAAM,EAAE,aAAa,iBAAiB;AACtC,cAAM,SAAS,EAAE,UAAU;AAC3B,cAAM,MAAM,WAAW;AACvB,cAAM,SAAS,MAAM,WAAW;AAEhC,kBAAU,MAAM,YAAY;AAAA,uEACmC,UAAU,QAAQ,kBAAkB;AAAA,uEACpC,UAAU,WAAW,eAAe,iBAAiB;AAAA;AAAA,iBAE3G,CAAC,YAAY;AACtB,qBAAa,OAAO,WAClB,gBACA,MAAM,OAAO;AAAA;AAAA;AAKnB,UAAM,kBAAkB,MAAM;AAC5B,UAAI,CAAC;AAAY;AACjB,mBAAa;AACb,mBAAa;AAAA;AAGf,UAAM,iBAAiB,MAAM;AAC3B,UAAI,CAAC,UAAU;AAAO;AACtB,gBAAU,MAAM,YAAY;AAC5B;AAAA;AAEF,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;EApHoB,KAAK;AAAA;;;EAMF,KAAK;AAAA;;;EAK5B,KAAI;AAAA,EACJ,KAAK;AAAA;;;;;;;SA5BDA,aAAMC;AAAA,IACZ,KAAI,KAAI;AAAA,IACR,KAAI;AAAA,IACJ,MAAK;AAAA,IACL;AAAA,IACC,cAAU;AAAA,IACV,cAAW,2BAAe;AAAA,IAC1B,aAAU,KAAE;AAAA;;2BAEb;AAAA,2CAMEC;eAJMF,aAAQC;AAAA,UACb,KAAI,KAAM;AAAA,UACV;AAAA,UACA,WAAQ;AAAA;;UAEA;AAAA,qCAGCE;AAAA,oBAFQ;AAAA,UAAC,MAAK;AAAA;;mBACtBC,QAAW;AAAA;;;;;yCAQKD,mBAAW;;;;;;;;;"}
1
+ {"version":3,"file":"menu.mjs","sources":["../../../../../../packages/components/cascader-panel/src/menu.vue"],"sourcesContent":["<template>\n <el-scrollbar\n :key=\"menuId\"\n tag=\"ul\"\n role=\"menu\"\n class=\"el-cascader-menu\"\n wrap-class=\"el-cascader-menu__wrap\"\n :view-class=\"['el-cascader-menu__list', isEmpty && 'is-empty']\"\n @mousemove=\"handleMouseMove\"\n @mouseleave=\"clearHoverZone\"\n >\n <el-cascader-node\n v-for=\"node in nodes\"\n :key=\"node.uid\"\n :node=\"node\"\n :menu-id=\"menuId\"\n @expand=\"handleExpand\"\n />\n <div v-if=\"isLoading\" class=\"el-cascader-menu__empty-text\">\n <el-icon size=\"14\" class=\"is-loading\">\n <loading />\n </el-icon>\n {{ t('el.cascader.loading') }}\n </div>\n <div v-else-if=\"isEmpty\" class=\"el-cascader-menu__empty-text\">\n {{ t('el.cascader.noData') }}\n </div>\n <svg\n v-else-if=\"panel?.isHoverMenu\"\n ref=\"hoverZone\"\n class=\"el-cascader-menu__hover-zone\"\n ></svg>\n </el-scrollbar>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, getCurrentInstance, inject, ref } from 'vue'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport { useLocale } from '@element-plus/hooks'\nimport { generateId } from '@element-plus/utils/util'\nimport { Loading } from '@element-plus/icons-vue'\nimport ElIcon from '@element-plus/components/icon'\nimport ElCascaderNode from './node.vue'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type { default as CascaderNode } from './node'\nimport type { PropType } from 'vue'\nimport type { TimeoutHandle, Nullable } from '@element-plus/utils/types'\n\nexport default defineComponent({\n name: 'ElCascaderMenu',\n\n components: {\n Loading,\n ElIcon,\n ElScrollbar,\n ElCascaderNode,\n },\n\n props: {\n nodes: {\n type: Array as PropType<CascaderNode[]>,\n required: true,\n },\n index: {\n type: Number,\n required: true,\n },\n },\n\n setup(props) {\n const instance = getCurrentInstance()!\n const { t } = useLocale()\n const id = generateId()\n let activeNode: Nullable<HTMLElement> = null\n let hoverTimer: Nullable<TimeoutHandle> = null\n\n const panel = inject(CASCADER_PANEL_INJECTION_KEY)!\n\n const hoverZone = ref<null | SVGSVGElement>(null)\n\n const isEmpty = computed(() => !props.nodes.length)\n const isLoading = computed(() => !panel.initialLoaded)\n const menuId = computed(() => `cascader-menu-${id}-${props.index}`)\n\n const handleExpand = (e: MouseEvent) => {\n activeNode = e.target as HTMLElement\n }\n\n const handleMouseMove = (e: MouseEvent) => {\n if (!panel.isHoverMenu || !activeNode || !hoverZone.value) return\n\n if (activeNode.contains(e.target as HTMLElement)) {\n clearHoverTimer()\n\n const el = instance.vnode.el as HTMLElement\n const { left } = el.getBoundingClientRect()\n const { offsetWidth, offsetHeight } = el\n const startX = e.clientX - left\n const top = activeNode.offsetTop\n const bottom = top + activeNode.offsetHeight\n\n hoverZone.value.innerHTML = `\n <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M${startX} ${top} L${offsetWidth} 0 V${top} Z\" />\n <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M${startX} ${bottom} L${offsetWidth} ${offsetHeight} V${bottom} Z\" />\n `\n } else if (!hoverTimer) {\n hoverTimer = window.setTimeout(\n clearHoverZone,\n panel.config.hoverThreshold\n )\n }\n }\n\n const clearHoverTimer = () => {\n if (!hoverTimer) return\n clearTimeout(hoverTimer)\n hoverTimer = null\n }\n\n const clearHoverZone = () => {\n if (!hoverZone.value) return\n hoverZone.value.innerHTML = ''\n clearHoverTimer()\n }\n return {\n panel,\n hoverZone,\n isEmpty,\n isLoading,\n menuId,\n t,\n handleExpand,\n handleMouseMove,\n clearHoverZone,\n }\n },\n})\n</script>\n"],"names":["_openBlock","_createBlock"],"mappings":";;;;;;;;;;;AAiDA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EAEN,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAGF,OAAO;AAAA,IACL,OAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA;AAAA,IAEZ,OAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA;AAAA;AAAA,EAId,MAAM,OAAO;AACX,UAAM,WAAW;AACjB,UAAM,EAAE,MAAM;AACd,UAAM,KAAK;AACX,QAAI,aAAoC;AACxC,QAAI,aAAsC;AAE1C,UAAM,QAAQ,OAAO;AAErB,UAAM,YAAY,IAA0B;AAE5C,UAAM,UAAU,SAAS,MAAM,CAAC,MAAM,MAAM;AAC5C,UAAM,YAAY,SAAS,MAAM,CAAC,MAAM;AACxC,UAAM,SAAS,SAAS,MAAM,iBAAiB,MAAM,MAAM;AAE3D,UAAM,eAAe,CAAC,MAAkB;AACtC,mBAAa,EAAE;AAAA;AAGjB,UAAM,kBAAkB,CAAC,MAAkB;AACzC,UAAI,CAAC,MAAM,eAAe,CAAC,cAAc,CAAC,UAAU;AAAO;AAE3D,UAAI,WAAW,SAAS,EAAE,SAAwB;AAChD;AAEA,cAAM,KAAK,SAAS,MAAM;AAC1B,cAAM,EAAE,SAAS,GAAG;AACpB,cAAM,EAAE,aAAa,iBAAiB;AACtC,cAAM,SAAS,EAAE,UAAU;AAC3B,cAAM,MAAM,WAAW;AACvB,cAAM,SAAS,MAAM,WAAW;AAEhC,kBAAU,MAAM,YAAY;AAAA,uEACmC,UAAU,QAAQ,kBAAkB;AAAA,uEACpC,UAAU,WAAW,eAAe,iBAAiB;AAAA;AAAA,iBAE3G,CAAC,YAAY;AACtB,qBAAa,OAAO,WAClB,gBACA,MAAM,OAAO;AAAA;AAAA;AAKnB,UAAM,kBAAkB,MAAM;AAC5B,UAAI,CAAC;AAAY;AACjB,mBAAa;AACb,mBAAa;AAAA;AAGf,UAAM,iBAAiB,MAAM;AAC3B,UAAI,CAAC,UAAU;AAAO;AACtB,gBAAU,MAAM,YAAY;AAC5B;AAAA;AAEF,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;EApHoB,KAAK;AAAA;;;EAMF,KAAK;AAAA;;;EAK5B,KAAI;AAAA,EACJ,KAAK;AAAA;;;;;;;SA5BDA,aAAMC;AAAA,IACZ,KAAI,KAAI;AAAA,IACR,KAAI;AAAA,IACJ,MAAK;AAAA,IACL;AAAA,IACC,cAAU;AAAA,IACV,cAAW,2BAAe;AAAA,IAC1B,aAAU,KAAE;AAAA;;2BAEb;AAAA;;AAEgB,mBACH;AAAA,UACV;AAAA,qBACQ;AAAA;;;AAEA;AAGC;AAFQ;AAAM;;mBACtB;AAAW;;;;;;;;;;;;;;;;;"}
@@ -31,15 +31,19 @@ const _sfc_main = defineComponent({
31
31
  const isHoverMenu = computed(() => panel.isHoverMenu);
32
32
  const multiple = computed(() => panel.config.multiple);
33
33
  const checkStrictly = computed(() => panel.config.checkStrictly);
34
- const checkedNodeId = computed(() => panel.checkedNodes[0]?.uid);
34
+ const checkedNodeId = computed(() => {
35
+ var _a;
36
+ return (_a = panel.checkedNodes[0]) == null ? void 0 : _a.uid;
37
+ });
35
38
  const isDisabled = computed(() => props.node.isDisabled);
36
39
  const isLeaf = computed(() => props.node.isLeaf);
37
40
  const expandable = computed(() => checkStrictly.value && !isLeaf.value || !isDisabled.value);
38
41
  const inExpandingPath = computed(() => isInPath(panel.expandingNode));
39
42
  const inCheckedPath = computed(() => checkStrictly.value && panel.checkedNodes.some(isInPath));
40
43
  const isInPath = (node) => {
44
+ var _a;
41
45
  const { level, uid } = props.node;
42
- return node?.pathNodes[level - 1]?.uid === uid;
46
+ return ((_a = node == null ? void 0 : node.pathNodes[level - 1]) == null ? void 0 : _a.uid) === uid;
43
47
  };
44
48
  const doExpand = () => {
45
49
  if (inExpandingPath.value)