@element-plus/nightly 0.0.20220209 → 0.0.20220210

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 (372) hide show
  1. package/attributes.json +1 -1
  2. package/dist/index.full.js +866 -780
  3. package/dist/index.full.min.js +10 -10
  4. package/dist/index.full.min.js.map +1 -1
  5. package/dist/index.full.min.mjs +10 -10
  6. package/dist/index.full.min.mjs.map +1 -1
  7. package/dist/index.full.mjs +866 -780
  8. package/dist/locale/af.js +1 -1
  9. package/dist/locale/af.min.js +1 -1
  10. package/dist/locale/af.min.mjs +1 -1
  11. package/dist/locale/af.mjs +1 -1
  12. package/dist/locale/ar.js +1 -1
  13. package/dist/locale/ar.min.js +1 -1
  14. package/dist/locale/ar.min.mjs +1 -1
  15. package/dist/locale/ar.mjs +1 -1
  16. package/dist/locale/bg.js +1 -1
  17. package/dist/locale/bg.min.js +1 -1
  18. package/dist/locale/bg.min.mjs +1 -1
  19. package/dist/locale/bg.mjs +1 -1
  20. package/dist/locale/bn.js +1 -1
  21. package/dist/locale/bn.min.js +1 -1
  22. package/dist/locale/bn.min.mjs +1 -1
  23. package/dist/locale/bn.mjs +1 -1
  24. package/dist/locale/ca.js +1 -1
  25. package/dist/locale/ca.min.js +1 -1
  26. package/dist/locale/ca.min.mjs +1 -1
  27. package/dist/locale/ca.mjs +1 -1
  28. package/dist/locale/cs.js +1 -1
  29. package/dist/locale/cs.min.js +1 -1
  30. package/dist/locale/cs.min.mjs +1 -1
  31. package/dist/locale/cs.mjs +1 -1
  32. package/dist/locale/da.js +1 -1
  33. package/dist/locale/da.min.js +1 -1
  34. package/dist/locale/da.min.mjs +1 -1
  35. package/dist/locale/da.mjs +1 -1
  36. package/dist/locale/de.js +1 -1
  37. package/dist/locale/de.min.js +1 -1
  38. package/dist/locale/de.min.mjs +1 -1
  39. package/dist/locale/de.mjs +1 -1
  40. package/dist/locale/el.js +1 -1
  41. package/dist/locale/el.min.js +1 -1
  42. package/dist/locale/el.min.mjs +1 -1
  43. package/dist/locale/el.mjs +1 -1
  44. package/dist/locale/en.js +1 -1
  45. package/dist/locale/en.min.js +1 -1
  46. package/dist/locale/en.min.mjs +1 -1
  47. package/dist/locale/en.mjs +1 -1
  48. package/dist/locale/eo.js +1 -1
  49. package/dist/locale/eo.min.js +1 -1
  50. package/dist/locale/eo.min.mjs +1 -1
  51. package/dist/locale/eo.mjs +1 -1
  52. package/dist/locale/es.js +1 -1
  53. package/dist/locale/es.min.js +1 -1
  54. package/dist/locale/es.min.mjs +1 -1
  55. package/dist/locale/es.mjs +1 -1
  56. package/dist/locale/et.js +1 -1
  57. package/dist/locale/et.min.js +1 -1
  58. package/dist/locale/et.min.mjs +1 -1
  59. package/dist/locale/et.mjs +1 -1
  60. package/dist/locale/eu.js +1 -1
  61. package/dist/locale/eu.min.js +1 -1
  62. package/dist/locale/eu.min.mjs +1 -1
  63. package/dist/locale/eu.mjs +1 -1
  64. package/dist/locale/fa.js +1 -1
  65. package/dist/locale/fa.min.js +1 -1
  66. package/dist/locale/fa.min.mjs +1 -1
  67. package/dist/locale/fa.mjs +1 -1
  68. package/dist/locale/fi.js +1 -1
  69. package/dist/locale/fi.min.js +1 -1
  70. package/dist/locale/fi.min.mjs +1 -1
  71. package/dist/locale/fi.mjs +1 -1
  72. package/dist/locale/fr.js +1 -1
  73. package/dist/locale/fr.min.js +1 -1
  74. package/dist/locale/fr.min.mjs +1 -1
  75. package/dist/locale/fr.mjs +1 -1
  76. package/dist/locale/he.js +1 -1
  77. package/dist/locale/he.min.js +1 -1
  78. package/dist/locale/he.min.mjs +1 -1
  79. package/dist/locale/he.mjs +1 -1
  80. package/dist/locale/hr.js +1 -1
  81. package/dist/locale/hr.min.js +1 -1
  82. package/dist/locale/hr.min.mjs +1 -1
  83. package/dist/locale/hr.mjs +1 -1
  84. package/dist/locale/hu.js +1 -1
  85. package/dist/locale/hu.min.js +1 -1
  86. package/dist/locale/hu.min.mjs +1 -1
  87. package/dist/locale/hu.mjs +1 -1
  88. package/dist/locale/hy-am.js +1 -1
  89. package/dist/locale/hy-am.min.js +1 -1
  90. package/dist/locale/hy-am.min.mjs +1 -1
  91. package/dist/locale/hy-am.mjs +1 -1
  92. package/dist/locale/id.js +1 -1
  93. package/dist/locale/id.min.js +1 -1
  94. package/dist/locale/id.min.mjs +1 -1
  95. package/dist/locale/id.mjs +1 -1
  96. package/dist/locale/it.js +1 -1
  97. package/dist/locale/it.min.js +1 -1
  98. package/dist/locale/it.min.mjs +1 -1
  99. package/dist/locale/it.mjs +1 -1
  100. package/dist/locale/ja.js +1 -1
  101. package/dist/locale/ja.min.js +1 -1
  102. package/dist/locale/ja.min.mjs +1 -1
  103. package/dist/locale/ja.mjs +1 -1
  104. package/dist/locale/kk.js +1 -1
  105. package/dist/locale/kk.min.js +1 -1
  106. package/dist/locale/kk.min.mjs +1 -1
  107. package/dist/locale/kk.mjs +1 -1
  108. package/dist/locale/km.js +1 -1
  109. package/dist/locale/km.min.js +1 -1
  110. package/dist/locale/km.min.mjs +1 -1
  111. package/dist/locale/km.mjs +1 -1
  112. package/dist/locale/ko.js +1 -1
  113. package/dist/locale/ko.min.js +1 -1
  114. package/dist/locale/ko.min.mjs +1 -1
  115. package/dist/locale/ko.mjs +1 -1
  116. package/dist/locale/ku.js +1 -1
  117. package/dist/locale/ku.min.js +1 -1
  118. package/dist/locale/ku.min.mjs +1 -1
  119. package/dist/locale/ku.mjs +1 -1
  120. package/dist/locale/ky.js +1 -1
  121. package/dist/locale/ky.min.js +1 -1
  122. package/dist/locale/ky.min.mjs +1 -1
  123. package/dist/locale/ky.mjs +1 -1
  124. package/dist/locale/lt.js +1 -1
  125. package/dist/locale/lt.min.js +1 -1
  126. package/dist/locale/lt.min.mjs +1 -1
  127. package/dist/locale/lt.mjs +1 -1
  128. package/dist/locale/lv.js +1 -1
  129. package/dist/locale/lv.min.js +1 -1
  130. package/dist/locale/lv.min.mjs +1 -1
  131. package/dist/locale/lv.mjs +1 -1
  132. package/dist/locale/mn.js +1 -1
  133. package/dist/locale/mn.min.js +1 -1
  134. package/dist/locale/mn.min.mjs +1 -1
  135. package/dist/locale/mn.mjs +1 -1
  136. package/dist/locale/nb-no.js +1 -1
  137. package/dist/locale/nb-no.min.js +1 -1
  138. package/dist/locale/nb-no.min.mjs +1 -1
  139. package/dist/locale/nb-no.mjs +1 -1
  140. package/dist/locale/nl.js +1 -1
  141. package/dist/locale/nl.min.js +1 -1
  142. package/dist/locale/nl.min.mjs +1 -1
  143. package/dist/locale/nl.mjs +1 -1
  144. package/dist/locale/pa.js +1 -1
  145. package/dist/locale/pa.min.js +1 -1
  146. package/dist/locale/pa.min.mjs +1 -1
  147. package/dist/locale/pa.mjs +1 -1
  148. package/dist/locale/pl.js +1 -1
  149. package/dist/locale/pl.min.js +1 -1
  150. package/dist/locale/pl.min.mjs +1 -1
  151. package/dist/locale/pl.mjs +1 -1
  152. package/dist/locale/pt-br.js +1 -1
  153. package/dist/locale/pt-br.min.js +1 -1
  154. package/dist/locale/pt-br.min.mjs +1 -1
  155. package/dist/locale/pt-br.mjs +1 -1
  156. package/dist/locale/pt.js +1 -1
  157. package/dist/locale/pt.min.js +1 -1
  158. package/dist/locale/pt.min.mjs +1 -1
  159. package/dist/locale/pt.mjs +1 -1
  160. package/dist/locale/ro.js +1 -1
  161. package/dist/locale/ro.min.js +1 -1
  162. package/dist/locale/ro.min.mjs +1 -1
  163. package/dist/locale/ro.mjs +1 -1
  164. package/dist/locale/ru.js +1 -1
  165. package/dist/locale/ru.min.js +1 -1
  166. package/dist/locale/ru.min.mjs +1 -1
  167. package/dist/locale/ru.mjs +1 -1
  168. package/dist/locale/sk.js +1 -1
  169. package/dist/locale/sk.min.js +1 -1
  170. package/dist/locale/sk.min.mjs +1 -1
  171. package/dist/locale/sk.mjs +1 -1
  172. package/dist/locale/sl.js +1 -1
  173. package/dist/locale/sl.min.js +1 -1
  174. package/dist/locale/sl.min.mjs +1 -1
  175. package/dist/locale/sl.mjs +1 -1
  176. package/dist/locale/sr.js +1 -1
  177. package/dist/locale/sr.min.js +1 -1
  178. package/dist/locale/sr.min.mjs +1 -1
  179. package/dist/locale/sr.mjs +1 -1
  180. package/dist/locale/sv.js +1 -1
  181. package/dist/locale/sv.min.js +1 -1
  182. package/dist/locale/sv.min.mjs +1 -1
  183. package/dist/locale/sv.mjs +1 -1
  184. package/dist/locale/ta.js +1 -1
  185. package/dist/locale/ta.min.js +1 -1
  186. package/dist/locale/ta.min.mjs +1 -1
  187. package/dist/locale/ta.mjs +1 -1
  188. package/dist/locale/th.js +1 -1
  189. package/dist/locale/th.min.js +1 -1
  190. package/dist/locale/th.min.mjs +1 -1
  191. package/dist/locale/th.mjs +1 -1
  192. package/dist/locale/tk.js +1 -1
  193. package/dist/locale/tk.min.js +1 -1
  194. package/dist/locale/tk.min.mjs +1 -1
  195. package/dist/locale/tk.mjs +1 -1
  196. package/dist/locale/tr.js +1 -1
  197. package/dist/locale/tr.min.js +1 -1
  198. package/dist/locale/tr.min.mjs +1 -1
  199. package/dist/locale/tr.mjs +1 -1
  200. package/dist/locale/ug-cn.js +1 -1
  201. package/dist/locale/ug-cn.min.js +1 -1
  202. package/dist/locale/ug-cn.min.mjs +1 -1
  203. package/dist/locale/ug-cn.mjs +1 -1
  204. package/dist/locale/uk.js +1 -1
  205. package/dist/locale/uk.min.js +1 -1
  206. package/dist/locale/uk.min.mjs +1 -1
  207. package/dist/locale/uk.mjs +1 -1
  208. package/dist/locale/uz-uz.js +1 -1
  209. package/dist/locale/uz-uz.min.js +1 -1
  210. package/dist/locale/uz-uz.min.mjs +1 -1
  211. package/dist/locale/uz-uz.mjs +1 -1
  212. package/dist/locale/vi.js +1 -1
  213. package/dist/locale/vi.min.js +1 -1
  214. package/dist/locale/vi.min.mjs +1 -1
  215. package/dist/locale/vi.mjs +1 -1
  216. package/dist/locale/zh-cn.js +1 -1
  217. package/dist/locale/zh-cn.min.js +1 -1
  218. package/dist/locale/zh-cn.min.mjs +1 -1
  219. package/dist/locale/zh-cn.mjs +1 -1
  220. package/dist/locale/zh-tw.js +1 -1
  221. package/dist/locale/zh-tw.min.js +1 -1
  222. package/dist/locale/zh-tw.min.mjs +1 -1
  223. package/dist/locale/zh-tw.mjs +1 -1
  224. package/es/components/dialog/src/use-dialog.mjs +11 -0
  225. package/es/components/dialog/src/use-dialog.mjs.map +1 -1
  226. package/es/components/slider/src/index.mjs +3 -1
  227. package/es/components/slider/src/index.mjs.map +1 -1
  228. package/es/components/table/index.d.ts +10 -0
  229. package/es/components/table/src/h-helper.d.ts +4 -2
  230. package/es/components/table/src/h-helper.mjs +25 -7
  231. package/es/components/table/src/h-helper.mjs.map +1 -1
  232. package/es/components/table/src/table/defaults.d.ts +6 -0
  233. package/es/components/table/src/table/defaults.mjs +4 -0
  234. package/es/components/table/src/table/defaults.mjs.map +1 -1
  235. package/es/components/table/src/table/style-helper.d.ts +1 -0
  236. package/es/components/table/src/table/style-helper.mjs +7 -1
  237. package/es/components/table/src/table/style-helper.mjs.map +1 -1
  238. package/es/components/table/src/table-body/index.mjs +5 -15
  239. package/es/components/table/src/table-body/index.mjs.map +1 -1
  240. package/es/components/table/src/table-header/index.d.ts +0 -1
  241. package/es/components/table/src/table-header/index.mjs +56 -68
  242. package/es/components/table/src/table-header/index.mjs.map +1 -1
  243. package/es/components/table/src/table-layout.mjs +6 -4
  244. package/es/components/table/src/table-layout.mjs.map +1 -1
  245. package/es/components/table/src/table.mjs +58 -22
  246. package/es/components/table/src/table.mjs.map +1 -1
  247. package/es/components/table/src/table.vue.d.ts +11 -3
  248. package/es/components/tabs/index.d.ts +26 -26
  249. package/es/components/tabs/src/tab-bar.d.ts +2 -2
  250. package/es/components/tabs/src/tab-bar.vue.d.ts +6 -6
  251. package/es/components/tabs/src/tab-nav.d.ts +28 -28
  252. package/es/components/tabs/src/tab-nav.mjs +1 -1
  253. package/es/components/tabs/src/tab-nav.mjs.map +1 -1
  254. package/es/components/tabs/src/tab-pane.d.ts +1 -1
  255. package/es/components/tabs/src/tab-pane.mjs +1 -1
  256. package/es/components/tabs/src/tab-pane.mjs.map +1 -1
  257. package/es/components/tabs/src/tab-pane.vue.d.ts +4 -4
  258. package/es/components/tabs/src/tabs.d.ts +24 -24
  259. package/es/components/tabs/src/tabs.mjs +4 -4
  260. package/es/components/tabs/src/tabs.mjs.map +1 -1
  261. package/es/components/tooltip/src/trigger.mjs +8 -4
  262. package/es/components/tooltip/src/trigger.mjs.map +1 -1
  263. package/es/components/tooltip/src/trigger.vue.d.ts +11 -0
  264. package/es/components/transfer/index.d.ts +110 -0
  265. package/es/components/transfer/src/index.mjs +19 -14
  266. package/es/components/transfer/src/index.mjs.map +1 -1
  267. package/es/components/transfer/src/index.vue.d.ts +55 -0
  268. package/es/components/transfer/src/transfer-panel.mjs +26 -20
  269. package/es/components/transfer/src/transfer-panel.mjs.map +1 -1
  270. package/es/components/transfer/src/transfer-panel.vue.d.ts +11 -0
  271. package/es/components/tree-v2/index.d.ts +11 -0
  272. package/es/components/tree-v2/src/tree-node-content.mjs +4 -1
  273. package/es/components/tree-v2/src/tree-node-content.mjs.map +1 -1
  274. package/es/components/tree-v2/src/tree-node.mjs +16 -11
  275. package/es/components/tree-v2/src/tree-node.mjs.map +1 -1
  276. package/es/components/tree-v2/src/tree-node.vue.d.ts +11 -0
  277. package/es/components/tree-v2/src/tree.mjs +13 -12
  278. package/es/components/tree-v2/src/tree.mjs.map +1 -1
  279. package/es/components/tree-v2/src/tree.vue.d.ts +11 -0
  280. package/es/components/upload/src/upload-dragger.mjs +5 -4
  281. package/es/components/upload/src/upload-dragger.mjs.map +1 -1
  282. package/es/components/upload/src/upload-dragger.vue.d.ts +11 -0
  283. package/es/components/upload/src/upload-list.mjs +57 -45
  284. package/es/components/upload/src/upload-list.mjs.map +1 -1
  285. package/es/components/upload/src/upload-list.vue.d.ts +33 -0
  286. package/es/components/upload/src/upload.mjs +7 -3
  287. package/es/components/upload/src/upload.mjs.map +1 -1
  288. package/es/components/upload/src/upload.vue.d.ts +11 -0
  289. package/es/tokens/tabs.d.ts +2 -2
  290. package/es/tokens/tabs.mjs.map +1 -1
  291. package/es/utils-v2/vue/style.d.ts +1 -1
  292. package/es/utils-v2/vue/style.mjs +2 -1
  293. package/es/utils-v2/vue/style.mjs.map +1 -1
  294. package/es/version.d.ts +1 -1
  295. package/es/version.mjs +1 -1
  296. package/es/version.mjs.map +1 -1
  297. package/lib/components/dialog/src/use-dialog.js +11 -0
  298. package/lib/components/dialog/src/use-dialog.js.map +1 -1
  299. package/lib/components/slider/src/index.js +3 -1
  300. package/lib/components/slider/src/index.js.map +1 -1
  301. package/lib/components/table/index.d.ts +10 -0
  302. package/lib/components/table/src/h-helper.d.ts +4 -2
  303. package/lib/components/table/src/h-helper.js +25 -7
  304. package/lib/components/table/src/h-helper.js.map +1 -1
  305. package/lib/components/table/src/table/defaults.d.ts +6 -0
  306. package/lib/components/table/src/table/defaults.js +4 -0
  307. package/lib/components/table/src/table/defaults.js.map +1 -1
  308. package/lib/components/table/src/table/style-helper.d.ts +1 -0
  309. package/lib/components/table/src/table/style-helper.js +7 -1
  310. package/lib/components/table/src/table/style-helper.js.map +1 -1
  311. package/lib/components/table/src/table-body/index.js +5 -15
  312. package/lib/components/table/src/table-body/index.js.map +1 -1
  313. package/lib/components/table/src/table-header/index.d.ts +0 -1
  314. package/lib/components/table/src/table-header/index.js +56 -68
  315. package/lib/components/table/src/table-header/index.js.map +1 -1
  316. package/lib/components/table/src/table-layout.js +6 -4
  317. package/lib/components/table/src/table-layout.js.map +1 -1
  318. package/lib/components/table/src/table.js +57 -21
  319. package/lib/components/table/src/table.js.map +1 -1
  320. package/lib/components/table/src/table.vue.d.ts +11 -3
  321. package/lib/components/tabs/index.d.ts +26 -26
  322. package/lib/components/tabs/src/tab-bar.d.ts +2 -2
  323. package/lib/components/tabs/src/tab-bar.vue.d.ts +6 -6
  324. package/lib/components/tabs/src/tab-nav.d.ts +28 -28
  325. package/lib/components/tabs/src/tab-nav.js +1 -1
  326. package/lib/components/tabs/src/tab-nav.js.map +1 -1
  327. package/lib/components/tabs/src/tab-pane.d.ts +1 -1
  328. package/lib/components/tabs/src/tab-pane.js +1 -1
  329. package/lib/components/tabs/src/tab-pane.js.map +1 -1
  330. package/lib/components/tabs/src/tab-pane.vue.d.ts +4 -4
  331. package/lib/components/tabs/src/tabs.d.ts +24 -24
  332. package/lib/components/tabs/src/tabs.js +4 -4
  333. package/lib/components/tabs/src/tabs.js.map +1 -1
  334. package/lib/components/tooltip/src/trigger.js +7 -3
  335. package/lib/components/tooltip/src/trigger.js.map +1 -1
  336. package/lib/components/tooltip/src/trigger.vue.d.ts +11 -0
  337. package/lib/components/transfer/index.d.ts +110 -0
  338. package/lib/components/transfer/src/index.js +18 -13
  339. package/lib/components/transfer/src/index.js.map +1 -1
  340. package/lib/components/transfer/src/index.vue.d.ts +55 -0
  341. package/lib/components/transfer/src/transfer-panel.js +25 -19
  342. package/lib/components/transfer/src/transfer-panel.js.map +1 -1
  343. package/lib/components/transfer/src/transfer-panel.vue.d.ts +11 -0
  344. package/lib/components/tree-v2/index.d.ts +11 -0
  345. package/lib/components/tree-v2/src/tree-node-content.js +4 -1
  346. package/lib/components/tree-v2/src/tree-node-content.js.map +1 -1
  347. package/lib/components/tree-v2/src/tree-node.js +16 -11
  348. package/lib/components/tree-v2/src/tree-node.js.map +1 -1
  349. package/lib/components/tree-v2/src/tree-node.vue.d.ts +11 -0
  350. package/lib/components/tree-v2/src/tree.js +13 -12
  351. package/lib/components/tree-v2/src/tree.js.map +1 -1
  352. package/lib/components/tree-v2/src/tree.vue.d.ts +11 -0
  353. package/lib/components/upload/src/upload-dragger.js +5 -4
  354. package/lib/components/upload/src/upload-dragger.js.map +1 -1
  355. package/lib/components/upload/src/upload-dragger.vue.d.ts +11 -0
  356. package/lib/components/upload/src/upload-list.js +57 -45
  357. package/lib/components/upload/src/upload-list.js.map +1 -1
  358. package/lib/components/upload/src/upload-list.vue.d.ts +33 -0
  359. package/lib/components/upload/src/upload.js +7 -3
  360. package/lib/components/upload/src/upload.js.map +1 -1
  361. package/lib/components/upload/src/upload.vue.d.ts +11 -0
  362. package/lib/tokens/tabs.d.ts +2 -2
  363. package/lib/tokens/tabs.js.map +1 -1
  364. package/lib/utils-v2/vue/style.d.ts +1 -1
  365. package/lib/utils-v2/vue/style.js +2 -1
  366. package/lib/utils-v2/vue/style.js.map +1 -1
  367. package/lib/version.d.ts +1 -1
  368. package/lib/version.js +1 -1
  369. package/lib/version.js.map +1 -1
  370. package/package.json +2 -2
  371. package/tags.json +1 -1
  372. package/web-types.json +1 -1
