element-plus 1.2.0-beta.4 → 1.2.0-beta.5

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 (491) hide show
  1. package/dist/index.css +1 -1
  2. package/dist/index.full.js +1149 -988
  3. package/dist/index.full.min.js +9 -9
  4. package/dist/index.full.min.js.map +1 -1
  5. package/dist/index.full.min.mjs +9 -9
  6. package/dist/index.full.min.mjs.map +1 -1
  7. package/dist/index.full.mjs +1145 -982
  8. package/es/components/autocomplete/src/index.vue_vue_type_script_lang.mjs +1 -1
  9. package/es/components/calendar/index.d.ts +2 -2
  10. package/es/components/calendar/src/date-table.vue_vue_type_script_lang.mjs +2 -2
  11. package/es/components/calendar/src/date-table.vue_vue_type_script_lang.mjs.map +1 -1
  12. package/es/components/calendar/src/date-table.vue_vue_type_template_id_297fdb36_lang.mjs.map +1 -1
  13. package/es/components/calendar/src/index.vue.d.ts +1 -1
  14. package/es/components/calendar/src/index.vue_vue_type_script_lang.mjs +2 -2
  15. package/es/components/calendar/src/index.vue_vue_type_script_lang.mjs.map +1 -1
  16. package/es/components/calendar/src/index.vue_vue_type_template_id_819aa44a_lang.mjs.map +1 -1
  17. package/es/components/carousel/src/item.vue_vue_type_script_lang.mjs +0 -1
  18. package/es/components/carousel/src/item.vue_vue_type_script_lang.mjs.map +1 -1
  19. package/es/components/carousel/src/item.vue_vue_type_template_id_3d2e4fb8_lang.mjs.map +1 -1
  20. package/es/components/cascader/src/index.vue_vue_type_script_lang.mjs +2 -2
  21. package/es/components/cascader/src/index.vue_vue_type_script_lang.mjs.map +1 -1
  22. package/es/components/cascader/src/index.vue_vue_type_template_id_0429c2db_lang.mjs.map +1 -1
  23. package/es/components/cascader-panel/src/index.vue_vue_type_script_lang.mjs +13 -18
  24. package/es/components/cascader-panel/src/index.vue_vue_type_script_lang.mjs.map +1 -1
  25. package/es/components/cascader-panel/src/index.vue_vue_type_template_id_97c48f5c_lang.mjs.map +1 -1
  26. package/es/components/cascader-panel/src/menu.vue.d.ts +1 -1
  27. package/es/components/cascader-panel/src/menu.vue_vue_type_script_lang.mjs +2 -2
  28. package/es/components/cascader-panel/src/menu.vue_vue_type_script_lang.mjs.map +1 -1
  29. package/es/components/cascader-panel/src/menu.vue_vue_type_template_id_9c79e4e2_lang.mjs.map +1 -1
  30. package/es/components/color-picker/index.d.ts +2 -2
  31. package/es/components/color-picker/src/index.vue.d.ts +1 -1
  32. package/es/components/color-picker/src/index.vue_vue_type_script_lang.mjs +2 -2
  33. package/es/components/color-picker/src/index.vue_vue_type_script_lang.mjs.map +1 -1
  34. package/es/components/color-picker/src/index.vue_vue_type_template_id_46a474d5_lang.mjs.map +1 -1
  35. package/es/components/config-provider/index.d.ts +2 -1
  36. package/es/components/config-provider/index.mjs +1 -0
  37. package/es/components/config-provider/index.mjs.map +1 -1
  38. package/es/components/config-provider/src/config-provider.d.ts +1 -1
  39. package/es/components/config-provider/src/index.d.ts +1 -1
  40. package/es/components/config-provider/src/index.mjs +2 -2
  41. package/es/components/config-provider/src/index.mjs.map +1 -1
  42. package/es/components/date-picker/src/date-picker-com/basic-date-table.vue.d.ts +1 -1
  43. package/es/components/date-picker/src/date-picker-com/basic-date-table.vue_vue_type_script_lang.mjs +2 -2
  44. package/es/components/date-picker/src/date-picker-com/basic-date-table.vue_vue_type_script_lang.mjs.map +1 -1
  45. package/es/components/date-picker/src/date-picker-com/basic-date-table.vue_vue_type_template_id_0572814e_lang.mjs.map +1 -1
  46. package/es/components/date-picker/src/date-picker-com/basic-month-table.vue.d.ts +1 -1
  47. package/es/components/date-picker/src/date-picker-com/basic-month-table.vue_vue_type_script_lang.mjs +2 -2
  48. package/es/components/date-picker/src/date-picker-com/basic-month-table.vue_vue_type_script_lang.mjs.map +1 -1
  49. package/es/components/date-picker/src/date-picker-com/basic-month-table.vue_vue_type_template_id_2f6fcbf2_lang.mjs.map +1 -1
  50. package/es/components/date-picker/src/date-picker-com/basic-year-table.vue_vue_type_script_lang.mjs +2 -2
  51. package/es/components/date-picker/src/date-picker-com/basic-year-table.vue_vue_type_script_lang.mjs.map +1 -1
  52. package/es/components/date-picker/src/date-picker-com/basic-year-table.vue_vue_type_template_id_441df31d_lang.mjs.map +1 -1
  53. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue.d.ts +1 -1
  54. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.mjs +2 -2
  55. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.mjs.map +1 -1
  56. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_template_id_78e07aa7_lang.mjs.map +1 -1
  57. package/es/components/date-picker/src/date-picker-com/panel-date-range.vue.d.ts +1 -1
  58. package/es/components/date-picker/src/date-picker-com/panel-date-range.vue_vue_type_script_lang.mjs +2 -2
  59. package/es/components/date-picker/src/date-picker-com/panel-date-range.vue_vue_type_script_lang.mjs.map +1 -1
  60. package/es/components/date-picker/src/date-picker-com/panel-date-range.vue_vue_type_template_id_62b45ab2_lang.mjs.map +1 -1
  61. package/es/components/date-picker/src/date-picker-com/panel-month-range.vue.d.ts +1 -1
  62. package/es/components/date-picker/src/date-picker-com/panel-month-range.vue_vue_type_script_lang.mjs +2 -2
  63. package/es/components/date-picker/src/date-picker-com/panel-month-range.vue_vue_type_script_lang.mjs.map +1 -1
  64. package/es/components/date-picker/src/date-picker-com/panel-month-range.vue_vue_type_template_id_2e377892_lang.mjs.map +1 -1
  65. package/es/components/dialog/src/use-dialog.mjs +4 -4
  66. package/es/components/dialog/src/use-dialog.mjs.map +1 -1
  67. package/es/components/dropdown/index.d.ts +1 -1
  68. package/es/components/dropdown/src/dropdown.vue.d.ts +1 -1
  69. package/es/components/empty/src/empty.vue_vue_type_script_lang.mjs +2 -2
  70. package/es/components/empty/src/empty.vue_vue_type_script_lang.mjs.map +1 -1
  71. package/es/components/empty/src/empty.vue_vue_type_template_id_10d211eb_lang.mjs.map +1 -1
  72. package/es/components/image/index.d.ts +1 -1
  73. package/es/components/image/src/image.vue.d.ts +1 -1
  74. package/es/components/image/src/image.vue_vue_type_script_lang.mjs +3 -3
  75. package/es/components/image/src/image.vue_vue_type_script_lang.mjs.map +1 -1
  76. package/es/components/image/src/image.vue_vue_type_template_id_34467287_lang.mjs.map +1 -1
  77. package/es/components/image-viewer/src/image-viewer.vue_vue_type_script_lang.mjs +2 -2
  78. package/es/components/image-viewer/src/image-viewer.vue_vue_type_script_lang.mjs.map +1 -1
  79. package/es/components/image-viewer/src/image-viewer.vue_vue_type_template_id_4b22ad85_lang.mjs.map +1 -1
  80. package/es/components/index.mjs +1 -0
  81. package/es/components/index.mjs.map +1 -1
  82. package/es/components/input/src/input.vue_vue_type_script_lang.mjs +1 -1
  83. package/es/components/menu/src/menu-collapse-transition.vue_vue_type_script_lang.mjs +1 -2
  84. package/es/components/menu/src/menu-collapse-transition.vue_vue_type_script_lang.mjs.map +1 -1
  85. package/es/components/menu/src/menu-collapse-transition.vue_vue_type_template_id_db8e3ce6_lang.mjs.map +1 -1
  86. package/es/components/message-box/src/index.vue_vue_type_script_lang.mjs +8 -8
  87. package/es/components/message-box/src/index.vue_vue_type_script_lang.mjs.map +1 -1
  88. package/es/components/message-box/src/index.vue_vue_type_template_id_7035e868_lang.mjs +2 -0
  89. package/es/components/message-box/src/index.vue_vue_type_template_id_7035e868_lang.mjs.map +1 -1
  90. package/es/components/page-header/index.d.ts +1 -1
  91. package/es/components/page-header/src/page-header.vue.d.ts +1 -1
  92. package/es/components/page-header/src/page-header.vue_vue_type_script_lang.mjs +2 -2
  93. package/es/components/page-header/src/page-header.vue_vue_type_script_lang.mjs.map +1 -1
  94. package/es/components/page-header/src/page-header.vue_vue_type_template_id_d12fb4b2_lang.mjs.map +1 -1
  95. package/es/components/pagination/src/components/jumper.vue.d.ts +1 -1
  96. package/es/components/pagination/src/components/jumper.vue_vue_type_script_lang.mjs +2 -2
  97. package/es/components/pagination/src/components/jumper.vue_vue_type_script_lang.mjs.map +1 -1
  98. package/es/components/pagination/src/components/jumper.vue_vue_type_template_id_772239ce_lang.mjs.map +1 -1
  99. package/es/components/pagination/src/components/sizes.vue.d.ts +1 -1
  100. package/es/components/pagination/src/components/sizes.vue_vue_type_script_lang.mjs +2 -2
  101. package/es/components/pagination/src/components/sizes.vue_vue_type_script_lang.mjs.map +1 -1
  102. package/es/components/pagination/src/components/sizes.vue_vue_type_template_id_3a063678_lang.mjs.map +1 -1
  103. package/es/components/pagination/src/components/total.vue.d.ts +1 -1
  104. package/es/components/pagination/src/components/total.vue_vue_type_script_lang.mjs +2 -2
  105. package/es/components/pagination/src/components/total.vue_vue_type_script_lang.mjs.map +1 -1
  106. package/es/components/pagination/src/components/total.vue_vue_type_template_id_bc261314_lang.mjs.map +1 -1
  107. package/es/components/pagination/src/pagination.mjs +2 -2
  108. package/es/components/pagination/src/pagination.mjs.map +1 -1
  109. package/es/components/popconfirm/src/popconfirm.vue_vue_type_script_lang.mjs +2 -2
  110. package/es/components/popconfirm/src/popconfirm.vue_vue_type_script_lang.mjs.map +1 -1
  111. package/es/components/popconfirm/src/popconfirm.vue_vue_type_template_id_16409d25_lang.mjs.map +1 -1
  112. package/es/components/popper/src/use-popper/defaults.mjs +1 -1
  113. package/es/components/popper/src/use-popper/index.d.ts +1 -1538
  114. package/es/components/scrollbar/src/scrollbar.vue_vue_type_script_lang.mjs +1 -1
  115. package/es/components/scrollbar/src/scrollbar.vue_vue_type_script_lang.mjs.map +1 -1
  116. package/es/components/scrollbar/src/scrollbar.vue_vue_type_template_id_303f965d_lang.mjs.map +1 -1
  117. package/es/components/select/src/select.vue_vue_type_script_lang.mjs +3 -3
  118. package/es/components/select/src/select.vue_vue_type_script_lang.mjs.map +1 -1
  119. package/es/components/select/src/select.vue_vue_type_template_id_33774f85_lang.mjs.map +1 -1
  120. package/es/components/select/src/useSelect.mjs +3 -3
  121. package/es/components/select/src/useSelect.mjs.map +1 -1
  122. package/es/components/select-v2/index.d.ts +2 -2
  123. package/es/components/select-v2/src/select.vue.d.ts +1 -1
  124. package/es/components/select-v2/src/useSelect.mjs +2 -2
  125. package/es/components/select-v2/src/useSelect.mjs.map +1 -1
  126. package/es/components/skeleton/src/skeleton.vue_vue_type_script_lang.mjs +1 -1
  127. package/es/components/table/index.d.ts +1 -1
  128. package/es/components/table/src/filter-panel.vue.d.ts +2 -2
  129. package/es/components/table/src/filter-panel.vue_vue_type_script_lang.mjs +2 -2
  130. package/es/components/table/src/filter-panel.vue_vue_type_script_lang.mjs.map +1 -1
  131. package/es/components/table/src/filter-panel.vue_vue_type_template_id_fde1c940_lang.mjs.map +1 -1
  132. package/es/components/table/src/table-body/index.d.ts +1 -1
  133. package/es/components/table/src/table-footer/index.d.ts +1 -1
  134. package/es/components/table/src/table-header/index.d.ts +1 -1
  135. package/es/components/table/src/table.vue.d.ts +5 -13
  136. package/es/components/table/src/table.vue_vue_type_script_lang.mjs +2 -2
  137. package/es/components/table/src/table.vue_vue_type_script_lang.mjs.map +1 -1
  138. package/es/components/table/src/table.vue_vue_type_template_id_4a1660ad_lang.mjs.map +1 -1
  139. package/es/components/time-picker/src/common/picker.vue_vue_type_script_lang.mjs +2 -2
  140. package/es/components/time-picker/src/common/picker.vue_vue_type_script_lang.mjs.map +1 -1
  141. package/es/components/time-picker/src/common/picker.vue_vue_type_template_id_1d54be91_lang.mjs.map +1 -1
  142. package/es/components/time-picker/src/time-picker-com/panel-time-pick.vue.d.ts +1 -1
  143. package/es/components/time-picker/src/time-picker-com/panel-time-pick.vue_vue_type_script_lang.mjs +2 -2
  144. package/es/components/time-picker/src/time-picker-com/panel-time-pick.vue_vue_type_script_lang.mjs.map +1 -1
  145. package/es/components/time-picker/src/time-picker-com/panel-time-pick.vue_vue_type_template_id_3b3cfa6a_lang.mjs.map +1 -1
  146. package/es/components/time-picker/src/time-picker-com/panel-time-range.vue.d.ts +1 -1
  147. package/es/components/time-picker/src/time-picker-com/panel-time-range.vue_vue_type_script_lang.mjs +2 -2
  148. package/es/components/time-picker/src/time-picker-com/panel-time-range.vue_vue_type_script_lang.mjs.map +1 -1
  149. package/es/components/time-picker/src/time-picker-com/panel-time-range.vue_vue_type_template_id_57d94b44_lang.mjs.map +1 -1
  150. package/es/components/transfer/src/index.vue_vue_type_script_lang.mjs +2 -2
  151. package/es/components/transfer/src/index.vue_vue_type_script_lang.mjs.map +1 -1
  152. package/es/components/transfer/src/index.vue_vue_type_template_id_6c8b9070_lang.mjs.map +1 -1
  153. package/es/components/transfer/src/transfer-panel.vue.d.ts +1 -1
  154. package/es/components/transfer/src/transfer-panel.vue_vue_type_script_lang.mjs +2 -2
  155. package/es/components/transfer/src/transfer-panel.vue_vue_type_script_lang.mjs.map +1 -1
  156. package/es/components/transfer/src/transfer-panel.vue_vue_type_template_id_1a7d1f9c_lang.mjs.map +1 -1
  157. package/es/components/tree/index.d.ts +2 -2
  158. package/es/components/tree/src/tree.vue.d.ts +1 -1
  159. package/es/components/tree/src/tree.vue_vue_type_script_lang.mjs +2 -2
  160. package/es/components/tree/src/tree.vue_vue_type_script_lang.mjs.map +1 -1
  161. package/es/components/tree/src/tree.vue_vue_type_template_id_7539bec5_lang.mjs.map +1 -1
  162. package/es/components/tree-v2/index.d.ts +1 -1
  163. package/es/components/tree-v2/src/tree.vue.d.ts +1 -1
  164. package/es/components/tree-v2/src/tree.vue_vue_type_script_lang.mjs +2 -2
  165. package/es/components/tree-v2/src/tree.vue_vue_type_script_lang.mjs.map +1 -1
  166. package/es/components/tree-v2/src/tree.vue_vue_type_template_id_5b45a1b2_lang.mjs.map +1 -1
  167. package/es/components/tree-v2/src/virtual-tree.mjs +4 -4
  168. package/es/components/upload/src/upload-list.vue.d.ts +1 -1
  169. package/es/components/upload/src/upload-list.vue_vue_type_script_lang.mjs +2 -2
  170. package/es/components/upload/src/upload-list.vue_vue_type_script_lang.mjs.map +1 -1
  171. package/es/components/upload/src/upload-list.vue_vue_type_template_id_192277b6_lang.mjs.map +1 -1
  172. package/es/hooks/index.d.ts +12 -15
  173. package/es/hooks/index.mjs +12 -15
  174. package/es/hooks/index.mjs.map +1 -1
  175. package/es/hooks/use-attrs/index.d.ts +2 -2
  176. package/es/hooks/use-attrs/index.mjs +2 -2
  177. package/es/hooks/use-attrs/index.mjs.map +1 -1
  178. package/es/hooks/use-focus/index.d.ts +1 -2
  179. package/es/hooks/use-focus/index.mjs +2 -2
  180. package/es/hooks/use-focus/index.mjs.map +1 -1
  181. package/es/hooks/use-form-item/index.d.ts +1 -1
  182. package/es/hooks/use-form-item/index.mjs +3 -3
  183. package/es/hooks/use-form-item/index.mjs.map +1 -1
  184. package/es/hooks/use-global-config/index.d.ts +1 -1
  185. package/es/hooks/use-global-config/index.mjs +1 -3
  186. package/es/hooks/use-global-config/index.mjs.map +1 -1
  187. package/es/hooks/use-locale/index.d.ts +9 -7
  188. package/es/hooks/use-locale/index.mjs +18 -51
  189. package/es/hooks/use-locale/index.mjs.map +1 -1
  190. package/es/hooks/use-lockscreen/index.d.ts +1 -2
  191. package/es/hooks/use-lockscreen/index.mjs +19 -21
  192. package/es/hooks/use-lockscreen/index.mjs.map +1 -1
  193. package/es/hooks/use-modal/index.d.ts +3 -3
  194. package/es/hooks/use-modal/index.mjs +6 -8
  195. package/es/hooks/use-modal/index.mjs.map +1 -1
  196. package/es/hooks/use-model-toggle/index.d.ts +3 -5
  197. package/es/hooks/use-model-toggle/index.mjs +9 -6
  198. package/es/hooks/use-model-toggle/index.mjs.map +1 -1
  199. package/es/hooks/use-popper/index.mjs +2 -2
  200. package/es/hooks/use-popper/index.mjs.map +1 -1
  201. package/es/hooks/use-prevent-global/index.d.ts +1 -2
  202. package/es/hooks/use-prevent-global/index.mjs +7 -7
  203. package/es/hooks/use-prevent-global/index.mjs.map +1 -1
  204. package/es/hooks/use-restore-active/index.d.ts +1 -2
  205. package/es/hooks/use-restore-active/index.mjs +2 -2
  206. package/es/hooks/use-restore-active/index.mjs.map +1 -1
  207. package/es/hooks/use-teleport/index.d.ts +1 -2
  208. package/es/hooks/use-teleport/index.mjs +4 -4
  209. package/es/hooks/use-teleport/index.mjs.map +1 -1
  210. package/es/hooks/use-throttle-render/index.d.ts +1 -1
  211. package/es/hooks/use-throttle-render/index.mjs +3 -3
  212. package/es/hooks/use-throttle-render/index.mjs.map +1 -1
  213. package/es/hooks/use-timeout/index.d.ts +2 -2
  214. package/es/hooks/use-timeout/index.mjs +10 -12
  215. package/es/hooks/use-timeout/index.mjs.map +1 -1
  216. package/es/hooks/use-transition-fallthrough/index.d.ts +1 -1
  217. package/es/hooks/use-transition-fallthrough/index.mjs.map +1 -1
  218. package/es/index.mjs +13 -15
  219. package/es/index.mjs.map +1 -1
  220. package/es/make-installer.mjs +2 -2
  221. package/es/make-installer.mjs.map +1 -1
  222. package/es/tokens/config-provider.d.ts +3 -3
  223. package/es/tokens/config-provider.mjs.map +1 -1
  224. package/es/utils/types.d.ts +25 -0
  225. package/es/version.d.ts +1 -1
  226. package/es/version.mjs +1 -1
  227. package/es/version.mjs.map +1 -1
  228. package/lib/components/autocomplete/src/index.vue_vue_type_script_lang.js +1 -1
  229. package/lib/components/calendar/index.d.ts +2 -2
  230. package/lib/components/calendar/src/date-table.vue_vue_type_script_lang.js +1 -1
  231. package/lib/components/calendar/src/date-table.vue_vue_type_script_lang.js.map +1 -1
  232. package/lib/components/calendar/src/date-table.vue_vue_type_template_id_297fdb36_lang.js.map +1 -1
  233. package/lib/components/calendar/src/index.vue.d.ts +1 -1
  234. package/lib/components/calendar/src/index.vue_vue_type_script_lang.js +1 -1
  235. package/lib/components/calendar/src/index.vue_vue_type_script_lang.js.map +1 -1
  236. package/lib/components/calendar/src/index.vue_vue_type_template_id_819aa44a_lang.js.map +1 -1
  237. package/lib/components/carousel/src/item.vue_vue_type_script_lang.js +0 -1
  238. package/lib/components/carousel/src/item.vue_vue_type_script_lang.js.map +1 -1
  239. package/lib/components/carousel/src/item.vue_vue_type_template_id_3d2e4fb8_lang.js.map +1 -1
  240. package/lib/components/cascader/src/index.vue_vue_type_script_lang.js +1 -1
  241. package/lib/components/cascader/src/index.vue_vue_type_script_lang.js.map +1 -1
  242. package/lib/components/cascader/src/index.vue_vue_type_template_id_0429c2db_lang.js.map +1 -1
  243. package/lib/components/cascader-panel/src/index.vue_vue_type_script_lang.js +13 -18
  244. package/lib/components/cascader-panel/src/index.vue_vue_type_script_lang.js.map +1 -1
  245. package/lib/components/cascader-panel/src/index.vue_vue_type_template_id_97c48f5c_lang.js.map +1 -1
  246. package/lib/components/cascader-panel/src/menu.vue.d.ts +1 -1
  247. package/lib/components/cascader-panel/src/menu.vue_vue_type_script_lang.js +1 -1
  248. package/lib/components/cascader-panel/src/menu.vue_vue_type_script_lang.js.map +1 -1
  249. package/lib/components/cascader-panel/src/menu.vue_vue_type_template_id_9c79e4e2_lang.js.map +1 -1
  250. package/lib/components/color-picker/index.d.ts +2 -2
  251. package/lib/components/color-picker/src/index.vue.d.ts +1 -1
  252. package/lib/components/color-picker/src/index.vue_vue_type_script_lang.js +1 -1
  253. package/lib/components/color-picker/src/index.vue_vue_type_script_lang.js.map +1 -1
  254. package/lib/components/color-picker/src/index.vue_vue_type_template_id_46a474d5_lang.js.map +1 -1
  255. package/lib/components/config-provider/index.d.ts +2 -1
  256. package/lib/components/config-provider/index.js +2 -0
  257. package/lib/components/config-provider/index.js.map +1 -1
  258. package/lib/components/config-provider/src/config-provider.d.ts +1 -1
  259. package/lib/components/config-provider/src/index.d.ts +1 -1
  260. package/lib/components/config-provider/src/index.js +1 -1
  261. package/lib/components/config-provider/src/index.js.map +1 -1
  262. package/lib/components/date-picker/src/date-picker-com/basic-date-table.vue.d.ts +1 -1
  263. package/lib/components/date-picker/src/date-picker-com/basic-date-table.vue_vue_type_script_lang.js +1 -1
  264. package/lib/components/date-picker/src/date-picker-com/basic-date-table.vue_vue_type_script_lang.js.map +1 -1
  265. package/lib/components/date-picker/src/date-picker-com/basic-date-table.vue_vue_type_template_id_0572814e_lang.js.map +1 -1
  266. package/lib/components/date-picker/src/date-picker-com/basic-month-table.vue.d.ts +1 -1
  267. package/lib/components/date-picker/src/date-picker-com/basic-month-table.vue_vue_type_script_lang.js +1 -1
  268. package/lib/components/date-picker/src/date-picker-com/basic-month-table.vue_vue_type_script_lang.js.map +1 -1
  269. package/lib/components/date-picker/src/date-picker-com/basic-month-table.vue_vue_type_template_id_2f6fcbf2_lang.js.map +1 -1
  270. package/lib/components/date-picker/src/date-picker-com/basic-year-table.vue_vue_type_script_lang.js +1 -1
  271. package/lib/components/date-picker/src/date-picker-com/basic-year-table.vue_vue_type_script_lang.js.map +1 -1
  272. package/lib/components/date-picker/src/date-picker-com/basic-year-table.vue_vue_type_template_id_441df31d_lang.js.map +1 -1
  273. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue.d.ts +1 -1
  274. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.js +1 -1
  275. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.js.map +1 -1
  276. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_template_id_78e07aa7_lang.js.map +1 -1
  277. package/lib/components/date-picker/src/date-picker-com/panel-date-range.vue.d.ts +1 -1
  278. package/lib/components/date-picker/src/date-picker-com/panel-date-range.vue_vue_type_script_lang.js +1 -1
  279. package/lib/components/date-picker/src/date-picker-com/panel-date-range.vue_vue_type_script_lang.js.map +1 -1
  280. package/lib/components/date-picker/src/date-picker-com/panel-date-range.vue_vue_type_template_id_62b45ab2_lang.js.map +1 -1
  281. package/lib/components/date-picker/src/date-picker-com/panel-month-range.vue.d.ts +1 -1
  282. package/lib/components/date-picker/src/date-picker-com/panel-month-range.vue_vue_type_script_lang.js +1 -1
  283. package/lib/components/date-picker/src/date-picker-com/panel-month-range.vue_vue_type_script_lang.js.map +1 -1
  284. package/lib/components/date-picker/src/date-picker-com/panel-month-range.vue_vue_type_template_id_2e377892_lang.js.map +1 -1
  285. package/lib/components/dialog/src/use-dialog.js +3 -3
  286. package/lib/components/dialog/src/use-dialog.js.map +1 -1
  287. package/lib/components/dropdown/index.d.ts +1 -1
  288. package/lib/components/dropdown/src/dropdown.vue.d.ts +1 -1
  289. package/lib/components/empty/src/empty.vue_vue_type_script_lang.js +1 -1
  290. package/lib/components/empty/src/empty.vue_vue_type_script_lang.js.map +1 -1
  291. package/lib/components/empty/src/empty.vue_vue_type_template_id_10d211eb_lang.js.map +1 -1
  292. package/lib/components/image/index.d.ts +1 -1
  293. package/lib/components/image/src/image.vue.d.ts +1 -1
  294. package/lib/components/image/src/image.vue_vue_type_script_lang.js +2 -2
  295. package/lib/components/image/src/image.vue_vue_type_script_lang.js.map +1 -1
  296. package/lib/components/image/src/image.vue_vue_type_template_id_34467287_lang.js.map +1 -1
  297. package/lib/components/image-viewer/src/image-viewer.vue_vue_type_script_lang.js +1 -1
  298. package/lib/components/image-viewer/src/image-viewer.vue_vue_type_script_lang.js.map +1 -1
  299. package/lib/components/image-viewer/src/image-viewer.vue_vue_type_template_id_4b22ad85_lang.js.map +1 -1
  300. package/lib/components/index.js +2 -0
  301. package/lib/components/index.js.map +1 -1
  302. package/lib/components/input/src/input.vue_vue_type_script_lang.js +1 -1
  303. package/lib/components/menu/src/menu-collapse-transition.vue_vue_type_script_lang.js +1 -2
  304. package/lib/components/menu/src/menu-collapse-transition.vue_vue_type_script_lang.js.map +1 -1
  305. package/lib/components/menu/src/menu-collapse-transition.vue_vue_type_template_id_db8e3ce6_lang.js.map +1 -1
  306. package/lib/components/message-box/src/index.vue_vue_type_script_lang.js +6 -6
  307. package/lib/components/message-box/src/index.vue_vue_type_script_lang.js.map +1 -1
  308. package/lib/components/message-box/src/index.vue_vue_type_template_id_7035e868_lang.js +2 -0
  309. package/lib/components/message-box/src/index.vue_vue_type_template_id_7035e868_lang.js.map +1 -1
  310. package/lib/components/page-header/index.d.ts +1 -1
  311. package/lib/components/page-header/src/page-header.vue.d.ts +1 -1
  312. package/lib/components/page-header/src/page-header.vue_vue_type_script_lang.js +1 -1
  313. package/lib/components/page-header/src/page-header.vue_vue_type_script_lang.js.map +1 -1
  314. package/lib/components/page-header/src/page-header.vue_vue_type_template_id_d12fb4b2_lang.js.map +1 -1
  315. package/lib/components/pagination/src/components/jumper.vue.d.ts +1 -1
  316. package/lib/components/pagination/src/components/jumper.vue_vue_type_script_lang.js +1 -1
  317. package/lib/components/pagination/src/components/jumper.vue_vue_type_script_lang.js.map +1 -1
  318. package/lib/components/pagination/src/components/jumper.vue_vue_type_template_id_772239ce_lang.js.map +1 -1
  319. package/lib/components/pagination/src/components/sizes.vue.d.ts +1 -1
  320. package/lib/components/pagination/src/components/sizes.vue_vue_type_script_lang.js +1 -1
  321. package/lib/components/pagination/src/components/sizes.vue_vue_type_script_lang.js.map +1 -1
  322. package/lib/components/pagination/src/components/sizes.vue_vue_type_template_id_3a063678_lang.js.map +1 -1
  323. package/lib/components/pagination/src/components/total.vue.d.ts +1 -1
  324. package/lib/components/pagination/src/components/total.vue_vue_type_script_lang.js +1 -1
  325. package/lib/components/pagination/src/components/total.vue_vue_type_script_lang.js.map +1 -1
  326. package/lib/components/pagination/src/components/total.vue_vue_type_template_id_bc261314_lang.js.map +1 -1
  327. package/lib/components/pagination/src/pagination.js +1 -1
  328. package/lib/components/pagination/src/pagination.js.map +1 -1
  329. package/lib/components/popconfirm/src/popconfirm.vue_vue_type_script_lang.js +1 -1
  330. package/lib/components/popconfirm/src/popconfirm.vue_vue_type_script_lang.js.map +1 -1
  331. package/lib/components/popconfirm/src/popconfirm.vue_vue_type_template_id_16409d25_lang.js.map +1 -1
  332. package/lib/components/popper/src/use-popper/defaults.js +1 -1
  333. package/lib/components/popper/src/use-popper/index.d.ts +1 -1538
  334. package/lib/components/scrollbar/src/scrollbar.vue_vue_type_script_lang.js +1 -1
  335. package/lib/components/scrollbar/src/scrollbar.vue_vue_type_script_lang.js.map +1 -1
  336. package/lib/components/scrollbar/src/scrollbar.vue_vue_type_template_id_303f965d_lang.js.map +1 -1
  337. package/lib/components/select/src/select.vue_vue_type_script_lang.js +2 -2
  338. package/lib/components/select/src/select.vue_vue_type_script_lang.js.map +1 -1
  339. package/lib/components/select/src/select.vue_vue_type_template_id_33774f85_lang.js.map +1 -1
  340. package/lib/components/select/src/useSelect.js +2 -2
  341. package/lib/components/select/src/useSelect.js.map +1 -1
  342. package/lib/components/select-v2/index.d.ts +2 -2
  343. package/lib/components/select-v2/src/select.vue.d.ts +1 -1
  344. package/lib/components/select-v2/src/useSelect.js +1 -1
  345. package/lib/components/select-v2/src/useSelect.js.map +1 -1
  346. package/lib/components/skeleton/src/skeleton.vue_vue_type_script_lang.js +1 -1
  347. package/lib/components/skeleton/src/skeleton.vue_vue_type_script_lang.js.map +1 -1
  348. package/lib/components/table/index.d.ts +1 -1
  349. package/lib/components/table/src/filter-panel.vue.d.ts +2 -2
  350. package/lib/components/table/src/filter-panel.vue_vue_type_script_lang.js +1 -1
  351. package/lib/components/table/src/filter-panel.vue_vue_type_script_lang.js.map +1 -1
  352. package/lib/components/table/src/filter-panel.vue_vue_type_template_id_fde1c940_lang.js.map +1 -1
  353. package/lib/components/table/src/table-body/index.d.ts +1 -1
  354. package/lib/components/table/src/table-footer/index.d.ts +1 -1
  355. package/lib/components/table/src/table-header/index.d.ts +1 -1
  356. package/lib/components/table/src/table.vue.d.ts +5 -13
  357. package/lib/components/table/src/table.vue_vue_type_script_lang.js +1 -1
  358. package/lib/components/table/src/table.vue_vue_type_script_lang.js.map +1 -1
  359. package/lib/components/table/src/table.vue_vue_type_template_id_4a1660ad_lang.js.map +1 -1
  360. package/lib/components/time-picker/src/common/picker.vue_vue_type_script_lang.js +1 -1
  361. package/lib/components/time-picker/src/common/picker.vue_vue_type_script_lang.js.map +1 -1
  362. package/lib/components/time-picker/src/common/picker.vue_vue_type_template_id_1d54be91_lang.js.map +1 -1
  363. package/lib/components/time-picker/src/time-picker-com/panel-time-pick.vue.d.ts +1 -1
  364. package/lib/components/time-picker/src/time-picker-com/panel-time-pick.vue_vue_type_script_lang.js +1 -1
  365. package/lib/components/time-picker/src/time-picker-com/panel-time-pick.vue_vue_type_script_lang.js.map +1 -1
  366. package/lib/components/time-picker/src/time-picker-com/panel-time-pick.vue_vue_type_template_id_3b3cfa6a_lang.js.map +1 -1
  367. package/lib/components/time-picker/src/time-picker-com/panel-time-range.vue.d.ts +1 -1
  368. package/lib/components/time-picker/src/time-picker-com/panel-time-range.vue_vue_type_script_lang.js +1 -1
  369. package/lib/components/time-picker/src/time-picker-com/panel-time-range.vue_vue_type_script_lang.js.map +1 -1
  370. package/lib/components/time-picker/src/time-picker-com/panel-time-range.vue_vue_type_template_id_57d94b44_lang.js.map +1 -1
  371. package/lib/components/transfer/src/index.vue_vue_type_script_lang.js +1 -1
  372. package/lib/components/transfer/src/index.vue_vue_type_script_lang.js.map +1 -1
  373. package/lib/components/transfer/src/index.vue_vue_type_template_id_6c8b9070_lang.js.map +1 -1
  374. package/lib/components/transfer/src/transfer-panel.vue.d.ts +1 -1
  375. package/lib/components/transfer/src/transfer-panel.vue_vue_type_script_lang.js +1 -1
  376. package/lib/components/transfer/src/transfer-panel.vue_vue_type_script_lang.js.map +1 -1
  377. package/lib/components/transfer/src/transfer-panel.vue_vue_type_template_id_1a7d1f9c_lang.js.map +1 -1
  378. package/lib/components/tree/index.d.ts +2 -2
  379. package/lib/components/tree/src/tree.vue.d.ts +1 -1
  380. package/lib/components/tree/src/tree.vue_vue_type_script_lang.js +1 -1
  381. package/lib/components/tree/src/tree.vue_vue_type_script_lang.js.map +1 -1
  382. package/lib/components/tree/src/tree.vue_vue_type_template_id_7539bec5_lang.js.map +1 -1
  383. package/lib/components/tree-v2/index.d.ts +1 -1
  384. package/lib/components/tree-v2/src/tree.vue.d.ts +1 -1
  385. package/lib/components/tree-v2/src/tree.vue_vue_type_script_lang.js +1 -1
  386. package/lib/components/tree-v2/src/tree.vue_vue_type_script_lang.js.map +1 -1
  387. package/lib/components/tree-v2/src/tree.vue_vue_type_template_id_5b45a1b2_lang.js.map +1 -1
  388. package/lib/components/tree-v2/src/virtual-tree.js +4 -4
  389. package/lib/components/upload/src/upload-list.vue.d.ts +1 -1
  390. package/lib/components/upload/src/upload-list.vue_vue_type_script_lang.js +1 -1
  391. package/lib/components/upload/src/upload-list.vue_vue_type_script_lang.js.map +1 -1
  392. package/lib/components/upload/src/upload-list.vue_vue_type_template_id_192277b6_lang.js.map +1 -1
  393. package/lib/hooks/index.d.ts +12 -15
  394. package/lib/hooks/index.js +42 -48
  395. package/lib/hooks/index.js.map +1 -1
  396. package/lib/hooks/use-attrs/index.d.ts +2 -2
  397. package/lib/hooks/use-attrs/index.js +2 -2
  398. package/lib/hooks/use-attrs/index.js.map +1 -1
  399. package/lib/hooks/use-focus/index.d.ts +1 -2
  400. package/lib/hooks/use-focus/index.js +2 -2
  401. package/lib/hooks/use-focus/index.js.map +1 -1
  402. package/lib/hooks/use-form-item/index.d.ts +1 -1
  403. package/lib/hooks/use-form-item/index.js +2 -2
  404. package/lib/hooks/use-form-item/index.js.map +1 -1
  405. package/lib/hooks/use-global-config/index.d.ts +1 -1
  406. package/lib/hooks/use-global-config/index.js +1 -3
  407. package/lib/hooks/use-global-config/index.js.map +1 -1
  408. package/lib/hooks/use-locale/index.d.ts +9 -7
  409. package/lib/hooks/use-locale/index.js +23 -50
  410. package/lib/hooks/use-locale/index.js.map +1 -1
  411. package/lib/hooks/use-lockscreen/index.d.ts +1 -2
  412. package/lib/hooks/use-lockscreen/index.js +18 -20
  413. package/lib/hooks/use-lockscreen/index.js.map +1 -1
  414. package/lib/hooks/use-modal/index.d.ts +3 -3
  415. package/lib/hooks/use-modal/index.js +6 -8
  416. package/lib/hooks/use-modal/index.js.map +1 -1
  417. package/lib/hooks/use-model-toggle/index.d.ts +3 -5
  418. package/lib/hooks/use-model-toggle/index.js +9 -6
  419. package/lib/hooks/use-model-toggle/index.js.map +1 -1
  420. package/lib/hooks/use-popper/index.js +2 -2
  421. package/lib/hooks/use-popper/index.js.map +1 -1
  422. package/lib/hooks/use-prevent-global/index.d.ts +1 -2
  423. package/lib/hooks/use-prevent-global/index.js +7 -7
  424. package/lib/hooks/use-prevent-global/index.js.map +1 -1
  425. package/lib/hooks/use-restore-active/index.d.ts +1 -2
  426. package/lib/hooks/use-restore-active/index.js +2 -2
  427. package/lib/hooks/use-restore-active/index.js.map +1 -1
  428. package/lib/hooks/use-teleport/index.d.ts +1 -2
  429. package/lib/hooks/use-teleport/index.js +4 -4
  430. package/lib/hooks/use-teleport/index.js.map +1 -1
  431. package/lib/hooks/use-throttle-render/index.d.ts +1 -1
  432. package/lib/hooks/use-throttle-render/index.js +3 -3
  433. package/lib/hooks/use-throttle-render/index.js.map +1 -1
  434. package/lib/hooks/use-timeout/index.d.ts +2 -2
  435. package/lib/hooks/use-timeout/index.js +10 -12
  436. package/lib/hooks/use-timeout/index.js.map +1 -1
  437. package/lib/hooks/use-transition-fallthrough/index.d.ts +1 -1
  438. package/lib/hooks/use-transition-fallthrough/index.js.map +1 -1
  439. package/lib/index.js +46 -50
  440. package/lib/index.js.map +1 -1
  441. package/lib/make-installer.js +1 -1
  442. package/lib/make-installer.js.map +1 -1
  443. package/lib/tokens/config-provider.d.ts +3 -3
  444. package/lib/tokens/config-provider.js.map +1 -1
  445. package/lib/utils/types.d.ts +25 -0
  446. package/lib/version.d.ts +1 -1
  447. package/lib/version.js +1 -1
  448. package/lib/version.js.map +1 -1
  449. package/package.json +2 -2
  450. package/theme-chalk/el-dropdown.css +1 -1
  451. package/theme-chalk/el-input.css +1 -1
  452. package/theme-chalk/el-tag.css +1 -1
  453. package/theme-chalk/index.css +1 -1
  454. package/theme-chalk/src/dropdown.scss +2 -0
  455. package/theme-chalk/src/input.scss +4 -0
  456. package/theme-chalk/src/tag.scss +4 -1
  457. package/web-types.json +1 -1
  458. package/es/components/cascader/index.d.ts +0 -8748
  459. package/es/components/cascader/src/index.vue.d.ts +0 -4380
  460. package/es/components/message-box/src/index.vue.d.ts +0 -1838
  461. package/es/components/popper/index.d.ts +0 -3476
  462. package/es/components/popper/src/index.vue.d.ts +0 -1735
  463. package/es/hooks/use-css-var/index.d.ts +0 -36
  464. package/es/hooks/use-css-var/index.mjs +0 -45
  465. package/es/hooks/use-css-var/index.mjs.map +0 -1
  466. package/es/hooks/use-events/index.d.ts +0 -7
  467. package/es/hooks/use-events/index.mjs +0 -19
  468. package/es/hooks/use-events/index.mjs.map +0 -1
  469. package/es/hooks/use-migrating/index.d.ts +0 -7
  470. package/es/hooks/use-migrating/index.mjs +0 -35
  471. package/es/hooks/use-migrating/index.mjs.map +0 -1
  472. package/es/hooks/use-transition/index.d.ts +0 -13
  473. package/es/hooks/use-transition/index.mjs +0 -25
  474. package/es/hooks/use-transition/index.mjs.map +0 -1
  475. package/lib/components/cascader/index.d.ts +0 -8748
  476. package/lib/components/cascader/src/index.vue.d.ts +0 -4380
  477. package/lib/components/message-box/src/index.vue.d.ts +0 -1838
  478. package/lib/components/popper/index.d.ts +0 -3476
  479. package/lib/components/popper/src/index.vue.d.ts +0 -1735
  480. package/lib/hooks/use-css-var/index.d.ts +0 -36
  481. package/lib/hooks/use-css-var/index.js +0 -51
  482. package/lib/hooks/use-css-var/index.js.map +0 -1
  483. package/lib/hooks/use-events/index.d.ts +0 -7
  484. package/lib/hooks/use-events/index.js +0 -23
  485. package/lib/hooks/use-events/index.js.map +0 -1
  486. package/lib/hooks/use-migrating/index.d.ts +0 -7
  487. package/lib/hooks/use-migrating/index.js +0 -39
  488. package/lib/hooks/use-migrating/index.js.map +0 -1
  489. package/lib/hooks/use-transition/index.d.ts +0 -13
  490. package/lib/hooks/use-transition/index.js +0 -30
  491. package/lib/hooks/use-transition/index.js.map +0 -1
