@element-plus/nightly 0.0.20220219 → 0.0.20220220

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 (492) hide show
  1. package/dist/index.full.js +2 -2
  2. package/dist/index.full.min.js +1 -1
  3. package/dist/index.full.min.js.map +1 -1
  4. package/dist/index.full.min.mjs +1 -1
  5. package/dist/index.full.min.mjs.map +1 -1
  6. package/dist/index.full.mjs +2 -2
  7. package/dist/locale/af.js +1 -1
  8. package/dist/locale/af.min.js +1 -1
  9. package/dist/locale/af.min.mjs +1 -1
  10. package/dist/locale/af.mjs +1 -1
  11. package/dist/locale/ar.js +1 -1
  12. package/dist/locale/ar.min.js +1 -1
  13. package/dist/locale/ar.min.mjs +1 -1
  14. package/dist/locale/ar.mjs +1 -1
  15. package/dist/locale/bg.js +1 -1
  16. package/dist/locale/bg.min.js +1 -1
  17. package/dist/locale/bg.min.mjs +1 -1
  18. package/dist/locale/bg.mjs +1 -1
  19. package/dist/locale/bn.js +1 -1
  20. package/dist/locale/bn.min.js +1 -1
  21. package/dist/locale/bn.min.mjs +1 -1
  22. package/dist/locale/bn.mjs +1 -1
  23. package/dist/locale/ca.js +1 -1
  24. package/dist/locale/ca.min.js +1 -1
  25. package/dist/locale/ca.min.mjs +1 -1
  26. package/dist/locale/ca.mjs +1 -1
  27. package/dist/locale/cs.js +1 -1
  28. package/dist/locale/cs.min.js +1 -1
  29. package/dist/locale/cs.min.mjs +1 -1
  30. package/dist/locale/cs.mjs +1 -1
  31. package/dist/locale/da.js +1 -1
  32. package/dist/locale/da.min.js +1 -1
  33. package/dist/locale/da.min.mjs +1 -1
  34. package/dist/locale/da.mjs +1 -1
  35. package/dist/locale/de.js +1 -1
  36. package/dist/locale/de.min.js +1 -1
  37. package/dist/locale/de.min.mjs +1 -1
  38. package/dist/locale/de.mjs +1 -1
  39. package/dist/locale/el.js +1 -1
  40. package/dist/locale/el.min.js +1 -1
  41. package/dist/locale/el.min.mjs +1 -1
  42. package/dist/locale/el.mjs +1 -1
  43. package/dist/locale/en.js +1 -1
  44. package/dist/locale/en.min.js +1 -1
  45. package/dist/locale/en.min.mjs +1 -1
  46. package/dist/locale/en.mjs +1 -1
  47. package/dist/locale/eo.js +1 -1
  48. package/dist/locale/eo.min.js +1 -1
  49. package/dist/locale/eo.min.mjs +1 -1
  50. package/dist/locale/eo.mjs +1 -1
  51. package/dist/locale/es.js +1 -1
  52. package/dist/locale/es.min.js +1 -1
  53. package/dist/locale/es.min.mjs +1 -1
  54. package/dist/locale/es.mjs +1 -1
  55. package/dist/locale/et.js +1 -1
  56. package/dist/locale/et.min.js +1 -1
  57. package/dist/locale/et.min.mjs +1 -1
  58. package/dist/locale/et.mjs +1 -1
  59. package/dist/locale/eu.js +1 -1
  60. package/dist/locale/eu.min.js +1 -1
  61. package/dist/locale/eu.min.mjs +1 -1
  62. package/dist/locale/eu.mjs +1 -1
  63. package/dist/locale/fa.js +1 -1
  64. package/dist/locale/fa.min.js +1 -1
  65. package/dist/locale/fa.min.mjs +1 -1
  66. package/dist/locale/fa.mjs +1 -1
  67. package/dist/locale/fi.js +1 -1
  68. package/dist/locale/fi.min.js +1 -1
  69. package/dist/locale/fi.min.mjs +1 -1
  70. package/dist/locale/fi.mjs +1 -1
  71. package/dist/locale/fr.js +1 -1
  72. package/dist/locale/fr.min.js +1 -1
  73. package/dist/locale/fr.min.mjs +1 -1
  74. package/dist/locale/fr.mjs +1 -1
  75. package/dist/locale/he.js +1 -1
  76. package/dist/locale/he.min.js +1 -1
  77. package/dist/locale/he.min.mjs +1 -1
  78. package/dist/locale/he.mjs +1 -1
  79. package/dist/locale/hr.js +1 -1
  80. package/dist/locale/hr.min.js +1 -1
  81. package/dist/locale/hr.min.mjs +1 -1
  82. package/dist/locale/hr.mjs +1 -1
  83. package/dist/locale/hu.js +1 -1
  84. package/dist/locale/hu.min.js +1 -1
  85. package/dist/locale/hu.min.mjs +1 -1
  86. package/dist/locale/hu.mjs +1 -1
  87. package/dist/locale/hy-am.js +1 -1
  88. package/dist/locale/hy-am.min.js +1 -1
  89. package/dist/locale/hy-am.min.mjs +1 -1
  90. package/dist/locale/hy-am.mjs +1 -1
  91. package/dist/locale/id.js +1 -1
  92. package/dist/locale/id.min.js +1 -1
  93. package/dist/locale/id.min.mjs +1 -1
  94. package/dist/locale/id.mjs +1 -1
  95. package/dist/locale/it.js +1 -1
  96. package/dist/locale/it.min.js +1 -1
  97. package/dist/locale/it.min.mjs +1 -1
  98. package/dist/locale/it.mjs +1 -1
  99. package/dist/locale/ja.js +1 -1
  100. package/dist/locale/ja.min.js +1 -1
  101. package/dist/locale/ja.min.mjs +1 -1
  102. package/dist/locale/ja.mjs +1 -1
  103. package/dist/locale/kk.js +1 -1
  104. package/dist/locale/kk.min.js +1 -1
  105. package/dist/locale/kk.min.mjs +1 -1
  106. package/dist/locale/kk.mjs +1 -1
  107. package/dist/locale/km.js +1 -1
  108. package/dist/locale/km.min.js +1 -1
  109. package/dist/locale/km.min.mjs +1 -1
  110. package/dist/locale/km.mjs +1 -1
  111. package/dist/locale/ko.js +1 -1
  112. package/dist/locale/ko.min.js +1 -1
  113. package/dist/locale/ko.min.mjs +1 -1
  114. package/dist/locale/ko.mjs +1 -1
  115. package/dist/locale/ku.js +1 -1
  116. package/dist/locale/ku.min.js +1 -1
  117. package/dist/locale/ku.min.mjs +1 -1
  118. package/dist/locale/ku.mjs +1 -1
  119. package/dist/locale/ky.js +1 -1
  120. package/dist/locale/ky.min.js +1 -1
  121. package/dist/locale/ky.min.mjs +1 -1
  122. package/dist/locale/ky.mjs +1 -1
  123. package/dist/locale/lt.js +1 -1
  124. package/dist/locale/lt.min.js +1 -1
  125. package/dist/locale/lt.min.mjs +1 -1
  126. package/dist/locale/lt.mjs +1 -1
  127. package/dist/locale/lv.js +1 -1
  128. package/dist/locale/lv.min.js +1 -1
  129. package/dist/locale/lv.min.mjs +1 -1
  130. package/dist/locale/lv.mjs +1 -1
  131. package/dist/locale/mg.js +1 -1
  132. package/dist/locale/mg.min.js +1 -1
  133. package/dist/locale/mg.min.mjs +1 -1
  134. package/dist/locale/mg.mjs +1 -1
  135. package/dist/locale/mn.js +1 -1
  136. package/dist/locale/mn.min.js +1 -1
  137. package/dist/locale/mn.min.mjs +1 -1
  138. package/dist/locale/mn.mjs +1 -1
  139. package/dist/locale/nb-no.js +1 -1
  140. package/dist/locale/nb-no.min.js +1 -1
  141. package/dist/locale/nb-no.min.mjs +1 -1
  142. package/dist/locale/nb-no.mjs +1 -1
  143. package/dist/locale/nl.js +1 -1
  144. package/dist/locale/nl.min.js +1 -1
  145. package/dist/locale/nl.min.mjs +1 -1
  146. package/dist/locale/nl.mjs +1 -1
  147. package/dist/locale/pa.js +1 -1
  148. package/dist/locale/pa.min.js +1 -1
  149. package/dist/locale/pa.min.mjs +1 -1
  150. package/dist/locale/pa.mjs +1 -1
  151. package/dist/locale/pl.js +1 -1
  152. package/dist/locale/pl.min.js +1 -1
  153. package/dist/locale/pl.min.mjs +1 -1
  154. package/dist/locale/pl.mjs +1 -1
  155. package/dist/locale/pt-br.js +1 -1
  156. package/dist/locale/pt-br.min.js +1 -1
  157. package/dist/locale/pt-br.min.mjs +1 -1
  158. package/dist/locale/pt-br.mjs +1 -1
  159. package/dist/locale/pt.js +1 -1
  160. package/dist/locale/pt.min.js +1 -1
  161. package/dist/locale/pt.min.mjs +1 -1
  162. package/dist/locale/pt.mjs +1 -1
  163. package/dist/locale/ro.js +1 -1
  164. package/dist/locale/ro.min.js +1 -1
  165. package/dist/locale/ro.min.mjs +1 -1
  166. package/dist/locale/ro.mjs +1 -1
  167. package/dist/locale/ru.js +1 -1
  168. package/dist/locale/ru.min.js +1 -1
  169. package/dist/locale/ru.min.mjs +1 -1
  170. package/dist/locale/ru.mjs +1 -1
  171. package/dist/locale/sk.js +1 -1
  172. package/dist/locale/sk.min.js +1 -1
  173. package/dist/locale/sk.min.mjs +1 -1
  174. package/dist/locale/sk.mjs +1 -1
  175. package/dist/locale/sl.js +1 -1
  176. package/dist/locale/sl.min.js +1 -1
  177. package/dist/locale/sl.min.mjs +1 -1
  178. package/dist/locale/sl.mjs +1 -1
  179. package/dist/locale/sr.js +1 -1
  180. package/dist/locale/sr.min.js +1 -1
  181. package/dist/locale/sr.min.mjs +1 -1
  182. package/dist/locale/sr.mjs +1 -1
  183. package/dist/locale/sv.js +1 -1
  184. package/dist/locale/sv.min.js +1 -1
  185. package/dist/locale/sv.min.mjs +1 -1
  186. package/dist/locale/sv.mjs +1 -1
  187. package/dist/locale/ta.js +1 -1
  188. package/dist/locale/ta.min.js +1 -1
  189. package/dist/locale/ta.min.mjs +1 -1
  190. package/dist/locale/ta.mjs +1 -1
  191. package/dist/locale/th.js +1 -1
  192. package/dist/locale/th.min.js +1 -1
  193. package/dist/locale/th.min.mjs +1 -1
  194. package/dist/locale/th.mjs +1 -1
  195. package/dist/locale/tk.js +1 -1
  196. package/dist/locale/tk.min.js +1 -1
  197. package/dist/locale/tk.min.mjs +1 -1
  198. package/dist/locale/tk.mjs +1 -1
  199. package/dist/locale/tr.js +1 -1
  200. package/dist/locale/tr.min.js +1 -1
  201. package/dist/locale/tr.min.mjs +1 -1
  202. package/dist/locale/tr.mjs +1 -1
  203. package/dist/locale/ug-cn.js +1 -1
  204. package/dist/locale/ug-cn.min.js +1 -1
  205. package/dist/locale/ug-cn.min.mjs +1 -1
  206. package/dist/locale/ug-cn.mjs +1 -1
  207. package/dist/locale/uk.js +1 -1
  208. package/dist/locale/uk.min.js +1 -1
  209. package/dist/locale/uk.min.mjs +1 -1
  210. package/dist/locale/uk.mjs +1 -1
  211. package/dist/locale/uz-uz.js +1 -1
  212. package/dist/locale/uz-uz.min.js +1 -1
  213. package/dist/locale/uz-uz.min.mjs +1 -1
  214. package/dist/locale/uz-uz.mjs +1 -1
  215. package/dist/locale/vi.js +1 -1
  216. package/dist/locale/vi.min.js +1 -1
  217. package/dist/locale/vi.min.mjs +1 -1
  218. package/dist/locale/vi.mjs +1 -1
  219. package/dist/locale/zh-cn.js +1 -1
  220. package/dist/locale/zh-cn.min.js +1 -1
  221. package/dist/locale/zh-cn.min.mjs +1 -1
  222. package/dist/locale/zh-cn.mjs +1 -1
  223. package/dist/locale/zh-tw.js +1 -1
  224. package/dist/locale/zh-tw.min.js +1 -1
  225. package/dist/locale/zh-tw.min.mjs +1 -1
  226. package/dist/locale/zh-tw.mjs +1 -1
  227. package/es/components/autocomplete/src/index.mjs.map +1 -1
  228. package/es/components/avatar/src/avatar2.mjs.map +1 -1
  229. package/es/components/breadcrumb/src/breadcrumb-item2.mjs.map +1 -1
  230. package/es/components/breadcrumb/src/breadcrumb2.mjs.map +1 -1
  231. package/es/components/button/src/button-group2.mjs.map +1 -1
  232. package/es/components/calendar/src/calendar2.mjs.map +1 -1
  233. package/es/components/calendar/src/date-table2.mjs.map +1 -1
  234. package/es/components/card/src/card2.mjs.map +1 -1
  235. package/es/components/carousel/src/item.mjs.map +1 -1
  236. package/es/components/carousel/src/main.mjs.map +1 -1
  237. package/es/components/cascader/src/index.mjs.map +1 -1
  238. package/es/components/cascader-panel/src/index.mjs.map +1 -1
  239. package/es/components/cascader-panel/src/menu.mjs.map +1 -1
  240. package/es/components/cascader-panel/src/node2.mjs.map +1 -1
  241. package/es/components/check-tag/src/check-tag2.mjs.map +1 -1
  242. package/es/components/checkbox/src/checkbox-button.mjs.map +1 -1
  243. package/es/components/checkbox/src/checkbox.mjs.map +1 -1
  244. package/es/components/collapse/src/collapse-item.mjs.map +1 -1
  245. package/es/components/collapse/src/collapse.mjs.map +1 -1
  246. package/es/components/collapse-transition/src/collapse-transition.mjs.map +1 -1
  247. package/es/components/collection/src/collection-item.mjs.map +1 -1
  248. package/es/components/collection/src/collection2.mjs.map +1 -1
  249. package/es/components/color-picker/src/components/alpha-slider.mjs.map +1 -1
  250. package/es/components/color-picker/src/components/hue-slider.mjs.map +1 -1
  251. package/es/components/color-picker/src/components/predefine.mjs.map +1 -1
  252. package/es/components/color-picker/src/components/sv-panel.mjs.map +1 -1
  253. package/es/components/color-picker/src/index.mjs.map +1 -1
  254. package/es/components/container/src/aside.mjs.map +1 -1
  255. package/es/components/container/src/container.mjs.map +1 -1
  256. package/es/components/container/src/footer.mjs.map +1 -1
  257. package/es/components/container/src/header.mjs.map +1 -1
  258. package/es/components/container/src/main.mjs.map +1 -1
  259. package/es/components/date-picker/src/date-picker-com/basic-date-table.mjs.map +1 -1
  260. package/es/components/date-picker/src/date-picker-com/basic-month-table.mjs.map +1 -1
  261. package/es/components/date-picker/src/date-picker-com/basic-year-table.mjs.map +1 -1
  262. package/es/components/date-picker/src/date-picker-com/panel-date-pick.mjs.map +1 -1
  263. package/es/components/date-picker/src/date-picker-com/panel-date-range.mjs.map +1 -1
  264. package/es/components/date-picker/src/date-picker-com/panel-month-range.mjs.map +1 -1
  265. package/es/components/descriptions/src/descriptions-row.mjs.map +1 -1
  266. package/es/components/descriptions/src/index.mjs.map +1 -1
  267. package/es/components/dialog/src/dialog2.mjs.map +1 -1
  268. package/es/components/divider/src/divider2.mjs.map +1 -1
  269. package/es/components/drawer/src/drawer2.mjs.map +1 -1
  270. package/es/components/dropdown/src/dropdown-item-impl.mjs.map +1 -1
  271. package/es/components/dropdown/src/dropdown-item.mjs.map +1 -1
  272. package/es/components/dropdown/src/dropdown-menu.mjs.map +1 -1
  273. package/es/components/dropdown/src/dropdown2.mjs.map +1 -1
  274. package/es/components/empty/src/empty2.mjs.map +1 -1
  275. package/es/components/empty/src/img-empty.mjs.map +1 -1
  276. package/es/components/focus-trap/src/focus-trap.mjs.map +1 -1
  277. package/es/components/form/src/form-item.mjs.map +1 -1
  278. package/es/components/form/src/form.mjs.map +1 -1
  279. package/es/components/image/src/image2.mjs.map +1 -1
  280. package/es/components/image-viewer/src/image-viewer2.mjs.map +1 -1
  281. package/es/components/input/src/input2.mjs.map +1 -1
  282. package/es/components/input-number/src/input-number2.mjs.map +1 -1
  283. package/es/components/link/src/link2.mjs.map +1 -1
  284. package/es/components/menu/src/menu-collapse-transition.mjs.map +1 -1
  285. package/es/components/menu/src/menu-item-group2.mjs.map +1 -1
  286. package/es/components/menu/src/menu-item2.mjs.map +1 -1
  287. package/es/components/message/src/message2.mjs.map +1 -1
  288. package/es/components/message-box/src/index.mjs.map +1 -1
  289. package/es/components/notification/src/notification2.mjs.map +1 -1
  290. package/es/components/page-header/src/page-header2.mjs.map +1 -1
  291. package/es/components/pagination/src/components/jumper.mjs.map +1 -1
  292. package/es/components/pagination/src/components/next.mjs.map +1 -1
  293. package/es/components/pagination/src/components/pager.mjs.map +1 -1
  294. package/es/components/pagination/src/components/prev.mjs.map +1 -1
  295. package/es/components/pagination/src/components/sizes.mjs.map +1 -1
  296. package/es/components/pagination/src/components/total.mjs.map +1 -1
  297. package/es/components/popconfirm/src/popconfirm2.mjs.map +1 -1
  298. package/es/components/popover/src/index.mjs.map +1 -1
  299. package/es/components/popper/src/arrow.mjs.map +1 -1
  300. package/es/components/popper/src/content.mjs.map +1 -1
  301. package/es/components/popper/src/popper2.mjs.map +1 -1
  302. package/es/components/popper/src/trigger.mjs.map +1 -1
  303. package/es/components/progress/src/progress2.mjs.map +1 -1
  304. package/es/components/radio/src/radio-button2.mjs.map +1 -1
  305. package/es/components/radio/src/radio-group2.mjs.map +1 -1
  306. package/es/components/radio/src/radio2.mjs.map +1 -1
  307. package/es/components/rate/src/rate2.mjs.map +1 -1
  308. package/es/components/result/src/result2.mjs.map +1 -1
  309. package/es/components/roving-focus-group/src/roving-focus-group-impl.mjs.map +1 -1
  310. package/es/components/roving-focus-group/src/roving-focus-group2.mjs.map +1 -1
  311. package/es/components/roving-focus-group/src/roving-focus-item.mjs.map +1 -1
  312. package/es/components/scrollbar/src/bar2.mjs.map +1 -1
  313. package/es/components/scrollbar/src/scrollbar2.mjs.map +1 -1
  314. package/es/components/scrollbar/src/thumb2.mjs.map +1 -1
  315. package/es/components/select/src/option-group.mjs.map +1 -1
  316. package/es/components/select/src/option.mjs.map +1 -1
  317. package/es/components/select/src/select-dropdown.mjs.map +1 -1
  318. package/es/components/select/src/select.mjs.map +1 -1
  319. package/es/components/select-v2/src/group-item.mjs.map +1 -1
  320. package/es/components/select-v2/src/option-item.mjs.map +1 -1
  321. package/es/components/select-v2/src/select.mjs.map +1 -1
  322. package/es/components/skeleton/src/image-placeholder.mjs.map +1 -1
  323. package/es/components/skeleton/src/skeleton-item2.mjs.map +1 -1
  324. package/es/components/skeleton/src/skeleton2.mjs.map +1 -1
  325. package/es/components/slider/src/button.mjs.map +1 -1
  326. package/es/components/slider/src/index.mjs.map +1 -1
  327. package/es/components/space/src/item.mjs.map +1 -1
  328. package/es/components/steps/src/index.mjs.map +1 -1
  329. package/es/components/steps/src/item.mjs.map +1 -1
  330. package/es/components/switch/src/switch2.mjs.map +1 -1
  331. package/es/components/table/src/filter-panel.mjs.map +1 -1
  332. package/es/components/table/src/table.mjs.map +1 -1
  333. package/es/components/tabs/src/tab-bar2.mjs.map +1 -1
  334. package/es/components/tabs/src/tab-pane2.mjs.map +1 -1
  335. package/es/components/tag/src/tag2.mjs.map +1 -1
  336. package/es/components/teleport/src/teleport2.mjs.map +1 -1
  337. package/es/components/time-picker/src/common/picker.mjs.map +1 -1
  338. package/es/components/time-picker/src/time-picker-com/basic-time-spinner.mjs.map +1 -1
  339. package/es/components/time-picker/src/time-picker-com/panel-time-pick.mjs.map +1 -1
  340. package/es/components/time-picker/src/time-picker-com/panel-time-range.mjs.map +1 -1
  341. package/es/components/time-select/src/time-select.mjs.map +1 -1
  342. package/es/components/timeline/src/timeline-item2.mjs.map +1 -1
  343. package/es/components/tooltip/src/content.mjs.map +1 -1
  344. package/es/components/tooltip/src/tooltip2.mjs.map +1 -1
  345. package/es/components/tooltip/src/trigger.mjs.map +1 -1
  346. package/es/components/transfer/src/index.mjs.map +1 -1
  347. package/es/components/transfer/src/transfer-panel.mjs.map +1 -1
  348. package/es/components/tree/src/tree-node.mjs.map +1 -1
  349. package/es/components/tree/src/tree.mjs.map +1 -1
  350. package/es/components/tree-v2/src/tree-node.mjs.map +1 -1
  351. package/es/components/tree-v2/src/tree.mjs.map +1 -1
  352. package/es/components/upload/src/upload-dragger.mjs.map +1 -1
  353. package/es/components/upload/src/upload-list.mjs.map +1 -1
  354. package/es/components/upload/src/upload.mjs.map +1 -1
  355. package/es/components/visual-hidden/src/visual-hidden.mjs.map +1 -1
  356. package/es/version.d.ts +1 -1
  357. package/es/version.mjs +1 -1
  358. package/es/version.mjs.map +1 -1
  359. package/lib/components/autocomplete/src/index.js.map +1 -1
  360. package/lib/components/avatar/src/avatar2.js.map +1 -1
  361. package/lib/components/breadcrumb/src/breadcrumb-item2.js.map +1 -1
  362. package/lib/components/breadcrumb/src/breadcrumb2.js.map +1 -1
  363. package/lib/components/button/src/button-group2.js.map +1 -1
  364. package/lib/components/calendar/src/calendar2.js.map +1 -1
  365. package/lib/components/calendar/src/date-table2.js.map +1 -1
  366. package/lib/components/card/src/card2.js.map +1 -1
  367. package/lib/components/carousel/src/item.js.map +1 -1
  368. package/lib/components/carousel/src/main.js.map +1 -1
  369. package/lib/components/cascader/src/index.js.map +1 -1
  370. package/lib/components/cascader-panel/src/index.js.map +1 -1
  371. package/lib/components/cascader-panel/src/menu.js.map +1 -1
  372. package/lib/components/cascader-panel/src/node2.js.map +1 -1
  373. package/lib/components/check-tag/src/check-tag2.js.map +1 -1
  374. package/lib/components/checkbox/src/checkbox-button.js.map +1 -1
  375. package/lib/components/checkbox/src/checkbox.js.map +1 -1
  376. package/lib/components/collapse/src/collapse-item.js.map +1 -1
  377. package/lib/components/collapse/src/collapse.js.map +1 -1
  378. package/lib/components/collapse-transition/src/collapse-transition.js.map +1 -1
  379. package/lib/components/collection/src/collection-item.js.map +1 -1
  380. package/lib/components/collection/src/collection2.js.map +1 -1
  381. package/lib/components/color-picker/src/components/alpha-slider.js.map +1 -1
  382. package/lib/components/color-picker/src/components/hue-slider.js.map +1 -1
  383. package/lib/components/color-picker/src/components/predefine.js.map +1 -1
  384. package/lib/components/color-picker/src/components/sv-panel.js.map +1 -1
  385. package/lib/components/color-picker/src/index.js.map +1 -1
  386. package/lib/components/container/src/aside.js.map +1 -1
  387. package/lib/components/container/src/container.js.map +1 -1
  388. package/lib/components/container/src/footer.js.map +1 -1
  389. package/lib/components/container/src/header.js.map +1 -1
  390. package/lib/components/container/src/main.js.map +1 -1
  391. package/lib/components/date-picker/src/date-picker-com/basic-date-table.js.map +1 -1
  392. package/lib/components/date-picker/src/date-picker-com/basic-month-table.js.map +1 -1
  393. package/lib/components/date-picker/src/date-picker-com/basic-year-table.js.map +1 -1
  394. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.js.map +1 -1
  395. package/lib/components/date-picker/src/date-picker-com/panel-date-range.js.map +1 -1
  396. package/lib/components/date-picker/src/date-picker-com/panel-month-range.js.map +1 -1
  397. package/lib/components/descriptions/src/descriptions-row.js.map +1 -1
  398. package/lib/components/descriptions/src/index.js.map +1 -1
  399. package/lib/components/dialog/src/dialog2.js.map +1 -1
  400. package/lib/components/divider/src/divider2.js.map +1 -1
  401. package/lib/components/drawer/src/drawer2.js.map +1 -1
  402. package/lib/components/dropdown/src/dropdown-item-impl.js.map +1 -1
  403. package/lib/components/dropdown/src/dropdown-item.js.map +1 -1
  404. package/lib/components/dropdown/src/dropdown-menu.js.map +1 -1
  405. package/lib/components/dropdown/src/dropdown2.js.map +1 -1
  406. package/lib/components/empty/src/empty2.js.map +1 -1
  407. package/lib/components/empty/src/img-empty.js.map +1 -1
  408. package/lib/components/focus-trap/src/focus-trap.js.map +1 -1
  409. package/lib/components/form/src/form-item.js.map +1 -1
  410. package/lib/components/form/src/form.js.map +1 -1
  411. package/lib/components/image/src/image2.js.map +1 -1
  412. package/lib/components/image-viewer/src/image-viewer2.js.map +1 -1
  413. package/lib/components/input/src/input2.js.map +1 -1
  414. package/lib/components/input-number/src/input-number2.js.map +1 -1
  415. package/lib/components/link/src/link2.js.map +1 -1
  416. package/lib/components/menu/src/menu-collapse-transition.js.map +1 -1
  417. package/lib/components/menu/src/menu-item-group2.js.map +1 -1
  418. package/lib/components/menu/src/menu-item2.js.map +1 -1
  419. package/lib/components/message/src/message2.js.map +1 -1
  420. package/lib/components/message-box/src/index.js.map +1 -1
  421. package/lib/components/notification/src/notification2.js.map +1 -1
  422. package/lib/components/page-header/src/page-header2.js.map +1 -1
  423. package/lib/components/pagination/src/components/jumper.js.map +1 -1
  424. package/lib/components/pagination/src/components/next.js.map +1 -1
  425. package/lib/components/pagination/src/components/pager.js.map +1 -1
  426. package/lib/components/pagination/src/components/prev.js.map +1 -1
  427. package/lib/components/pagination/src/components/sizes.js.map +1 -1
  428. package/lib/components/pagination/src/components/total.js.map +1 -1
  429. package/lib/components/popconfirm/src/popconfirm2.js.map +1 -1
  430. package/lib/components/popover/src/index.js.map +1 -1
  431. package/lib/components/popper/src/arrow.js.map +1 -1
  432. package/lib/components/popper/src/content.js.map +1 -1
  433. package/lib/components/popper/src/popper2.js.map +1 -1
  434. package/lib/components/popper/src/trigger.js.map +1 -1
  435. package/lib/components/progress/src/progress2.js.map +1 -1
  436. package/lib/components/radio/src/radio-button2.js.map +1 -1
  437. package/lib/components/radio/src/radio-group2.js.map +1 -1
  438. package/lib/components/radio/src/radio2.js.map +1 -1
  439. package/lib/components/rate/src/rate2.js.map +1 -1
  440. package/lib/components/result/src/result2.js.map +1 -1
  441. package/lib/components/roving-focus-group/src/roving-focus-group-impl.js.map +1 -1
  442. package/lib/components/roving-focus-group/src/roving-focus-group2.js.map +1 -1
  443. package/lib/components/roving-focus-group/src/roving-focus-item.js.map +1 -1
  444. package/lib/components/scrollbar/src/bar2.js.map +1 -1
  445. package/lib/components/scrollbar/src/scrollbar2.js.map +1 -1
  446. package/lib/components/scrollbar/src/thumb2.js.map +1 -1
  447. package/lib/components/select/src/option-group.js.map +1 -1
  448. package/lib/components/select/src/option.js.map +1 -1
  449. package/lib/components/select/src/select-dropdown.js.map +1 -1
  450. package/lib/components/select/src/select.js.map +1 -1
  451. package/lib/components/select-v2/src/group-item.js.map +1 -1
  452. package/lib/components/select-v2/src/option-item.js.map +1 -1
  453. package/lib/components/select-v2/src/select.js.map +1 -1
  454. package/lib/components/skeleton/src/image-placeholder.js.map +1 -1
  455. package/lib/components/skeleton/src/skeleton-item2.js.map +1 -1
  456. package/lib/components/skeleton/src/skeleton2.js.map +1 -1
  457. package/lib/components/slider/src/button.js.map +1 -1
  458. package/lib/components/slider/src/index.js.map +1 -1
  459. package/lib/components/space/src/item.js.map +1 -1
  460. package/lib/components/steps/src/index.js.map +1 -1
  461. package/lib/components/steps/src/item.js.map +1 -1
  462. package/lib/components/switch/src/switch2.js.map +1 -1
  463. package/lib/components/table/src/filter-panel.js.map +1 -1
  464. package/lib/components/table/src/table.js.map +1 -1
  465. package/lib/components/tabs/src/tab-bar2.js.map +1 -1
  466. package/lib/components/tabs/src/tab-pane2.js.map +1 -1
  467. package/lib/components/tag/src/tag2.js.map +1 -1
  468. package/lib/components/teleport/src/teleport2.js.map +1 -1
  469. package/lib/components/time-picker/src/common/picker.js.map +1 -1
  470. package/lib/components/time-picker/src/time-picker-com/basic-time-spinner.js.map +1 -1
  471. package/lib/components/time-picker/src/time-picker-com/panel-time-pick.js.map +1 -1
  472. package/lib/components/time-picker/src/time-picker-com/panel-time-range.js.map +1 -1
  473. package/lib/components/time-select/src/time-select.js.map +1 -1
  474. package/lib/components/timeline/src/timeline-item2.js.map +1 -1
  475. package/lib/components/tooltip/src/content.js.map +1 -1
  476. package/lib/components/tooltip/src/tooltip2.js.map +1 -1
  477. package/lib/components/tooltip/src/trigger.js.map +1 -1
  478. package/lib/components/transfer/src/index.js.map +1 -1
  479. package/lib/components/transfer/src/transfer-panel.js.map +1 -1
  480. package/lib/components/tree/src/tree-node.js.map +1 -1
  481. package/lib/components/tree/src/tree.js.map +1 -1
  482. package/lib/components/tree-v2/src/tree-node.js.map +1 -1
  483. package/lib/components/tree-v2/src/tree.js.map +1 -1
  484. package/lib/components/upload/src/upload-dragger.js.map +1 -1
  485. package/lib/components/upload/src/upload-list.js.map +1 -1
  486. package/lib/components/upload/src/upload.js.map +1 -1
  487. package/lib/components/visual-hidden/src/visual-hidden.js.map +1 -1
  488. package/lib/version.d.ts +1 -1
  489. package/lib/version.js +1 -1
  490. package/lib/version.js.map +1 -1
  491. package/package.json +2 -2
  492. package/web-types.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"calendar2.mjs","sources":["../../../../../../packages/components/calendar/src/calendar.vue"],"sourcesContent":["<template>\n <div :class=\"ns.b()\">\n <div :class=\"ns.e('header')\">\n <slot name=\"header\" :date=\"i18nDate\">\n <div :class=\"ns.e('title')\">{{ i18nDate }}</div>\n <div v-if=\"validatedRange.length === 0\" :class=\"ns.e('button-group')\">\n <el-button-group>\n <el-button size=\"small\" @click=\"selectDate('prev-month')\">\n {{ t('el.datepicker.prevMonth') }}\n </el-button>\n <el-button size=\"small\" @click=\"selectDate('today')\">\n {{ t('el.datepicker.today') }}\n </el-button>\n <el-button size=\"small\" @click=\"selectDate('next-month')\">\n {{ t('el.datepicker.nextMonth') }}\n </el-button>\n </el-button-group>\n </div>\n </slot>\n </div>\n <div v-if=\"validatedRange.length === 0\" :class=\"ns.e('body')\">\n <date-table :date=\"date\" :selected-day=\"realSelectedDay\" @pick=\"pickDay\">\n <template v-if=\"$slots.dateCell\" #dateCell=\"data\">\n <slot name=\"dateCell\" v-bind=\"data\"></slot>\n </template>\n </date-table>\n </div>\n <div v-else :class=\"ns.e('body')\">\n <date-table\n v-for=\"(range_, index) in validatedRange\"\n :key=\"index\"\n :date=\"range_[0]\"\n :selected-day=\"realSelectedDay\"\n :range=\"range_\"\n :hide-header=\"index !== 0\"\n @pick=\"pickDay\"\n >\n <template v-if=\"$slots.dateCell\" #dateCell=\"data\">\n <slot name=\"dateCell\" v-bind=\"data\"></slot>\n </template>\n </date-table>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { ref, computed, defineComponent } from 'vue'\nimport dayjs from 'dayjs'\nimport { ElButton, ElButtonGroup } from '@element-plus/components/button'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { debugWarn } from '@element-plus/utils'\nimport DateTable from './date-table.vue'\nimport { calendarProps, calendarEmits } from './calendar'\n\nimport type { ComputedRef } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\ntype DateType =\n | 'prev-month'\n | 'next-month'\n | 'prev-year'\n | 'next-year'\n | 'today'\n\nexport default defineComponent({\n name: 'ElCalendar',\n\n components: {\n DateTable,\n ElButton,\n ElButtonGroup,\n },\n\n props: calendarProps,\n emits: calendarEmits,\n\n setup(props, { emit }) {\n const ns = useNamespace('calendar')\n\n const { t, lang } = useLocale()\n const selectedDay = ref<Dayjs>()\n const now = dayjs().locale(lang.value)\n\n const prevMonthDayjs = computed(() => {\n return date.value.subtract(1, 'month').date(1)\n })\n const curMonthDatePrefix = computed(() => {\n return dayjs(date.value).locale(lang.value).format('YYYY-MM')\n })\n\n const nextMonthDayjs = computed(() => {\n return date.value.add(1, 'month').date(1)\n })\n\n const prevYearDayjs = computed(() => {\n return date.value.subtract(1, 'year').date(1)\n })\n\n const nextYearDayjs = computed(() => {\n return date.value.add(1, 'year').date(1)\n })\n\n const i18nDate = computed(() => {\n const pickedMonth = `el.datepicker.month${date.value.format('M')}`\n return `${date.value.year()} ${t('el.datepicker.year')} ${t(pickedMonth)}`\n })\n\n const realSelectedDay = computed<Dayjs | undefined>({\n get() {\n if (!props.modelValue) return selectedDay.value\n return date.value\n },\n set(val) {\n if (!val) return\n selectedDay.value = val\n const result = val.toDate()\n\n emit('input', result)\n emit('update:modelValue', result)\n },\n })\n\n const date: ComputedRef<Dayjs> = computed(() => {\n if (!props.modelValue) {\n if (realSelectedDay.value) {\n return realSelectedDay.value\n } else if (validatedRange.value.length) {\n return validatedRange.value[0][0]\n }\n return now\n } else {\n return dayjs(props.modelValue).locale(lang.value)\n }\n })\n\n // https://github.com/element-plus/element-plus/issues/3155\n // Calculate the validate date range according to the start and end dates\n const calculateValidatedDateRange = (\n startDayjs: Dayjs,\n endDayjs: Dayjs\n ): [Dayjs, Dayjs][] => {\n const firstDay = startDayjs.startOf('week')\n const lastDay = endDayjs.endOf('week')\n const firstMonth = firstDay.get('month')\n const lastMonth = lastDay.get('month')\n\n // Current mouth\n if (firstMonth === lastMonth) {\n return [[firstDay, lastDay]]\n }\n // Two adjacent months\n else if (firstMonth + 1 === lastMonth) {\n const firstMonthLastDay = firstDay.endOf('month')\n const lastMonthFirstDay = lastDay.startOf('month')\n\n // Whether the last day of the first month and the first day of the last month is in the same week\n const isSameWeek = firstMonthLastDay.isSame(lastMonthFirstDay, 'week')\n const lastMonthStartDay = isSameWeek\n ? lastMonthFirstDay.add(1, 'week')\n : lastMonthFirstDay\n\n return [\n [firstDay, firstMonthLastDay],\n [lastMonthStartDay.startOf('week'), lastDay],\n ]\n }\n // Three consecutive months (compatible: 2021-01-30 to 2021-02-28)\n else if (firstMonth + 2 === lastMonth) {\n const firstMonthLastDay = firstDay.endOf('month')\n const secondMonthFirstDay = firstDay.add(1, 'month').startOf('month')\n\n // Whether the last day of the first month and the second month is in the same week\n const secondMonthStartDay = firstMonthLastDay.isSame(\n secondMonthFirstDay,\n 'week'\n )\n ? secondMonthFirstDay.add(1, 'week')\n : secondMonthFirstDay\n\n const secondMonthLastDay = secondMonthStartDay.endOf('month')\n const lastMonthFirstDay = lastDay.startOf('month')\n\n // Whether the last day of the second month and the last day of the last month is in the same week\n const lastMonthStartDay = secondMonthLastDay.isSame(\n lastMonthFirstDay,\n 'week'\n )\n ? lastMonthFirstDay.add(1, 'week')\n : lastMonthFirstDay\n\n return [\n [firstDay, firstMonthLastDay],\n [secondMonthStartDay.startOf('week'), secondMonthLastDay],\n [lastMonthStartDay.startOf('week'), lastDay],\n ]\n }\n // Other cases\n else {\n debugWarn(\n 'ElCalendar',\n 'start time and end time interval must not exceed two months'\n )\n return []\n }\n }\n\n // if range is valid, we get a two-digit array\n const validatedRange = computed(() => {\n if (!props.range) return []\n const rangeArrDayjs = props.range.map((_) => dayjs(_).locale(lang.value))\n const [startDayjs, endDayjs] = rangeArrDayjs\n if (startDayjs.isAfter(endDayjs)) {\n debugWarn('ElCalendar', 'end time should be greater than start time')\n return []\n }\n if (startDayjs.isSame(endDayjs, 'month')) {\n // same month\n return calculateValidatedDateRange(startDayjs, endDayjs)\n } else {\n // two months\n if (startDayjs.add(1, 'month').month() !== endDayjs.month()) {\n debugWarn(\n 'ElCalendar',\n 'start time and end time interval must not exceed two months'\n )\n return []\n }\n return calculateValidatedDateRange(startDayjs, endDayjs)\n }\n })\n\n const pickDay = (day: Dayjs) => {\n realSelectedDay.value = day\n }\n\n const selectDate = (type: DateType) => {\n let day: Dayjs\n if (type === 'prev-month') {\n day = prevMonthDayjs.value\n } else if (type === 'next-month') {\n day = nextMonthDayjs.value\n } else if (type === 'prev-year') {\n day = prevYearDayjs.value\n } else if (type === 'next-year') {\n day = nextYearDayjs.value\n } else {\n day = now\n }\n\n if (day.isSame(date.value, 'day')) return\n pickDay(day)\n }\n\n return {\n selectedDay,\n curMonthDatePrefix,\n i18nDate,\n realSelectedDay,\n date,\n validatedRange,\n pickDay,\n selectDate,\n t,\n\n ns,\n }\n },\n})\n</script>\n"],"names":["_openBlock","_toDisplayString","_withCtx","_createSlots","_Fragment","_createBlock"],"mappings":"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"}