@@ -10,19 +10,19 @@ export declare const tabNavProps: {
10
10
  instance: import("vue").ShallowReactive<import("vue").ComponentInternalInstance>;
11
11
  props: {
12
12
  readonly disabled: boolean;
13
- readonly name: string;
13
+ readonly name: import("element-plus/es/utils-v2").BuildPropType<readonly [StringConstructor, NumberConstructor], unknown, unknown>;
14
14
  readonly label: string;
15
15
  readonly closable: boolean;
16
16
  readonly lazy: boolean;
17
17
  };
18
- paneName: string | undefined;
18
+ paneName: string | number | undefined;
19
19
  active: boolean;
20
20
  index: string | undefined;
21
21
  isClosable: boolean;
22
22
  }[]>, () => [], unknown, unknown, unknown>;
23
- readonly currentName: import("element-plus/es/utils-v2").BuildPropReturn<StringConstructor, "", unknown, unknown, unknown>;
23
+ readonly currentName: import("element-plus/es/utils-v2").BuildPropReturn<readonly [StringConstructor, NumberConstructor], "", unknown, unknown, unknown>;
24
24
  readonly editable: BooleanConstructor;
25
- readonly onTabClick: import("element-plus/es/utils-v2").BuildPropReturn<import("element-plus/es/utils-v2").PropWrapper<(tab: TabsPaneContext, tabName: string, ev: Event) => void>, () => void, unknown, unknown, unknown>;
25
+ readonly onTabClick: import("element-plus/es/utils-v2").BuildPropReturn<import("element-plus/es/utils-v2").PropWrapper<(tab: TabsPaneContext, tabName: string | number, ev: Event) => void>, () => void, unknown, unknown, unknown>;
26
26
  readonly onTabRemove: import("element-plus/es/utils-v2").BuildPropReturn<import("element-plus/es/utils-v2").PropWrapper<(tab: TabsPaneContext, ev: Event) => void>, () => void, unknown, unknown, unknown>;