@@ -12,7 +12,7 @@ import _Popper from '../../popper/index.mjs';
12
12
  import { ElIcon } from '../../icon/index.mjs';
13
13
  import { Loading } from '@element-plus/icons';
14
14
  import ClickOutside from '../../../directives/click-outside/index.mjs';
15
- import useAttrs from '../../../hooks/use-attrs/index.mjs';
15
+ import { useAttrs } from '../../../hooks/use-attrs/index.mjs';
16
16
  import { Effect } from '../../popper/src/use-popper/defaults.mjs';
17
17
 
18
18
  var script = defineComponent({
@@ -16,7 +16,7 @@ declare const _Calendar: SFCWithInstall<import("vue").DefineComponent<{
16
16
  validatedRange: import("vue").ComputedRef<import("dayjs").Dayjs[][]>;
17
17
  pickDay: (day: import("dayjs").Dayjs) => void;
18
18
  selectDate: (type: "today" | "prev-month" | "next-month" | "prev-year" | "next-year") => void;
19
- t: (...args: any[]) => string;
19
+ t: import("../..").Translator;
20
20
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("input" | "update:modelValue")[], "input" | "update:modelValue", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
21
21
  modelValue?: unknown;
22
22
  range?: unknown;
@@ -45,7 +45,7 @@ export declare const ElCalendar: SFCWithInstall<import("vue").DefineComponent<{
45
45
  validatedRange: import("vue").ComputedRef<import("dayjs").Dayjs[][]>;
46
46
  pickDay: (day: import("dayjs").Dayjs) => void;
47
47
  selectDate: (type: "today" | "prev-month" | "next-month" | "prev-year" | "next-year") => void;
48
- t: (...args: any[]) => string;
48
+ t: import("../..").Translator;
49
49
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("input" | "update:modelValue")[], "input" | "update:modelValue", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
50
50
  modelValue?: unknown;
51
51
  range?: unknown;
@@ -4,7 +4,7 @@ import localeData from 'dayjs/plugin/localeData';
4
4
  import '../../../hooks/index.mjs';
5
5
  import '../../time-picker/index.mjs';
6
6
  import { rangeArr } from '../../time-picker/src/common/date-utils.mjs';
7
- import { useLocaleInject } from '../../../hooks/use-locale/index.mjs';
7
+ import { useLocale } from '../../../hooks/use-locale/index.mjs';
8
8
 
9
9
  dayjs.extend(localeData);
10
10
  const getPrevMonthLastDays = (date, amount) => {
@@ -32,7 +32,7 @@ var script = defineComponent({
32
32
  },
33
33
  emits: ["pick"],
34
34
  setup(props, ctx) {
35
- const { lang } = useLocaleInject();
35
+ const { lang } = useLocale();
36
36
  const WEEK_DAYS = ref(dayjs().locale(lang.value).localeData().weekdaysShort());
37
37
  const now = dayjs().locale(lang.value);
38
38
  const firstDayOfWeek = now.$locale().weekStart || 0;
@@ -1 +1 @@
1
- {"version":3,"file":"date-table.vue_vue_type_script_lang.mjs","sources":["../../../../../../packages/components/calendar/src/date-table.vue"],"sourcesContent":["<template>\n <table\n :class=\"{\n 'el-calendar-table': true,\n 'is-range': isInRange,\n }\"\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 <tbody>\n <tr\n v-for=\"(row, index) in rows\"\n :key=\"index\"\n :class=\"{\n 'el-calendar-table__row': true,\n 'el-calendar-table__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=\"pickDay(cell)\"\n >\n <div class=\"el-calendar-day\">\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, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport localeData from 'dayjs/plugin/localeData'\nimport { useLocaleInject } from '@element-plus/hooks'\nimport { rangeArr } from '@element-plus/components/time-picker'\nimport type { Dayjs } from 'dayjs'\nimport type { PropType } from 'vue'\ndayjs.extend(localeData)\n\nexport const getPrevMonthLastDays = (date: Dayjs, amount) => {\n const lastDay = date.subtract(1, 'month').endOf('month').date()\n return rangeArr(amount).map((_, index) => lastDay - (amount - index - 1))\n}\n\nexport const getMonthDays = (date: Dayjs) => {\n const days = date.daysInMonth()\n return rangeArr(days).map((_, index) => index + 1)\n}\n\nexport default defineComponent({\n props: {\n selectedDay: {\n type: Object as PropType<Dayjs>,\n },\n range: {\n type: Array as PropType<Array<Dayjs>>,\n },\n date: {\n type: Object as PropType<Dayjs>,\n },\n hideHeader: {\n type: Boolean,\n },\n },\n emits: ['pick'],\n setup(props, ctx) {\n const { lang } = useLocaleInject()\n const WEEK_DAYS = ref(\n dayjs().locale(lang.value).localeData().weekdaysShort()\n )\n\n const now = dayjs().locale(lang.value)\n\n // todo better way to get Day.js locale object\n const firstDayOfWeek = (now as any).$locale().weekStart || 0\n\n const toNestedArr = (days) => {\n return rangeArr(days.length / 7).map((_, index) => {\n const start = index * 7\n return days.slice(start, start + 7)\n })\n }\n\n const getFormattedDate = (day, type): Dayjs => {\n let result\n if (type === 'prev') {\n result = props.date.startOf('month').subtract(1, 'month').date(day)\n } else if (type === 'next') {\n result = props.date.startOf('month').add(1, 'month').date(day)\n } else {\n result = props.date.date(day)\n }\n return result\n }\n\n const getCellClass = ({ text, type }) => {\n const classes = [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 pickDay = ({ text, type }) => {\n const date = getFormattedDate(text, type)\n ctx.emit('pick', date)\n }\n\n const getSlotData = ({ text, type }) => {\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 const isInRange = computed(() => {\n return props.range && props.range.length\n })\n\n const rows = computed(() => {\n let days = []\n if (isInRange.value) {\n const [start, end] = props.range\n const currentMonthRange = rangeArr(end.date() - start.date() + 1).map(\n (_, index) => ({\n text: start.date() + index,\n type: 'current',\n })\n )\n\n let remaining = currentMonthRange.length % 7\n remaining = remaining === 0 ? 0 : 7 - remaining\n const nextMonthRange = 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 = getPrevMonthLastDays(\n props.date,\n firstDay - firstDayOfWeek\n ).map((day) => ({\n text: day,\n type: 'prev',\n }))\n const currentMonthDays = getMonthDays(props.date).map((day) => ({\n text: day,\n type: 'current',\n }))\n days = [...prevMonthDays, ...currentMonthDays]\n const nextMonthDays = rangeArr(42 - days.length).map((_, index) => ({\n text: index + 1,\n type: 'next',\n }))\n days = days.concat(nextMonthDays)\n }\n return toNestedArr(days)\n })\n\n const weekDays = computed(() => {\n const start = firstDayOfWeek\n\n if (start === 0) {\n return WEEK_DAYS.value\n } else {\n return WEEK_DAYS.value\n .slice(start)\n .concat(WEEK_DAYS.value.slice(0, start))\n }\n })\n\n return {\n isInRange,\n weekDays,\n rows,\n getCellClass,\n pickDay,\n getSlotData,\n }\n },\n})\n</script>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"date-table.vue_vue_type_script_lang.mjs","sources":["../../../../../../packages/components/calendar/src/date-table.vue"],"sourcesContent":["<template>\n <table\n :class=\"{\n 'el-calendar-table': true,\n 'is-range': isInRange,\n }\"\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 <tbody>\n <tr\n v-for=\"(row, index) in rows\"\n :key=\"index\"\n :class=\"{\n 'el-calendar-table__row': true,\n 'el-calendar-table__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=\"pickDay(cell)\"\n >\n <div class=\"el-calendar-day\">\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, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport localeData from 'dayjs/plugin/localeData'\nimport { useLocale } from '@element-plus/hooks'\nimport { rangeArr } from '@element-plus/components/time-picker'\nimport type { Dayjs } from 'dayjs'\nimport type { PropType } from 'vue'\ndayjs.extend(localeData)\n\nexport const getPrevMonthLastDays = (date: Dayjs, amount) => {\n const lastDay = date.subtract(1, 'month').endOf('month').date()\n return rangeArr(amount).map((_, index) => lastDay - (amount - index - 1))\n}\n\nexport const getMonthDays = (date: Dayjs) => {\n const days = date.daysInMonth()\n return rangeArr(days).map((_, index) => index + 1)\n}\n\nexport default defineComponent({\n props: {\n selectedDay: {\n type: Object as PropType<Dayjs>,\n },\n range: {\n type: Array as PropType<Array<Dayjs>>,\n },\n date: {\n type: Object as PropType<Dayjs>,\n },\n hideHeader: {\n type: Boolean,\n },\n },\n emits: ['pick'],\n setup(props, ctx) {\n const { lang } = useLocale()\n const WEEK_DAYS = ref(\n dayjs().locale(lang.value).localeData().weekdaysShort()\n )\n\n const now = dayjs().locale(lang.value)\n\n // todo better way to get Day.js locale object\n const firstDayOfWeek = (now as any).$locale().weekStart || 0\n\n const toNestedArr = (days) => {\n return rangeArr(days.length / 7).map((_, index) => {\n const start = index * 7\n return days.slice(start, start + 7)\n })\n }\n\n const getFormattedDate = (day, type): Dayjs => {\n let result\n if (type === 'prev') {\n result = props.date.startOf('month').subtract(1, 'month').date(day)\n } else if (type === 'next') {\n result = props.date.startOf('month').add(1, 'month').date(day)\n } else {\n result = props.date.date(day)\n }\n return result\n }\n\n const getCellClass = ({ text, type }) => {\n const classes = [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 pickDay = ({ text, type }) => {\n const date = getFormattedDate(text, type)\n ctx.emit('pick', date)\n }\n\n const getSlotData = ({ text, type }) => {\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 const isInRange = computed(() => {\n return props.range && props.range.length\n })\n\n const rows = computed(() => {\n let days = []\n if (isInRange.value) {\n const [start, end] = props.range\n const currentMonthRange = rangeArr(end.date() - start.date() + 1).map(\n (_, index) => ({\n text: start.date() + index,\n type: 'current',\n })\n )\n\n let remaining = currentMonthRange.length % 7\n remaining = remaining === 0 ? 0 : 7 - remaining\n const nextMonthRange = 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 = getPrevMonthLastDays(\n props.date,\n firstDay - firstDayOfWeek\n ).map((day) => ({\n text: day,\n type: 'prev',\n }))\n const currentMonthDays = getMonthDays(props.date).map((day) => ({\n text: day,\n type: 'current',\n }))\n days = [...prevMonthDays, ...currentMonthDays]\n const nextMonthDays = rangeArr(42 - days.length).map((_, index) => ({\n text: index + 1,\n type: 'next',\n }))\n days = days.concat(nextMonthDays)\n }\n return toNestedArr(days)\n })\n\n const weekDays = computed(() => {\n const start = firstDayOfWeek\n\n if (start === 0) {\n return WEEK_DAYS.value\n } else {\n return WEEK_DAYS.value\n .slice(start)\n .concat(WEEK_DAYS.value.slice(0, start))\n }\n })\n\n return {\n isInRange,\n weekDays,\n rows,\n getCellClass,\n pickDay,\n getSlotData,\n }\n },\n})\n</script>\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"date-table.vue_vue_type_template_id_297fdb36_lang.mjs","sources":["../../../../../../packages/components/calendar/src/date-table.vue?vue&type=template&id=297fdb36&lang.js"],"sourcesContent":["<template>\n <table\n :class=\"{\n 'el-calendar-table': true,\n 'is-range': isInRange,\n }\"\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 <tbody>\n <tr\n v-for=\"(row, index) in rows\"\n :key=\"index\"\n :class=\"{\n 'el-calendar-table__row': true,\n 'el-calendar-table__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=\"pickDay(cell)\"\n >\n <div class=\"el-calendar-day\">\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, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport localeData from 'dayjs/plugin/localeData'\nimport { useLocaleInject } from '@element-plus/hooks'\nimport { rangeArr } from '@element-plus/components/time-picker'\nimport type { Dayjs } from 'dayjs'\nimport type { PropType } from 'vue'\ndayjs.extend(localeData)\n\nexport const getPrevMonthLastDays = (date: Dayjs, amount) => {\n const lastDay = date.subtract(1, 'month').endOf('month').date()\n return rangeArr(amount).map((_, index) => lastDay - (amount - index - 1))\n}\n\nexport const getMonthDays = (date: Dayjs) => {\n const days = date.daysInMonth()\n return rangeArr(days).map((_, index) => index + 1)\n}\n\nexport default defineComponent({\n props: {\n selectedDay: {\n type: Object as PropType<Dayjs>,\n },\n range: {\n type: Array as PropType<Array<Dayjs>>,\n },\n date: {\n type: Object as PropType<Dayjs>,\n },\n hideHeader: {\n type: Boolean,\n },\n },\n emits: ['pick'],\n setup(props, ctx) {\n const { lang } = useLocaleInject()\n const WEEK_DAYS = ref(\n dayjs().locale(lang.value).localeData().weekdaysShort()\n )\n\n const now = dayjs().locale(lang.value)\n\n // todo better way to get Day.js locale object\n const firstDayOfWeek = (now as any).$locale().weekStart || 0\n\n const toNestedArr = (days) => {\n return rangeArr(days.length / 7).map((_, index) => {\n const start = index * 7\n return days.slice(start, start + 7)\n })\n }\n\n const getFormattedDate = (day, type): Dayjs => {\n let result\n if (type === 'prev') {\n result = props.date.startOf('month').subtract(1, 'month').date(day)\n } else if (type === 'next') {\n result = props.date.startOf('month').add(1, 'month').date(day)\n } else {\n result = props.date.date(day)\n }\n return result\n }\n\n const getCellClass = ({ text, type }) => {\n const classes = [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 pickDay = ({ text, type }) => {\n const date = getFormattedDate(text, type)\n ctx.emit('pick', date)\n }\n\n const getSlotData = ({ text, type }) => {\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 const isInRange = computed(() => {\n return props.range && props.range.length\n })\n\n const rows = computed(() => {\n let days = []\n if (isInRange.value) {\n const [start, end] = props.range\n const currentMonthRange = rangeArr(end.date() - start.date() + 1).map(\n (_, index) => ({\n text: start.date() + index,\n type: 'current',\n })\n )\n\n let remaining = currentMonthRange.length % 7\n remaining = remaining === 0 ? 0 : 7 - remaining\n const nextMonthRange = 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 = getPrevMonthLastDays(\n props.date,\n firstDay - firstDayOfWeek\n ).map((day) => ({\n text: day,\n type: 'prev',\n }))\n const currentMonthDays = getMonthDays(props.date).map((day) => ({\n text: day,\n type: 'current',\n }))\n days = [...prevMonthDays, ...currentMonthDays]\n const nextMonthDays = rangeArr(42 - days.length).map((_, index) => ({\n text: index + 1,\n type: 'next',\n }))\n days = days.concat(nextMonthDays)\n }\n return toNestedArr(days)\n })\n\n const weekDays = computed(() => {\n const start = firstDayOfWeek\n\n if (start === 0) {\n return WEEK_DAYS.value\n } else {\n return WEEK_DAYS.value\n .slice(start)\n .concat(WEEK_DAYS.value.slice(0, start))\n }\n })\n\n return {\n isInRange,\n weekDays,\n rows,\n getCellClass,\n pickDay,\n getSlotData,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_createElementVNode","_renderSlot"],"mappings":";;;;qBA2Be,OAAM;;sBA1BnBA;IACG;;;;IAID,aAAY;AAAA,IACZ,aAAY;AAAA;KAEE,gCAAdA;wBACEA,8CAAkB,gBAAP;4BAAXA,2BAA6B,KAAK,uBAAQ;;;IAE5CC;wBACED,8CACyB,YAAf,KAAK;4BADfA;UAEG,KAAK;AAAA,UACL;;;;;4BAKDA,8CACwB,MAAd,MAAM;gCADhBA;cAEG;AAAA,cACA,sBAAO,kBAAa;AAAA,cACpB,qBAAO,aAAQ;AAAA;cAEhBC,0BAAA;gBACEC;kBAAuB,MAAM,iBAAY;AAAA,mBAAzC;kBACED,iDAAS,KAAK;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"date-table.vue_vue_type_template_id_297fdb36_lang.mjs","sources":["../../../../../../packages/components/calendar/src/date-table.vue?vue&type=template&id=297fdb36&lang.js"],"sourcesContent":["<template>\n <table\n :class=\"{\n 'el-calendar-table': true,\n 'is-range': isInRange,\n }\"\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 <tbody>\n <tr\n v-for=\"(row, index) in rows\"\n :key=\"index\"\n :class=\"{\n 'el-calendar-table__row': true,\n 'el-calendar-table__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=\"pickDay(cell)\"\n >\n <div class=\"el-calendar-day\">\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, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport localeData from 'dayjs/plugin/localeData'\nimport { useLocale } from '@element-plus/hooks'\nimport { rangeArr } from '@element-plus/components/time-picker'\nimport type { Dayjs } from 'dayjs'\nimport type { PropType } from 'vue'\ndayjs.extend(localeData)\n\nexport const getPrevMonthLastDays = (date: Dayjs, amount) => {\n const lastDay = date.subtract(1, 'month').endOf('month').date()\n return rangeArr(amount).map((_, index) => lastDay - (amount - index - 1))\n}\n\nexport const getMonthDays = (date: Dayjs) => {\n const days = date.daysInMonth()\n return rangeArr(days).map((_, index) => index + 1)\n}\n\nexport default defineComponent({\n props: {\n selectedDay: {\n type: Object as PropType<Dayjs>,\n },\n range: {\n type: Array as PropType<Array<Dayjs>>,\n },\n date: {\n type: Object as PropType<Dayjs>,\n },\n hideHeader: {\n type: Boolean,\n },\n },\n emits: ['pick'],\n setup(props, ctx) {\n const { lang } = useLocale()\n const WEEK_DAYS = ref(\n dayjs().locale(lang.value).localeData().weekdaysShort()\n )\n\n const now = dayjs().locale(lang.value)\n\n // todo better way to get Day.js locale object\n const firstDayOfWeek = (now as any).$locale().weekStart || 0\n\n const toNestedArr = (days) => {\n return rangeArr(days.length / 7).map((_, index) => {\n const start = index * 7\n return days.slice(start, start + 7)\n })\n }\n\n const getFormattedDate = (day, type): Dayjs => {\n let result\n if (type === 'prev') {\n result = props.date.startOf('month').subtract(1, 'month').date(day)\n } else if (type === 'next') {\n result = props.date.startOf('month').add(1, 'month').date(day)\n } else {\n result = props.date.date(day)\n }\n return result\n }\n\n const getCellClass = ({ text, type }) => {\n const classes = [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 pickDay = ({ text, type }) => {\n const date = getFormattedDate(text, type)\n ctx.emit('pick', date)\n }\n\n const getSlotData = ({ text, type }) => {\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 const isInRange = computed(() => {\n return props.range && props.range.length\n })\n\n const rows = computed(() => {\n let days = []\n if (isInRange.value) {\n const [start, end] = props.range\n const currentMonthRange = rangeArr(end.date() - start.date() + 1).map(\n (_, index) => ({\n text: start.date() + index,\n type: 'current',\n })\n )\n\n let remaining = currentMonthRange.length % 7\n remaining = remaining === 0 ? 0 : 7 - remaining\n const nextMonthRange = 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 = getPrevMonthLastDays(\n props.date,\n firstDay - firstDayOfWeek\n ).map((day) => ({\n text: day,\n type: 'prev',\n }))\n const currentMonthDays = getMonthDays(props.date).map((day) => ({\n text: day,\n type: 'current',\n }))\n days = [...prevMonthDays, ...currentMonthDays]\n const nextMonthDays = rangeArr(42 - days.length).map((_, index) => ({\n text: index + 1,\n type: 'next',\n }))\n days = days.concat(nextMonthDays)\n }\n return toNestedArr(days)\n })\n\n const weekDays = computed(() => {\n const start = firstDayOfWeek\n\n if (start === 0) {\n return WEEK_DAYS.value\n } else {\n return WEEK_DAYS.value\n .slice(start)\n .concat(WEEK_DAYS.value.slice(0, start))\n }\n })\n\n return {\n isInRange,\n weekDays,\n rows,\n getCellClass,\n pickDay,\n getSlotData,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_createElementVNode","_renderSlot"],"mappings":";;;;qBA2Be,OAAM;;sBA1BnBA;IACG;;;;IAID,aAAY;AAAA,IACZ,aAAY;AAAA;KAEE,gCAAdA;wBACEA,8CAAkB,gBAAP;4BAAXA,2BAA6B,KAAK,uBAAQ;;;IAE5CC;wBACED,8CACyB,YAAf,KAAK;4BADfA;UAEG,KAAK;AAAA,UACL;;;;;4BAKDA,8CACwB,MAAd,MAAM;gCADhBA;cAEG;AAAA,cACA,sBAAO,kBAAa;AAAA,cACpB,qBAAO,aAAQ;AAAA;cAEhBC,0BAAA;gBACEC;kBAAuB,MAAM,iBAAY;AAAA,mBAAzC;kBACED,iDAAS,KAAK;;;;;;;;;;;;;"}
@@ -19,7 +19,7 @@ declare const _default: import("vue").DefineComponent<{
19
19
  validatedRange: ComputedRef<dayjs.Dayjs[][]>;
20
20
  pickDay: (day: Dayjs) => void;
21
21
  selectDate: (type: DateType) => void;
22
- t: (...args: any[]) => string;
22
+ t: import("element-plus/es/hooks").Translator;
23
23
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("input" | "update:modelValue")[], "input" | "update:modelValue", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
24
24
  modelValue?: unknown;
25
25
  range?: unknown;
@@ -5,7 +5,7 @@ import '../../../hooks/index.mjs';
5
5
  import { debugWarn } from '../../../utils/error.mjs';
6
6
  import './date-table.mjs';
7
7
  import script$1 from './date-table.vue_vue_type_script_lang.mjs';
8
- import { useLocaleInject } from '../../../hooks/use-locale/index.mjs';
8
+ import { useLocale } from '../../../hooks/use-locale/index.mjs';
9
9
 
10
10
  const { ButtonGroup: ElButtonGroup } = ElButton;
11
11
  var script = defineComponent({
@@ -31,7 +31,7 @@ var script = defineComponent({
31
31
  },
32
32
  emits: ["input", "update:modelValue"],
33
33
  setup(props, ctx) {
34
- const { t, lang } = useLocaleInject();
34
+ const { t, lang } = useLocale();
35
35
  const selectedDay = ref(null);
36
36
  const now = dayjs().locale(lang.value);
37
37
  const prevMonthDayjs = computed(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue_vue_type_script_lang.mjs","sources":["../../../../../../packages/components/calendar/src/index.vue"],"sourcesContent":["<template>\n <div class=\"el-calendar\">\n <div class=\"el-calendar__header\">\n <slot name=\"header\" :date=\"i18nDate\">\n <div class=\"el-calendar__title\">{{ i18nDate }}</div>\n <div\n v-if=\"validatedRange.length === 0\"\n class=\"el-calendar__button-group\"\n >\n <el-button-group>\n <el-button size=\"mini\" @click=\"selectDate('prev-month')\">\n {{ t('el.datepicker.prevMonth') }}\n </el-button>\n <el-button size=\"mini\" @click=\"selectDate('today')\">\n {{ t('el.datepicker.today') }}\n </el-button>\n <el-button size=\"mini\" @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=\"el-calendar__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=\"el-calendar__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'\n\nimport ElButton from '@element-plus/components/button'\nimport { useLocaleInject } from '@element-plus/hooks'\nimport { debugWarn } from '@element-plus/utils/error'\nimport DateTable from './date-table.vue'\nimport type { PropType, ComputedRef } from 'vue'\n\nimport type { Dayjs } from 'dayjs'\n\ntype DateType =\n | 'prev-month'\n | 'next-month'\n | 'prev-year'\n | 'next-year'\n | 'today'\n\nconst { ButtonGroup: ElButtonGroup } = ElButton\nexport default defineComponent({\n name: 'ElCalendar',\n\n components: {\n DateTable,\n ElButton,\n ElButtonGroup,\n },\n\n props: {\n modelValue: {\n type: Date,\n },\n range: {\n type: Array as PropType<Array<Date>>,\n validator: (range: Date): boolean => {\n if (Array.isArray(range)) {\n return (\n range.length === 2 && range.every((item) => item instanceof Date)\n )\n }\n return false\n },\n },\n },\n\n emits: ['input', 'update:modelValue'],\n setup(props, ctx) {\n const { t, lang } = useLocaleInject()\n const selectedDay = ref(null)\n const now = dayjs().locale(lang.value)\n\n const prevMonthDayjs = computed(() => {\n return date.value.subtract(1, 'month')\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')\n })\n\n const prevYearDayjs = computed(() => {\n return date.value.subtract(1, 'year')\n })\n\n const nextYearDayjs = computed(() => {\n return date.value.add(1, 'year')\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({\n get() {\n if (!props.modelValue) return selectedDay.value\n return date.value\n },\n set(val: Dayjs) {\n selectedDay.value = val\n const result = val.toDate()\n\n ctx.emit('input', result)\n ctx.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.Dayjs,\n endDayjs: dayjs.Dayjs\n ) => {\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 },\n})\n</script>\n"],"names":["DateTable"],"mappings":";;;;;;;;;AAmEA,MAAM,EAAE,aAAa,kBAAkB;AACvC,aAAe,gBAAgB;AAAA,EAC7B,MAAM;AAAA,EAEN,YAAY;AAAA,eACVA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAGF,OAAO;AAAA,IACL,YAAY;AAAA,MACV,MAAM;AAAA;AAAA,IAER,OAAO;AAAA,MACL,MAAM;AAAA,MACN,WAAW,CAAC,UAAyB;AACnC,YAAI,MAAM,QAAQ,QAAQ;AACxB,iBACE,MAAM,WAAW,KAAK,MAAM,MAAM,CAAC,SAAS,gBAAgB;AAAA;AAGhE,eAAO;AAAA;AAAA;AAAA;AAAA,EAKb,OAAO,CAAC,SAAS;AAAA,EACjB,MAAM,OAAO,KAAK;AAChB,UAAM,EAAE,GAAG,SAAS;AACpB,UAAM,cAAc,IAAI;AACxB,UAAM,MAAM,QAAQ,OAAO,KAAK;AAEhC,UAAM,iBAAiB,SAAS,MAAM;AACpC,aAAO,KAAK,MAAM,SAAS,GAAG;AAAA;AAEhC,UAAM,qBAAqB,SAAS,MAAM;AACxC,aAAO,MAAM,KAAK,OAAO,OAAO,KAAK,OAAO,OAAO;AAAA;AAGrD,UAAM,iBAAiB,SAAS,MAAM;AACpC,aAAO,KAAK,MAAM,IAAI,GAAG;AAAA;AAG3B,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO,KAAK,MAAM,SAAS,GAAG;AAAA;AAGhC,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO,KAAK,MAAM,IAAI,GAAG;AAAA;AAG3B,UAAM,WAAW,SAAS,MAAM;AAC9B,YAAM,cAAc,sBAAsB,KAAK,MAAM,OAAO;AAC5D,aAAO,GAAG,KAAK,MAAM,UAAU,EAAE,yBAAyB,EAAE;AAAA;AAG9D,UAAM,kBAAkB,SAAS;AAAA,MAC/B,MAAM;AACJ,YAAI,CAAC,MAAM;AAAY,iBAAO,YAAY;AAC1C,eAAO,KAAK;AAAA;AAAA,MAEd,IAAI,KAAY;AACd,oBAAY,QAAQ;AACpB,cAAM,SAAS,IAAI;AAEnB,YAAI,KAAK,SAAS;AAClB,YAAI,KAAK,qBAAqB;AAAA;AAAA;AAIlC,UAAM,OAA2B,SAAS,MAAM;AAC9C,UAAI,CAAC,MAAM,YAAY;AACrB,YAAI,gBAAgB,OAAO;AACzB,iBAAO,gBAAgB;AAAA,mBACd,eAAe,MAAM,QAAQ;AACtC,iBAAO,eAAe,MAAM,GAAG;AAAA;AAEjC,eAAO;AAAA,aACF;AACL,eAAO,MAAM,MAAM,YAAY,OAAO,KAAK;AAAA;AAAA;AAM/C,UAAM,8BAA8B,CAClC,YACA,aACG;AACH,YAAM,WAAW,WAAW,QAAQ;AACpC,YAAM,UAAU,SAAS,MAAM;AAC/B,YAAM,aAAa,SAAS,IAAI;AAChC,YAAM,YAAY,QAAQ,IAAI;AAG9B,UAAI,eAAe,WAAW;AAC5B,eAAO,CAAC,CAAC,UAAU;AAAA,iBAGZ,aAAa,MAAM,WAAW;AACrC,cAAM,oBAAoB,SAAS,MAAM;AACzC,cAAM,oBAAoB,QAAQ,QAAQ;AAG1C,cAAM,aAAa,kBAAkB,OAAO,mBAAmB;AAC/D,cAAM,oBAAoB,aACtB,kBAAkB,IAAI,GAAG,UACzB;AAEJ,eAAO;AAAA,UACL,CAAC,UAAU;AAAA,UACX,CAAC,kBAAkB,QAAQ,SAAS;AAAA;AAAA,iBAI/B,aAAa,MAAM,WAAW;AACrC,cAAM,oBAAoB,SAAS,MAAM;AACzC,cAAM,sBAAsB,SAAS,IAAI,GAAG,SAAS,QAAQ;AAG7D,cAAM,sBAAsB,kBAAkB,OAC5C,qBACA,UAEE,oBAAoB,IAAI,GAAG,UAC3B;AAEJ,cAAM,qBAAqB,oBAAoB,MAAM;AACrD,cAAM,oBAAoB,QAAQ,QAAQ;AAG1C,cAAM,oBAAoB,mBAAmB,OAC3C,mBACA,UAEE,kBAAkB,IAAI,GAAG,UACzB;AAEJ,eAAO;AAAA,UACL,CAAC,UAAU;AAAA,UACX,CAAC,oBAAoB,QAAQ,SAAS;AAAA,UACtC,CAAC,kBAAkB,QAAQ,SAAS;AAAA;AAAA,aAInC;AACH,kBACE,cACA;AAEF,eAAO;AAAA;AAAA;AAKX,UAAM,iBAAiB,SAAS,MAAM;AACpC,UAAI,CAAC,MAAM;AAAO,eAAO;AACzB,YAAM,gBAAgB,MAAM,MAAM,IAAI,CAAC,MAAM,MAAM,GAAG,OAAO,KAAK;AAClE,YAAM,CAAC,YAAY,YAAY;AAC/B,UAAI,WAAW,QAAQ,WAAW;AAChC,kBAAU,cAAc;AACxB,eAAO;AAAA;AAET,UAAI,WAAW,OAAO,UAAU,UAAU;AAExC,eAAO,4BAA4B,YAAY;AAAA,aAC1C;AAEL,YAAI,WAAW,IAAI,GAAG,SAAS,YAAY,SAAS,SAAS;AAC3D,oBACE,cACA;AAEF,iBAAO;AAAA;AAET,eAAO,4BAA4B,YAAY;AAAA;AAAA;AAInD,UAAM,UAAU,CAAC,QAAe;AAC9B,sBAAgB,QAAQ;AAAA;AAG1B,UAAM,aAAa,CAAC,SAAmB;AACrC,UAAI;AACJ,UAAI,SAAS,cAAc;AACzB,cAAM,eAAe;AAAA,iBACZ,SAAS,cAAc;AAChC,cAAM,eAAe;AAAA,iBACZ,SAAS,aAAa;AAC/B,cAAM,cAAc;AAAA,iBACX,SAAS,aAAa;AAC/B,cAAM,cAAc;AAAA,aACf;AACL,cAAM;AAAA;AAGR,UAAI,IAAI,OAAO,KAAK,OAAO;AAAQ;AACnC,cAAQ;AAAA;AAGV,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;;;"}
1
+ {"version":3,"file":"index.vue_vue_type_script_lang.mjs","sources":["../../../../../../packages/components/calendar/src/index.vue"],"sourcesContent":["<template>\n <div class=\"el-calendar\">\n <div class=\"el-calendar__header\">\n <slot name=\"header\" :date=\"i18nDate\">\n <div class=\"el-calendar__title\">{{ i18nDate }}</div>\n <div\n v-if=\"validatedRange.length === 0\"\n class=\"el-calendar__button-group\"\n >\n <el-button-group>\n <el-button size=\"mini\" @click=\"selectDate('prev-month')\">\n {{ t('el.datepicker.prevMonth') }}\n </el-button>\n <el-button size=\"mini\" @click=\"selectDate('today')\">\n {{ t('el.datepicker.today') }}\n </el-button>\n <el-button size=\"mini\" @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=\"el-calendar__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=\"el-calendar__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'\n\nimport ElButton from '@element-plus/components/button'\nimport { useLocale } from '@element-plus/hooks'\nimport { debugWarn } from '@element-plus/utils/error'\nimport DateTable from './date-table.vue'\nimport type { PropType, ComputedRef } from 'vue'\n\nimport type { Dayjs } from 'dayjs'\n\ntype DateType =\n | 'prev-month'\n | 'next-month'\n | 'prev-year'\n | 'next-year'\n | 'today'\n\nconst { ButtonGroup: ElButtonGroup } = ElButton\nexport default defineComponent({\n name: 'ElCalendar',\n\n components: {\n DateTable,\n ElButton,\n ElButtonGroup,\n },\n\n props: {\n modelValue: {\n type: Date,\n },\n range: {\n type: Array as PropType<Array<Date>>,\n validator: (range: Date): boolean => {\n if (Array.isArray(range)) {\n return (\n range.length === 2 && range.every((item) => item instanceof Date)\n )\n }\n return false\n },\n },\n },\n\n emits: ['input', 'update:modelValue'],\n setup(props, ctx) {\n const { t, lang } = useLocale()\n const selectedDay = ref(null)\n const now = dayjs().locale(lang.value)\n\n const prevMonthDayjs = computed(() => {\n return date.value.subtract(1, 'month')\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')\n })\n\n const prevYearDayjs = computed(() => {\n return date.value.subtract(1, 'year')\n })\n\n const nextYearDayjs = computed(() => {\n return date.value.add(1, 'year')\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({\n get() {\n if (!props.modelValue) return selectedDay.value\n return date.value\n },\n set(val: Dayjs) {\n selectedDay.value = val\n const result = val.toDate()\n\n ctx.emit('input', result)\n ctx.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.Dayjs,\n endDayjs: dayjs.Dayjs\n ) => {\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 },\n})\n</script>\n"],"names":["DateTable"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue_vue_type_template_id_819aa44a_lang.mjs","sources":["../../../../../../packages/components/calendar/src/index.vue?vue&type=template&id=819aa44a&lang.js"],"sourcesContent":["<template>\n <div class=\"el-calendar\">\n <div class=\"el-calendar__header\">\n <slot name=\"header\" :date=\"i18nDate\">\n <div class=\"el-calendar__title\">{{ i18nDate }}</div>\n <div\n v-if=\"validatedRange.length === 0\"\n class=\"el-calendar__button-group\"\n >\n <el-button-group>\n <el-button size=\"mini\" @click=\"selectDate('prev-month')\">\n {{ t('el.datepicker.prevMonth') }}\n </el-button>\n <el-button size=\"mini\" @click=\"selectDate('today')\">\n {{ t('el.datepicker.today') }}\n </el-button>\n <el-button size=\"mini\" @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=\"el-calendar__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=\"el-calendar__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'\n\nimport ElButton from '@element-plus/components/button'\nimport { useLocaleInject } from '@element-plus/hooks'\nimport { debugWarn } from '@element-plus/utils/error'\nimport DateTable from './date-table.vue'\nimport type { PropType, ComputedRef } from 'vue'\n\nimport type { Dayjs } from 'dayjs'\n\ntype DateType =\n | 'prev-month'\n | 'next-month'\n | 'prev-year'\n | 'next-year'\n | 'today'\n\nconst { ButtonGroup: ElButtonGroup } = ElButton\nexport default defineComponent({\n name: 'ElCalendar',\n\n components: {\n DateTable,\n ElButton,\n ElButtonGroup,\n },\n\n props: {\n modelValue: {\n type: Date,\n },\n range: {\n type: Array as PropType<Array<Date>>,\n validator: (range: Date): boolean => {\n if (Array.isArray(range)) {\n return (\n range.length === 2 && range.every((item) => item instanceof Date)\n )\n }\n return false\n },\n },\n },\n\n emits: ['input', 'update:modelValue'],\n setup(props, ctx) {\n const { t, lang } = useLocaleInject()\n const selectedDay = ref(null)\n const now = dayjs().locale(lang.value)\n\n const prevMonthDayjs = computed(() => {\n return date.value.subtract(1, 'month')\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')\n })\n\n const prevYearDayjs = computed(() => {\n return date.value.subtract(1, 'year')\n })\n\n const nextYearDayjs = computed(() => {\n return date.value.add(1, 'year')\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({\n get() {\n if (!props.modelValue) return selectedDay.value\n return date.value\n },\n set(val: Dayjs) {\n selectedDay.value = val\n const result = val.toDate()\n\n ctx.emit('input', result)\n ctx.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.Dayjs,\n endDayjs: dayjs.Dayjs\n ) => {\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 },\n})\n</script>\n"],"names":["_createElementBlock","_createElementVNode","_renderSlot","_createVNode","_createBlock"],"mappings":";;qBACO,OAAM;qBACJ,OAAM;qBAEF,OAAM;;;EAGT,OAAM;AAAA;;;EAgB4B,OAAM;AAAA;;;EAOlC,OAAM;AAAA;;;;;sBA7BpBA,0BAAA;IACEC,0BAAA;MACEC,oCAAqB,MAAM,iBAA3B;QACED,0BAAA,4BAAmC;QAE3B,oBAAe,6BADvBD,0BAAA;UAIEG;6BACE;cAAAA;gBAAW,MAAK;AAAA,gBAAQ,+CAAO;;iCAC7B;kDAAG;;;;cAELA;gBAAW,MAAK;AAAA,gBAAQ,+CAAO;;iCAC7B;kDAAG;;;;cAELA;gBAAW,MAAK;AAAA,gBAAQ,+CAAO;;iCAC7B;kDAAG;;;;;;;;;;IAMF,oBAAe,6BAA1BH,0BAAA;MACEG;QAAa,MAAM;QAAO,gBAAc;QAAkB,QAAM;;QAC9C,YAAO;gBAAW;AAAA,sBAChC,CAD0C;YAC1CD,sEAA8B;AAAA;AAAA;;wBAIpCF,0BAAA;wBACEA,8CAC4B,sBAAlB,QAAQ;4BADlBI;UAEG,KAAK;AAAA,UACL,MAAM;UACN,gBAAc;UACd,OAAO;AAAA,UACP,eAAa;UACb,QAAM;;UAES,YAAO;kBAAW;AAAA,wBAChC,CAD0C;cAC1CF,sEAA8B;AAAA;AAAA;;;;;;;;;"}
1
+ {"version":3,"file":"index.vue_vue_type_template_id_819aa44a_lang.mjs","sources":["../../../../../../packages/components/calendar/src/index.vue?vue&type=template&id=819aa44a&lang.js"],"sourcesContent":["<template>\n <div class=\"el-calendar\">\n <div class=\"el-calendar__header\">\n <slot name=\"header\" :date=\"i18nDate\">\n <div class=\"el-calendar__title\">{{ i18nDate }}</div>\n <div\n v-if=\"validatedRange.length === 0\"\n class=\"el-calendar__button-group\"\n >\n <el-button-group>\n <el-button size=\"mini\" @click=\"selectDate('prev-month')\">\n {{ t('el.datepicker.prevMonth') }}\n </el-button>\n <el-button size=\"mini\" @click=\"selectDate('today')\">\n {{ t('el.datepicker.today') }}\n </el-button>\n <el-button size=\"mini\" @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=\"el-calendar__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=\"el-calendar__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'\n\nimport ElButton from '@element-plus/components/button'\nimport { useLocale } from '@element-plus/hooks'\nimport { debugWarn } from '@element-plus/utils/error'\nimport DateTable from './date-table.vue'\nimport type { PropType, ComputedRef } from 'vue'\n\nimport type { Dayjs } from 'dayjs'\n\ntype DateType =\n | 'prev-month'\n | 'next-month'\n | 'prev-year'\n | 'next-year'\n | 'today'\n\nconst { ButtonGroup: ElButtonGroup } = ElButton\nexport default defineComponent({\n name: 'ElCalendar',\n\n components: {\n DateTable,\n ElButton,\n ElButtonGroup,\n },\n\n props: {\n modelValue: {\n type: Date,\n },\n range: {\n type: Array as PropType<Array<Date>>,\n validator: (range: Date): boolean => {\n if (Array.isArray(range)) {\n return (\n range.length === 2 && range.every((item) => item instanceof Date)\n )\n }\n return false\n },\n },\n },\n\n emits: ['input', 'update:modelValue'],\n setup(props, ctx) {\n const { t, lang } = useLocale()\n const selectedDay = ref(null)\n const now = dayjs().locale(lang.value)\n\n const prevMonthDayjs = computed(() => {\n return date.value.subtract(1, 'month')\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')\n })\n\n const prevYearDayjs = computed(() => {\n return date.value.subtract(1, 'year')\n })\n\n const nextYearDayjs = computed(() => {\n return date.value.add(1, 'year')\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({\n get() {\n if (!props.modelValue) return selectedDay.value\n return date.value\n },\n set(val: Dayjs) {\n selectedDay.value = val\n const result = val.toDate()\n\n ctx.emit('input', result)\n ctx.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.Dayjs,\n endDayjs: dayjs.Dayjs\n ) => {\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 },\n})\n</script>\n"],"names":["_createElementBlock","_createElementVNode","_renderSlot","_createVNode","_createBlock"],"mappings":";;qBACO,OAAM;qBACJ,OAAM;qBAEF,OAAM;;;EAGT,OAAM;AAAA;;;EAgB4B,OAAM;AAAA;;;EAOlC,OAAM;AAAA;;;;;sBA7BpBA,0BAAA;IACEC,0BAAA;MACEC,oCAAqB,MAAM,iBAA3B;QACED,0BAAA,4BAAmC;QAE3B,oBAAe,6BADvBD,0BAAA;UAIEG;6BACE;cAAAA;gBAAW,MAAK;AAAA,gBAAQ,+CAAO;;iCAC7B;kDAAG;;;;cAELA;gBAAW,MAAK;AAAA,gBAAQ,+CAAO;;iCAC7B;kDAAG;;;;cAELA;gBAAW,MAAK;AAAA,gBAAQ,+CAAO;;iCAC7B;kDAAG;;;;;;;;;;IAMF,oBAAe,6BAA1BH,0BAAA;MACEG;QAAa,MAAM;QAAO,gBAAc;QAAkB,QAAM;;QAC9C,YAAO;gBAAW;AAAA,sBAChC,CAD0C;YAC1CD,sEAA8B;AAAA;AAAA;;wBAIpCF,0BAAA;wBACEA,8CAC4B,sBAAlB,QAAQ;4BADlBI;UAEG,KAAK;AAAA,UACL,MAAM;UACN,gBAAc;UACd,OAAO;AAAA,UACP,eAAa;UACb,QAAM;;UAES,YAAO;kBAAW;AAAA,wBAChC,CAD0C;cAC1CF,sEAA8B;AAAA;AAAA;;;;;;;;;"}
@@ -14,7 +14,6 @@ var script = defineComponent({
14
14
  },
15
15
  setup(props) {
16
16
  const instance = getCurrentInstance();
17
- instance.uid;
18
17
  const data = reactive({
19
18
  hover: false,
20
19
  translate: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"item.vue_vue_type_script_lang.mjs","sources":["../../../../../../packages/components/carousel/src/item.vue"],"sourcesContent":["<template>\n <div\n v-show=\"data.ready\"\n class=\"el-carousel__item\"\n :class=\"{\n 'is-active': data.active,\n 'el-carousel__item--card': type === 'card',\n 'is-in-stage': data.inStage,\n 'is-hover': data.hover,\n 'is-animating': data.animating,\n }\"\n :style=\"itemStyle\"\n @click=\"handleItemClick\"\n >\n <div\n v-if=\"type === 'card'\"\n v-show=\"!data.active\"\n class=\"el-carousel__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 { autoprefixer } from '@element-plus/utils/util'\nimport { debugWarn } from '@element-plus/utils/error'\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 // instance\n const instance = getCurrentInstance()\n instance.uid\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 autoprefixer(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 }\n },\n})\n</script>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"item.vue_vue_type_script_lang.mjs","sources":["../../../../../../packages/components/carousel/src/item.vue"],"sourcesContent":["<template>\n <div\n v-show=\"data.ready\"\n class=\"el-carousel__item\"\n :class=\"{\n 'is-active': data.active,\n 'el-carousel__item--card': type === 'card',\n 'is-in-stage': data.inStage,\n 'is-hover': data.hover,\n 'is-animating': data.animating,\n }\"\n :style=\"itemStyle\"\n @click=\"handleItemClick\"\n >\n <div\n v-if=\"type === 'card'\"\n v-show=\"!data.active\"\n class=\"el-carousel__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 { autoprefixer } from '@element-plus/utils/util'\nimport { debugWarn } from '@element-plus/utils/error'\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 // 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 autoprefixer(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 }\n },\n})\n</script>\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"item.vue_vue_type_template_id_3d2e4fb8_lang.mjs","sources":["../../../../../../packages/components/carousel/src/item.vue?vue&type=template&id=3d2e4fb8&lang.js"],"sourcesContent":["<template>\n <div\n v-show=\"data.ready\"\n class=\"el-carousel__item\"\n :class=\"{\n 'is-active': data.active,\n 'el-carousel__item--card': type === 'card',\n 'is-in-stage': data.inStage,\n 'is-hover': data.hover,\n 'is-animating': data.animating,\n }\"\n :style=\"itemStyle\"\n @click=\"handleItemClick\"\n >\n <div\n v-if=\"type === 'card'\"\n v-show=\"!data.active\"\n class=\"el-carousel__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 { autoprefixer } from '@element-plus/utils/util'\nimport { debugWarn } from '@element-plus/utils/error'\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 // instance\n const instance = getCurrentInstance()\n instance.uid\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 autoprefixer(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 }\n },\n})\n</script>\n"],"names":["_createElementBlock","_renderSlot"],"mappings":";;;;EAiBM,OAAM;AAAA;;sCAhBVA;IAEE,uBAAM;;;;;;;IAQL,sBAAO;IACP,gDAAO;;IAGA,oDADRA,0BAAA;eAEW,UAAK;AAAA;IAGhBC;;YAjBQ,UAAK;AAAA;AAAA;;;;"}
1
+ {"version":3,"file":"item.vue_vue_type_template_id_3d2e4fb8_lang.mjs","sources":["../../../../../../packages/components/carousel/src/item.vue?vue&type=template&id=3d2e4fb8&lang.js"],"sourcesContent":["<template>\n <div\n v-show=\"data.ready\"\n class=\"el-carousel__item\"\n :class=\"{\n 'is-active': data.active,\n 'el-carousel__item--card': type === 'card',\n 'is-in-stage': data.inStage,\n 'is-hover': data.hover,\n 'is-animating': data.animating,\n }\"\n :style=\"itemStyle\"\n @click=\"handleItemClick\"\n >\n <div\n v-if=\"type === 'card'\"\n v-show=\"!data.active\"\n class=\"el-carousel__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 { autoprefixer } from '@element-plus/utils/util'\nimport { debugWarn } from '@element-plus/utils/error'\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 // 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 autoprefixer(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 }\n },\n})\n</script>\n"],"names":["_createElementBlock","_renderSlot"],"mappings":";;;;EAiBM,OAAM;AAAA;;sCAhBVA;IAEE,uBAAM;;;;;;;IAQL,sBAAO;IACP,gDAAO;;IAGA,oDADRA,0BAAA;eAEW,UAAK;AAAA;IAGhBC;;YAjBQ,UAAK;AAAA;AAAA;;;;"}
@@ -20,7 +20,7 @@ import { isKorean } from '../../../utils/isDef.mjs';
20
20
  import { CircleClose, Check, ArrowDown } from '@element-plus/icons';
21
21
  import ClickOutside from '../../../directives/click-outside/index.mjs';
22
22
  import { CommonProps } from '../../cascader-panel/src/config.mjs';
23
- import { useLocaleInject } from '../../../hooks/use-locale/index.mjs';
23
+ import { useLocale } from '../../../hooks/use-locale/index.mjs';
24
24
  import { elFormKey, elFormItemKey } from '../../../tokens/form.mjs';
25
25
  import { Effect } from '../../popper/src/use-popper/defaults.mjs';
26
26
 
@@ -116,7 +116,7 @@ var script = defineComponent({
116
116
  setup(props, { emit }) {
117
117
  let inputInitialHeight = 0;
118
118
  let pressDeleteCount = 0;
119
- const { t } = useLocaleInject();
119
+ const { t } = useLocale();
120
120
  const $ELEMENT = useGlobalConfig();
121
121
  const elForm = inject(elFormKey, {});
122
122
  const elFormItem = inject(elFormItemKey, {});
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue_vue_type_script_lang.mjs","sources":["../../../../../../packages/components/cascader/src/index.vue"],"sourcesContent":["<template>\n <el-popper\n ref=\"popper\"\n v-model:visible=\"popperVisible\"\n manual-mode\n :append-to-body=\"popperAppendToBody\"\n placement=\"bottom-start\"\n :popper-class=\"`el-cascader__dropdown ${popperClass}`\"\n :popper-options=\"popperOptions\"\n :fallback-placements=\"['bottom-start', 'top-start', 'right', 'left']\"\n :stop-popper-mouse-event=\"false\"\n transition=\"el-zoom-in-top\"\n :gpu-acceleration=\"false\"\n :effect=\"Effect.LIGHT\"\n pure\n @after-leave=\"hideSuggestionPanel\"\n >\n <template #trigger>\n <div\n v-clickoutside:[popperPaneRef]=\"() => togglePopperVisible(false)\"\n :class=\"[\n 'el-cascader',\n realSize && `el-cascader--${realSize}`,\n { 'is-disabled': isDisabled },\n ]\"\n @click=\"() => togglePopperVisible(readonly ? undefined : true)\"\n @keydown=\"handleKeyDown\"\n @mouseenter=\"inputHover = true\"\n @mouseleave=\"inputHover = false\"\n >\n <el-input\n ref=\"input\"\n v-model.trim=\"inputValue\"\n :placeholder=\"inputPlaceholder\"\n :readonly=\"readonly\"\n :disabled=\"isDisabled\"\n :validate-event=\"false\"\n :size=\"realSize\"\n :class=\"{ 'is-focus': popperVisible }\"\n @compositionstart=\"handleComposition\"\n @compositionupdate=\"handleComposition\"\n @compositionend=\"handleComposition\"\n @focus=\"(e) => $emit('focus', e)\"\n @blur=\"(e) => $emit('blur', e)\"\n @input=\"handleInput\"\n >\n <template #suffix>\n <el-icon\n v-if=\"clearBtnVisible\"\n key=\"clear\"\n class=\"el-input__icon icon-circle-close\"\n @click.stop=\"handleClear\"\n >\n <circle-close />\n </el-icon>\n <el-icon\n v-else\n key=\"arrow-down\"\n :class=\"[\n 'el-input__icon',\n 'icon-arrow-down',\n popperVisible && 'is-reverse',\n ]\"\n @click.stop=\"togglePopperVisible()\"\n >\n <arrow-down />\n </el-icon>\n </template>\n </el-input>\n\n <div v-if=\"multiple\" ref=\"tagWrapper\" class=\"el-cascader__tags\">\n <el-tag\n v-for=\"tag in presentTags\"\n :key=\"tag.key\"\n type=\"info\"\n :size=\"tagSize\"\n :hit=\"tag.hitState\"\n :closable=\"tag.closable\"\n disable-transitions\n @close=\"deleteTag(tag)\"\n >\n <span>{{ tag.text }}</span>\n </el-tag>\n <input\n v-if=\"filterable && !isDisabled\"\n v-model.trim=\"searchInputValue\"\n type=\"text\"\n class=\"el-cascader__search-input\"\n :placeholder=\"presentText ? '' : inputPlaceholder\"\n @input=\"(e) => handleInput(searchInputValue, e)\"\n @click.stop=\"togglePopperVisible(true)\"\n @keydown.delete=\"handleDelete\"\n @compositionstart=\"handleComposition\"\n @compositionupdate=\"handleComposition\"\n @compositionend=\"handleComposition\"\n />\n </div>\n </div>\n </template>\n\n <template #default>\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=\"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-popper>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n inject,\n nextTick,\n onMounted,\n onBeforeUnmount,\n ref,\n watch,\n} from 'vue'\nimport { isPromise } from '@vue/shared'\nimport debounce from 'lodash/debounce'\n\nimport ElCascaderPanel, {\n CommonProps,\n} from '@element-plus/components/cascader-panel'\nimport ElInput from '@element-plus/components/input'\nimport ElPopper, { Effect } 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 { useLocaleInject } from '@element-plus/hooks'\n\nimport { EVENT_CODE, focusNode, getSibling } from '@element-plus/utils/aria'\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '@element-plus/utils/constants'\nimport isServer from '@element-plus/utils/isServer'\nimport { useGlobalConfig } from '@element-plus/utils/util'\nimport {\n addResizeListener,\n removeResizeListener,\n} from '@element-plus/utils/resize-event'\nimport { isValidComponentSize } from '@element-plus/utils/validators'\nimport { isKorean } from '@element-plus/utils/isDef'\nimport { CircleClose, Check, ArrowDown } from '@element-plus/icons'\n\nimport type { Options } from '@element-plus/components/popper'\nimport type { ComputedRef, PropType, Ref } from 'vue'\nimport type { ElFormContext, ElFormItemContext } from '@element-plus/tokens'\nimport type {\n CascaderValue,\n CascaderNode,\n Tag,\n} from '@element-plus/components/cascader-panel'\nimport type { ComponentSize } from '@element-plus/utils/types'\n\ntype cascaderPanelType = InstanceType<typeof ElCascaderPanel>\ntype popperType = InstanceType<typeof ElPopper>\ntype inputType = InstanceType<typeof ElInput>\ntype suggestionPanelType = InstanceType<typeof ElScrollbar>\n\nconst DEFAULT_INPUT_HEIGHT = 40\n\nconst INPUT_HEIGHT_MAP = {\n medium: 36,\n small: 32,\n mini: 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'].includes(placement)) return\n modifiersData.arrow.x = 35\n },\n requires: ['arrow'],\n },\n ],\n}\n\nexport default defineComponent({\n name: 'ElCascader',\n\n components: {\n ElCascaderPanel,\n ElInput,\n ElPopper,\n ElScrollbar,\n ElTag,\n ElIcon,\n CircleClose,\n Check,\n ArrowDown,\n },\n\n directives: {\n Clickoutside,\n },\n\n props: {\n ...CommonProps,\n size: {\n type: String as PropType<ComponentSize>,\n validator: isValidComponentSize,\n },\n placeholder: {\n type: String,\n },\n disabled: Boolean,\n clearable: Boolean,\n filterable: Boolean,\n filterMethod: {\n type: Function as PropType<\n (node: CascaderNode, keyword: string) => boolean\n >,\n default: (node: CascaderNode, keyword: string) =>\n node.text.includes(keyword),\n },\n separator: {\n type: String,\n default: ' / ',\n },\n showAllLevels: {\n type: Boolean,\n default: true,\n },\n collapseTags: Boolean,\n debounce: {\n type: Number,\n default: 300,\n },\n beforeFilter: {\n type: Function as PropType<(value: string) => boolean | Promise<any>>,\n default: () => true,\n },\n popperClass: {\n type: String,\n default: '',\n },\n popperAppendToBody: {\n type: Boolean,\n default: true,\n },\n },\n\n emits: [\n UPDATE_MODEL_EVENT,\n CHANGE_EVENT,\n 'focus',\n 'blur',\n 'visible-change',\n 'expand-change',\n 'remove-tag',\n ],\n\n setup(props, { emit }) {\n let inputInitialHeight = 0\n let pressDeleteCount = 0\n\n const { t } = useLocaleInject()\n const $ELEMENT = useGlobalConfig()\n const elForm = inject(elFormKey, {} as ElFormContext)\n const elFormItem = inject(elFormItemKey, {} as ElFormItemContext)\n\n const popper: Ref<popperType | 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: ComputedRef<ComponentSize> = computed(\n () => props.size || elFormItem.size || $ELEMENT.size\n )\n const tagSize = computed(() =>\n ['small', 'mini'].includes(realSize.value) ? 'mini' : 'small'\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 popper.value?.popperRef\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(popper.value?.update)\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 (isServer || !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 Effect,\n popperOptions,\n popper,\n popperPaneRef,\n input,\n tagWrapper,\n panel,\n suggestionPanel,\n popperVisible,\n inputHover,\n inputPlaceholder,\n filtering,\n presentText,\n checkedValue,\n inputValue,\n searchInputValue,\n presentTags,\n suggestions,\n isDisabled,\n isOnComposition,\n realSize,\n tagSize,\n multiple,\n readonly,\n clearBtnVisible,\n t,\n togglePopperVisible,\n hideSuggestionPanel,\n deleteTag,\n focusFirstNode,\n getCheckedNodes,\n handleExpandChange,\n handleKeyDown,\n handleComposition,\n handleClear,\n handleSuggestionClick,\n handleSuggestionKeyDown,\n handleDelete,\n handleInput,\n }\n },\n})\n</script>\n"],"names":["ElCascaderPanel","ElPopper","Clickoutside"],"mappings":"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"}
1
+ {"version":3,"file":"index.vue_vue_type_script_lang.mjs","sources":["../../../../../../packages/components/cascader/src/index.vue"],"sourcesContent":["<template>\n <el-popper\n ref=\"popper\"\n v-model:visible=\"popperVisible\"\n manual-mode\n :append-to-body=\"popperAppendToBody\"\n placement=\"bottom-start\"\n :popper-class=\"`el-cascader__dropdown ${popperClass}`\"\n :popper-options=\"popperOptions\"\n :fallback-placements=\"['bottom-start', 'top-start', 'right', 'left']\"\n :stop-popper-mouse-event=\"false\"\n transition=\"el-zoom-in-top\"\n :gpu-acceleration=\"false\"\n :effect=\"Effect.LIGHT\"\n pure\n @after-leave=\"hideSuggestionPanel\"\n >\n <template #trigger>\n <div\n v-clickoutside:[popperPaneRef]=\"() => togglePopperVisible(false)\"\n :class=\"[\n 'el-cascader',\n realSize && `el-cascader--${realSize}`,\n { 'is-disabled': isDisabled },\n ]\"\n @click=\"() => togglePopperVisible(readonly ? undefined : true)\"\n @keydown=\"handleKeyDown\"\n @mouseenter=\"inputHover = true\"\n @mouseleave=\"inputHover = false\"\n >\n <el-input\n ref=\"input\"\n v-model.trim=\"inputValue\"\n :placeholder=\"inputPlaceholder\"\n :readonly=\"readonly\"\n :disabled=\"isDisabled\"\n :validate-event=\"false\"\n :size=\"realSize\"\n :class=\"{ 'is-focus': popperVisible }\"\n @compositionstart=\"handleComposition\"\n @compositionupdate=\"handleComposition\"\n @compositionend=\"handleComposition\"\n @focus=\"(e) => $emit('focus', e)\"\n @blur=\"(e) => $emit('blur', e)\"\n @input=\"handleInput\"\n >\n <template #suffix>\n <el-icon\n v-if=\"clearBtnVisible\"\n key=\"clear\"\n class=\"el-input__icon icon-circle-close\"\n @click.stop=\"handleClear\"\n >\n <circle-close />\n </el-icon>\n <el-icon\n v-else\n key=\"arrow-down\"\n :class=\"[\n 'el-input__icon',\n 'icon-arrow-down',\n popperVisible && 'is-reverse',\n ]\"\n @click.stop=\"togglePopperVisible()\"\n >\n <arrow-down />\n </el-icon>\n </template>\n </el-input>\n\n <div v-if=\"multiple\" ref=\"tagWrapper\" class=\"el-cascader__tags\">\n <el-tag\n v-for=\"tag in presentTags\"\n :key=\"tag.key\"\n type=\"info\"\n :size=\"tagSize\"\n :hit=\"tag.hitState\"\n :closable=\"tag.closable\"\n disable-transitions\n @close=\"deleteTag(tag)\"\n >\n <span>{{ tag.text }}</span>\n </el-tag>\n <input\n v-if=\"filterable && !isDisabled\"\n v-model.trim=\"searchInputValue\"\n type=\"text\"\n class=\"el-cascader__search-input\"\n :placeholder=\"presentText ? '' : inputPlaceholder\"\n @input=\"(e) => handleInput(searchInputValue, e)\"\n @click.stop=\"togglePopperVisible(true)\"\n @keydown.delete=\"handleDelete\"\n @compositionstart=\"handleComposition\"\n @compositionupdate=\"handleComposition\"\n @compositionend=\"handleComposition\"\n />\n </div>\n </div>\n </template>\n\n <template #default>\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=\"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-popper>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n inject,\n nextTick,\n onMounted,\n onBeforeUnmount,\n ref,\n watch,\n} from 'vue'\nimport { isPromise } from '@vue/shared'\nimport debounce from 'lodash/debounce'\n\nimport ElCascaderPanel, {\n CommonProps,\n} from '@element-plus/components/cascader-panel'\nimport ElInput from '@element-plus/components/input'\nimport ElPopper, { Effect } 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 } from '@element-plus/hooks'\n\nimport { EVENT_CODE, focusNode, getSibling } from '@element-plus/utils/aria'\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '@element-plus/utils/constants'\nimport isServer from '@element-plus/utils/isServer'\nimport { useGlobalConfig } from '@element-plus/utils/util'\nimport {\n addResizeListener,\n removeResizeListener,\n} from '@element-plus/utils/resize-event'\nimport { isValidComponentSize } from '@element-plus/utils/validators'\nimport { isKorean } from '@element-plus/utils/isDef'\nimport { CircleClose, Check, ArrowDown } from '@element-plus/icons'\n\nimport type { Options } from '@element-plus/components/popper'\nimport type { ComputedRef, PropType, Ref } from 'vue'\nimport type { ElFormContext, ElFormItemContext } from '@element-plus/tokens'\nimport type {\n CascaderValue,\n CascaderNode,\n Tag,\n} from '@element-plus/components/cascader-panel'\nimport type { ComponentSize } from '@element-plus/utils/types'\n\ntype cascaderPanelType = InstanceType<typeof ElCascaderPanel>\ntype popperType = InstanceType<typeof ElPopper>\ntype inputType = InstanceType<typeof ElInput>\ntype suggestionPanelType = InstanceType<typeof ElScrollbar>\n\nconst DEFAULT_INPUT_HEIGHT = 40\n\nconst INPUT_HEIGHT_MAP = {\n medium: 36,\n small: 32,\n mini: 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'].includes(placement)) return\n modifiersData.arrow.x = 35\n },\n requires: ['arrow'],\n },\n ],\n}\n\nexport default defineComponent({\n name: 'ElCascader',\n\n components: {\n ElCascaderPanel,\n ElInput,\n ElPopper,\n ElScrollbar,\n ElTag,\n ElIcon,\n CircleClose,\n Check,\n ArrowDown,\n },\n\n directives: {\n Clickoutside,\n },\n\n props: {\n ...CommonProps,\n size: {\n type: String as PropType<ComponentSize>,\n validator: isValidComponentSize,\n },\n placeholder: {\n type: String,\n },\n disabled: Boolean,\n clearable: Boolean,\n filterable: Boolean,\n filterMethod: {\n type: Function as PropType<\n (node: CascaderNode, keyword: string) => boolean\n >,\n default: (node: CascaderNode, keyword: string) =>\n node.text.includes(keyword),\n },\n separator: {\n type: String,\n default: ' / ',\n },\n showAllLevels: {\n type: Boolean,\n default: true,\n },\n collapseTags: Boolean,\n debounce: {\n type: Number,\n default: 300,\n },\n beforeFilter: {\n type: Function as PropType<(value: string) => boolean | Promise<any>>,\n default: () => true,\n },\n popperClass: {\n type: String,\n default: '',\n },\n popperAppendToBody: {\n type: Boolean,\n default: true,\n },\n },\n\n emits: [\n UPDATE_MODEL_EVENT,\n CHANGE_EVENT,\n 'focus',\n 'blur',\n 'visible-change',\n 'expand-change',\n 'remove-tag',\n ],\n\n setup(props, { emit }) {\n let inputInitialHeight = 0\n let pressDeleteCount = 0\n\n const { t } = useLocale()\n const $ELEMENT = useGlobalConfig()\n const elForm = inject(elFormKey, {} as ElFormContext)\n const elFormItem = inject(elFormItemKey, {} as ElFormItemContext)\n\n const popper: Ref<popperType | 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: ComputedRef<ComponentSize> = computed(\n () => props.size || elFormItem.size || $ELEMENT.size\n )\n const tagSize = computed(() =>\n ['small', 'mini'].includes(realSize.value) ? 'mini' : 'small'\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 popper.value?.popperRef\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(popper.value?.update)\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 (isServer || !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 Effect,\n popperOptions,\n popper,\n popperPaneRef,\n input,\n tagWrapper,\n panel,\n suggestionPanel,\n popperVisible,\n inputHover,\n inputPlaceholder,\n filtering,\n presentText,\n checkedValue,\n inputValue,\n searchInputValue,\n presentTags,\n suggestions,\n isDisabled,\n isOnComposition,\n realSize,\n tagSize,\n multiple,\n readonly,\n clearBtnVisible,\n t,\n togglePopperVisible,\n hideSuggestionPanel,\n deleteTag,\n focusFirstNode,\n getCheckedNodes,\n handleExpandChange,\n handleKeyDown,\n handleComposition,\n handleClear,\n handleSuggestionClick,\n handleSuggestionKeyDown,\n handleDelete,\n handleInput,\n }\n },\n})\n</script>\n"],"names":["ElCascaderPanel","ElPopper","Clickoutside"],"mappings":"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"}