1
+ {"version":3,"file":"calendar2.mjs","sources":["../../../../../../packages/components/calendar/src/calendar.vue"],"sourcesContent":["<template>\n <div :class=\"ns.b()\">\n <div :class=\"ns.e('header')\">\n <slot name=\"header\" :date=\"i18nDate\">\n <div :class=\"ns.e('title')\">{{ i18nDate }}</div>\n <div v-if=\"validatedRange.length === 0\" :class=\"ns.e('button-group')\">\n <el-button-group>\n <el-button size=\"small\" @click=\"selectDate('prev-month')\">\n {{ t('el.datepicker.prevMonth') }}\n </el-button>\n <el-button size=\"small\" @click=\"selectDate('today')\">\n {{ t('el.datepicker.today') }}\n </el-button>\n <el-button size=\"small\" @click=\"selectDate('next-month')\">\n {{ t('el.datepicker.nextMonth') }}\n </el-button>\n </el-button-group>\n </div>\n </slot>\n </div>\n <div v-if=\"validatedRange.length === 0\" :class=\"ns.e('body')\">\n <date-table :date=\"date\" :selected-day=\"realSelectedDay\" @pick=\"pickDay\">\n <template v-if=\"$slots.dateCell\" #dateCell=\"data\">\n <slot name=\"dateCell\" v-bind=\"data\"></slot>\n </template>\n </date-table>\n </div>\n <div v-else :class=\"ns.e('body')\">\n <date-table\n v-for=\"(range_, index) in validatedRange\"\n :key=\"index\"\n :date=\"range_[0]\"\n :selected-day=\"realSelectedDay\"\n :range=\"range_\"\n :hide-header=\"index !== 0\"\n @pick=\"pickDay\"\n >\n <template v-if=\"$slots.dateCell\" #dateCell=\"data\">\n <slot name=\"dateCell\" v-bind=\"data\"></slot>\n </template>\n </date-table>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { ref, computed, defineComponent } from 'vue'\nimport dayjs from 'dayjs'\nimport { ElButton, ElButtonGroup } from '@element-plus/components/button'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { debugWarn } from '@element-plus/utils'\nimport DateTable from './date-table.vue'\nimport { calendarProps, calendarEmits } from './calendar'\n\nimport type { ComputedRef } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\ntype DateType =\n | 'prev-month'\n | 'next-month'\n | 'prev-year'\n | 'next-year'\n | 'today'\n\nexport default defineComponent({\n name: 'ElCalendar',\n\n components: {\n DateTable,\n ElButton,\n ElButtonGroup,\n },\n\n props: calendarProps,\n emits: calendarEmits,\n\n setup(props, { emit }) {\n const ns = useNamespace('calendar')\n\n const { t, lang } = useLocale()\n const selectedDay = ref<Dayjs>()\n const now = dayjs().locale(lang.value)\n\n const prevMonthDayjs = computed(() => {\n return date.value.subtract(1, 'month').date(1)\n })\n const curMonthDatePrefix = computed(() => {\n return dayjs(date.value).locale(lang.value).format('YYYY-MM')\n })\n\n const nextMonthDayjs = computed(() => {\n return date.value.add(1, 'month').date(1)\n })\n\n const prevYearDayjs = computed(() => {\n return date.value.subtract(1, 'year').date(1)\n })\n\n const nextYearDayjs = computed(() => {\n return date.value.add(1, 'year').date(1)\n })\n\n const i18nDate = computed(() => {\n const pickedMonth = `el.datepicker.month${date.value.format('M')}`\n return `${date.value.year()} ${t('el.datepicker.year')} ${t(pickedMonth)}`\n })\n\n const realSelectedDay = computed<Dayjs | undefined>({\n get() {\n if (!props.modelValue) return selectedDay.value\n return date.value\n },\n set(val) {\n if (!val) return\n selectedDay.value = val\n const result = val.toDate()\n\n emit('input', result)\n emit('update:modelValue', result)\n },\n })\n\n const date: ComputedRef<Dayjs> = computed(() => {\n if (!props.modelValue) {\n if (realSelectedDay.value) {\n return realSelectedDay.value\n } else if (validatedRange.value.length) {\n return validatedRange.value[0][0]\n }\n return now\n } else {\n return dayjs(props.modelValue).locale(lang.value)\n }\n })\n\n // https://github.com/element-plus/element-plus/issues/3155\n // Calculate the validate date range according to the start and end dates\n const calculateValidatedDateRange = (\n startDayjs: Dayjs,\n endDayjs: Dayjs\n ): [Dayjs, Dayjs][] => {\n const firstDay = startDayjs.startOf('week')\n const lastDay = endDayjs.endOf('week')\n const firstMonth = firstDay.get('month')\n const lastMonth = lastDay.get('month')\n\n // Current mouth\n if (firstMonth === lastMonth) {\n return [[firstDay, lastDay]]\n }\n // Two adjacent months\n else if (firstMonth + 1 === lastMonth) {\n const firstMonthLastDay = firstDay.endOf('month')\n const lastMonthFirstDay = lastDay.startOf('month')\n\n // Whether the last day of the first month and the first day of the last month is in the same week\n const isSameWeek = firstMonthLastDay.isSame(lastMonthFirstDay, 'week')\n const lastMonthStartDay = isSameWeek\n ? lastMonthFirstDay.add(1, 'week')\n : lastMonthFirstDay\n\n return [\n [firstDay, firstMonthLastDay],\n [lastMonthStartDay.startOf('week'), lastDay],\n ]\n }\n // Three consecutive months (compatible: 2021-01-30 to 2021-02-28)\n else if (firstMonth + 2 === lastMonth) {\n const firstMonthLastDay = firstDay.endOf('month')\n const secondMonthFirstDay = firstDay.add(1, 'month').startOf('month')\n\n // Whether the last day of the first month and the second month is in the same week\n const secondMonthStartDay = firstMonthLastDay.isSame(\n secondMonthFirstDay,\n 'week'\n )\n ? secondMonthFirstDay.add(1, 'week')\n : secondMonthFirstDay\n\n const secondMonthLastDay = secondMonthStartDay.endOf('month')\n const lastMonthFirstDay = lastDay.startOf('month')\n\n // Whether the last day of the second month and the last day of the last month is in the same week\n const lastMonthStartDay = secondMonthLastDay.isSame(\n lastMonthFirstDay,\n 'week'\n )\n ? lastMonthFirstDay.add(1, 'week')\n : lastMonthFirstDay\n\n return [\n [firstDay, firstMonthLastDay],\n [secondMonthStartDay.startOf('week'), secondMonthLastDay],\n [lastMonthStartDay.startOf('week'), lastDay],\n ]\n }\n // Other cases\n else {\n debugWarn(\n 'ElCalendar',\n 'start time and end time interval must not exceed two months'\n )\n return []\n }\n }\n\n // if range is valid, we get a two-digit array\n const validatedRange = computed(() => {\n if (!props.range) return []\n const rangeArrDayjs = props.range.map((_) => dayjs(_).locale(lang.value))\n const [startDayjs, endDayjs] = rangeArrDayjs\n if (startDayjs.isAfter(endDayjs)) {\n debugWarn('ElCalendar', 'end time should be greater than start time')\n return []\n }\n if (startDayjs.isSame(endDayjs, 'month')) {\n // same month\n return calculateValidatedDateRange(startDayjs, endDayjs)\n } else {\n // two months\n if (startDayjs.add(1, 'month').month() !== endDayjs.month()) {\n debugWarn(\n 'ElCalendar',\n 'start time and end time interval must not exceed two months'\n )\n return []\n }\n return calculateValidatedDateRange(startDayjs, endDayjs)\n }\n })\n\n const pickDay = (day: Dayjs) => {\n realSelectedDay.value = day\n }\n\n const selectDate = (type: DateType) => {\n let day: Dayjs\n if (type === 'prev-month') {\n day = prevMonthDayjs.value\n } else if (type === 'next-month') {\n day = nextMonthDayjs.value\n } else if (type === 'prev-year') {\n day = prevYearDayjs.value\n } else if (type === 'next-year') {\n day = nextYearDayjs.value\n } else {\n day = now\n }\n\n if (day.isSame(date.value, 'day')) return\n pickDay(day)\n }\n\n return {\n selectedDay,\n curMonthDatePrefix,\n i18nDate,\n realSelectedDay,\n date,\n validatedRange,\n pickDay,\n selectDate,\n t,\n\n ns,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_createElementVNode","_renderSlot","_createVNode","_Fragment","_createBlock"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"date-table2.mjs","sources":["../../../../../../packages/components/calendar/src/date-table.vue"],"sourcesContent":["<template>\n <table\n :class=\"[nsTable.b(), nsTable.is('range', isInRange)]\"\n cellspacing=\"0\"\n cellpadding=\"0\"\n >\n <thead v-if=\"!hideHeader\">\n <th v-for=\"day in weekDays\" :key=\"day\">{{ day }}</th>\n </thead>\n\n <tbody>\n <tr\n v-for=\"(row, index) in rows\"\n :key=\"index\"\n :class=\"{\n [nsTable.e('row')]: true,\n [nsTable.em('row', 'hide-border')]: index === 0 && hideHeader,\n }\"\n >\n <td\n v-for=\"(cell, key) in row\"\n :key=\"key\"\n :class=\"getCellClass(cell)\"\n @click=\"handlePickDay(cell)\"\n >\n <div :class=\"nsDay.b()\">\n <slot name=\"dateCell\" :data=\"getSlotData(cell)\">\n <span>{{ cell.text }}</span>\n </slot>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent } from 'vue'\nimport dayjs from 'dayjs'\nimport localeData from 'dayjs/plugin/localeData'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { rangeArr } from '@element-plus/components/time-picker'\nimport { dateTableProps, dateTableEmits } from './date-table'\nimport type { Dayjs } from 'dayjs'\ndayjs.extend(localeData)\n\ntype CellType = 'next' | 'prev' | 'current'\ninterface Cell {\n text: number\n type: CellType\n}\n\nconst WEEK_DAYS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'] as const\n\nexport const getPrevMonthLastDays = (date: Dayjs, count: number) => {\n const lastDay = date.subtract(1, 'month').endOf('month').date()\n return rangeArr(count).map((_, index) => lastDay - (count - index - 1))\n}\n\nexport const getMonthDays = (date: Dayjs) => {\n const days = date.daysInMonth()\n return rangeArr(days).map((_, index) => index + 1)\n}\n\nconst toNestedArr = (days: Cell[]) =>\n rangeArr(days.length / 7).map((index) => {\n const start = index * 7\n return days.slice(start, start + 7)\n })\n\nexport default defineComponent({\n props: dateTableProps,\n emits: dateTableEmits,\n\n setup(props, { emit }) {\n const { t, lang } = useLocale()\n const nsTable = useNamespace('calendar-table')\n const nsDay = useNamespace('calendar-day')\n\n const now = dayjs().locale(lang.value)\n // todo better way to get Day.js locale object\n const firstDayOfWeek: number = (now as any).$locale().weekStart || 0\n\n const isInRange = computed(() => !!props.range && !!props.range.length)\n\n const rows = computed(() => {\n let days: Cell[] = []\n if (isInRange.value) {\n const [start, end] = props.range!\n const currentMonthRange: Cell[] = rangeArr(\n end.date() - start.date() + 1\n ).map((index) => ({\n text: start.date() + index,\n type: 'current',\n }))\n\n let remaining = currentMonthRange.length % 7\n remaining = remaining === 0 ? 0 : 7 - remaining\n const nextMonthRange: Cell[] = rangeArr(remaining).map((_, index) => ({\n text: index + 1,\n type: 'next',\n }))\n days = currentMonthRange.concat(nextMonthRange)\n } else {\n const firstDay = props.date.startOf('month').day() || 7\n const prevMonthDays: Cell[] = getPrevMonthLastDays(\n props.date,\n firstDay - firstDayOfWeek\n ).map((day) => ({\n text: day,\n type: 'prev',\n }))\n const currentMonthDays: Cell[] = getMonthDays(props.date).map(\n (day) => ({\n text: day,\n type: 'current',\n })\n )\n days = [...prevMonthDays, ...currentMonthDays]\n const nextMonthDays: Cell[] = rangeArr(42 - days.length).map(\n (_, index) => ({\n text: index + 1,\n type: 'next',\n })\n )\n days = days.concat(nextMonthDays)\n }\n return toNestedArr(days)\n })\n\n const weekDays = computed(() => {\n const start = firstDayOfWeek\n if (start === 0) {\n return WEEK_DAYS.map((_) => t(`el.datepicker.weeks.${_}`))\n } else {\n return WEEK_DAYS.slice(start)\n .concat(WEEK_DAYS.slice(0, start))\n .map((_) => t(`el.datepicker.weeks.${_}`))\n }\n })\n\n const getFormattedDate = (day: number, type: CellType): Dayjs => {\n switch (type) {\n case 'prev':\n return props.date.startOf('month').subtract(1, 'month').date(day)\n case 'next':\n return props.date.startOf('month').add(1, 'month').date(day)\n case 'current':\n return props.date.date(day)\n }\n }\n\n const getCellClass = ({ text, type }: Cell) => {\n const classes: string[] = [type]\n if (type === 'current') {\n const date = getFormattedDate(text, type)\n if (date.isSame(props.selectedDay, 'day')) {\n classes.push('is-selected')\n }\n if (date.isSame(now, 'day')) {\n classes.push('is-today')\n }\n }\n return classes\n }\n\n const handlePickDay = ({ text, type }: Cell) => {\n const date = getFormattedDate(text, type)\n emit('pick', date)\n }\n\n const getSlotData = ({ text, type }: Cell) => {\n const day = getFormattedDate(text, type)\n return {\n isSelected: day.isSame(props.selectedDay),\n type: `${type}-month`,\n day: day.format('YYYY-MM-DD'),\n date: day.toDate(),\n }\n }\n\n return {\n isInRange,\n weekDays,\n rows,\n getCellClass,\n handlePickDay,\n getSlotData,\n\n nsTable,\n nsDay,\n }\n },\n})\n</script>\n"],"names":["_openBlock","_Fragment","_renderList","_createCommentVNode","_createElementBlock","_normalizeClass"],"mappings":";;;;;;;;;;;AA4CA,MAAM,OAAO;AAQb,MAAM,YAAY,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO;MAEhD,uBAAuB,CAAC,MAAa,UAAkB;AAClE,QAAM,UAAU,KAAK,SAAS,GAAG,SAAS,MAAM,SAAS;AACzD,SAAO,SAAS,OAAO,IAAI,CAAC,GAAG,UAAU,mBAAmB,QAAQ;AAAA;MAGzD,eAAe,CAAC,SAAgB;AAC3C,QAAM,OAAO,KAAK;AAClB,SAAO,SAAS,MAAM,IAAI,CAAC,GAAG,UAAU,QAAQ;AAAA;AAGlD,MAAM,cAAc,CAAC,SACnB,SAAS,KAAK,SAAS,GAAG,IAAI,CAAC,UAAU;AACvC,QAAM,QAAQ,QAAQ;AACtB,SAAO,KAAK,MAAM,OAAO,QAAQ;AAAA;AAGrC,MAAK,YAAa,gBAAa;AAAA,EAC7B,OAAO;AAAA,EACP,OAAO;AAAA,EAEP,MAAM,OAAO,EAAE,QAAQ;AACrB,UAAM,EAAE,GAAG,SAAS;AACpB,UAAM,UAAU,aAAa;AAC7B,UAAM,QAAQ,aAAa;AAE3B,UAAM,MAAM,QAAQ,OAAO,KAAK;AAEhC,UAAM,iBAA0B,IAAY,UAAU,aAAa;AAEnE,UAAM,YAAY,SAAS,MAAM,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,MAAM,MAAM;AAEhE,UAAM,OAAO,SAAS,MAAM;AAC1B,UAAI,OAAe;AACnB,UAAI,UAAU,OAAO;AACnB,cAAM,CAAC,OAAO,OAAO,MAAM;AAC3B,cAAM,oBAA4B,SAChC,IAAI,SAAS,MAAM,SAAS,GAC5B,IAAI,CAAC;AAAW,UAChB,MAAM,MAAM,SAAS;AAAA,UACrB,MAAM;AAAA;AAGR,YAAI,YAAY,kBAAkB,SAAS;AAC3C,oBAAY,cAAc,IAAI,IAAI,IAAI;AACtC,cAAM,iBAAyB,SAAS,WAAW,IAAI,CAAC,GAAG;AAAW,UACpE,MAAM,QAAQ;AAAA,UACd,MAAM;AAAA;AAER,eAAO,kBAAkB,OAAO;AAAA,aAC3B;AACL,cAAM,WAAW,MAAM,KAAK,QAAQ,SAAS,SAAS;AACtD,cAAM,gBAAwB,qBAC5B,MAAM,MACN,WAAW,gBACX,IAAI,CAAC;AAAS,UACd,MAAM;AAAA,UACN,MAAM;AAAA;AAER,cAAM,mBAA2B,aAAa,MAAM,MAAM,IACxD,CAAC;AAAS,UACR,MAAM;AAAA,UACN,MAAM;AAAA;AAGV,eAAO,CAAC,GAAG,eAAe,GAAG;AAC7B,cAAM,gBAAwB,SAAS,KAAK,KAAK,QAAQ,IACvD,CAAC,GAAG;AAAW,UACb,MAAM,QAAQ;AAAA,UACd,MAAM;AAAA;AAGV,eAAO,KAAK,OAAO;AAAA;AAErB,aAAO,YAAY;AAAA;AAGrB,UAAM,WAAW,SAAS,MAAM;AAC9B,YAAM,QAAQ;AACd,UAAI,UAAU,GAAG;AACf,eAAO,UAAU,IAAI,CAAC,MAAM,EAAE,uBAAuB;AAAA,aAChD;AACL,eAAO,UAAU,MAAM,OACpB,OAAO,UAAU,MAAM,GAAG,QAC1B,IAAI,CAAC,MAAM,EAAE,uBAAuB;AAAA;AAAA;AAI3C,UAAM,mBAAmB,CAAC,KAAa,SAA0B;AAC/D,cAAQ;AAAA,aACD;AACH,iBAAO,MAAM,KAAK,QAAQ,SAAS,SAAS,GAAG,SAAS,KAAK;AAAA,aAC1D;AACH,iBAAO,MAAM,KAAK,QAAQ,SAAS,IAAI,GAAG,SAAS,KAAK;AAAA,aACrD;AACH,iBAAO,MAAM,KAAK,KAAK;AAAA;AAAA;AAI7B,UAAM,eAAe,CAAC,EAAE,MAAM,WAAiB;AAC7C,YAAM,UAAoB,CAAC;AAC3B,UAAI,SAAS,WAAW;AACtB,cAAM,OAAO,iBAAiB,MAAM;AACpC,YAAI,KAAK,OAAO,MAAM,aAAa,QAAQ;AACzC,kBAAQ,KAAK;AAAA;AAEf,YAAI,KAAK,OAAO,KAAK,QAAQ;AAC3B,kBAAQ,KAAK;AAAA;AAAA;AAGjB,aAAO;AAAA;AAGT,UAAM,gBAAgB,CAAC,EAAE,MAAM,WAAiB;AAC9C,YAAM,OAAO,iBAAiB,MAAM;AACpC,WAAK,QAAQ;AAAA;AAGf,UAAM,cAAc,CAAC,EAAE,MAAM,WAAiB;AAC5C,YAAM,MAAM,iBAAiB,MAAM;AACnC,aAAO;AAAA,QACL,YAAY,IAAI,OAAO,MAAM;AAAA,QAC7B,MAAM,GAAG;AAAA,QACT,KAAK,IAAI,OAAO;AAAA,QAChB,MAAM,IAAI;AAAA;AAAA;AAId,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA;AAAA;AAAA;;;2BA7LJ,wBAgCQ;SA/BAA,gCAAY,SAAI;AAAA,IACtB,sBAAe;AAAA,IACf,aAAY;AAAA;;wDAGV,SAAqD;AAAA,2CAArDC,UAAqD,MAArBC,WAAK,eAAK,CAAG;;;UAG/CC,mBAsBQ;AAAA,gCArBN;AAAA,qDAoBK;eAlBGH,aAAKI;AAAA,UACV,KAAK;AAAA,iBAAeC,eAAS;AAAA,aAA2B,aAAQ,EAAE;AAAA;;;+CAKnEJ,UAWK;mBATGD,aAAGI;AAAA,cACR;AAAA,cACA,OAAKC,eAAE,kBAAc;AAAA;eAEtB;AAAA,iCAAW,OAAE;AAAA;iBACX;AAAA,2BAA6B,aAAY,YAAI;AAAA,wBAEtC;AAAA,mBADL;AAAA;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"date-table2.mjs","sources":["../../../../../../packages/components/calendar/src/date-table.vue"],"sourcesContent":["<template>\n <table\n :class=\"[nsTable.b(), nsTable.is('range', isInRange)]\"\n cellspacing=\"0\"\n cellpadding=\"0\"\n >\n <thead v-if=\"!hideHeader\">\n <th v-for=\"day in weekDays\" :key=\"day\">{{ day }}</th>\n </thead>\n\n <tbody>\n <tr\n v-for=\"(row, index) in rows\"\n :key=\"index\"\n :class=\"{\n [nsTable.e('row')]: true,\n [nsTable.em('row', 'hide-border')]: index === 0 && hideHeader,\n }\"\n >\n <td\n v-for=\"(cell, key) in row\"\n :key=\"key\"\n :class=\"getCellClass(cell)\"\n @click=\"handlePickDay(cell)\"\n >\n <div :class=\"nsDay.b()\">\n <slot name=\"dateCell\" :data=\"getSlotData(cell)\">\n <span>{{ cell.text }}</span>\n </slot>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent } from 'vue'\nimport dayjs from 'dayjs'\nimport localeData from 'dayjs/plugin/localeData'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { rangeArr } from '@element-plus/components/time-picker'\nimport { dateTableProps, dateTableEmits } from './date-table'\nimport type { Dayjs } from 'dayjs'\ndayjs.extend(localeData)\n\ntype CellType = 'next' | 'prev' | 'current'\ninterface Cell {\n text: number\n type: CellType\n}\n\nconst WEEK_DAYS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'] as const\n\nexport const getPrevMonthLastDays = (date: Dayjs, count: number) => {\n const lastDay = date.subtract(1, 'month').endOf('month').date()\n return rangeArr(count).map((_, index) => lastDay - (count - index - 1))\n}\n\nexport const getMonthDays = (date: Dayjs) => {\n const days = date.daysInMonth()\n return rangeArr(days).map((_, index) => index + 1)\n}\n\nconst toNestedArr = (days: Cell[]) =>\n rangeArr(days.length / 7).map((index) => {\n const start = index * 7\n return days.slice(start, start + 7)\n })\n\nexport default defineComponent({\n props: dateTableProps,\n emits: dateTableEmits,\n\n setup(props, { emit }) {\n const { t, lang } = useLocale()\n const nsTable = useNamespace('calendar-table')\n const nsDay = useNamespace('calendar-day')\n\n const now = dayjs().locale(lang.value)\n // todo better way to get Day.js locale object\n const firstDayOfWeek: number = (now as any).$locale().weekStart || 0\n\n const isInRange = computed(() => !!props.range && !!props.range.length)\n\n const rows = computed(() => {\n let days: Cell[] = []\n if (isInRange.value) {\n const [start, end] = props.range!\n const currentMonthRange: Cell[] = rangeArr(\n end.date() - start.date() + 1\n ).map((index) => ({\n text: start.date() + index,\n type: 'current',\n }))\n\n let remaining = currentMonthRange.length % 7\n remaining = remaining === 0 ? 0 : 7 - remaining\n const nextMonthRange: Cell[] = rangeArr(remaining).map((_, index) => ({\n text: index + 1,\n type: 'next',\n }))\n days = currentMonthRange.concat(nextMonthRange)\n } else {\n const firstDay = props.date.startOf('month').day() || 7\n const prevMonthDays: Cell[] = getPrevMonthLastDays(\n props.date,\n firstDay - firstDayOfWeek\n ).map((day) => ({\n text: day,\n type: 'prev',\n }))\n const currentMonthDays: Cell[] = getMonthDays(props.date).map(\n (day) => ({\n text: day,\n type: 'current',\n })\n )\n days = [...prevMonthDays, ...currentMonthDays]\n const nextMonthDays: Cell[] = rangeArr(42 - days.length).map(\n (_, index) => ({\n text: index + 1,\n type: 'next',\n })\n )\n days = days.concat(nextMonthDays)\n }\n return toNestedArr(days)\n })\n\n const weekDays = computed(() => {\n const start = firstDayOfWeek\n if (start === 0) {\n return WEEK_DAYS.map((_) => t(`el.datepicker.weeks.${_}`))\n } else {\n return WEEK_DAYS.slice(start)\n .concat(WEEK_DAYS.slice(0, start))\n .map((_) => t(`el.datepicker.weeks.${_}`))\n }\n })\n\n const getFormattedDate = (day: number, type: CellType): Dayjs => {\n switch (type) {\n case 'prev':\n return props.date.startOf('month').subtract(1, 'month').date(day)\n case 'next':\n return props.date.startOf('month').add(1, 'month').date(day)\n case 'current':\n return props.date.date(day)\n }\n }\n\n const getCellClass = ({ text, type }: Cell) => {\n const classes: string[] = [type]\n if (type === 'current') {\n const date = getFormattedDate(text, type)\n if (date.isSame(props.selectedDay, 'day')) {\n classes.push('is-selected')\n }\n if (date.isSame(now, 'day')) {\n classes.push('is-today')\n }\n }\n return classes\n }\n\n const handlePickDay = ({ text, type }: Cell) => {\n const date = getFormattedDate(text, type)\n emit('pick', date)\n }\n\n const getSlotData = ({ text, type }: Cell) => {\n const day = getFormattedDate(text, type)\n return {\n isSelected: day.isSame(props.selectedDay),\n type: `${type}-month`,\n day: day.format('YYYY-MM-DD'),\n date: day.toDate(),\n }\n }\n\n return {\n isInRange,\n weekDays,\n rows,\n getCellClass,\n handlePickDay,\n getSlotData,\n\n nsTable,\n nsDay,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_Fragment","_toDisplayString","_createElementVNode","_renderSlot"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"card2.mjs","sources":["../../../../../../packages/components/card/src/card.vue"],"sourcesContent":["<template>\n <div :class=\"[ns.b(), ns.is(`${shadow}-shadow`)]\">\n <div v-if=\"$slots.header || header\" :class=\"ns.e('header')\">\n <slot name=\"header\">{{ header }}</slot>\n </div>\n <div :class=\"ns.e('body')\" :style=\"bodyStyle\">\n <slot></slot>\n </div>\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { cardProps } from './card'\n\nexport default defineComponent({\n name: 'ElCard',\n props: cardProps,\n setup() {\n const ns = useNamespace('card')\n\n return {\n ns,\n }\n },\n})\n</script>\n"],"names":["_openBlock","_createCommentVNode","_normalizeClass"],"mappings":";;;;;;AAeA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AACN,UAAM,KAAK,aAAa;AAExB,WAAO;AAAA,MACL;AAAA;AAAA;AAAA;2BArBJ,wBAOM;SAPKA,gCAAW,OAAK;AAAA;KACd;AAAA,0BAAX;MAAqC,KAAK;AAAA;OACxC;AAAA,4CAAuB;AAAA;;aAEzBC,mBAEM;AAAA,uBAFK,OAAE;AAAA,MAAe,OAAKC,eAAE;AAAA;OACjC;AAAA;;;;;;;;"}
1
+ {"version":3,"file":"card2.mjs","sources":["../../../../../../packages/components/card/src/card.vue"],"sourcesContent":["<template>\n <div :class=\"[ns.b(), ns.is(`${shadow}-shadow`)]\">\n <div v-if=\"$slots.header || header\" :class=\"ns.e('header')\">\n <slot name=\"header\">{{ header }}</slot>\n </div>\n <div :class=\"ns.e('body')\" :style=\"bodyStyle\">\n <slot></slot>\n </div>\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { cardProps } from './card'\n\nexport default defineComponent({\n name: 'ElCard',\n props: cardProps,\n setup() {\n const ns = useNamespace('card')\n\n return {\n ns,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_renderSlot","_createElementVNode","_normalizeStyle"],"mappings":";;;;;;AAeA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AACN,UAAM,KAAK,aAAa;AAExB,WAAO;AAAA,MACL;AAAA;AAAA;AAAA;;sBArBJA,mBAOM;AAAA,IAPA,OAAKC,gBAAG,QAAG,KAAK,QAAG,GAAE,GAAI;AAAA;IAClB,YAAO,UAAU,4BAA5BD,mBAEM;AAAA;MAF+B,OAAKC,eAAE,QAAG,EAAC;AAAA;MAC9CC,WAAuC,2BAAvC,MAAuC;AAAA,wCAAhB,cAAM;AAAA;AAAA;IAE/BC,mBAEM;AAAA,MAFA,OAAKF,eAAE,QAAG,EAAC;AAAA,MAAW,OAAKG,eAAE;AAAA;MACjCF,WAAa;AAAA;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"item.mjs","sources":["../../../../../../packages/components/carousel/src/item.vue"],"sourcesContent":["<template>\n <div\n v-show=\"data.ready\"\n :class=\"[\n ns.e('item'),\n ns.is('active', data.active),\n ns.is('in-stage', data.inStage),\n ns.is('hover', data.hover),\n ns.is('animating', data.animating),\n { [ns.em('item', 'card')]: type === 'card' },\n ]\"\n :style=\"itemStyle\"\n @click=\"handleItemClick\"\n >\n <div\n v-if=\"type === 'card'\"\n v-show=\"!data.active\"\n :class=\"ns.e('mask')\"\n ></div>\n <slot></slot>\n </div>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n reactive,\n onMounted,\n inject,\n computed,\n toRefs,\n getCurrentInstance,\n onUnmounted,\n} from 'vue'\nimport { debugWarn } from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport type { CSSProperties } from 'vue'\nimport type { InjectCarouselScope, ICarouselItemProps } from './carousel'\n\nconst CARD_SCALE = 0.83\nexport default defineComponent({\n name: 'ElCarouselItem',\n props: {\n name: { type: String, default: '' },\n label: {\n type: [String, Number],\n default: '',\n },\n },\n setup(props: ICarouselItemProps) {\n const ns = useNamespace('carousel')\n // instance\n const instance = getCurrentInstance()\n\n // data\n const data = reactive({\n hover: false,\n translate: 0,\n scale: 1,\n active: false,\n ready: false,\n inStage: false,\n animating: false,\n })\n\n // inject\n const injectCarouselScope: InjectCarouselScope = inject(\n 'injectCarouselScope'\n )\n\n // computed\n const parentDirection = computed(() => {\n return injectCarouselScope.direction\n })\n\n const itemStyle = computed(() => {\n const translateType =\n parentDirection.value === 'vertical' ? 'translateY' : 'translateX'\n const value = `${translateType}(${data.translate}px) scale(${data.scale})`\n const style: CSSProperties = {\n transform: value,\n }\n return style\n })\n\n // methods\n\n function processIndex(index, activeIndex, length) {\n if (activeIndex === 0 && index === length - 1) {\n return -1\n } else if (activeIndex === length - 1 && index === 0) {\n return length\n } else if (index < activeIndex - 1 && activeIndex - index >= length / 2) {\n return length + 1\n } else if (index > activeIndex + 1 && index - activeIndex >= length / 2) {\n return -2\n }\n return index\n }\n\n function calcCardTranslate(index, activeIndex) {\n const parentWidth = injectCarouselScope.root.value?.offsetWidth || 0\n if (data.inStage) {\n return (\n (parentWidth * ((2 - CARD_SCALE) * (index - activeIndex) + 1)) / 4\n )\n } else if (index < activeIndex) {\n return (-(1 + CARD_SCALE) * parentWidth) / 4\n } else {\n return ((3 + CARD_SCALE) * parentWidth) / 4\n }\n }\n\n function calcTranslate(index, activeIndex, isVertical) {\n const distance =\n (isVertical\n ? injectCarouselScope.root.value?.offsetHeight\n : injectCarouselScope.root.value?.offsetWidth) || 0\n return distance * (index - activeIndex)\n }\n\n const translateItem = (\n index: number,\n activeIndex: number,\n oldIndex: number\n ) => {\n const parentType = injectCarouselScope.type\n const length = injectCarouselScope.items.value.length\n if (parentType !== 'card' && oldIndex !== undefined) {\n data.animating = index === activeIndex || index === oldIndex\n }\n if (index !== activeIndex && length > 2 && injectCarouselScope.loop) {\n index = processIndex(index, activeIndex, length)\n }\n if (parentType === 'card') {\n if (parentDirection.value === 'vertical') {\n debugWarn(\n 'Carousel',\n 'vertical direction is not supported in card mode'\n )\n }\n data.inStage = Math.round(Math.abs(index - activeIndex)) <= 1\n data.active = index === activeIndex\n data.translate = calcCardTranslate(index, activeIndex)\n data.scale = data.active ? 1 : CARD_SCALE\n } else {\n data.active = index === activeIndex\n const isVertical = parentDirection.value === 'vertical'\n data.translate = calcTranslate(index, activeIndex, isVertical)\n }\n data.ready = true\n }\n\n function handleItemClick() {\n if (injectCarouselScope && injectCarouselScope.type === 'card') {\n const index = injectCarouselScope.items.value\n .map((d) => d.uid)\n .indexOf(instance.uid)\n injectCarouselScope.setActiveItem(index)\n }\n }\n\n // lifecycle\n onMounted(() => {\n if (injectCarouselScope.addItem) {\n injectCarouselScope.addItem({\n uid: instance.uid,\n ...props,\n ...toRefs(data),\n translateItem,\n })\n }\n })\n\n onUnmounted(() => {\n if (injectCarouselScope.removeItem) {\n injectCarouselScope.removeItem(instance.uid)\n }\n })\n\n return {\n data,\n itemStyle,\n translateItem,\n type: injectCarouselScope.type,\n handleItemClick,\n ns,\n }\n },\n})\n</script>\n"],"names":[],"mappings":";;;;;;;AAsCA,MAAM,aAAa;AACnB,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,IACL,MAAM,EAAE,MAAM,QAAQ,SAAS;AAAA,IAC/B,OAAO;AAAA,MACL,MAAM,CAAC,QAAQ;AAAA,MACf,SAAS;AAAA;AAAA;AAAA,EAGb,MAAM,OAA2B;AAC/B,UAAM,KAAK,aAAa;AAExB,UAAM,WAAW;AAGjB,UAAM,OAAO,SAAS;AAAA,MACpB,OAAO;AAAA,MACP,WAAW;AAAA,MACX,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA;AAIb,UAAM,sBAA2C,OAC/C;AAIF,UAAM,kBAAkB,SAAS,MAAM;AACrC,aAAO,oBAAoB;AAAA;AAG7B,UAAM,YAAY,SAAS,MAAM;AAC/B,YAAM,gBACJ,gBAAgB,UAAU,aAAa,eAAe;AACxD,YAAM,QAAQ,GAAG,iBAAiB,KAAK,sBAAsB,KAAK;AAClE,YAAM,QAAuB;AAAA,QAC3B,WAAW;AAAA;AAEb,aAAO;AAAA;AAKT,0BAAsB,OAAO,aAAa,QAAQ;AAChD,UAAI,gBAAgB,KAAK,UAAU,SAAS,GAAG;AAC7C,eAAO;AAAA,iBACE,gBAAgB,SAAS,KAAK,UAAU,GAAG;AACpD,eAAO;AAAA,iBACE,QAAQ,cAAc,KAAK,cAAc,SAAS,SAAS,GAAG;AACvE,eAAO,SAAS;AAAA,iBACP,QAAQ,cAAc,KAAK,QAAQ,eAAe,SAAS,GAAG;AACvE,eAAO;AAAA;AAET,aAAO;AAAA;AAGT,+BAA2B,OAAO,aAAa;AAC7C,YAAM;AACN;AACE,eACG;AAAgE;AAGnE;AAA2C;AAE3C;AAA0C;AAAA;AAI9C;AACE,yDAE0B;AAE1B;AAA2B;AAG7B;AAKE;AACA,+CAAyC;AACzC,yBAAmB;AACjB,4DAAoD;AAAA;AAEtD,mCAA6B,kCAAkC;AAC7D;AAAyC;AAE3C;AACE;AACE,oBACE;AACA;AAGJ;AACA;AACA,aAAK,8BAA8B;AACnC,aAAK;AAA0B,aAC1B;AACL,aAAK,mBAAmB;AACxB;AACA,aAAK;AAA8C;AAErD;AAAa;AAGf;AACE;AACE;AAGA;AAAkC;AAAA;AAKtC;AACE;AACE;AAA4B,UAC1B;AAAc;AACX,aACA;AAAO,UACV;AAAA;AAAA;AAAA;AAKN;AACE;AACE;AAAwC;AAAA;AAI5C;AAAO,MACL;AAAA;AACA,MACA;AAAA,MACA;AAA0B,MAC1B;AAAA,MACA;AAAA;AAAA;AAAA;;;AAtLI,2BAAc;AAAA;AAAqB;AAAiD,MAAqB,QAAG;AAAiB,MAAc,QAAG,GAAE,cAAc;AAAA,WAA0B,MAAG;AAAqB;;;AAShN;;AAGE;;AAEA;;AADQ;;AAGH;;AAjBK;;;;;;;;;"}
1
+ {"version":3,"file":"item.mjs","sources":["../../../../../../packages/components/carousel/src/item.vue"],"sourcesContent":["<template>\n <div\n v-show=\"data.ready\"\n :class=\"[\n ns.e('item'),\n ns.is('active', data.active),\n ns.is('in-stage', data.inStage),\n ns.is('hover', data.hover),\n ns.is('animating', data.animating),\n { [ns.em('item', 'card')]: type === 'card' },\n ]\"\n :style=\"itemStyle\"\n @click=\"handleItemClick\"\n >\n <div\n v-if=\"type === 'card'\"\n v-show=\"!data.active\"\n :class=\"ns.e('mask')\"\n ></div>\n <slot></slot>\n </div>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n reactive,\n onMounted,\n inject,\n computed,\n toRefs,\n getCurrentInstance,\n onUnmounted,\n} from 'vue'\nimport { debugWarn } from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport type { CSSProperties } from 'vue'\nimport type { InjectCarouselScope, ICarouselItemProps } from './carousel'\n\nconst CARD_SCALE = 0.83\nexport default defineComponent({\n name: 'ElCarouselItem',\n props: {\n name: { type: String, default: '' },\n label: {\n type: [String, Number],\n default: '',\n },\n },\n setup(props: ICarouselItemProps) {\n const ns = useNamespace('carousel')\n // instance\n const instance = getCurrentInstance()\n\n // data\n const data = reactive({\n hover: false,\n translate: 0,\n scale: 1,\n active: false,\n ready: false,\n inStage: false,\n animating: false,\n })\n\n // inject\n const injectCarouselScope: InjectCarouselScope = inject(\n 'injectCarouselScope'\n )\n\n // computed\n const parentDirection = computed(() => {\n return injectCarouselScope.direction\n })\n\n const itemStyle = computed(() => {\n const translateType =\n parentDirection.value === 'vertical' ? 'translateY' : 'translateX'\n const value = `${translateType}(${data.translate}px) scale(${data.scale})`\n const style: CSSProperties = {\n transform: value,\n }\n return style\n })\n\n // methods\n\n function processIndex(index, activeIndex, length) {\n if (activeIndex === 0 && index === length - 1) {\n return -1\n } else if (activeIndex === length - 1 && index === 0) {\n return length\n } else if (index < activeIndex - 1 && activeIndex - index >= length / 2) {\n return length + 1\n } else if (index > activeIndex + 1 && index - activeIndex >= length / 2) {\n return -2\n }\n return index\n }\n\n function calcCardTranslate(index, activeIndex) {\n const parentWidth = injectCarouselScope.root.value?.offsetWidth || 0\n if (data.inStage) {\n return (\n (parentWidth * ((2 - CARD_SCALE) * (index - activeIndex) + 1)) / 4\n )\n } else if (index < activeIndex) {\n return (-(1 + CARD_SCALE) * parentWidth) / 4\n } else {\n return ((3 + CARD_SCALE) * parentWidth) / 4\n }\n }\n\n function calcTranslate(index, activeIndex, isVertical) {\n const distance =\n (isVertical\n ? injectCarouselScope.root.value?.offsetHeight\n : injectCarouselScope.root.value?.offsetWidth) || 0\n return distance * (index - activeIndex)\n }\n\n const translateItem = (\n index: number,\n activeIndex: number,\n oldIndex: number\n ) => {\n const parentType = injectCarouselScope.type\n const length = injectCarouselScope.items.value.length\n if (parentType !== 'card' && oldIndex !== undefined) {\n data.animating = index === activeIndex || index === oldIndex\n }\n if (index !== activeIndex && length > 2 && injectCarouselScope.loop) {\n index = processIndex(index, activeIndex, length)\n }\n if (parentType === 'card') {\n if (parentDirection.value === 'vertical') {\n debugWarn(\n 'Carousel',\n 'vertical direction is not supported in card mode'\n )\n }\n data.inStage = Math.round(Math.abs(index - activeIndex)) <= 1\n data.active = index === activeIndex\n data.translate = calcCardTranslate(index, activeIndex)\n data.scale = data.active ? 1 : CARD_SCALE\n } else {\n data.active = index === activeIndex\n const isVertical = parentDirection.value === 'vertical'\n data.translate = calcTranslate(index, activeIndex, isVertical)\n }\n data.ready = true\n }\n\n function handleItemClick() {\n if (injectCarouselScope && injectCarouselScope.type === 'card') {\n const index = injectCarouselScope.items.value\n .map((d) => d.uid)\n .indexOf(instance.uid)\n injectCarouselScope.setActiveItem(index)\n }\n }\n\n // lifecycle\n onMounted(() => {\n if (injectCarouselScope.addItem) {\n injectCarouselScope.addItem({\n uid: instance.uid,\n ...props,\n ...toRefs(data),\n translateItem,\n })\n }\n })\n\n onUnmounted(() => {\n if (injectCarouselScope.removeItem) {\n injectCarouselScope.removeItem(instance.uid)\n }\n })\n\n return {\n data,\n itemStyle,\n translateItem,\n type: injectCarouselScope.type,\n handleItemClick,\n ns,\n }\n },\n})\n</script>\n"],"names":[],"mappings":";;;;;;;AAsCA,MAAM,aAAa;AACnB,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,IACL,MAAM,EAAE,MAAM,QAAQ,SAAS;AAAA,IAC/B,OAAO;AAAA,MACL,MAAM,CAAC,QAAQ;AAAA,MACf,SAAS;AAAA;AAAA;AAAA,EAGb,MAAM,OAA2B;AAC/B,UAAM,KAAK,aAAa;AAExB,UAAM,WAAW;AAGjB,UAAM,OAAO,SAAS;AAAA,MACpB,OAAO;AAAA,MACP,WAAW;AAAA,MACX,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA;AAIb,UAAM,sBAA2C,OAC/C;AAIF,UAAM,kBAAkB,SAAS,MAAM;AACrC,aAAO,oBAAoB;AAAA;AAG7B,UAAM,YAAY,SAAS,MAAM;AAC/B,YAAM,gBACJ,gBAAgB,UAAU,aAAa,eAAe;AACxD,YAAM,QAAQ,GAAG,iBAAiB,KAAK,sBAAsB,KAAK;AAClE,YAAM,QAAuB;AAAA,QAC3B,WAAW;AAAA;AAEb,aAAO;AAAA;AAKT,0BAAsB,OAAO,aAAa,QAAQ;AAChD,UAAI,gBAAgB,KAAK,UAAU,SAAS,GAAG;AAC7C,eAAO;AAAA,iBACE,gBAAgB,SAAS,KAAK,UAAU,GAAG;AACpD,eAAO;AAAA,iBACE,QAAQ,cAAc,KAAK,cAAc,SAAS,SAAS,GAAG;AACvE,eAAO,SAAS;AAAA,iBACP,QAAQ,cAAc,KAAK,QAAQ,eAAe,SAAS,GAAG;AACvE,eAAO;AAAA;AAET,aAAO;AAAA;AAGT,+BAA2B,OAAO,aAAa;AAC7C,YAAM;AACN;AACE,eACG;AAAgE;AAGnE;AAA2C;AAE3C;AAA0C;AAAA;AAI9C;AACE,yDAE0B;AAE1B;AAA2B;AAG7B;AAKE;AACA,+CAAyC;AACzC,yBAAmB;AACjB,4DAAoD;AAAA;AAEtD,mCAA6B,kCAAkC;AAC7D;AAAyC;AAE3C;AACE;AACE,oBACE;AACA;AAGJ;AACA;AACA,aAAK,8BAA8B;AACnC,aAAK;AAA0B,aAC1B;AACL,aAAK,mBAAmB;AACxB;AACA,aAAK;AAA8C;AAErD;AAAa;AAGf;AACE;AACE;AAGA;AAAkC;AAAA;AAKtC;AACE;AACE;AAA4B,UAC1B;AAAc;AACX,aACA;AAAO,UACV;AAAA;AAAA;AAAA;AAKN;AACE;AACE;AAAwC;AAAA;AAI5C;AAAO,MACL;AAAA;AACA,MACA;AAAA,MACA;AAA0B,MAC1B;AAAA,MACA;AAAA;AAAA;AAAA;;;AArKE;AAjBE;AAAc,0BAAgC;AAAK,MAAe,QAAG;AAAoB,MAAgB,QAAG,GAAE,mBAAe;AAAA,MAAc,QAAG,GAAE;AAAmB,iBAAwB;AAAyB;AAAA;AAQlN;AACA;IAGA;AAGD;aADC;AAAM;;AADE;eAGH;AAAA;;AAjBA;AAAA;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"main.mjs","sources":["../../../../../../packages/components/carousel/src/main.vue"],"sourcesContent":["<template>\n <div\n ref=\"root\"\n :class=\"carouselClasses\"\n @mouseenter.stop=\"handleMouseEnter\"\n @mouseleave.stop=\"handleMouseLeave\"\n >\n <div :class=\"ns.e('container')\" :style=\"{ height: height }\">\n <transition v-if=\"arrowDisplay\" name=\"carousel-arrow-left\">\n <button\n v-show=\"\n (arrow === 'always' || data.hover) &&\n (props.loop || data.activeIndex > 0)\n \"\n type=\"button\"\n :class=\"[ns.e('arrow'), ns.em('arrow', 'left')]\"\n @mouseenter=\"handleButtonEnter('left')\"\n @mouseleave=\"handleButtonLeave\"\n @click.stop=\"throttledArrowClick(data.activeIndex - 1)\"\n >\n <el-icon>\n <arrow-left />\n </el-icon>\n </button>\n </transition>\n <transition v-if=\"arrowDisplay\" name=\"carousel-arrow-right\">\n <button\n v-show=\"\n (arrow === 'always' || data.hover) &&\n (props.loop || data.activeIndex < items.length - 1)\n \"\n type=\"button\"\n :class=\"[ns.e('arrow'), ns.em('arrow', 'right')]\"\n @mouseenter=\"handleButtonEnter('right')\"\n @mouseleave=\"handleButtonLeave\"\n @click.stop=\"throttledArrowClick(data.activeIndex + 1)\"\n >\n <el-icon>\n <arrow-right />\n </el-icon>\n </button>\n </transition>\n <slot></slot>\n </div>\n <ul v-if=\"indicatorPosition !== 'none'\" :class=\"indicatorsClasses\">\n <li\n v-for=\"(item, index) in items\"\n :key=\"index\"\n :class=\"[\n ns.e('indicator'),\n ns.em('indicator', direction),\n ns.is('active', index === data.activeIndex),\n ]\"\n @mouseenter=\"throttledIndicatorHover(index)\"\n @click.stop=\"handleIndicatorClick(index)\"\n >\n <button :class=\"ns.e('button')\">\n <span v-if=\"hasLabel\">{{ item.label }}</span>\n </button>\n </li>\n </ul>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n reactive,\n computed,\n ref,\n provide,\n onMounted,\n onBeforeUnmount,\n watch,\n nextTick,\n} from 'vue'\nimport { throttle } from 'lodash-unified'\nimport {\n addResizeListener,\n removeResizeListener,\n debugWarn,\n} from '@element-plus/utils'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { ArrowLeft, ArrowRight } from '@element-plus/icons-vue'\nimport { useNamespace } from '@element-plus/hooks'\n\nimport type {\n ICarouselProps,\n CarouselItem,\n InjectCarouselScope,\n} from './carousel'\n\nexport default defineComponent({\n name: 'ElCarousel',\n components: {\n ElIcon,\n ArrowLeft,\n ArrowRight,\n },\n props: {\n initialIndex: {\n type: Number,\n default: 0,\n },\n height: { type: String, default: '' },\n trigger: {\n type: String,\n default: 'hover',\n },\n autoplay: {\n type: Boolean,\n default: true,\n },\n interval: {\n type: Number,\n default: 3000,\n },\n indicatorPosition: { type: String, default: '' },\n indicator: {\n type: Boolean,\n default: true,\n },\n arrow: {\n type: String,\n default: 'hover',\n },\n type: { type: String, default: '' },\n loop: {\n type: Boolean,\n default: true,\n },\n direction: {\n type: String,\n default: 'horizontal',\n validator(val: string) {\n return ['horizontal', 'vertical'].includes(val)\n },\n },\n pauseOnHover: {\n type: Boolean,\n default: true,\n },\n },\n emits: ['change'],\n setup(props: ICarouselProps, { emit }) {\n const ns = useNamespace('carousel')\n // data\n const data = reactive<{\n activeIndex: number\n containerWidth: number\n timer: null | ReturnType<typeof setInterval>\n hover: boolean\n }>({\n activeIndex: -1,\n containerWidth: 0,\n timer: null,\n hover: false,\n })\n\n // refs\n const root = ref(null)\n const items = ref<CarouselItem[]>([])\n\n // computed\n const arrowDisplay = computed(\n () => props.arrow !== 'never' && props.direction !== 'vertical'\n )\n\n const hasLabel = computed(() => {\n return items.value.some((item) => item.label.toString().length > 0)\n })\n\n const carouselClasses = computed(() => {\n const classes = [ns.b(), ns.m(props.direction)]\n if (props.type === 'card') {\n classes.push(ns.m('card'))\n }\n return classes\n })\n\n const indicatorsClasses = computed(() => {\n const classes = [ns.e('indicators'), ns.em('indicators', props.direction)]\n if (hasLabel.value) {\n classes.push(ns.em('indicators', 'labels'))\n }\n if (props.indicatorPosition === 'outside' || props.type === 'card') {\n classes.push(ns.em('indicators', 'outside'))\n }\n return classes\n })\n\n // methods\n const throttledArrowClick = throttle(\n (index) => {\n setActiveItem(index)\n },\n 300,\n { trailing: true }\n )\n\n const throttledIndicatorHover = throttle((index) => {\n handleIndicatorHover(index)\n }, 300)\n\n function pauseTimer() {\n if (data.timer) {\n clearInterval(data.timer)\n data.timer = null\n }\n }\n\n function startTimer() {\n if (props.interval <= 0 || !props.autoplay || data.timer) return\n data.timer = setInterval(() => playSlides(), props.interval)\n }\n\n const playSlides = () => {\n if (data.activeIndex < items.value.length - 1) {\n data.activeIndex = data.activeIndex + 1\n } else if (props.loop) {\n data.activeIndex = 0\n }\n }\n\n function setActiveItem(index) {\n if (typeof index === 'string') {\n const filteredItems = items.value.filter((item) => item.name === index)\n if (filteredItems.length > 0) {\n index = items.value.indexOf(filteredItems[0])\n }\n }\n index = Number(index)\n if (isNaN(index) || index !== Math.floor(index)) {\n debugWarn('Carousel', 'index must be an integer.')\n return\n }\n const length = items.value.length\n const oldIndex = data.activeIndex\n if (index < 0) {\n data.activeIndex = props.loop ? length - 1 : 0\n } else if (index >= length) {\n data.activeIndex = props.loop ? 0 : length - 1\n } else {\n data.activeIndex = index\n }\n if (oldIndex === data.activeIndex) {\n resetItemPosition(oldIndex)\n }\n }\n\n function resetItemPosition(oldIndex) {\n items.value.forEach((item, index) => {\n item.translateItem(index, data.activeIndex, oldIndex)\n })\n }\n\n function addItem(item) {\n items.value.push(item)\n }\n\n function removeItem(uid) {\n const index = items.value.findIndex((item) => item.uid === uid)\n if (index !== -1) {\n items.value.splice(index, 1)\n if (data.activeIndex === index) next()\n }\n }\n\n function itemInStage(item, index) {\n const length = items.value.length\n if (\n (index === length - 1 && item.inStage && items.value[0].active) ||\n (item.inStage &&\n items.value[index + 1] &&\n items.value[index + 1].active)\n ) {\n return 'left'\n } else if (\n (index === 0 && item.inStage && items.value[length - 1].active) ||\n (item.inStage &&\n items.value[index - 1] &&\n items.value[index - 1].active)\n ) {\n return 'right'\n }\n return false\n }\n\n function handleMouseEnter() {\n data.hover = true\n if (props.pauseOnHover) {\n pauseTimer()\n }\n }\n\n function handleMouseLeave() {\n data.hover = false\n startTimer()\n }\n\n function handleButtonEnter(arrow) {\n if (props.direction === 'vertical') return\n items.value.forEach((item, index) => {\n if (arrow === itemInStage(item, index)) {\n item.hover = true\n }\n })\n }\n\n function handleButtonLeave() {\n if (props.direction === 'vertical') return\n items.value.forEach((item) => {\n item.hover = false\n })\n }\n\n function handleIndicatorClick(index) {\n data.activeIndex = index\n }\n\n function handleIndicatorHover(index) {\n if (props.trigger === 'hover' && index !== data.activeIndex) {\n data.activeIndex = index\n }\n }\n\n function prev() {\n setActiveItem(data.activeIndex - 1)\n }\n\n function next() {\n setActiveItem(data.activeIndex + 1)\n }\n\n // watch\n watch(\n () => data.activeIndex,\n (current, prev) => {\n resetItemPosition(prev)\n if (prev > -1) {\n emit('change', current, prev)\n }\n }\n )\n watch(\n () => props.autoplay,\n (current) => {\n current ? startTimer() : pauseTimer()\n }\n )\n watch(\n () => props.loop,\n () => {\n setActiveItem(data.activeIndex)\n }\n )\n\n // lifecycle\n onMounted(() => {\n nextTick(() => {\n addResizeListener(root.value, resetItemPosition)\n if (\n props.initialIndex < items.value.length &&\n props.initialIndex >= 0\n ) {\n data.activeIndex = props.initialIndex\n }\n startTimer()\n })\n })\n\n onBeforeUnmount(() => {\n if (root.value) removeResizeListener(root.value, resetItemPosition)\n pauseTimer()\n })\n\n // provide\n provide<InjectCarouselScope>('injectCarouselScope', {\n root,\n direction: props.direction,\n type: props.type,\n items,\n loop: props.loop,\n addItem,\n removeItem,\n setActiveItem,\n })\n\n return {\n data,\n props,\n items,\n\n arrowDisplay,\n carouselClasses,\n indicatorsClasses,\n hasLabel,\n\n handleMouseEnter,\n handleMouseLeave,\n handleIndicatorClick,\n throttledArrowClick,\n throttledIndicatorHover,\n handleButtonEnter,\n handleButtonLeave,\n\n prev,\n next,\n setActiveItem,\n\n root,\n ns,\n }\n },\n})\n</script>\n"],"names":["_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_withCtx","_createCommentVNode","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"main.mjs","sources":["../../../../../../packages/components/carousel/src/main.vue"],"sourcesContent":["<template>\n <div\n ref=\"root\"\n :class=\"carouselClasses\"\n @mouseenter.stop=\"handleMouseEnter\"\n @mouseleave.stop=\"handleMouseLeave\"\n >\n <div :class=\"ns.e('container')\" :style=\"{ height: height }\">\n <transition v-if=\"arrowDisplay\" name=\"carousel-arrow-left\">\n <button\n v-show=\"\n (arrow === 'always' || data.hover) &&\n (props.loop || data.activeIndex > 0)\n \"\n type=\"button\"\n :class=\"[ns.e('arrow'), ns.em('arrow', 'left')]\"\n @mouseenter=\"handleButtonEnter('left')\"\n @mouseleave=\"handleButtonLeave\"\n @click.stop=\"throttledArrowClick(data.activeIndex - 1)\"\n >\n <el-icon>\n <arrow-left />\n </el-icon>\n </button>\n </transition>\n <transition v-if=\"arrowDisplay\" name=\"carousel-arrow-right\">\n <button\n v-show=\"\n (arrow === 'always' || data.hover) &&\n (props.loop || data.activeIndex < items.length - 1)\n \"\n type=\"button\"\n :class=\"[ns.e('arrow'), ns.em('arrow', 'right')]\"\n @mouseenter=\"handleButtonEnter('right')\"\n @mouseleave=\"handleButtonLeave\"\n @click.stop=\"throttledArrowClick(data.activeIndex + 1)\"\n >\n <el-icon>\n <arrow-right />\n </el-icon>\n </button>\n </transition>\n <slot></slot>\n </div>\n <ul v-if=\"indicatorPosition !== 'none'\" :class=\"indicatorsClasses\">\n <li\n v-for=\"(item, index) in items\"\n :key=\"index\"\n :class=\"[\n ns.e('indicator'),\n ns.em('indicator', direction),\n ns.is('active', index === data.activeIndex),\n ]\"\n @mouseenter=\"throttledIndicatorHover(index)\"\n @click.stop=\"handleIndicatorClick(index)\"\n >\n <button :class=\"ns.e('button')\">\n <span v-if=\"hasLabel\">{{ item.label }}</span>\n </button>\n </li>\n </ul>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n reactive,\n computed,\n ref,\n provide,\n onMounted,\n onBeforeUnmount,\n watch,\n nextTick,\n} from 'vue'\nimport { throttle } from 'lodash-unified'\nimport {\n addResizeListener,\n removeResizeListener,\n debugWarn,\n} from '@element-plus/utils'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { ArrowLeft, ArrowRight } from '@element-plus/icons-vue'\nimport { useNamespace } from '@element-plus/hooks'\n\nimport type {\n ICarouselProps,\n CarouselItem,\n InjectCarouselScope,\n} from './carousel'\n\nexport default defineComponent({\n name: 'ElCarousel',\n components: {\n ElIcon,\n ArrowLeft,\n ArrowRight,\n },\n props: {\n initialIndex: {\n type: Number,\n default: 0,\n },\n height: { type: String, default: '' },\n trigger: {\n type: String,\n default: 'hover',\n },\n autoplay: {\n type: Boolean,\n default: true,\n },\n interval: {\n type: Number,\n default: 3000,\n },\n indicatorPosition: { type: String, default: '' },\n indicator: {\n type: Boolean,\n default: true,\n },\n arrow: {\n type: String,\n default: 'hover',\n },\n type: { type: String, default: '' },\n loop: {\n type: Boolean,\n default: true,\n },\n direction: {\n type: String,\n default: 'horizontal',\n validator(val: string) {\n return ['horizontal', 'vertical'].includes(val)\n },\n },\n pauseOnHover: {\n type: Boolean,\n default: true,\n },\n },\n emits: ['change'],\n setup(props: ICarouselProps, { emit }) {\n const ns = useNamespace('carousel')\n // data\n const data = reactive<{\n activeIndex: number\n containerWidth: number\n timer: null | ReturnType<typeof setInterval>\n hover: boolean\n }>({\n activeIndex: -1,\n containerWidth: 0,\n timer: null,\n hover: false,\n })\n\n // refs\n const root = ref(null)\n const items = ref<CarouselItem[]>([])\n\n // computed\n const arrowDisplay = computed(\n () => props.arrow !== 'never' && props.direction !== 'vertical'\n )\n\n const hasLabel = computed(() => {\n return items.value.some((item) => item.label.toString().length > 0)\n })\n\n const carouselClasses = computed(() => {\n const classes = [ns.b(), ns.m(props.direction)]\n if (props.type === 'card') {\n classes.push(ns.m('card'))\n }\n return classes\n })\n\n const indicatorsClasses = computed(() => {\n const classes = [ns.e('indicators'), ns.em('indicators', props.direction)]\n if (hasLabel.value) {\n classes.push(ns.em('indicators', 'labels'))\n }\n if (props.indicatorPosition === 'outside' || props.type === 'card') {\n classes.push(ns.em('indicators', 'outside'))\n }\n return classes\n })\n\n // methods\n const throttledArrowClick = throttle(\n (index) => {\n setActiveItem(index)\n },\n 300,\n { trailing: true }\n )\n\n const throttledIndicatorHover = throttle((index) => {\n handleIndicatorHover(index)\n }, 300)\n\n function pauseTimer() {\n if (data.timer) {\n clearInterval(data.timer)\n data.timer = null\n }\n }\n\n function startTimer() {\n if (props.interval <= 0 || !props.autoplay || data.timer) return\n data.timer = setInterval(() => playSlides(), props.interval)\n }\n\n const playSlides = () => {\n if (data.activeIndex < items.value.length - 1) {\n data.activeIndex = data.activeIndex + 1\n } else if (props.loop) {\n data.activeIndex = 0\n }\n }\n\n function setActiveItem(index) {\n if (typeof index === 'string') {\n const filteredItems = items.value.filter((item) => item.name === index)\n if (filteredItems.length > 0) {\n index = items.value.indexOf(filteredItems[0])\n }\n }\n index = Number(index)\n if (isNaN(index) || index !== Math.floor(index)) {\n debugWarn('Carousel', 'index must be an integer.')\n return\n }\n const length = items.value.length\n const oldIndex = data.activeIndex\n if (index < 0) {\n data.activeIndex = props.loop ? length - 1 : 0\n } else if (index >= length) {\n data.activeIndex = props.loop ? 0 : length - 1\n } else {\n data.activeIndex = index\n }\n if (oldIndex === data.activeIndex) {\n resetItemPosition(oldIndex)\n }\n }\n\n function resetItemPosition(oldIndex) {\n items.value.forEach((item, index) => {\n item.translateItem(index, data.activeIndex, oldIndex)\n })\n }\n\n function addItem(item) {\n items.value.push(item)\n }\n\n function removeItem(uid) {\n const index = items.value.findIndex((item) => item.uid === uid)\n if (index !== -1) {\n items.value.splice(index, 1)\n if (data.activeIndex === index) next()\n }\n }\n\n function itemInStage(item, index) {\n const length = items.value.length\n if (\n (index === length - 1 && item.inStage && items.value[0].active) ||\n (item.inStage &&\n items.value[index + 1] &&\n items.value[index + 1].active)\n ) {\n return 'left'\n } else if (\n (index === 0 && item.inStage && items.value[length - 1].active) ||\n (item.inStage &&\n items.value[index - 1] &&\n items.value[index - 1].active)\n ) {\n return 'right'\n }\n return false\n }\n\n function handleMouseEnter() {\n data.hover = true\n if (props.pauseOnHover) {\n pauseTimer()\n }\n }\n\n function handleMouseLeave() {\n data.hover = false\n startTimer()\n }\n\n function handleButtonEnter(arrow) {\n if (props.direction === 'vertical') return\n items.value.forEach((item, index) => {\n if (arrow === itemInStage(item, index)) {\n item.hover = true\n }\n })\n }\n\n function handleButtonLeave() {\n if (props.direction === 'vertical') return\n items.value.forEach((item) => {\n item.hover = false\n })\n }\n\n function handleIndicatorClick(index) {\n data.activeIndex = index\n }\n\n function handleIndicatorHover(index) {\n if (props.trigger === 'hover' && index !== data.activeIndex) {\n data.activeIndex = index\n }\n }\n\n function prev() {\n setActiveItem(data.activeIndex - 1)\n }\n\n function next() {\n setActiveItem(data.activeIndex + 1)\n }\n\n // watch\n watch(\n () => data.activeIndex,\n (current, prev) => {\n resetItemPosition(prev)\n if (prev > -1) {\n emit('change', current, prev)\n }\n }\n )\n watch(\n () => props.autoplay,\n (current) => {\n current ? startTimer() : pauseTimer()\n }\n )\n watch(\n () => props.loop,\n () => {\n setActiveItem(data.activeIndex)\n }\n )\n\n // lifecycle\n onMounted(() => {\n nextTick(() => {\n addResizeListener(root.value, resetItemPosition)\n if (\n props.initialIndex < items.value.length &&\n props.initialIndex >= 0\n ) {\n data.activeIndex = props.initialIndex\n }\n startTimer()\n })\n })\n\n onBeforeUnmount(() => {\n if (root.value) removeResizeListener(root.value, resetItemPosition)\n pauseTimer()\n })\n\n // provide\n provide<InjectCarouselScope>('injectCarouselScope', {\n root,\n direction: props.direction,\n type: props.type,\n items,\n loop: props.loop,\n addItem,\n removeItem,\n setActiveItem,\n })\n\n return {\n data,\n props,\n items,\n\n arrowDisplay,\n carouselClasses,\n indicatorsClasses,\n hasLabel,\n\n handleMouseEnter,\n handleMouseLeave,\n handleIndicatorClick,\n throttledArrowClick,\n throttledIndicatorHover,\n handleButtonEnter,\n handleButtonLeave,\n\n prev,\n next,\n setActiveItem,\n\n root,\n ns,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_createElementVNode","_normalizeStyle","_createBlock","_Transition","_createVNode","_renderSlot","_Fragment","_withModifiers"],"mappings":"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"}
@@ -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 :teleported=\"compatTeleported\"\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=\"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=\"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-unified'\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, {\n useTooltipContentProps,\n} from '@element-plus/components/tooltip'\nimport { useDeprecateAppendToBody } from '@element-plus/components/popper'\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 {\n focusNode,\n getSibling,\n addResizeListener,\n removeResizeListener,\n isValidComponentSize,\n isKorean,\n} from '@element-plus/utils'\nimport {\n EVENT_CODE,\n UPDATE_MODEL_EVENT,\n CHANGE_EVENT,\n} from '@element-plus/constants'\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/constants'\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}\nconst COMPONENT_NAME = 'ElCascader'\nexport default defineComponent({\n name: COMPONENT_NAME,\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: undefined,\n },\n teleported: useTooltipContentProps.teleported,\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 { compatTeleported } = useDeprecateAppendToBody(\n COMPONENT_NAME,\n 'popperAppendToBody'\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 // deprecation in ver 2.1.0\n compatTeleported,\n\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","_withCtx"],"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 :teleported=\"compatTeleported\"\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=\"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=\"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-unified'\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, {\n useTooltipContentProps,\n} from '@element-plus/components/tooltip'\nimport { useDeprecateAppendToBody } from '@element-plus/components/popper'\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 {\n focusNode,\n getSibling,\n addResizeListener,\n removeResizeListener,\n isValidComponentSize,\n isKorean,\n} from '@element-plus/utils'\nimport {\n EVENT_CODE,\n UPDATE_MODEL_EVENT,\n CHANGE_EVENT,\n} from '@element-plus/constants'\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/constants'\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}\nconst COMPONENT_NAME = 'ElCascader'\nexport default defineComponent({\n name: COMPONENT_NAME,\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: undefined,\n },\n teleported: useTooltipContentProps.teleported,\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 { compatTeleported } = useDeprecateAppendToBody(\n COMPONENT_NAME,\n 'popperAppendToBody'\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 // deprecation in ver 2.1.0\n compatTeleported,\n\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","_withCtx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwNA,MAAM,uBAAuB;AAE7B,MAAM,mBAAmB;AAAA,EACvB,OAAO;AAAA,EACP,SAAS;AAAA,EACT,OAAO;AAAA;AAGT,MAAM,gBAAkC;AAAA,EACtC,WAAW;AAAA,IACT;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,MACT,OAAO;AAAA,MACP,IAAI,CAAC,EAAE,YAAY;AACjB,cAAM,EAAE,eAAe,cAAc;AACrC,YAAI,CAAC,SAAS,QAAQ,UAAU,OAAO,SAAS;AAAY;AAC5D,sBAAc,MAAM,IAAI;AAAA;AAAA,MAE1B,UAAU,CAAC;AAAA;AAAA;AAAA;AAIjB,MAAM,iBAAiB;AACvB,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EAEN,YAAY;AAAA,qBACVA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAGF,YAAY;AAAA,kBACVC;AAAA;AAAA,EAGF,OAAO;AAAA,OACF;AAAA,IACH,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,WAAW;AAAA;AAAA,IAEb,aAAa;AAAA,MACX,MAAM;AAAA;AAAA,IAER,UAAU;AAAA,IACV,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,cAAc;AAAA,MACZ,MAAM;AAAA,MAGN,SAAS,CAAC,MAAoB,YAC5B,KAAK,KAAK,SAAS;AAAA;AAAA,IAEvB,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,cAAc;AAAA,IACd,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS,MAAM;AAAA;AAAA,IAEjB,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,oBAAoB;AAAA,MAClB,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,YAAY,uBAAuB;AAAA;AAAA,EAGrC,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAGF,MAAM,OAAO,EAAE,QAAQ;AACrB,QAAI,qBAAqB;AACzB,QAAI,mBAAmB;AAEvB,UAAM,EAAE,qBAAqB,yBAC3B,gBACA;AAEF,UAAM,EAAE,MAAM;AACd,UAAM,SAAS,OAAO,WAAW;AACjC,UAAM,aAAa,OAAO,eAAe;AAEzC,UAAM,aAAsC,IAAI;AAChD,UAAM,QAA+B,IAAI;AACzC,UAAM,aAAa,IAAI;AACvB,UAAM,QAAuC,IAAI;AACjD,UAAM,kBAAmD,IAAI;AAC7D,UAAM,gBAAgB,IAAI;AAC1B,UAAM,aAAa,IAAI;AACvB,UAAM,YAAY,IAAI;AACtB,UAAM,aAAa,IAAI;AACvB,UAAM,mBAAmB,IAAI;AAC7B,UAAM,cAA0B,IAAI;AACpC,UAAM,cAAmC,IAAI;AAC7C,UAAM,kBAAkB,IAAI;AAE5B,UAAM,aAAa,SAAS,MAAM,MAAM,YAAY,OAAO;AAC3D,UAAM,mBAAmB,SACvB,MAAM,MAAM,eAAe,EAAE;AAE/B,UAAM,WAAW;AACjB,UAAM,UAAU,SAAS,MACvB,CAAC,SAAS,SAAS,SAAS,SAAS,UAAU;AAEjD,UAAM,WAAW,SAAS,MAAM,CAAC,CAAC,MAAM,MAAM;AAC9C,UAAM,WAAW,SAAS,MAAM,CAAC,MAAM,cAAc,SAAS;AAC9D,UAAM,gBAAgB,SAAS,MAC7B,SAAS,QAAQ,iBAAiB,QAAQ,WAAW;AAEvD,UAAM,eAA4C,SAChD,MAAM;AAER,UAAM;AACJ,iBACS;AAKP;AAEF,4BAAsB;AAAM;AAE9B;AACE,cAAQ;AACR;AACA;AAII;AAGN;AAA6C,MAC3C;AACE;AAAa;AAAA,MAEf;AACE;AACA;AACA;AAAsB;AAAA;AAI1B;AACE,wBAAkB,kBAAkB;AAAA;AAGtC;AACE,UAAI;AAAkB;AAEtB,gBAAU;AAEV;AACE;AACA,cAAM,OAAO;AAEb,qBAAa;AACX;AACA;AAAsB;AAEtB;AACA;AACA;AAAyB;AAG3B,+BAAuB;AAAA;AAAA;AAI3B,UAAM;AACJ;AACE;AAAkB;AAAA;AAItB;AACE;AAAkB;AAGpB;AACE,cAAQ;AACR;AAAO;AACL;AACU;AACyB;AACzB,mBACC;AAA0B;AAAA;AAIzC;AACE;AACA,mBAAa;AACb;AACA,8BAAwB;AAAA;AAG1B;AACE,UAAI;AAAiB;AAErB,YAAM;AACN,mBAAoB;AAEpB;AACE,yBAAiB;AACjB;AAEA;AAEA;AACE;AACE,iBAAK;AAAK,mBACH;AAAA;AACM,cACX;AAAU;AAAA,iBAEP;AACL;AAAwC;AAAA;AAAA;AAK9C,kBAAY;AAAQ;AAGtB;AACE;AACA,YAAM,YAAY,oCACe;AAE7B;AAAqB;AACrB;AACA;AAAwC;AAG5C,UAAI;AACF;AACE,cAAI;AAAW;AAAA;AAInB;AACA;AACA;AAAA;AAGF,UAAM;AACJ;AAEA,UAAI;AACF;AACE;AAGF;AACE;AAIJ;AACE;AACA;AAA8B;AAAA;AAIlC,UAAM;AACJ;AACA;AACA,gCAA0B,uBAAuB;AAEjD;AAA8B;AAE9B;AACE;AAGA;AAA8C;AAGhD,UAAI,cAAc;AAChB,cAAM,EAAE;AACR,sDAEM,YAAY;AAElB;AACA;AAAA;AAAA;AAIJ,UAAM,mBAAmB;AACvB;AAAoC;AAGtC;AACE;AACA,4BAAsB;AAAA;AAGxB,+BAA2B,UAA4B;AACrD;AACA;AACE;AACA;AAA2B,aACtB;AACL,cAAM,gBAAgB,KAAK;AAC3B;AAAkC;AAAA;AAItC,UAAM,gBAAgB,OAAsB;AAC1C;AAA2B;AAE3B;AAAU;AAEN;AACA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACc;AAEd;AACA;AAAA;AAAA;AAIN,UAAM;AACJ;AACA;AAAoB;AAGtB,UAAM,wBAAwB,CAAC;AAC7B,YAAM,cAAc;AAEpB,UAAI;AACF;AAA+C,aAC1C;AACL;AACA;AAAoB;AAAA;AAIxB,UAAM;AACJ,YAAM;AACN,YAAM,WAAW;AAEjB;AAAQ;AACU;AAEd,gBAAM;AACN,+BAEI;AAKJ;AAAA;AAAA,aAEG;AACH;AACA;AAAA;AACc;AAEd;AACA;AAAA;AAAA;AAIN;AACE;AACA,2BAAqB;AACrB;AAEA,UAAI;AAA+B;AAEnC;AACE;AAAU;AAEV,2BAAmB;AAAA;AAAA;AAIvB,UAAM;AACJ;AAEA;AAAY;AAEZ,YAAM;AAEN;AACE,0CAAkC,YAAY;AAAA;AAAA;AAI9C;AAAA;AAEA;AAAA;AAAA,OAED;AAEH;AACE;AAEA;AAAoB;AAEpB;AAAuB;AAGzB,UAAM;AAEN;AAEA,UAAM;AACJ;AAAe;AAGjB;AAEA;AACE;AACA;AAIA,wBAAkB;AAAS;AAG7B;AACE;AAAuC;AAGzC;AAAO;AACL;AACA;AACA,MACA;AAAA,MACA;AAAA;AACA;AACA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AACA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AACA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;;;;AApoB2B;AAAmB;;;;;;;;;;;;;;;AAyErC,SAtJP;AAAA;AACa;AAAa,gBACjB;AAAA;AAC2B;AACvB;AACK;;;;;;;;AAQI;AACP;AACT,IACV;AAAW,IACX;AAAO,IACP;AAAA,IACA;AAAA,IACC;AAAM;IAEI;AAkFH;AAAA;AA/EE;;AAAmE;AAAuC;AAA+B;AAAA,+BAMvI;AAAO;AACuC;AAC5C;AACa;AACA;;AAwCZ,UArCT;AAAI;AACK;AAAU,sBACLC;AAAA;AACH,UACV;AAAU,UACV,kBAAgB;AAAA,UAChB;AAAM,UACN;AAAqB,UACrB;AAAkB,8BACC;AAAA;AACH,mBACX;AAAwB,mDAChB,WAAK;AAAS;AACpB;;AAUI;AAAA;AALJ;AACE,uBACA;AAAkB;;AAER;AAAA;AAAA;;AAaR;AATJ;AACE;;;AAAsG;AAAA;AAK5E;;AAElB;AAAA;AAAA;;;;;;AA+Bd;;AAdK;AATG;AACL,oBACE;AAAA;AACG,cACT;AAAc;AACf,cACC,SAAKC;AAAY;;AAES;AAAV;AAAA;;;;AAcjB;;AAVyB;AACpB;AACC,yBACQ;AAAmB;AACY;AACb;AACH;AACV;AACC;AACH;;AATR;;;gEApE4CD;AAA1C;AAAA;AAAA;AA8Ff;AAAA;AARI;AACK;AAAY;AACX;AACF;AACC,oCACa;AAAA;AACN;AAC2B;;AARlC;AAAA;AAuCI;;AA1BT,aACAC;AAAA;AACE,QACN;AAAW,QACV;AAAS;;AAgBC;;AADJ,wBAVQ;AAAA;AACL;gBAAgE;AAAY;AAAA;AAIvE;AACmB;;AAEZ;AAC8B;AAAV;AAAA;AAAA;;;;AAOnC;AAFC;AAAA;AAAA;;;AAxBA;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -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, flattenDeep } from 'lodash-unified'\nimport { isClient } from '@vueuse/core'\nimport {\n focusNode,\n getSibling,\n isEmpty,\n unique,\n castArray,\n scrollIntoView,\n} from '@element-plus/utils'\nimport {\n EVENT_CODE,\n UPDATE_MODEL_EVENT,\n CHANGE_EVENT,\n} from '@element-plus/constants'\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'\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[] = unique(\n flattenDeep(castArray(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 ? castArray(modelValue) : [modelValue]\n const nodes = unique(\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 as HTMLElement).querySelector(\n '.el-scrollbar__wrap'\n )\n const activeNode =\n menuElement.querySelector('.el-cascader-node.is-active') ||\n menuElement.querySelector('.el-cascader-node.in-active-path')\n scrollIntoView(container as HTMLElement, 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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"}
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, flattenDeep } from 'lodash-unified'\nimport { isClient } from '@vueuse/core'\nimport {\n focusNode,\n getSibling,\n isEmpty,\n unique,\n castArray,\n scrollIntoView,\n} from '@element-plus/utils'\nimport {\n EVENT_CODE,\n UPDATE_MODEL_EVENT,\n CHANGE_EVENT,\n} from '@element-plus/constants'\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'\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[] = unique(\n flattenDeep(castArray(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 ? castArray(modelValue) : [modelValue]\n const nodes = unique(\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 as HTMLElement).querySelector(\n '.el-scrollbar__wrap'\n )\n const activeNode =\n menuElement.querySelector('.el-cascader-node.is-active') ||\n menuElement.querySelector('.el-cascader-node.in-active-path')\n scrollIntoView(container as HTMLElement, 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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"}
@@ -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'\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 { Nullable } from '@element-plus/utils'\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<number> = 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,aAA+B;AAEnC,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;;;;;;;;;;;;;;;;;"}
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'\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 { Nullable } from '@element-plus/utils'\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<number> = 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":["_createBlock","_createVNode"],"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,aAA+B;AAEnC,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,OAAM;AAAA;;;EAMH,OAAM;AAAA;;;EAK7B,KAAI;AAAA,EACJ,OAAM;AAAA;;;;;;sBA7BVA,YA+Be;AAAA,IA9BZ,KAAK;AAAA,IACN,KAAI;AAAA,IACJ,MAAK;AAAA,IACL,OAAM;AAAA,IACN,cAAW;AAAA,IACV,cAAU,2BAA6B,gBAAO;AAAA,IAC9C,aAAW;AAAA,IACX,cAAY;AAAA;qBAGX,MAAqB;AAAA;;AAKrB,mBAJW;AAAA,UACV;AAAA,qBACS;AAAA;AACD;;;AAOL;AAFM;AAFI,UAAKC;AAAM;;AACZ;AAAA;AAAA;;;AAET,YAEU;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"node2.mjs","sources":["../../../../../../packages/components/cascader-panel/src/node.vue"],"sourcesContent":["<template>\n <li\n :id=\"`${menuId}-${node.uid}`\"\n role=\"menuitem\"\n :aria-haspopup=\"!isLeaf\"\n :aria-owns=\"isLeaf ? null : menuId\"\n :aria-expanded=\"inExpandingPath\"\n :tabindex=\"expandable ? -1 : undefined\"\n :class=\"[\n 'el-cascader-node',\n checkStrictly && 'is-selectable',\n inExpandingPath && 'in-active-path',\n inCheckedPath && 'in-checked-path',\n node.checked && 'is-active',\n !expandable && 'is-disabled',\n ]\"\n @mouseenter=\"handleHoverExpand\"\n @focus=\"handleHoverExpand\"\n @click=\"handleClick\"\n >\n <!-- prefix -->\n <el-checkbox\n v-if=\"multiple\"\n :model-value=\"node.checked\"\n :indeterminate=\"node.indeterminate\"\n :disabled=\"isDisabled\"\n @click.stop\n @update:model-value=\"handleSelectCheck\"\n />\n <el-radio\n v-else-if=\"checkStrictly\"\n :model-value=\"checkedNodeId\"\n :label=\"node.uid\"\n :disabled=\"isDisabled\"\n @update:model-value=\"handleSelectCheck\"\n @click.stop\n >\n <!--\n Add an empty element to avoid render label,\n do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485\n -->\n <span></span>\n </el-radio>\n <el-icon\n v-else-if=\"isLeaf && node.checked\"\n class=\"el-cascader-node__prefix\"\n >\n <check />\n </el-icon>\n\n <!-- content -->\n <node-content />\n\n <!-- postfix -->\n <template v-if=\"!isLeaf\">\n <el-icon v-if=\"node.loading\" class=\"is-loading el-cascader-node__postfix\">\n <loading />\n </el-icon>\n <el-icon v-else class=\"arrow-right el-cascader-node__postfix\">\n <arrow-right />\n </el-icon>\n </template>\n </li>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject } from 'vue'\nimport ElCheckbox from '@element-plus/components/checkbox'\nimport ElRadio from '@element-plus/components/radio'\nimport ElIcon from '@element-plus/components/icon'\nimport { Check, Loading, ArrowRight } from '@element-plus/icons-vue'\nimport NodeContent from './node-content'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\nimport type { default as CascaderNode } from './node'\n\nimport type { PropType } from 'vue'\n\nexport default defineComponent({\n name: 'ElCascaderNode',\n\n components: {\n ElCheckbox,\n ElRadio,\n NodeContent,\n ElIcon,\n Check,\n Loading,\n ArrowRight,\n },\n\n props: {\n node: {\n type: Object as PropType<CascaderNode>,\n required: true,\n },\n menuId: String,\n },\n\n emits: ['expand'],\n\n setup(props, { emit }) {\n const panel = inject(CASCADER_PANEL_INJECTION_KEY)!\n\n const isHoverMenu = computed(() => panel.isHoverMenu)\n const multiple = computed(() => panel.config.multiple)\n const checkStrictly = computed(() => panel.config.checkStrictly)\n const checkedNodeId = computed(() => panel.checkedNodes[0]?.uid)\n const isDisabled = computed(() => props.node.isDisabled)\n const isLeaf = computed(() => props.node.isLeaf)\n const expandable = computed(\n () => (checkStrictly.value && !isLeaf.value) || !isDisabled.value\n )\n const inExpandingPath = computed(() => isInPath(panel.expandingNode!))\n // only useful in check-strictly mode\n const inCheckedPath = computed(\n () => checkStrictly.value && panel.checkedNodes.some(isInPath)\n )\n\n const isInPath = (node: CascaderNode) => {\n const { level, uid } = props.node\n return node?.pathNodes[level - 1]?.uid === uid\n }\n\n const doExpand = () => {\n if (inExpandingPath.value) return\n panel.expandNode(props.node)\n }\n\n const doCheck = (checked: boolean) => {\n const { node } = props\n if (checked === node.checked) return\n panel.handleCheckChange(node, checked)\n }\n\n const doLoad = () => {\n panel.lazyLoad(props.node, () => {\n if (!isLeaf.value) doExpand()\n })\n }\n\n const handleHoverExpand = (e: Event) => {\n if (!isHoverMenu.value) return\n handleExpand()\n !isLeaf.value && emit('expand', e)\n }\n\n const handleExpand = () => {\n const { node } = props\n // do not exclude leaf node because the menus expanded might have to reset\n if (!expandable.value || node.loading) return\n node.loaded ? doExpand() : doLoad()\n }\n\n const handleClick = () => {\n if (isHoverMenu.value && !isLeaf.value) return\n\n if (\n isLeaf.value &&\n !isDisabled.value &&\n !checkStrictly.value &&\n !multiple.value\n ) {\n handleCheck(true)\n } else {\n handleExpand()\n }\n }\n\n const handleSelectCheck = (checked: boolean) => {\n if (checkStrictly.value) {\n doCheck(checked)\n if (props.node.loaded) {\n doExpand()\n }\n } else {\n handleCheck(checked)\n }\n }\n\n const handleCheck = (checked: boolean) => {\n if (!props.node.loaded) {\n doLoad()\n } else {\n doCheck(checked)\n !checkStrictly.value && doExpand()\n }\n }\n\n return {\n panel,\n isHoverMenu,\n multiple,\n checkStrictly,\n checkedNodeId,\n isDisabled,\n isLeaf,\n expandable,\n inExpandingPath,\n inCheckedPath,\n handleHoverExpand,\n handleExpand,\n handleClick,\n handleCheck,\n handleSelectCheck,\n }\n },\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;AA6EA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EAEN,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAGF,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,UAAU;AAAA;AAAA,IAEZ,QAAQ;AAAA;AAAA,EAGV,OAAO,CAAC;AAAA,EAER,MAAM,OAAO,EAAE,QAAQ;AACrB,UAAM,QAAQ,OAAO;AAErB,UAAM,cAAc,SAAS,MAAM,MAAM;AACzC,UAAM,WAAW,SAAS,MAAM,MAAM,OAAO;AAC7C,UAAM,gBAAgB,SAAS,MAAM,MAAM,OAAO;AAClD,UAAM,gBAAgB,SAAS,MAAM;AACrC,UAAM;AACN,mBAAe,qBAAqB,KAAK;AACzC;AAGA,UAAM,iCAAiC;AAEvC,UAAM;AAIN,UAAM,qBAAmC;AACvC;AACA,yCAAmC;AAAQ;AAG7C,UAAM;AACJ,0BAAoB;AAAO;AAC3B;AAAuB;AAGzB,UAAM;AACJ;AACA,sBAAgB;AAAc;AAC9B;AAA8B;AAGhC,UAAM;AACJ;AACE,YAAI;AAAe;AAAA;AAAA;AAIvB;AACE,UAAI;AAAoB;AACxB;AACA;AAAgC;AAGlC;AACE;AAEA,oCAA8B;AAAS;AACvC;AAA2B;AAG7B,UAAM;AACJ;AAAwC;AAExC;AAME;AAAY;AAEZ;AAAA;AAAA;AAIJ;AACE;AACE;AACA;AACE;AAAA;AAAA;AAGF;AAAY;AAAA;AAIhB;AACE;AACE;AAAA;AAEA;AACA;AAAwB;AAAA;AAI5B;AAAO;AACL;AACA,MACA;AAAA;AACA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;;;;;;;;;;;AAzMwB,QACtB;AAAW;AACd;AACW,yCACmB;AAAA,IAC9B;AAAU,IACV;AAAK;;AAAoC;AAAuD;AAAyC;AAAyC;AAAkC;;;AAS5L;AACN;KAEnB;AAAA,wBAEgB;AAAA;;AACb;AACoB;AACA;AACf,MACL;AAAqC;AAAA;gBAGd;MACvB;AAAA;AACe,MACf;AAAU;AACV,MACA;AAAK;;;;AAEN;AAIa;;;;;AAIR;;wBAEI;AAAA;;;;AAGK;AACA;AAEhB;AACuB;AACM;;AAAO;;;AACrB;;;;;AAEQ;;;AACJ;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"node2.mjs","sources":["../../../../../../packages/components/cascader-panel/src/node.vue"],"sourcesContent":["<template>\n <li\n :id=\"`${menuId}-${node.uid}`\"\n role=\"menuitem\"\n :aria-haspopup=\"!isLeaf\"\n :aria-owns=\"isLeaf ? null : menuId\"\n :aria-expanded=\"inExpandingPath\"\n :tabindex=\"expandable ? -1 : undefined\"\n :class=\"[\n 'el-cascader-node',\n checkStrictly && 'is-selectable',\n inExpandingPath && 'in-active-path',\n inCheckedPath && 'in-checked-path',\n node.checked && 'is-active',\n !expandable && 'is-disabled',\n ]\"\n @mouseenter=\"handleHoverExpand\"\n @focus=\"handleHoverExpand\"\n @click=\"handleClick\"\n >\n <!-- prefix -->\n <el-checkbox\n v-if=\"multiple\"\n :model-value=\"node.checked\"\n :indeterminate=\"node.indeterminate\"\n :disabled=\"isDisabled\"\n @click.stop\n @update:model-value=\"handleSelectCheck\"\n />\n <el-radio\n v-else-if=\"checkStrictly\"\n :model-value=\"checkedNodeId\"\n :label=\"node.uid\"\n :disabled=\"isDisabled\"\n @update:model-value=\"handleSelectCheck\"\n @click.stop\n >\n <!--\n Add an empty element to avoid render label,\n do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485\n -->\n <span></span>\n </el-radio>\n <el-icon\n v-else-if=\"isLeaf && node.checked\"\n class=\"el-cascader-node__prefix\"\n >\n <check />\n </el-icon>\n\n <!-- content -->\n <node-content />\n\n <!-- postfix -->\n <template v-if=\"!isLeaf\">\n <el-icon v-if=\"node.loading\" class=\"is-loading el-cascader-node__postfix\">\n <loading />\n </el-icon>\n <el-icon v-else class=\"arrow-right el-cascader-node__postfix\">\n <arrow-right />\n </el-icon>\n </template>\n </li>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject } from 'vue'\nimport ElCheckbox from '@element-plus/components/checkbox'\nimport ElRadio from '@element-plus/components/radio'\nimport ElIcon from '@element-plus/components/icon'\nimport { Check, Loading, ArrowRight } from '@element-plus/icons-vue'\nimport NodeContent from './node-content'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\nimport type { default as CascaderNode } from './node'\n\nimport type { PropType } from 'vue'\n\nexport default defineComponent({\n name: 'ElCascaderNode',\n\n components: {\n ElCheckbox,\n ElRadio,\n NodeContent,\n ElIcon,\n Check,\n Loading,\n ArrowRight,\n },\n\n props: {\n node: {\n type: Object as PropType<CascaderNode>,\n required: true,\n },\n menuId: String,\n },\n\n emits: ['expand'],\n\n setup(props, { emit }) {\n const panel = inject(CASCADER_PANEL_INJECTION_KEY)!\n\n const isHoverMenu = computed(() => panel.isHoverMenu)\n const multiple = computed(() => panel.config.multiple)\n const checkStrictly = computed(() => panel.config.checkStrictly)\n const checkedNodeId = computed(() => panel.checkedNodes[0]?.uid)\n const isDisabled = computed(() => props.node.isDisabled)\n const isLeaf = computed(() => props.node.isLeaf)\n const expandable = computed(\n () => (checkStrictly.value && !isLeaf.value) || !isDisabled.value\n )\n const inExpandingPath = computed(() => isInPath(panel.expandingNode!))\n // only useful in check-strictly mode\n const inCheckedPath = computed(\n () => checkStrictly.value && panel.checkedNodes.some(isInPath)\n )\n\n const isInPath = (node: CascaderNode) => {\n const { level, uid } = props.node\n return node?.pathNodes[level - 1]?.uid === uid\n }\n\n const doExpand = () => {\n if (inExpandingPath.value) return\n panel.expandNode(props.node)\n }\n\n const doCheck = (checked: boolean) => {\n const { node } = props\n if (checked === node.checked) return\n panel.handleCheckChange(node, checked)\n }\n\n const doLoad = () => {\n panel.lazyLoad(props.node, () => {\n if (!isLeaf.value) doExpand()\n })\n }\n\n const handleHoverExpand = (e: Event) => {\n if (!isHoverMenu.value) return\n handleExpand()\n !isLeaf.value && emit('expand', e)\n }\n\n const handleExpand = () => {\n const { node } = props\n // do not exclude leaf node because the menus expanded might have to reset\n if (!expandable.value || node.loading) return\n node.loaded ? doExpand() : doLoad()\n }\n\n const handleClick = () => {\n if (isHoverMenu.value && !isLeaf.value) return\n\n if (\n isLeaf.value &&\n !isDisabled.value &&\n !checkStrictly.value &&\n !multiple.value\n ) {\n handleCheck(true)\n } else {\n handleExpand()\n }\n }\n\n const handleSelectCheck = (checked: boolean) => {\n if (checkStrictly.value) {\n doCheck(checked)\n if (props.node.loaded) {\n doExpand()\n }\n } else {\n handleCheck(checked)\n }\n }\n\n const handleCheck = (checked: boolean) => {\n if (!props.node.loaded) {\n doLoad()\n } else {\n doCheck(checked)\n !checkStrictly.value && doExpand()\n }\n }\n\n return {\n panel,\n isHoverMenu,\n multiple,\n checkStrictly,\n checkedNodeId,\n isDisabled,\n isLeaf,\n expandable,\n inExpandingPath,\n inCheckedPath,\n handleHoverExpand,\n handleExpand,\n handleClick,\n handleCheck,\n handleSelectCheck,\n }\n },\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;AA6EA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EAEN,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAGF,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,UAAU;AAAA;AAAA,IAEZ,QAAQ;AAAA;AAAA,EAGV,OAAO,CAAC;AAAA,EAER,MAAM,OAAO,EAAE,QAAQ;AACrB,UAAM,QAAQ,OAAO;AAErB,UAAM,cAAc,SAAS,MAAM,MAAM;AACzC,UAAM,WAAW,SAAS,MAAM,MAAM,OAAO;AAC7C,UAAM,gBAAgB,SAAS,MAAM,MAAM,OAAO;AAClD,UAAM,gBAAgB,SAAS,MAAM;AACrC,UAAM;AACN,mBAAe,qBAAqB,KAAK;AACzC;AAGA,UAAM,iCAAiC;AAEvC,UAAM;AAIN,UAAM,qBAAmC;AACvC;AACA,yCAAmC;AAAQ;AAG7C,UAAM;AACJ,0BAAoB;AAAO;AAC3B;AAAuB;AAGzB,UAAM;AACJ;AACA,sBAAgB;AAAc;AAC9B;AAA8B;AAGhC,UAAM;AACJ;AACE,YAAI;AAAe;AAAA;AAAA;AAIvB;AACE,UAAI;AAAoB;AACxB;AACA;AAAgC;AAGlC;AACE;AAEA,oCAA8B;AAAS;AACvC;AAA2B;AAG7B,UAAM;AACJ;AAAwC;AAExC;AAME;AAAY;AAEZ;AAAA;AAAA;AAIJ;AACE;AACE;AACA;AACE;AAAA;AAAA;AAGF;AAAY;AAAA;AAIhB;AACE;AACE;AAAA;AAEA;AACA;AAAwB;AAAA;AAI5B;AAAO;AACL;AACA,MACA;AAAA;AACA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;;;;;;;;;;;AA7IC,QA5DA;AAAoB;AAClB;AACY;AACW,IAC3B;AAAe,IACf;AAA4B,IAC5B;AAAK;;AAAiD;AAA0C;AAAyC,MAA6B;AAAY;AAAkC;AAAA;AAQxM;AACL;AACA;IAER;AAAA,IAEQ,+BADR;AAOE;;AALmB;AACE;AACV,MACV;AAAD;AAAW,MACV;AAAoB;AAeZ;;AAXK,MACb;AAAY,gBACF;AAAA,MACV;AAAoB,MACpB;AAAD;AAAW;;AAKR;AAHH;AAIA;AAAA;;AAOQ;;AAHF;wBAEN;AAAS;AAAA;AAAA;;;AAGX;AACgB;AAEhB,KACiB;AAON;AAJC;;AAFyB;;AACtB;AAAA;AAAA;;AAIH;;AAFY;;AACL;AAAA;AAAA;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"check-tag2.mjs","sources":["../../../../../../packages/components/check-tag/src/check-tag.vue"],"sourcesContent":["<template>\n <span :class=\"[ns.b(), ns.is('checked', checked)]\" @click=\"onChange\">\n <slot></slot>\n </span>\n</template>\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { checkTagProps, checkTagEmits } from './check-tag'\n\nexport default defineComponent({\n name: 'ElCheckTag',\n\n props: checkTagProps,\n emits: checkTagEmits,\n\n setup(props, { emit }) {\n const ns = useNamespace('check-tag')\n\n const onChange = () => {\n const checked = !props.checked\n emit('change', checked)\n emit('update:checked', checked)\n }\n\n return {\n ns,\n onChange,\n }\n },\n})\n</script>\n"],"names":["_openBlock","_normalizeClass"],"mappings":";;;;;;AAUA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EAEN,OAAO;AAAA,EACP,OAAO;AAAA,EAEP,MAAM,OAAO,EAAE,QAAQ;AACrB,UAAM,KAAK,aAAa;AAExB,UAAM,WAAW,MAAM;AACrB,YAAM,UAAU,CAAC,MAAM;AACvB,WAAK,UAAU;AACf,WAAK,kBAAkB;AAAA;AAGzB,WAAO;AAAA,MACL;AAAA,MACA;AAAA;AAAA;AAAA;2BA1BJ,wBAEO;SAFKA,gCAAW,QAAK;AAAA,IAAwB,OAAKC,mDAAE;AAAA;KACzD;AAAA;;;;;;;"}
1
+ {"version":3,"file":"check-tag2.mjs","sources":["../../../../../../packages/components/check-tag/src/check-tag.vue"],"sourcesContent":["<template>\n <span :class=\"[ns.b(), ns.is('checked', checked)]\" @click=\"onChange\">\n <slot></slot>\n </span>\n</template>\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { checkTagProps, checkTagEmits } from './check-tag'\n\nexport default defineComponent({\n name: 'ElCheckTag',\n\n props: checkTagProps,\n emits: checkTagEmits,\n\n setup(props, { emit }) {\n const ns = useNamespace('check-tag')\n\n const onChange = () => {\n const checked = !props.checked\n emit('change', checked)\n emit('update:checked', checked)\n }\n\n return {\n ns,\n onChange,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_renderSlot"],"mappings":";;;;;;AAUA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EAEN,OAAO;AAAA,EACP,OAAO;AAAA,EAEP,MAAM,OAAO,EAAE,QAAQ;AACrB,UAAM,KAAK,aAAa;AAExB,UAAM,WAAW,MAAM;AACrB,YAAM,UAAU,CAAC,MAAM;AACvB,WAAK,UAAU;AACf,WAAK,kBAAkB;AAAA;AAGzB,WAAO;AAAA,MACL;AAAA,MACA;AAAA;AAAA;AAAA;;sBA1BJA,mBAEO;AAAA,IAFA,OAAKC,gBAAG,QAAG,KAAK,QAAG,GAAE,WAAY;AAAA,IAAY,SAAK,uCAAE;AAAA;IACzDC,WAAa;AAAA;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox-button.mjs","sources":["../../../../../../packages/components/checkbox/src/checkbox-button.vue"],"sourcesContent":["<template>\n <label\n :class=\"[\n ns.b('button'),\n ns.bm('button', size),\n ns.is('disabled', isDisabled),\n ns.is('checked', isChecked),\n ns.is('focus', focus),\n ]\"\n role=\"checkbox\"\n :aria-checked=\"isChecked\"\n :aria-disabled=\"isDisabled\"\n >\n <input\n v-if=\"trueLabel || falseLabel\"\n v-model=\"model\"\n :class=\"ns.be('button', 'original')\"\n type=\"checkbox\"\n :name=\"name\"\n :tabindex=\"tabindex\"\n :disabled=\"isDisabled\"\n :true-value=\"trueLabel\"\n :false-value=\"falseLabel\"\n @change=\"handleChange\"\n @focus=\"focus = true\"\n @blur=\"focus = false\"\n />\n <input\n v-else\n v-model=\"model\"\n :class=\"ns.be('button', 'original')\"\n type=\"checkbox\"\n :name=\"name\"\n :tabindex=\"tabindex\"\n :disabled=\"isDisabled\"\n :value=\"label\"\n @change=\"handleChange\"\n @focus=\"focus = true\"\n @blur=\"focus = false\"\n />\n\n <span\n v-if=\"$slots.default || label\"\n :class=\"ns.be('button', 'inner')\"\n :style=\"isChecked ? activeStyle : null\"\n >\n <slot>{{ label }}</slot>\n </span>\n </label>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, computed } from 'vue'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { useNamespace } from '@element-plus/hooks'\nimport { useCheckbox, useCheckboxGroup, useCheckboxProps } from './useCheckbox'\n\nexport default defineComponent({\n name: 'ElCheckboxButton',\n props: useCheckboxProps,\n emits: [UPDATE_MODEL_EVENT, 'change'],\n setup(props) {\n const { focus, isChecked, isDisabled, size, model, handleChange } =\n useCheckbox(props)\n const { checkboxGroup } = useCheckboxGroup()\n const ns = useNamespace('checkbox')\n\n const activeStyle = computed(() => {\n const fillValue = checkboxGroup?.fill?.value ?? ''\n return {\n backgroundColor: fillValue,\n borderColor: fillValue,\n color: checkboxGroup?.textColor?.value ?? '',\n boxShadow: fillValue ? `-1px 0 0 0 ${fillValue}` : null,\n }\n })\n\n return {\n focus,\n isChecked,\n isDisabled,\n model,\n handleChange,\n activeStyle,\n size,\n ns,\n }\n },\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;AAwDA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO,CAAC,oBAAoB;AAAA,EAC5B,MAAM,OAAO;AACX,UAAM,EAAE,OAAO,WAAW,YAAY,MAAM,OAAO,iBACjD,YAAY;AACd,UAAM,EAAE,kBAAkB;AAC1B,UAAM,KAAK,aAAa;AAExB,UAAM,cAAc,SAAS,MAAM;AACjC,YAAM,YAAY;AAClB;AAAO;AACY,QACjB;AAAa,QACb,sBAAsB;AAAoB,QAC1C;AAAmD;AAAA;AAIvD;AAAO;AACL,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;;;;SAlFI;AAAA;AAAc;AAAuB,MAAwB,QAAG;AAAe,MAAmB,QAAG,GAAE;AAAY,MAAkB,QAAG,GAAE;AAAU;;;AAQzJ,IACA,gBAAa;AAAE;;AAGR;;MAEL;AAAY,MACb,uBAAe;AAAA,MACd;AAAM,MACN;AAAU,MACV,UAAU;AAAA,MACV,eAAY;AAAA,MACZ,cAAW;AAAE,MACb;AAAM,MACN;AAAY,MACZ;AAAW;;AAVE;;;MAeb;AAAY,MACb,uBAAe;AAAA,MACd;AAAM,MACN;AAAU,MACV,UAAU;AAAA,MACV,UAAO;AAAA,MACP;AAAM,MACN;AAAY,MACZ;AAAW;;AATE;;;;AAcR,MACL;AAAmB;;AAEpB;AAAc;;;;;;;;;;"}
1
+ {"version":3,"file":"checkbox-button.mjs","sources":["../../../../../../packages/components/checkbox/src/checkbox-button.vue"],"sourcesContent":["<template>\n <label\n :class=\"[\n ns.b('button'),\n ns.bm('button', size),\n ns.is('disabled', isDisabled),\n ns.is('checked', isChecked),\n ns.is('focus', focus),\n ]\"\n role=\"checkbox\"\n :aria-checked=\"isChecked\"\n :aria-disabled=\"isDisabled\"\n >\n <input\n v-if=\"trueLabel || falseLabel\"\n v-model=\"model\"\n :class=\"ns.be('button', 'original')\"\n type=\"checkbox\"\n :name=\"name\"\n :tabindex=\"tabindex\"\n :disabled=\"isDisabled\"\n :true-value=\"trueLabel\"\n :false-value=\"falseLabel\"\n @change=\"handleChange\"\n @focus=\"focus = true\"\n @blur=\"focus = false\"\n />\n <input\n v-else\n v-model=\"model\"\n :class=\"ns.be('button', 'original')\"\n type=\"checkbox\"\n :name=\"name\"\n :tabindex=\"tabindex\"\n :disabled=\"isDisabled\"\n :value=\"label\"\n @change=\"handleChange\"\n @focus=\"focus = true\"\n @blur=\"focus = false\"\n />\n\n <span\n v-if=\"$slots.default || label\"\n :class=\"ns.be('button', 'inner')\"\n :style=\"isChecked ? activeStyle : null\"\n >\n <slot>{{ label }}</slot>\n </span>\n </label>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, computed } from 'vue'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { useNamespace } from '@element-plus/hooks'\nimport { useCheckbox, useCheckboxGroup, useCheckboxProps } from './useCheckbox'\n\nexport default defineComponent({\n name: 'ElCheckboxButton',\n props: useCheckboxProps,\n emits: [UPDATE_MODEL_EVENT, 'change'],\n setup(props) {\n const { focus, isChecked, isDisabled, size, model, handleChange } =\n useCheckbox(props)\n const { checkboxGroup } = useCheckboxGroup()\n const ns = useNamespace('checkbox')\n\n const activeStyle = computed(() => {\n const fillValue = checkboxGroup?.fill?.value ?? ''\n return {\n backgroundColor: fillValue,\n borderColor: fillValue,\n color: checkboxGroup?.textColor?.value ?? '',\n boxShadow: fillValue ? `-1px 0 0 0 ${fillValue}` : null,\n }\n })\n\n return {\n focus,\n isChecked,\n isDisabled,\n model,\n handleChange,\n activeStyle,\n size,\n ns,\n }\n },\n})\n</script>\n"],"names":["_normalizeClass"],"mappings":";;;;;;;;AAwDA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO,CAAC,oBAAoB;AAAA,EAC5B,MAAM,OAAO;AACX,UAAM,EAAE,OAAO,WAAW,YAAY,MAAM,OAAO,iBACjD,YAAY;AACd,UAAM,EAAE,kBAAkB;AAC1B,UAAM,KAAK,aAAa;AAExB,UAAM,cAAc,SAAS,MAAM;AACjC,YAAM,YAAY;AAClB;AAAO;AACY,QACjB;AAAa,QACb,sBAAsB;AAAoB,QAC1C;AAAmD;AAAA;AAIvD;AAAO;AACL,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;;;;2CApCI;AAAA;AA9CA;AAAc,MAAkB,QAAG;AAAa,MAAa,QAAG,GAAE;AAAa,MAAmB,QAAG,GAAE;AAAY,MAAkB,QAAG,GAAE,SAAU;AAAA;AAAA;AAOrJ,IACJ,gBAAc;AAAA,IACd;AAAe;;AAed;;AAXc,MACb,uBAAO,QAAG;AAAE,MACb;AAAK,MACJ,MAAM;AAAA,MACN,UAAU;AAAA,MACV,UAAU;AAAA,MACV,cAAY;AAAA,MACZ;AAAa,MACb;AAAQ,MACR;AAAY,MACZ;AAAW;;AAVH;AAwBT;;AAVc,MACb,uBAAO,QAAG;AAAE,MACb;AAAK,MACJ,MAAM;AAAA,MACN,UAAU;AAAA,MACV,UAAU;AAAA,MACV;AAAO,MACP;AAAQ,MACR;AAAY,MACZ;AAAW;;AATH;AAAA;AAkBJ;MAJJ;AAAY,MACZ,OAAKA,eAAE;AAAuB;;AAEP,yCAAf;AAAK;AAAA;;;;;;;;"}