27
27
  readonly type: import("element-plus/es/utils-v2").BuildPropReturn<StringConstructor, "", unknown, "" | "card" | "border-card", unknown>;
28
28
  readonly stretch: BooleanConstructor;
@@ -34,44 +34,44 @@ declare const _default: import("vue").DefineComponent<{
34
34
  instance: import("vue").ShallowReactive<import("vue").ComponentInternalInstance>;
35
35
  props: {
36
36
  readonly disabled: boolean;
37
- readonly name: string;
37
+ readonly name: import("element-plus/es/utils-v2").BuildPropType<readonly [StringConstructor, NumberConstructor], unknown, unknown>;
38
38
  readonly label: string;
39
39
  readonly closable: boolean;
40
40
  readonly lazy: boolean;
41
41
  };
42
- paneName: string | undefined;
42
+ paneName: string | number | undefined;
43
43
  active: boolean;
44
44
  index: string | undefined;
45
45
  isClosable: boolean;
46
46
  }[]>, () => [], unknown, unknown, unknown>;
47
- readonly currentName: import("element-plus/es/utils-v2").BuildPropReturn<StringConstructor, "", unknown, unknown, unknown>;
47
+ readonly currentName: import("element-plus/es/utils-v2").BuildPropReturn<readonly [StringConstructor, NumberConstructor], "", unknown, unknown, unknown>;
48
48
  readonly editable: BooleanConstructor;
49
49
  readonly onTabClick: import("element-plus/es/utils-v2").BuildPropReturn<import("element-plus/es/utils-v2").PropWrapper<(tab: {
50
50
  uid: number;
51
51
  instance: import("vue").ShallowReactive<import("vue").ComponentInternalInstance>;
52
52
  props: {
53
53
  readonly disabled: boolean;
54
- readonly name: string;
54
+ readonly name: import("element-plus/es/utils-v2").BuildPropType<readonly [StringConstructor, NumberConstructor], unknown, unknown>;
55
55
  readonly label: string;
56
56
  readonly closable: boolean;
57
57
  readonly lazy: boolean;
58
58
  };
59
- paneName: string | undefined;
59
+ paneName: string | number | undefined;
60
60
  active: boolean;
61
61
  index: string | undefined;
62
62
  isClosable: boolean;
63
- }, tabName: string, ev: Event) => void>, () => void, unknown, unknown, unknown>;
63
+ }, tabName: string | number, ev: Event) => void>, () => void, unknown, unknown, unknown>;
64
64
  readonly onTabRemove: import("element-plus/es/utils-v2").BuildPropReturn<import("element-plus/es/utils-v2").PropWrapper<(tab: {
65
65
  uid: number;
66
66
  instance: import("vue").ShallowReactive<import("vue").ComponentInternalInstance>;
67
67
  props: {
68
68
  readonly disabled: boolean;
69
- readonly name: string;
69
+ readonly name: import("element-plus/es/utils-v2").BuildPropType<readonly [StringConstructor, NumberConstructor], unknown, unknown>;
70
70
  readonly label: string;
71
71
  readonly closable: boolean;
72
72
  readonly lazy: boolean;
73
73
  };
74
- paneName: string | undefined;
74
+ paneName: string | number | undefined;
75
75
  active: boolean;
76
76
  index: string | undefined;
77
77
  isClosable: boolean;
@@ -86,44 +86,44 @@ declare const _default: import("vue").DefineComponent<{
86
86
  instance: import("vue").ShallowReactive<import("vue").ComponentInternalInstance>;
87
87
  props: {
88
88
  readonly disabled: boolean;
89
- readonly name: string;
89
+ readonly name: import("element-plus/es/utils-v2").BuildPropType<readonly [StringConstructor, NumberConstructor], unknown, unknown>;
90
90
  readonly label: string;
91
91
  readonly closable: boolean;
92
92
  readonly lazy: boolean;
93
93
  };
94
- paneName: string | undefined;
94
+ paneName: string | number | undefined;
95
95
  active: boolean;
96
96
  index: string | undefined;
97
97
  isClosable: boolean;
98
98
  }[]>, () => [], unknown, unknown, unknown>;
99
- readonly currentName: import("element-plus/es/utils-v2").BuildPropReturn<StringConstructor, "", unknown, unknown, unknown>;
99
+ readonly currentName: import("element-plus/es/utils-v2").BuildPropReturn<readonly [StringConstructor, NumberConstructor], "", unknown, unknown, unknown>;
100
100
  readonly editable: BooleanConstructor;
101
101
  readonly onTabClick: import("element-plus/es/utils-v2").BuildPropReturn<import("element-plus/es/utils-v2").PropWrapper<(tab: {
102
102
  uid: number;
103
103
  instance: import("vue").ShallowReactive<import("vue").ComponentInternalInstance>;
104
104
  props: {
105
105
  readonly disabled: boolean;
106
- readonly name: string;
106
+ readonly name: import("element-plus/es/utils-v2").BuildPropType<readonly [StringConstructor, NumberConstructor], unknown, unknown>;
107
107
  readonly label: string;
108
108
  readonly closable: boolean;
109
109
  readonly lazy: boolean;
110
110
  };
111
- paneName: string | undefined;
111
+ paneName: string | number | undefined;
112
112
  active: boolean;
113
113
  index: string | undefined;
114
114
  isClosable: boolean;
115
- }, tabName: string, ev: Event) => void>, () => void, unknown, unknown, unknown>;
115
+ }, tabName: string | number, ev: Event) => void>, () => void, unknown, unknown, unknown>;
116
116
  readonly onTabRemove: import("element-plus/es/utils-v2").BuildPropReturn<import("element-plus/es/utils-v2").PropWrapper<(tab: {
117
117
  uid: number;
118
118
  instance: import("vue").ShallowReactive<import("vue").ComponentInternalInstance>;
119
119
  props: {
120
120
  readonly disabled: boolean;
121
- readonly name: string;
121
+ readonly name: import("element-plus/es/utils-v2").BuildPropType<readonly [StringConstructor, NumberConstructor], unknown, unknown>;
122
122
  readonly label: string;
123
123
  readonly closable: boolean;
124
124
  readonly lazy: boolean;
125
125
  };
126
- paneName: string | undefined;
126
+ paneName: string | number | undefined;
127
127
  active: boolean;
128
128
  index: string | undefined;
129
129
  isClosable: boolean;
@@ -139,43 +139,43 @@ declare const _default: import("vue").DefineComponent<{
139
139
  instance: import("vue").ShallowReactive<import("vue").ComponentInternalInstance>;
140
140
  props: {
141
141
  readonly disabled: boolean;
142
- readonly name: string;
142
+ readonly name: import("element-plus/es/utils-v2").BuildPropType<readonly [StringConstructor, NumberConstructor], unknown, unknown>;
143
143
  readonly label: string;
144
144
  readonly closable: boolean;
145
145
  readonly lazy: boolean;
146
146
  };
147
- paneName: string | undefined;
147
+ paneName: string | number | undefined;
148
148
  active: boolean;
149
149
  index: string | undefined;
150
150
  isClosable: boolean;
151
151
  }[];
152
- currentName: string;
152
+ currentName: import("element-plus/es/utils-v2").BuildPropType<readonly [StringConstructor, NumberConstructor], unknown, unknown>;
153
153
  onTabClick: (tab: {
154
154
  uid: number;
155
155
  instance: import("vue").ShallowReactive<import("vue").ComponentInternalInstance>;
156
156
  props: {
157
157
  readonly disabled: boolean;
158
- readonly name: string;
158
+ readonly name: import("element-plus/es/utils-v2").BuildPropType<readonly [StringConstructor, NumberConstructor], unknown, unknown>;
159
159
  readonly label: string;
160
160
  readonly closable: boolean;
161
161
  readonly lazy: boolean;
162
162
  };
163
- paneName: string | undefined;
163
+ paneName: string | number | undefined;
164
164
  active: boolean;
165
165
  index: string | undefined;
166
166
  isClosable: boolean;
167
- }, tabName: string, ev: Event) => void;
167
+ }, tabName: string | number, ev: Event) => void;
168
168
  onTabRemove: (tab: {
169
169
  uid: number;
170
170
  instance: import("vue").ShallowReactive<import("vue").ComponentInternalInstance>;
171
171
  props: {
172
172
  readonly disabled: boolean;
173
- readonly name: string;
173
+ readonly name: import("element-plus/es/utils-v2").BuildPropType<readonly [StringConstructor, NumberConstructor], unknown, unknown>;
174
174
  readonly label: string;
175
175
  readonly closable: boolean;
176
176
  readonly lazy: boolean;
177
177
  };
178
- paneName: string | undefined;
178
+ paneName: string | number | undefined;
179
179
  active: boolean;
180
180
  index: string | undefined;
181
181
  isClosable: boolean;
@@ -18,7 +18,7 @@ const tabNavProps = buildProps({
18
18
  default: () => mutable([])
19
19
  },
20
20
  currentName: {
21
- type: String,
21
+ type: [String, Number],
22
22
  default: ""
23
23
  },
24
24
  editable: Boolean,
@@ -1 +1 @@
1
- {"version":3,"file":"tab-nav.mjs","sources":["../../../../../../packages/components/tabs/src/tab-nav.ts"],"sourcesContent":["import {\n h,\n defineComponent,\n ref,\n inject,\n computed,\n onUpdated,\n onMounted,\n watch,\n} from 'vue'\nimport { NOOP, capitalize } from '@vue/shared'\nimport {\n useResizeObserver,\n useDocumentVisibility,\n useWindowFocus,\n} from '@vueuse/core'\nimport {\n buildProps,\n definePropType,\n mutable,\n throwError,\n} from '@element-plus/utils-v2'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { ArrowLeft, ArrowRight, Close } from '@element-plus/icons-vue'\nimport { tabsRootContextKey } from '@element-plus/tokens'\nimport TabBar from './tab-bar.vue'\nimport type { ExtractPropTypes, CSSProperties } from 'vue'\nimport type { TabsPaneContext } from '@element-plus/tokens'\nexport interface Scrollable {\n next?: boolean\n prev?: number\n}\n\nexport const tabNavProps = buildProps({\n panes: {\n type: definePropType<TabsPaneContext[]>(Array),\n default: () => mutable([] as const),\n },\n currentName: {\n type: String,\n default: '',\n },\n editable: Boolean,\n onTabClick: {\n type: definePropType<\n (tab: TabsPaneContext, tabName: string, ev: Event) => void\n >(Function),\n default: NOOP,\n },\n onTabRemove: {\n type: definePropType<(tab: TabsPaneContext, ev: Event) => void>(Function),\n default: NOOP,\n },\n type: {\n type: String,\n values: ['card', 'border-card', ''],\n default: '',\n },\n stretch: Boolean,\n} as const)\n\nexport type TabNavProps = ExtractPropTypes<typeof tabNavProps>\n\nconst COMPONENT_NAME = 'ElTabNav'\nexport default defineComponent({\n name: COMPONENT_NAME,\n props: tabNavProps,\n\n setup(props, { expose }) {\n const visibility = useDocumentVisibility()\n const focused = useWindowFocus()\n\n const rootTabs = inject(tabsRootContextKey)\n if (!rootTabs)\n throwError(COMPONENT_NAME, `ElTabNav must be nested inside ElTabs`)\n\n const scrollable = ref<false | Scrollable>(false)\n const navOffset = ref(0)\n const isFocus = ref(false)\n const focusable = ref(true)\n\n const navScroll$ = ref<HTMLDivElement>()\n const nav$ = ref<HTMLDivElement>()\n const el$ = ref<HTMLDivElement>()\n\n const sizeName = computed(() =>\n ['top', 'bottom'].includes(rootTabs.props.tabPosition)\n ? 'width'\n : 'height'\n )\n const navStyle = computed<CSSProperties>(() => {\n const dir = sizeName.value === 'width' ? 'X' : 'Y'\n return {\n transform: `translate${dir}(-${navOffset.value}px)`,\n }\n })\n\n const scrollPrev = () => {\n if (!navScroll$.value) return\n\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`]\n const currentOffset = navOffset.value\n\n if (!currentOffset) return\n\n const newOffset =\n currentOffset > containerSize ? currentOffset - containerSize : 0\n\n navOffset.value = newOffset\n }\n\n const scrollNext = () => {\n if (!navScroll$.value || !nav$.value) return\n\n const navSize = nav$.value[`offset${capitalize(sizeName.value)}`]\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`]\n const currentOffset = navOffset.value\n\n if (navSize - currentOffset <= containerSize) return\n\n const newOffset =\n navSize - currentOffset > containerSize * 2\n ? currentOffset + containerSize\n : navSize - containerSize\n\n navOffset.value = newOffset\n }\n\n const scrollToActiveTab = () => {\n const nav = nav$.value\n if (!scrollable.value || !el$.value || !navScroll$.value || !nav) return\n\n const activeTab = el$.value.querySelector('.is-active')\n if (!activeTab) return\n\n const navScroll = navScroll$.value\n const isHorizontal = ['top', 'bottom'].includes(\n rootTabs.props.tabPosition\n )\n const activeTabBounding = activeTab.getBoundingClientRect()\n const navScrollBounding = navScroll.getBoundingClientRect()\n const maxOffset = isHorizontal\n ? nav.offsetWidth - navScrollBounding.width\n : nav.offsetHeight - navScrollBounding.height\n const currentOffset = navOffset.value\n let newOffset = currentOffset\n\n if (isHorizontal) {\n if (activeTabBounding.left < navScrollBounding.left) {\n newOffset =\n currentOffset - (navScrollBounding.left - activeTabBounding.left)\n }\n if (activeTabBounding.right > navScrollBounding.right) {\n newOffset =\n currentOffset + activeTabBounding.right - navScrollBounding.right\n }\n } else {\n if (activeTabBounding.top < navScrollBounding.top) {\n newOffset =\n currentOffset - (navScrollBounding.top - activeTabBounding.top)\n }\n if (activeTabBounding.bottom > navScrollBounding.bottom) {\n newOffset =\n currentOffset +\n (activeTabBounding.bottom - navScrollBounding.bottom)\n }\n }\n newOffset = Math.max(newOffset, 0)\n navOffset.value = Math.min(newOffset, maxOffset)\n }\n\n const update = () => {\n if (!nav$.value || !navScroll$.value) return\n\n const navSize = nav$.value[`offset${capitalize(sizeName.value)}`]\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`]\n const currentOffset = navOffset.value\n\n if (containerSize < navSize) {\n const currentOffset = navOffset.value\n scrollable.value = scrollable.value || {}\n scrollable.value.prev = currentOffset\n scrollable.value.next = currentOffset + containerSize < navSize\n if (navSize - currentOffset < containerSize) {\n navOffset.value = navSize - containerSize\n }\n } else {\n scrollable.value = false\n if (currentOffset > 0) {\n navOffset.value = 0\n }\n }\n }\n\n const changeTab = (e: KeyboardEvent) => {\n const code = e.code\n\n const { up, down, left, right } = EVENT_CODE\n if (![up, down, left, right].includes(code)) return\n\n // 左右上下键更换tab\n const tabList = Array.from(\n (e.currentTarget as HTMLDivElement).querySelectorAll<HTMLDivElement>(\n '[role=tab]'\n )\n )\n const currentIndex = tabList.indexOf(e.target as HTMLDivElement)\n\n let nextIndex: number\n if (code === left || code === up) {\n // left\n if (currentIndex === 0) {\n // first\n nextIndex = tabList.length - 1\n } else {\n nextIndex = currentIndex - 1\n }\n } else {\n // right\n if (currentIndex < tabList.length - 1) {\n // not last\n nextIndex = currentIndex + 1\n } else {\n nextIndex = 0\n }\n }\n tabList[nextIndex].focus() // 改变焦点元素\n tabList[nextIndex].click() // 选中下一个tab\n setFocus()\n }\n\n const setFocus = () => {\n if (focusable.value) isFocus.value = true\n }\n const removeFocus = () => (isFocus.value = false)\n\n watch(visibility, (visibility) => {\n if (visibility === 'hidden') {\n focusable.value = false\n } else if (visibility === 'visible') {\n setTimeout(() => (focusable.value = true), 50)\n }\n })\n watch(focused, (focused) => {\n if (focused) {\n setTimeout(() => (focusable.value = true), 50)\n } else {\n focusable.value = false\n }\n })\n\n useResizeObserver(el$, update)\n\n onMounted(() => setTimeout(() => scrollToActiveTab(), 0))\n onUpdated(() => update())\n\n expose({\n scrollToActiveTab,\n removeFocus,\n })\n\n return () => {\n const scrollBtn = scrollable.value\n ? [\n h(\n 'span',\n {\n class: [\n 'el-tabs__nav-prev',\n scrollable.value.prev ? '' : 'is-disabled',\n ],\n onClick: scrollPrev,\n },\n [h(ElIcon, {}, { default: () => h(ArrowLeft) })]\n ),\n h(\n 'span',\n {\n class: [\n 'el-tabs__nav-next',\n scrollable.value.next ? '' : 'is-disabled',\n ],\n onClick: scrollNext,\n },\n [h(ElIcon, {}, { default: () => h(ArrowRight) })]\n ),\n ]\n : null\n\n const tabs = props.panes.map((pane, index) => {\n const tabName = pane.props.name || pane.index || `${index}`\n const closable = pane.isClosable || props.editable\n pane.index = `${index}`\n\n const btnClose = closable\n ? h(\n ElIcon,\n {\n class: 'is-icon-close',\n onClick: (ev: MouseEvent) => props.onTabRemove(pane, ev),\n },\n { default: () => h(Close) }\n )\n : null\n\n const tabLabelContent =\n pane.instance.slots.label?.() || pane.props.label\n const tabindex = pane.active ? 0 : -1\n\n return h(\n 'div',\n {\n class: {\n 'el-tabs__item': true,\n [`is-${rootTabs.props.tabPosition}`]: true,\n 'is-active': pane.active,\n 'is-disabled': pane.props.disabled,\n 'is-closable': closable,\n 'is-focus': isFocus,\n },\n id: `tab-${tabName}`,\n key: `tab-${tabName}`,\n 'aria-controls': `pane-${tabName}`,\n role: 'tab',\n 'aria-selected': pane.active,\n ref: `tab-${tabName}`,\n tabindex,\n onFocus: () => setFocus(),\n onBlur: () => removeFocus(),\n onClick: (ev: MouseEvent) => {\n removeFocus()\n props.onTabClick(pane, tabName, ev)\n },\n onKeydown: (ev: KeyboardEvent) => {\n if (\n closable &&\n (ev.code === EVENT_CODE.delete ||\n ev.code === EVENT_CODE.backspace)\n ) {\n props.onTabRemove(pane, ev)\n }\n },\n },\n [tabLabelContent, btnClose]\n )\n })\n\n return h(\n 'div',\n {\n ref: el$,\n class: [\n 'el-tabs__nav-wrap',\n scrollable.value ? 'is-scrollable' : '',\n `is-${rootTabs.props.tabPosition}`,\n ],\n },\n [\n scrollBtn,\n h(\n 'div',\n {\n class: 'el-tabs__nav-scroll',\n ref: navScroll$,\n },\n [\n h(\n 'div',\n {\n class: [\n 'el-tabs__nav',\n `is-${rootTabs.props.tabPosition}`,\n props.stretch &&\n ['top', 'bottom'].includes(rootTabs.props.tabPosition)\n ? 'is-stretch'\n : '',\n ],\n ref: nav$,\n style: navStyle.value,\n role: 'tablist',\n onKeydown: changeTab,\n },\n [\n !props.type\n ? h(TabBar, {\n tabs: [...props.panes],\n })\n : null,\n tabs,\n ]\n ),\n ]\n ),\n ]\n )\n }\n },\n})\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tab-nav.mjs","sources":["../../../../../../packages/components/tabs/src/tab-nav.ts"],"sourcesContent":["import {\n h,\n defineComponent,\n ref,\n inject,\n computed,\n onUpdated,\n onMounted,\n watch,\n} from 'vue'\nimport { NOOP, capitalize } from '@vue/shared'\nimport {\n useResizeObserver,\n useDocumentVisibility,\n useWindowFocus,\n} from '@vueuse/core'\nimport {\n buildProps,\n definePropType,\n mutable,\n throwError,\n} from '@element-plus/utils-v2'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { ArrowLeft, ArrowRight, Close } from '@element-plus/icons-vue'\nimport { tabsRootContextKey } from '@element-plus/tokens'\nimport TabBar from './tab-bar.vue'\nimport type { ExtractPropTypes, CSSProperties } from 'vue'\nimport type { TabsPaneContext } from '@element-plus/tokens'\nexport interface Scrollable {\n next?: boolean\n prev?: number\n}\n\nexport const tabNavProps = buildProps({\n panes: {\n type: definePropType<TabsPaneContext[]>(Array),\n default: () => mutable([] as const),\n },\n currentName: {\n type: [String, Number],\n default: '',\n },\n editable: Boolean,\n onTabClick: {\n type: definePropType<\n (tab: TabsPaneContext, tabName: string | number, ev: Event) => void\n >(Function),\n default: NOOP,\n },\n onTabRemove: {\n type: definePropType<(tab: TabsPaneContext, ev: Event) => void>(Function),\n default: NOOP,\n },\n type: {\n type: String,\n values: ['card', 'border-card', ''],\n default: '',\n },\n stretch: Boolean,\n} as const)\n\nexport type TabNavProps = ExtractPropTypes<typeof tabNavProps>\n\nconst COMPONENT_NAME = 'ElTabNav'\nexport default defineComponent({\n name: COMPONENT_NAME,\n props: tabNavProps,\n\n setup(props, { expose }) {\n const visibility = useDocumentVisibility()\n const focused = useWindowFocus()\n\n const rootTabs = inject(tabsRootContextKey)\n if (!rootTabs)\n throwError(COMPONENT_NAME, `ElTabNav must be nested inside ElTabs`)\n\n const scrollable = ref<false | Scrollable>(false)\n const navOffset = ref(0)\n const isFocus = ref(false)\n const focusable = ref(true)\n\n const navScroll$ = ref<HTMLDivElement>()\n const nav$ = ref<HTMLDivElement>()\n const el$ = ref<HTMLDivElement>()\n\n const sizeName = computed(() =>\n ['top', 'bottom'].includes(rootTabs.props.tabPosition)\n ? 'width'\n : 'height'\n )\n const navStyle = computed<CSSProperties>(() => {\n const dir = sizeName.value === 'width' ? 'X' : 'Y'\n return {\n transform: `translate${dir}(-${navOffset.value}px)`,\n }\n })\n\n const scrollPrev = () => {\n if (!navScroll$.value) return\n\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`]\n const currentOffset = navOffset.value\n\n if (!currentOffset) return\n\n const newOffset =\n currentOffset > containerSize ? currentOffset - containerSize : 0\n\n navOffset.value = newOffset\n }\n\n const scrollNext = () => {\n if (!navScroll$.value || !nav$.value) return\n\n const navSize = nav$.value[`offset${capitalize(sizeName.value)}`]\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`]\n const currentOffset = navOffset.value\n\n if (navSize - currentOffset <= containerSize) return\n\n const newOffset =\n navSize - currentOffset > containerSize * 2\n ? currentOffset + containerSize\n : navSize - containerSize\n\n navOffset.value = newOffset\n }\n\n const scrollToActiveTab = () => {\n const nav = nav$.value\n if (!scrollable.value || !el$.value || !navScroll$.value || !nav) return\n\n const activeTab = el$.value.querySelector('.is-active')\n if (!activeTab) return\n\n const navScroll = navScroll$.value\n const isHorizontal = ['top', 'bottom'].includes(\n rootTabs.props.tabPosition\n )\n const activeTabBounding = activeTab.getBoundingClientRect()\n const navScrollBounding = navScroll.getBoundingClientRect()\n const maxOffset = isHorizontal\n ? nav.offsetWidth - navScrollBounding.width\n : nav.offsetHeight - navScrollBounding.height\n const currentOffset = navOffset.value\n let newOffset = currentOffset\n\n if (isHorizontal) {\n if (activeTabBounding.left < navScrollBounding.left) {\n newOffset =\n currentOffset - (navScrollBounding.left - activeTabBounding.left)\n }\n if (activeTabBounding.right > navScrollBounding.right) {\n newOffset =\n currentOffset + activeTabBounding.right - navScrollBounding.right\n }\n } else {\n if (activeTabBounding.top < navScrollBounding.top) {\n newOffset =\n currentOffset - (navScrollBounding.top - activeTabBounding.top)\n }\n if (activeTabBounding.bottom > navScrollBounding.bottom) {\n newOffset =\n currentOffset +\n (activeTabBounding.bottom - navScrollBounding.bottom)\n }\n }\n newOffset = Math.max(newOffset, 0)\n navOffset.value = Math.min(newOffset, maxOffset)\n }\n\n const update = () => {\n if (!nav$.value || !navScroll$.value) return\n\n const navSize = nav$.value[`offset${capitalize(sizeName.value)}`]\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`]\n const currentOffset = navOffset.value\n\n if (containerSize < navSize) {\n const currentOffset = navOffset.value\n scrollable.value = scrollable.value || {}\n scrollable.value.prev = currentOffset\n scrollable.value.next = currentOffset + containerSize < navSize\n if (navSize - currentOffset < containerSize) {\n navOffset.value = navSize - containerSize\n }\n } else {\n scrollable.value = false\n if (currentOffset > 0) {\n navOffset.value = 0\n }\n }\n }\n\n const changeTab = (e: KeyboardEvent) => {\n const code = e.code\n\n const { up, down, left, right } = EVENT_CODE\n if (![up, down, left, right].includes(code)) return\n\n // 左右上下键更换tab\n const tabList = Array.from(\n (e.currentTarget as HTMLDivElement).querySelectorAll<HTMLDivElement>(\n '[role=tab]'\n )\n )\n const currentIndex = tabList.indexOf(e.target as HTMLDivElement)\n\n let nextIndex: number\n if (code === left || code === up) {\n // left\n if (currentIndex === 0) {\n // first\n nextIndex = tabList.length - 1\n } else {\n nextIndex = currentIndex - 1\n }\n } else {\n // right\n if (currentIndex < tabList.length - 1) {\n // not last\n nextIndex = currentIndex + 1\n } else {\n nextIndex = 0\n }\n }\n tabList[nextIndex].focus() // 改变焦点元素\n tabList[nextIndex].click() // 选中下一个tab\n setFocus()\n }\n\n const setFocus = () => {\n if (focusable.value) isFocus.value = true\n }\n const removeFocus = () => (isFocus.value = false)\n\n watch(visibility, (visibility) => {\n if (visibility === 'hidden') {\n focusable.value = false\n } else if (visibility === 'visible') {\n setTimeout(() => (focusable.value = true), 50)\n }\n })\n watch(focused, (focused) => {\n if (focused) {\n setTimeout(() => (focusable.value = true), 50)\n } else {\n focusable.value = false\n }\n })\n\n useResizeObserver(el$, update)\n\n onMounted(() => setTimeout(() => scrollToActiveTab(), 0))\n onUpdated(() => update())\n\n expose({\n scrollToActiveTab,\n removeFocus,\n })\n\n return () => {\n const scrollBtn = scrollable.value\n ? [\n h(\n 'span',\n {\n class: [\n 'el-tabs__nav-prev',\n scrollable.value.prev ? '' : 'is-disabled',\n ],\n onClick: scrollPrev,\n },\n [h(ElIcon, {}, { default: () => h(ArrowLeft) })]\n ),\n h(\n 'span',\n {\n class: [\n 'el-tabs__nav-next',\n scrollable.value.next ? '' : 'is-disabled',\n ],\n onClick: scrollNext,\n },\n [h(ElIcon, {}, { default: () => h(ArrowRight) })]\n ),\n ]\n : null\n\n const tabs = props.panes.map((pane, index) => {\n const tabName = pane.props.name || pane.index || `${index}`\n const closable = pane.isClosable || props.editable\n pane.index = `${index}`\n\n const btnClose = closable\n ? h(\n ElIcon,\n {\n class: 'is-icon-close',\n onClick: (ev: MouseEvent) => props.onTabRemove(pane, ev),\n },\n { default: () => h(Close) }\n )\n : null\n\n const tabLabelContent =\n pane.instance.slots.label?.() || pane.props.label\n const tabindex = pane.active ? 0 : -1\n\n return h(\n 'div',\n {\n class: {\n 'el-tabs__item': true,\n [`is-${rootTabs.props.tabPosition}`]: true,\n 'is-active': pane.active,\n 'is-disabled': pane.props.disabled,\n 'is-closable': closable,\n 'is-focus': isFocus,\n },\n id: `tab-${tabName}`,\n key: `tab-${tabName}`,\n 'aria-controls': `pane-${tabName}`,\n role: 'tab',\n 'aria-selected': pane.active,\n ref: `tab-${tabName}`,\n tabindex,\n onFocus: () => setFocus(),\n onBlur: () => removeFocus(),\n onClick: (ev: MouseEvent) => {\n removeFocus()\n props.onTabClick(pane, tabName, ev)\n },\n onKeydown: (ev: KeyboardEvent) => {\n if (\n closable &&\n (ev.code === EVENT_CODE.delete ||\n ev.code === EVENT_CODE.backspace)\n ) {\n props.onTabRemove(pane, ev)\n }\n },\n },\n [tabLabelContent, btnClose]\n )\n })\n\n return h(\n 'div',\n {\n ref: el$,\n class: [\n 'el-tabs__nav-wrap',\n scrollable.value ? 'is-scrollable' : '',\n `is-${rootTabs.props.tabPosition}`,\n ],\n },\n [\n scrollBtn,\n h(\n 'div',\n {\n class: 'el-tabs__nav-scroll',\n ref: navScroll$,\n },\n [\n h(\n 'div',\n {\n class: [\n 'el-tabs__nav',\n `is-${rootTabs.props.tabPosition}`,\n props.stretch &&\n ['top', 'bottom'].includes(rootTabs.props.tabPosition)\n ? 'is-stretch'\n : '',\n ],\n ref: nav$,\n style: navStyle.value,\n role: 'tablist',\n onKeydown: changeTab,\n },\n [\n !props.type\n ? h(TabBar, {\n tabs: [...props.panes],\n })\n : null,\n tabs,\n ]\n ),\n ]\n ),\n ]\n )\n }\n },\n})\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { ExtractPropTypes } from 'vue';
2
2
  export declare const tabPaneProps: {
3
3
  readonly label: import("element-plus/es/utils-v2").BuildPropReturn<StringConstructor, "", unknown, unknown, unknown>;
4
- readonly name: import("element-plus/es/utils-v2").BuildPropReturn<StringConstructor, "", unknown, unknown, unknown>;
4
+ readonly name: import("element-plus/es/utils-v2").BuildPropReturn<readonly [StringConstructor, NumberConstructor], "", unknown, unknown, unknown>;
5
5
  readonly closable: BooleanConstructor;
6
6
  readonly disabled: BooleanConstructor;
7
7
  readonly lazy: BooleanConstructor;
@@ -7,7 +7,7 @@ const tabPaneProps = buildProps({
7
7
  default: ""
8
8
  },
9
9
  name: {
10
- type: String,
10
+ type: [String, Number],
11
11
  default: ""
12
12
  },
13
13
  closable: Boolean,
@@ -1 +1 @@
1
- {"version":3,"file":"tab-pane.mjs","sources":["../../../../../../packages/components/tabs/src/tab-pane.ts"],"sourcesContent":["import { buildProps } from '@element-plus/utils-v2'\nimport type { ExtractPropTypes } from 'vue'\n\nexport const tabPaneProps = buildProps({\n label: {\n type: String,\n default: '',\n },\n name: {\n type: String,\n default: '',\n },\n closable: Boolean,\n disabled: Boolean,\n lazy: Boolean,\n} as const)\n\nexport type TabPaneProps = ExtractPropTypes<typeof tabPaneProps>\n"],"names":[],"mappings":";;;AACY,MAAC,YAAY,GAAG,UAAU,CAAC;AACvC,EAAE,KAAK,EAAE;AACT,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,EAAE;AACf,GAAG;AACH,EAAE,IAAI,EAAE;AACR,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,EAAE;AACf,GAAG;AACH,EAAE,QAAQ,EAAE,OAAO;AACnB,EAAE,QAAQ,EAAE,OAAO;AACnB,EAAE,IAAI,EAAE,OAAO;AACf,CAAC;;;;"}
1
+ {"version":3,"file":"tab-pane.mjs","sources":["../../../../../../packages/components/tabs/src/tab-pane.ts"],"sourcesContent":["import { buildProps } from '@element-plus/utils-v2'\nimport type { ExtractPropTypes } from 'vue'\n\nexport const tabPaneProps = buildProps({\n label: {\n type: String,\n default: '',\n },\n name: {\n type: [String, Number],\n default: '',\n },\n closable: Boolean,\n disabled: Boolean,\n lazy: Boolean,\n} as const)\n\nexport type TabPaneProps = ExtractPropTypes<typeof tabPaneProps>\n"],"names":[],"mappings":";;;AACY,MAAC,YAAY,GAAG,UAAU,CAAC;AACvC,EAAE,KAAK,EAAE;AACT,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,EAAE;AACf,GAAG;AACH,EAAE,IAAI,EAAE;AACR,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC1B,IAAI,OAAO,EAAE,EAAE;AACf,GAAG;AACH,EAAE,QAAQ,EAAE,OAAO;AACnB,EAAE,QAAQ,EAAE,OAAO;AACnB,EAAE,IAAI,EAAE,OAAO;AACf,CAAC;;;;"}
@@ -1,22 +1,22 @@
1
1
  declare const _default: import("vue").DefineComponent<{
2
2
  readonly label: import("element-plus/es/utils-v2").BuildPropReturn<StringConstructor, "", unknown, unknown, unknown>;
3
- readonly name: import("element-plus/es/utils-v2").BuildPropReturn<StringConstructor, "", unknown, unknown, unknown>;
3
+ readonly name: import("element-plus/es/utils-v2").BuildPropReturn<readonly [StringConstructor, NumberConstructor], "", unknown, unknown, unknown>;
4
4
  readonly closable: BooleanConstructor;
5
5
  readonly disabled: BooleanConstructor;
6
6
  readonly lazy: BooleanConstructor;
7
7
  }, {
8
8
  active: Readonly<import("vue").Ref<boolean>>;
9
- paneName: import("vue").ComputedRef<string | undefined>;
9
+ paneName: import("vue").ComputedRef<import("element-plus/es/utils-v2").BuildPropType<readonly [StringConstructor, NumberConstructor], unknown, unknown> | undefined>;
10
10
  shouldBeRender: Readonly<import("vue").Ref<boolean>>;
11
11
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
12
12
  readonly label: import("element-plus/es/utils-v2").BuildPropReturn<StringConstructor, "", unknown, unknown, unknown>;
13
- readonly name: import("element-plus/es/utils-v2").BuildPropReturn<StringConstructor, "", unknown, unknown, unknown>;
13
+ readonly name: import("element-plus/es/utils-v2").BuildPropReturn<readonly [StringConstructor, NumberConstructor], "", unknown, unknown, unknown>;
14
14
  readonly closable: BooleanConstructor;
15
15
  readonly disabled: BooleanConstructor;
16
16
  readonly lazy: BooleanConstructor;
17
17
  }>>, {
18
18
  disabled: boolean;
19
- name: string;
19
+ name: import("element-plus/es/utils-v2").BuildPropType<readonly [StringConstructor, NumberConstructor], unknown, unknown>;
20
20
  label: string;
21
21
  closable: boolean;
22
22
  lazy: boolean;
@@ -5,19 +5,19 @@ export declare const tabsProps: {
5
5
  readonly activeName: import("element-plus/es/utils-v2").BuildPropReturn<StringConstructor, "", unknown, unknown, unknown>;
6
6
  readonly closable: BooleanConstructor;
7
7
  readonly addable: BooleanConstructor;
8
- readonly modelValue: import("element-plus/es/utils-v2").BuildPropReturn<StringConstructor, "", unknown, unknown, unknown>;
8
+ readonly modelValue: import("element-plus/es/utils-v2").BuildPropReturn<readonly [StringConstructor, NumberConstructor], "", unknown, unknown, unknown>;
9
9
  readonly editable: BooleanConstructor;
10
10
  readonly tabPosition: import("element-plus/es/utils-v2").BuildPropReturn<StringConstructor, "top", unknown, "top" | "right" | "bottom" | "left", unknown>;
11
- readonly beforeLeave: import("element-plus/es/utils-v2").BuildPropReturn<import("element-plus/es/utils-v2").PropWrapper<(newTabName: string, oldTabName: string) => void | boolean | Promise<void | boolean>>, () => boolean, unknown, unknown, unknown>;
11
+ readonly beforeLeave: import("element-plus/es/utils-v2").BuildPropReturn<import("element-plus/es/utils-v2").PropWrapper<(newTabName: string | number, oldTabName: string | number) => void | boolean | Promise<void | boolean>>, () => boolean, unknown, unknown, unknown>;
12
12
  readonly stretch: BooleanConstructor;
13
13
  };
14
14
  export declare type TabsProps = ExtractPropTypes<typeof tabsProps>;
15
15
  export declare const tabsEmits: {
16
- "update:modelValue": (tabName: string) => boolean;
17
- input: (tabName: string) => boolean;
16
+ "update:modelValue": (tabName: string | number) => boolean;
17
+ input: (tabName: string | number) => boolean;
18
18
  'tab-click': (pane: TabsPaneContext, ev: Event) => boolean;
19
- edit: (paneName: string | null, action: 'remove' | 'add') => boolean;
20
- 'tab-remove': (paneName: string) => boolean;
19
+ edit: (paneName: string | number | null, action: 'remove' | 'add') => boolean;
20
+ 'tab-remove': (paneName: string | number) => boolean;
21
21
  'tab-add': () => boolean;
22
22
  };
23
23
  export declare type TabsEmits = typeof tabsEmits;
@@ -26,72 +26,72 @@ declare const _default: import("vue").DefineComponent<{
26
26
  readonly activeName: import("element-plus/es/utils-v2").BuildPropReturn<StringConstructor, "", unknown, unknown, unknown>;
27
27
  readonly closable: BooleanConstructor;
28
28
  readonly addable: BooleanConstructor;
29
- readonly modelValue: import("element-plus/es/utils-v2").BuildPropReturn<StringConstructor, "", unknown, unknown, unknown>;
29
+ readonly modelValue: import("element-plus/es/utils-v2").BuildPropReturn<readonly [StringConstructor, NumberConstructor], "", unknown, unknown, unknown>;
30
30
  readonly editable: BooleanConstructor;
31
31
  readonly tabPosition: import("element-plus/es/utils-v2").BuildPropReturn<StringConstructor, "top", unknown, "top" | "right" | "bottom" | "left", unknown>;
32
- readonly beforeLeave: import("element-plus/es/utils-v2").BuildPropReturn<import("element-plus/es/utils-v2").PropWrapper<(newTabName: string, oldTabName: string) => boolean | void | Promise<boolean | void>>, () => boolean, unknown, unknown, unknown>;
32
+ readonly beforeLeave: import("element-plus/es/utils-v2").BuildPropReturn<import("element-plus/es/utils-v2").PropWrapper<(newTabName: string | number, oldTabName: string | number) => boolean | void | Promise<boolean | void>>, () => boolean, unknown, unknown, unknown>;
33
33
  readonly stretch: BooleanConstructor;
34
34
  }, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
35
35
  [key: string]: any;
36
36
  }>, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
37
- "update:modelValue": (tabName: string) => boolean;
38
- input: (tabName: string) => boolean;
37
+ "update:modelValue": (tabName: string | number) => boolean;
38
+ input: (tabName: string | number) => boolean;
39
39
  'tab-click': (pane: {
40
40
  uid: number;
41
41
  instance: import("vue").ShallowReactive<ComponentInternalInstance>;
42
42
  props: {
43
43
  readonly disabled: boolean;
44
- readonly name: string;
44
+ readonly name: import("element-plus/es/utils-v2").BuildPropType<readonly [StringConstructor, NumberConstructor], unknown, unknown>;
45
45
  readonly label: string;
46
46
  readonly closable: boolean;
47
47
  readonly lazy: boolean;
48
48
  };
49
- paneName: string | undefined;
49
+ paneName: string | number | undefined;
50
50
  active: boolean;
51
51
  index: string | undefined;
52
52
  isClosable: boolean;
53
53
  }, ev: Event) => boolean;
54
- edit: (paneName: string | null, action: "add" | "remove") => boolean;
55
- 'tab-remove': (paneName: string) => boolean;
54
+ edit: (paneName: string | number | null, action: "add" | "remove") => boolean;
55
+ 'tab-remove': (paneName: string | number) => boolean;
56
56
  'tab-add': () => boolean;
57
57
  }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
58
58
  readonly type: import("element-plus/es/utils-v2").BuildPropReturn<StringConstructor, "", unknown, "" | "card" | "border-card", unknown>;
59
59
  readonly activeName: import("element-plus/es/utils-v2").BuildPropReturn<StringConstructor, "", unknown, unknown, unknown>;
60
60
  readonly closable: BooleanConstructor;
61
61
  readonly addable: BooleanConstructor;
62
- readonly modelValue: import("element-plus/es/utils-v2").BuildPropReturn<StringConstructor, "", unknown, unknown, unknown>;
62
+ readonly modelValue: import("element-plus/es/utils-v2").BuildPropReturn<readonly [StringConstructor, NumberConstructor], "", unknown, unknown, unknown>;
63
63
  readonly editable: BooleanConstructor;
64
64
  readonly tabPosition: import("element-plus/es/utils-v2").BuildPropReturn<StringConstructor, "top", unknown, "top" | "right" | "bottom" | "left", unknown>;
65
- readonly beforeLeave: import("element-plus/es/utils-v2").BuildPropReturn<import("element-plus/es/utils-v2").PropWrapper<(newTabName: string, oldTabName: string) => boolean | void | Promise<boolean | void>>, () => boolean, unknown, unknown, unknown>;
65
+ readonly beforeLeave: import("element-plus/es/utils-v2").BuildPropReturn<import("element-plus/es/utils-v2").PropWrapper<(newTabName: string | number, oldTabName: string | number) => boolean | void | Promise<boolean | void>>, () => boolean, unknown, unknown, unknown>;
66
66
  readonly stretch: BooleanConstructor;
67
67
  }>> & {
68
- "onUpdate:modelValue"?: ((tabName: string) => any) | undefined;
69
- onInput?: ((tabName: string) => any) | undefined;
68
+ "onUpdate:modelValue"?: ((tabName: string | number) => any) | undefined;
69
+ onInput?: ((tabName: string | number) => any) | undefined;
70
70
  "onTab-click"?: ((pane: {
71
71
  uid: number;
72
72
  instance: import("vue").ShallowReactive<ComponentInternalInstance>;
73
73
  props: {
74
74
  readonly disabled: boolean;
75
- readonly name: string;
75
+ readonly name: import("element-plus/es/utils-v2").BuildPropType<readonly [StringConstructor, NumberConstructor], unknown, unknown>;
76
76
  readonly label: string;
77
77
  readonly closable: boolean;
78
78
  readonly lazy: boolean;
79
79
  };
80
- paneName: string | undefined;
80
+ paneName: string | number | undefined;
81
81
  active: boolean;
82
82
  index: string | undefined;
83
83
  isClosable: boolean;
84
84
  }, ev: Event) => any) | undefined;
85
- onEdit?: ((paneName: string | null, action: "add" | "remove") => any) | undefined;
86
- "onTab-remove"?: ((paneName: string) => any) | undefined;
85
+ onEdit?: ((paneName: string | number | null, action: "add" | "remove") => any) | undefined;
86
+ "onTab-remove"?: ((paneName: string | number) => any) | undefined;
87
87
  "onTab-add"?: (() => any) | undefined;
88
88
  }, {
89
89
  type: import("element-plus/es/utils-v2").BuildPropType<StringConstructor, "" | "card" | "border-card", unknown>;
90
- modelValue: string;
90
+ modelValue: import("element-plus/es/utils-v2").BuildPropType<readonly [StringConstructor, NumberConstructor], unknown, unknown>;
91
91
  closable: boolean;
92
92
  activeName: string;
93
93
  tabPosition: import("element-plus/es/utils-v2").BuildPropType<StringConstructor, "top" | "right" | "bottom" | "left", unknown>;
94
- beforeLeave: (newTabName: string, oldTabName: string) => boolean | void | Promise<boolean | void>;
94
+ beforeLeave: (newTabName: string | number, oldTabName: string | number) => boolean | void | Promise<boolean | void>;
95
95
  addable: boolean;
96
96
  editable: boolean;
97
97
  stretch: boolean;
@@ -24,7 +24,7 @@ const tabsProps = buildProps({
24
24
  closable: Boolean,
25
25
  addable: Boolean,
26
26
  modelValue: {
27
- type: String,
27
+ type: [String, Number],
28
28
  default: ""
29
29
  },
30
30
  editable: Boolean,
@@ -40,11 +40,11 @@ const tabsProps = buildProps({
40
40
  stretch: Boolean
41
41
  });
42
42
  const tabsEmits = {
43
- [UPDATE_MODEL_EVENT]: (tabName) => typeof tabName === "string",
44
- [INPUT_EVENT]: (tabName) => typeof tabName === "string",
43
+ [UPDATE_MODEL_EVENT]: (tabName) => typeof tabName === "string" || typeof tabName === "number",
44
+ [INPUT_EVENT]: (tabName) => typeof tabName === "string" || typeof tabName === "number",
45
45
  "tab-click": (pane, ev) => ev instanceof Event,
46
46
  edit: (paneName, action) => action === "remove" || action === "add",
47
- "tab-remove": (paneName) => typeof paneName === "string",
47
+ "tab-remove": (paneName) => typeof paneName === "string" || typeof paneName === "number",
48
48
  "tab-add": () => true
49
49
  };
50
50
  const getPaneInstanceFromSlot = (vnode, paneInstanceList = []) => {
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.mjs","sources":["../../../../../../packages/components/tabs/src/tabs.ts"],"sourcesContent":["import {\n defineComponent,\n Fragment,\n getCurrentInstance,\n h,\n nextTick,\n onMounted,\n onUpdated,\n provide,\n ref,\n renderSlot,\n watch,\n} from 'vue'\nimport { isPromise, NOOP } from '@vue/shared'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport ElIcon from '@element-plus/components/icon'\nimport { Plus } from '@element-plus/icons-vue'\nimport { buildProps, definePropType } from '@element-plus/utils-v2'\nimport { INPUT_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { tabsRootContextKey } from '@element-plus/tokens'\nimport TabNav from './tab-nav'\nimport type { TabsPaneContext } from '@element-plus/tokens'\n\nimport type {\n Component,\n ComponentInternalInstance,\n VNode,\n ExtractPropTypes,\n Ref,\n} from 'vue'\n\nexport const tabsProps = buildProps({\n type: {\n type: String,\n values: ['card', 'border-card', ''],\n default: '',\n },\n activeName: {\n type: String,\n default: '',\n },\n closable: Boolean,\n addable: Boolean,\n modelValue: {\n type: String,\n default: '',\n },\n editable: Boolean,\n tabPosition: {\n type: String,\n values: ['top', 'right', 'bottom', 'left'],\n default: 'top',\n },\n beforeLeave: {\n type: definePropType<\n (\n newTabName: string,\n oldTabName: string\n ) => void | boolean | Promise<void | boolean>\n >(Function),\n default: () => true,\n },\n stretch: Boolean,\n} as const)\nexport type TabsProps = ExtractPropTypes<typeof tabsProps>\n\nexport const tabsEmits = {\n [UPDATE_MODEL_EVENT]: (tabName: string) => typeof tabName === 'string',\n [INPUT_EVENT]: (tabName: string) => typeof tabName === 'string',\n 'tab-click': (pane: TabsPaneContext, ev: Event) => ev instanceof Event,\n edit: (paneName: string | null, action: 'remove' | 'add') =>\n action === 'remove' || action === 'add',\n 'tab-remove': (paneName: string) => typeof paneName === 'string',\n 'tab-add': () => true,\n}\nexport type TabsEmits = typeof tabsEmits\n\nconst getPaneInstanceFromSlot = (\n vnode: VNode,\n paneInstanceList: ComponentInternalInstance[] = []\n) => {\n const children = (vnode.children || []) as ArrayLike<VNode>\n Array.from(children).forEach((node) => {\n let type = node.type\n type = (type as Component).name || type\n if (type === 'ElTabPane' && node.component) {\n paneInstanceList.push(node.component)\n } else if (type === Fragment || type === 'template') {\n getPaneInstanceFromSlot(node, paneInstanceList)\n }\n })\n return paneInstanceList\n}\n\nexport default defineComponent({\n name: 'ElTabs',\n\n props: tabsProps,\n emits: tabsEmits,\n\n setup(props, { emit, slots, expose }) {\n const instance = getCurrentInstance()!\n const nav$ = ref<InstanceType<typeof TabNav>>()\n\n const panes: Ref<TabsPaneContext[]> = ref([])\n const currentName = ref(props.modelValue || props.activeName || '0')\n\n const paneStatesMap: Record<number, TabsPaneContext> = {}\n\n const updatePaneInstances = (isForceUpdate = false) => {\n if (slots.default) {\n const children = instance.subTree.children as ArrayLike<VNode>\n const content = Array.from(children).find(\n ({ props }) => props?.class === 'el-tabs__content'\n )\n if (!content) return\n\n const paneInstanceList: TabsPaneContext[] = getPaneInstanceFromSlot(\n content\n ).map((paneComponent) => paneStatesMap[paneComponent.uid])\n\n const panesChanged = !(\n paneInstanceList.length === panes.value.length &&\n paneInstanceList.every(\n (pane, index) => pane.uid === panes.value[index].uid\n )\n )\n\n if (isForceUpdate || panesChanged) {\n panes.value = paneInstanceList\n }\n } else if (panes.value.length !== 0) {\n panes.value = []\n }\n }\n\n const changeCurrentName = (value: string) => {\n currentName.value = value\n emit(INPUT_EVENT, value)\n emit(UPDATE_MODEL_EVENT, value)\n }\n\n const setCurrentName = (value: string) => {\n // should do nothing.\n if (currentName.value === value) return\n\n const canLeave = props.beforeLeave?.(value, currentName.value)\n if (isPromise(canLeave)) {\n canLeave.then(\n () => {\n changeCurrentName(value)\n\n // call exposed function, Vue doesn't support expose in typescript yet.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n nav$.value?.removeFocus?.()\n },\n // ignore promise rejection in `before-leave` hook\n NOOP\n )\n } else if (canLeave !== false) {\n changeCurrentName(value)\n }\n }\n\n const handleTabClick = (\n tab: TabsPaneContext,\n tabName: string,\n event: Event\n ) => {\n if (tab.props.disabled) return\n setCurrentName(tabName)\n emit('tab-click', tab, event)\n }\n\n const handleTabRemove = (pane: TabsPaneContext, ev: Event) => {\n if (pane.props.disabled) return\n ev.stopPropagation()\n emit('edit', pane.props.name, 'remove')\n emit('tab-remove', pane.props.name)\n }\n\n const handleTabAdd = () => {\n emit('edit', null, 'add')\n emit('tab-add')\n }\n\n onUpdated(() => updatePaneInstances())\n onMounted(() => updatePaneInstances())\n\n watch(\n () => props.activeName,\n (modelValue) => setCurrentName(modelValue)\n )\n\n watch(\n () => props.modelValue,\n (modelValue) => setCurrentName(modelValue)\n )\n\n watch(currentName, async () => {\n updatePaneInstances(true)\n await nextTick()\n await nav$.value?.$nextTick()\n\n // call exposed function, Vue doesn't support expose in typescript yet.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n nav$.value?.scrollToActiveTab()\n })\n\n provide(tabsRootContextKey, {\n props,\n currentName,\n updatePaneState: (pane) => (paneStatesMap[pane.uid] = pane),\n })\n\n expose({\n currentName,\n })\n\n return () => {\n const newButton =\n props.editable || props.addable\n ? h(\n 'span',\n {\n class: 'el-tabs__new-tab',\n tabindex: '0',\n onClick: handleTabAdd,\n onKeydown: (ev: KeyboardEvent) => {\n if (ev.code === EVENT_CODE.enter) handleTabAdd()\n },\n },\n [h(ElIcon, { class: 'is-icon-plus' }, { default: () => h(Plus) })]\n )\n : null\n\n const header = h(\n 'div',\n { class: ['el-tabs__header', `is-${props.tabPosition}`] },\n [\n newButton,\n h(TabNav, {\n currentName: currentName.value,\n editable: props.editable,\n type: props.type,\n panes: panes.value,\n stretch: props.stretch,\n ref: nav$,\n onTabClick: handleTabClick,\n onTabRemove: handleTabRemove,\n }),\n ]\n )\n\n const panels = h('div', { class: 'el-tabs__content' }, [\n renderSlot(slots, 'default'),\n ])\n\n return h(\n 'div',\n {\n class: {\n 'el-tabs': true,\n 'el-tabs--card': props.type === 'card',\n [`el-tabs--${props.tabPosition}`]: true,\n 'el-tabs--border-card': props.type === 'border-card',\n },\n },\n props.tabPosition !== 'bottom' ? [header, panels] : [panels, header]\n )\n }\n },\n})\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tabs.mjs","sources":["../../../../../../packages/components/tabs/src/tabs.ts"],"sourcesContent":["import {\n defineComponent,\n Fragment,\n getCurrentInstance,\n h,\n nextTick,\n onMounted,\n onUpdated,\n provide,\n ref,\n renderSlot,\n watch,\n} from 'vue'\nimport { isPromise, NOOP } from '@vue/shared'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport ElIcon from '@element-plus/components/icon'\nimport { Plus } from '@element-plus/icons-vue'\nimport { buildProps, definePropType } from '@element-plus/utils-v2'\nimport { INPUT_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { tabsRootContextKey } from '@element-plus/tokens'\nimport TabNav from './tab-nav'\nimport type { TabsPaneContext } from '@element-plus/tokens'\n\nimport type {\n Component,\n ComponentInternalInstance,\n VNode,\n ExtractPropTypes,\n Ref,\n} from 'vue'\n\nexport const tabsProps = buildProps({\n type: {\n type: String,\n values: ['card', 'border-card', ''],\n default: '',\n },\n activeName: {\n type: String,\n default: '',\n },\n closable: Boolean,\n addable: Boolean,\n modelValue: {\n type: [String, Number],\n default: '',\n },\n editable: Boolean,\n tabPosition: {\n type: String,\n values: ['top', 'right', 'bottom', 'left'],\n default: 'top',\n },\n beforeLeave: {\n type: definePropType<\n (\n newTabName: string | number,\n oldTabName: string | number\n ) => void | boolean | Promise<void | boolean>\n >(Function),\n default: () => true,\n },\n stretch: Boolean,\n} as const)\nexport type TabsProps = ExtractPropTypes<typeof tabsProps>\n\nexport const tabsEmits = {\n [UPDATE_MODEL_EVENT]: (tabName: string | number) =>\n typeof tabName === 'string' || typeof tabName === 'number',\n [INPUT_EVENT]: (tabName: string | number) =>\n typeof tabName === 'string' || typeof tabName === 'number',\n 'tab-click': (pane: TabsPaneContext, ev: Event) => ev instanceof Event,\n edit: (paneName: string | number | null, action: 'remove' | 'add') =>\n action === 'remove' || action === 'add',\n 'tab-remove': (paneName: string | number) =>\n typeof paneName === 'string' || typeof paneName === 'number',\n 'tab-add': () => true,\n}\nexport type TabsEmits = typeof tabsEmits\n\nconst getPaneInstanceFromSlot = (\n vnode: VNode,\n paneInstanceList: ComponentInternalInstance[] = []\n) => {\n const children = (vnode.children || []) as ArrayLike<VNode>\n Array.from(children).forEach((node) => {\n let type = node.type\n type = (type as Component).name || type\n if (type === 'ElTabPane' && node.component) {\n paneInstanceList.push(node.component)\n } else if (type === Fragment || type === 'template') {\n getPaneInstanceFromSlot(node, paneInstanceList)\n }\n })\n return paneInstanceList\n}\n\nexport default defineComponent({\n name: 'ElTabs',\n\n props: tabsProps,\n emits: tabsEmits,\n\n setup(props, { emit, slots, expose }) {\n const instance = getCurrentInstance()!\n const nav$ = ref<InstanceType<typeof TabNav>>()\n\n const panes: Ref<TabsPaneContext[]> = ref([])\n const currentName = ref(props.modelValue || props.activeName || '0')\n\n const paneStatesMap: Record<number, TabsPaneContext> = {}\n\n const updatePaneInstances = (isForceUpdate = false) => {\n if (slots.default) {\n const children = instance.subTree.children as ArrayLike<VNode>\n const content = Array.from(children).find(\n ({ props }) => props?.class === 'el-tabs__content'\n )\n if (!content) return\n\n const paneInstanceList: TabsPaneContext[] = getPaneInstanceFromSlot(\n content\n ).map((paneComponent) => paneStatesMap[paneComponent.uid])\n\n const panesChanged = !(\n paneInstanceList.length === panes.value.length &&\n paneInstanceList.every(\n (pane, index) => pane.uid === panes.value[index].uid\n )\n )\n\n if (isForceUpdate || panesChanged) {\n panes.value = paneInstanceList\n }\n } else if (panes.value.length !== 0) {\n panes.value = []\n }\n }\n\n const changeCurrentName = (value: string | number) => {\n currentName.value = value\n emit(INPUT_EVENT, value)\n emit(UPDATE_MODEL_EVENT, value)\n }\n\n const setCurrentName = (value: string | number) => {\n // should do nothing.\n if (currentName.value === value) return\n\n const canLeave = props.beforeLeave?.(value, currentName.value)\n if (isPromise(canLeave)) {\n canLeave.then(\n () => {\n changeCurrentName(value)\n\n // call exposed function, Vue doesn't support expose in typescript yet.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n nav$.value?.removeFocus?.()\n },\n // ignore promise rejection in `before-leave` hook\n NOOP\n )\n } else if (canLeave !== false) {\n changeCurrentName(value)\n }\n }\n\n const handleTabClick = (\n tab: TabsPaneContext,\n tabName: string | number,\n event: Event\n ) => {\n if (tab.props.disabled) return\n setCurrentName(tabName)\n emit('tab-click', tab, event)\n }\n\n const handleTabRemove = (pane: TabsPaneContext, ev: Event) => {\n if (pane.props.disabled) return\n ev.stopPropagation()\n emit('edit', pane.props.name, 'remove')\n emit('tab-remove', pane.props.name)\n }\n\n const handleTabAdd = () => {\n emit('edit', null, 'add')\n emit('tab-add')\n }\n\n onUpdated(() => updatePaneInstances())\n onMounted(() => updatePaneInstances())\n\n watch(\n () => props.activeName,\n (modelValue) => setCurrentName(modelValue)\n )\n\n watch(\n () => props.modelValue,\n (modelValue) => setCurrentName(modelValue)\n )\n\n watch(currentName, async () => {\n updatePaneInstances(true)\n await nextTick()\n await nav$.value?.$nextTick()\n\n // call exposed function, Vue doesn't support expose in typescript yet.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n nav$.value?.scrollToActiveTab()\n })\n\n provide(tabsRootContextKey, {\n props,\n currentName,\n updatePaneState: (pane) => (paneStatesMap[pane.uid] = pane),\n })\n\n expose({\n currentName,\n })\n\n return () => {\n const newButton =\n props.editable || props.addable\n ? h(\n 'span',\n {\n class: 'el-tabs__new-tab',\n tabindex: '0',\n onClick: handleTabAdd,\n onKeydown: (ev: KeyboardEvent) => {\n if (ev.code === EVENT_CODE.enter) handleTabAdd()\n },\n },\n [h(ElIcon, { class: 'is-icon-plus' }, { default: () => h(Plus) })]\n )\n : null\n\n const header = h(\n 'div',\n { class: ['el-tabs__header', `is-${props.tabPosition}`] },\n [\n newButton,\n h(TabNav, {\n currentName: currentName.value,\n editable: props.editable,\n type: props.type,\n panes: panes.value,\n stretch: props.stretch,\n ref: nav$,\n onTabClick: handleTabClick,\n onTabRemove: handleTabRemove,\n }),\n ]\n )\n\n const panels = h('div', { class: 'el-tabs__content' }, [\n renderSlot(slots, 'default'),\n ])\n\n return h(\n 'div',\n {\n class: {\n 'el-tabs': true,\n 'el-tabs--card': props.type === 'card',\n [`el-tabs--${props.tabPosition}`]: true,\n 'el-tabs--border-card': props.type === 'border-card',\n },\n },\n props.tabPosition !== 'bottom' ? [header, panels] : [panels, header]\n )\n }\n },\n})\n"],"names":[],"mappings":"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"}