ele-admin-plus 1.2.1-beta.3 → 1.2.1-beta.4

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 (384) hide show
  1. package/es/core-components.d.ts +1 -0
  2. package/es/core-components.js +60 -58
  3. package/es/ele-admin-layout/components/layout-tabs.d.ts +1 -6
  4. package/es/ele-admin-layout/components/layout-tabs.js +18 -76
  5. package/es/ele-admin-layout/index.js +7 -2
  6. package/es/ele-admin-layout/types.d.ts +2 -0
  7. package/es/ele-app/el.d.ts +3 -0
  8. package/es/ele-app/plus.d.ts +21 -0
  9. package/es/ele-app/style/overwrite/css-var.scss +0 -2
  10. package/es/ele-app/style/overwrite/index.js +0 -1
  11. package/es/ele-app/style/overwrite/index.scss +0 -1
  12. package/es/ele-app/style/scrollbar/css-var.scss +17 -16
  13. package/es/ele-app/types.d.ts +8 -1
  14. package/es/ele-basic-select/index.d.ts +2 -2
  15. package/es/ele-bottom-bar/index.d.ts +9 -2
  16. package/es/ele-bottom-bar/index.js +37 -15
  17. package/es/ele-bottom-bar/props.d.ts +2 -0
  18. package/es/ele-bottom-bar/props.js +3 -1
  19. package/es/ele-bottom-bar/style/index.scss +5 -0
  20. package/es/ele-check-card/index.d.ts +2 -2
  21. package/es/ele-cropper/components/cropper-tools.d.ts +9 -3
  22. package/es/ele-cropper/components/cropper-tools.js +41 -13
  23. package/es/ele-cropper/index.d.ts +3 -1
  24. package/es/ele-cropper/index.js +2 -1
  25. package/es/ele-cropper/props.d.ts +3 -1
  26. package/es/ele-cropper/props.js +2 -0
  27. package/es/ele-cropper/style/index.scss +3 -2
  28. package/es/ele-cropper/types.d.ts +16 -0
  29. package/es/ele-cropper-modal/index.d.ts +3 -1
  30. package/es/ele-cropper-modal/index.js +2 -1
  31. package/es/ele-cropper-modal/props.d.ts +1 -0
  32. package/es/ele-data-table/components/table-columns.d.ts +32 -0
  33. package/es/ele-data-table/components/table-columns.js +114 -0
  34. package/es/ele-data-table/index.d.ts +205 -23
  35. package/es/ele-data-table/index.js +202 -120
  36. package/es/ele-data-table/props.d.ts +14 -18
  37. package/es/ele-data-table/types.d.ts +2 -2
  38. package/es/ele-data-table/util.d.ts +1 -45
  39. package/es/ele-data-table/util.js +2 -110
  40. package/es/ele-drawer/index.d.ts +8 -8
  41. package/es/ele-drawer/props.d.ts +2 -2
  42. package/es/ele-dropdown/components/pro-dropdown.d.ts +237 -0
  43. package/es/ele-dropdown/components/pro-dropdown.js +204 -0
  44. package/es/ele-dropdown/index.d.ts +517 -31
  45. package/es/ele-dropdown/index.js +144 -65
  46. package/es/ele-dropdown/props.d.ts +109 -15
  47. package/es/ele-dropdown/props.js +54 -7
  48. package/es/ele-dropdown/style/index.js +4 -1
  49. package/es/ele-dropdown/style/index.scss +174 -6
  50. package/es/ele-dropdown/types.d.ts +0 -2
  51. package/es/ele-edit-tag/index.d.ts +2 -2
  52. package/es/ele-file-list/components/file-grid-item.d.ts +11 -20
  53. package/es/ele-file-list/components/file-grid-item.js +19 -58
  54. package/es/ele-file-list/components/file-grid.d.ts +15 -19
  55. package/es/ele-file-list/components/file-grid.js +16 -39
  56. package/es/ele-file-list/components/file-table-item.d.ts +11 -20
  57. package/es/ele-file-list/components/file-table-item.js +19 -58
  58. package/es/ele-file-list/components/file-table.d.ts +15 -19
  59. package/es/ele-file-list/components/file-table.js +17 -37
  60. package/es/ele-file-list/index.d.ts +33 -12
  61. package/es/ele-file-list/index.js +118 -20
  62. package/es/ele-file-list/props.d.ts +4 -5
  63. package/es/ele-file-list/props.js +5 -8
  64. package/es/ele-file-list/style/index.scss +10 -5
  65. package/es/ele-file-list/types.d.ts +13 -1
  66. package/es/ele-icon-select/components/icon-grid.d.ts +1 -1
  67. package/es/ele-icon-select/index.d.ts +2 -2
  68. package/es/ele-image-viewer/index.d.ts +120 -0
  69. package/es/ele-image-viewer/index.js +88 -0
  70. package/es/ele-image-viewer/props.d.ts +58 -0
  71. package/es/ele-image-viewer/props.js +35 -0
  72. package/es/ele-image-viewer/style/css-var.scss +8 -0
  73. package/es/ele-image-viewer/style/index.js +2 -0
  74. package/es/ele-image-viewer/style/index.scss +117 -0
  75. package/es/ele-map-picker/components/map-view.d.ts +18 -18
  76. package/es/ele-menus/components/item-title.d.ts +48 -0
  77. package/es/ele-menus/components/item-title.js +108 -0
  78. package/es/ele-menus/components/menu-items.d.ts +78 -0
  79. package/es/ele-menus/components/menu-items.js +269 -0
  80. package/es/ele-menus/index.d.ts +77 -18
  81. package/es/ele-menus/index.js +280 -210
  82. package/es/ele-menus/props.d.ts +2 -2
  83. package/es/ele-menus/util.d.ts +1 -62
  84. package/es/ele-menus/util.js +3 -244
  85. package/es/ele-modal/index.d.ts +9 -9
  86. package/es/ele-modal/props.d.ts +2 -2
  87. package/es/ele-modal/util.d.ts +1 -1
  88. package/es/ele-modal/util.js +8 -4
  89. package/es/ele-pagination/index.d.ts +2 -2
  90. package/es/ele-pagination/props.d.ts +1 -1
  91. package/es/ele-popconfirm/index.d.ts +11 -14
  92. package/es/ele-popconfirm/props.d.ts +3 -4
  93. package/es/ele-popover/index.d.ts +11 -14
  94. package/es/ele-popover/props.d.ts +0 -1
  95. package/es/ele-popover/props.js +1 -1
  96. package/es/ele-printer/util.js +1 -1
  97. package/es/ele-pro-layout/components/pro-iframe.d.ts +6 -6
  98. package/es/ele-pro-layout/components/pro-iframe.js +6 -4
  99. package/es/ele-pro-layout/index.d.ts +1 -1
  100. package/es/ele-pro-layout/index.js +13 -4
  101. package/es/ele-pro-layout/props.d.ts +3 -3
  102. package/es/ele-pro-layout/props.js +3 -3
  103. package/es/ele-pro-layout/types.d.ts +9 -5
  104. package/es/ele-pro-layout/util.d.ts +6 -0
  105. package/es/ele-pro-layout/util.js +12 -0
  106. package/es/ele-pro-table/components/table-tools.d.ts +24 -24
  107. package/es/ele-pro-table/components/table-tools.js +6 -7
  108. package/es/ele-pro-table/components/tool-column.d.ts +7 -7
  109. package/es/ele-pro-table/components/tool-column.js +4 -4
  110. package/es/ele-pro-table/components/tool-export.d.ts +5 -5
  111. package/es/ele-pro-table/components/tool-print-body-cell.js +1 -1
  112. package/es/ele-pro-table/components/tool-print-header-cell.js +3 -2
  113. package/es/ele-pro-table/components/tool-print.d.ts +5 -5
  114. package/es/ele-pro-table/index.d.ts +71 -81
  115. package/es/ele-pro-table/index.js +19 -23
  116. package/es/ele-pro-table/props.d.ts +9 -11
  117. package/es/ele-pro-table/props.js +1 -1
  118. package/es/ele-segmented/index.d.ts +3 -1
  119. package/es/ele-segmented/index.js +27 -3
  120. package/es/ele-segmented/style/index.scss +7 -1
  121. package/es/ele-steps/index.d.ts +12 -12
  122. package/es/ele-steps/props.d.ts +3 -3
  123. package/es/ele-tab-tool/index.d.ts +6 -1
  124. package/es/ele-tab-tool/index.js +44 -3
  125. package/es/ele-tab-tool/props.d.ts +2 -0
  126. package/es/ele-tab-tool/props.js +3 -1
  127. package/es/ele-tab-wrap/components/tab-dropdown.js +9 -26
  128. package/es/ele-tab-wrap/index.js +21 -2
  129. package/es/ele-table/style/index.scss +1 -2
  130. package/es/ele-table-select/index.d.ts +6 -6
  131. package/es/ele-tabs/index.d.ts +21 -19
  132. package/es/ele-tabs/index.js +240 -115
  133. package/es/ele-tabs/props.d.ts +1 -6
  134. package/es/ele-tabs/props.js +1 -1
  135. package/es/ele-tabs/style/index.scss +152 -176
  136. package/es/ele-tabs/types.d.ts +29 -6
  137. package/es/ele-tool/index.js +6 -1
  138. package/es/ele-toolbar/index.d.ts +9 -9
  139. package/es/ele-tooltip/index.d.ts +15 -15
  140. package/es/ele-tooltip/props.d.ts +2 -2
  141. package/es/ele-tooltip/style/css-var.scss +4 -0
  142. package/es/ele-tree-select/index.d.ts +5 -5
  143. package/es/ele-upload-list/components/list-item.d.ts +31 -5
  144. package/es/ele-upload-list/components/list-item.js +146 -66
  145. package/es/ele-upload-list/index.d.ts +55 -26
  146. package/es/ele-upload-list/index.js +180 -97
  147. package/es/ele-upload-list/props.d.ts +22 -9
  148. package/es/ele-upload-list/props.js +20 -8
  149. package/es/ele-upload-list/style/css-var.scss +8 -0
  150. package/es/ele-upload-list/style/index.js +1 -1
  151. package/es/ele-upload-list/style/index.scss +425 -135
  152. package/es/ele-upload-list/types.d.ts +35 -11
  153. package/es/ele-virtual-table/components/body-cell.d.ts +2 -2
  154. package/es/ele-virtual-table/components/header-cell.d.ts +1 -1
  155. package/es/ele-virtual-table/components/header-row.d.ts +1 -1
  156. package/es/ele-virtual-table/index.d.ts +14 -22
  157. package/es/ele-virtual-table/index.js +8 -6
  158. package/es/ele-virtual-table/props.d.ts +6 -8
  159. package/es/icons/CornerLeftFilled.d.ts +2 -0
  160. package/es/icons/CornerLeftFilled.js +26 -0
  161. package/es/icons/CornerRightFilled.d.ts +2 -0
  162. package/es/icons/CornerRightFilled.js +26 -0
  163. package/es/icons/EyeOutlined.d.ts +2 -0
  164. package/es/icons/EyeOutlined.js +30 -0
  165. package/es/icons/FileOutlined.js +4 -4
  166. package/es/icons/SizeCompactOutlined.js +4 -4
  167. package/es/icons/SizeMiddleOutlined.d.ts +2 -0
  168. package/es/icons/SizeMiddleOutlined.js +34 -0
  169. package/es/icons/SizeSlackOutlined.js +4 -4
  170. package/es/icons/index.d.ts +4 -0
  171. package/es/icons/index.js +162 -154
  172. package/es/lang/en_US.js +4 -1
  173. package/es/lang/zh_CN.js +4 -1
  174. package/es/lang/zh_TW.js +4 -1
  175. package/es/style/plus.scss +1 -0
  176. package/es/style/themes/default.scss +80 -4
  177. package/es/style/themes/rounded.scss +6 -3
  178. package/es/style/themes/theme-util.scss +4 -0
  179. package/es/style/util.scss +10 -3
  180. package/es/utils/core.d.ts +4 -2
  181. package/es/utils/hook.d.ts +2 -0
  182. package/es/utils/hook.js +5 -1
  183. package/es/utils/menu-util.js +11 -5
  184. package/es/utils/message-box.js +5 -1
  185. package/es/utils/message.js +2 -2
  186. package/lib/core-components.cjs +60 -58
  187. package/lib/core-components.d.ts +1 -0
  188. package/lib/ele-admin-layout/components/layout-tabs.cjs +17 -75
  189. package/lib/ele-admin-layout/components/layout-tabs.d.ts +1 -6
  190. package/lib/ele-admin-layout/index.cjs +7 -2
  191. package/lib/ele-admin-layout/types.d.ts +2 -0
  192. package/lib/ele-app/el.d.ts +3 -0
  193. package/lib/ele-app/plus.d.ts +21 -0
  194. package/lib/ele-app/style/overwrite/css-var.scss +0 -2
  195. package/lib/ele-app/style/overwrite/index.cjs +0 -1
  196. package/lib/ele-app/style/overwrite/index.scss +0 -1
  197. package/lib/ele-app/style/scrollbar/css-var.scss +17 -16
  198. package/lib/ele-app/types.d.ts +8 -1
  199. package/lib/ele-basic-select/index.d.ts +2 -2
  200. package/lib/ele-bottom-bar/index.cjs +36 -14
  201. package/lib/ele-bottom-bar/index.d.ts +9 -2
  202. package/lib/ele-bottom-bar/props.cjs +3 -1
  203. package/lib/ele-bottom-bar/props.d.ts +2 -0
  204. package/lib/ele-bottom-bar/style/index.scss +5 -0
  205. package/lib/ele-check-card/index.d.ts +2 -2
  206. package/lib/ele-cropper/components/cropper-tools.cjs +40 -12
  207. package/lib/ele-cropper/components/cropper-tools.d.ts +9 -3
  208. package/lib/ele-cropper/index.cjs +2 -1
  209. package/lib/ele-cropper/index.d.ts +3 -1
  210. package/lib/ele-cropper/props.cjs +2 -0
  211. package/lib/ele-cropper/props.d.ts +3 -1
  212. package/lib/ele-cropper/style/index.scss +3 -2
  213. package/lib/ele-cropper/types.d.ts +16 -0
  214. package/lib/ele-cropper-modal/index.cjs +2 -1
  215. package/lib/ele-cropper-modal/index.d.ts +3 -1
  216. package/lib/ele-cropper-modal/props.d.ts +1 -0
  217. package/lib/ele-data-table/components/table-columns.cjs +113 -0
  218. package/lib/ele-data-table/components/table-columns.d.ts +32 -0
  219. package/lib/ele-data-table/index.cjs +199 -117
  220. package/lib/ele-data-table/index.d.ts +205 -23
  221. package/lib/ele-data-table/props.d.ts +14 -18
  222. package/lib/ele-data-table/types.d.ts +2 -2
  223. package/lib/ele-data-table/util.cjs +0 -108
  224. package/lib/ele-data-table/util.d.ts +1 -45
  225. package/lib/ele-drawer/index.d.ts +8 -8
  226. package/lib/ele-drawer/props.d.ts +2 -2
  227. package/lib/ele-dropdown/components/pro-dropdown.cjs +203 -0
  228. package/lib/ele-dropdown/components/pro-dropdown.d.ts +237 -0
  229. package/lib/ele-dropdown/index.cjs +147 -68
  230. package/lib/ele-dropdown/index.d.ts +517 -31
  231. package/lib/ele-dropdown/props.cjs +53 -6
  232. package/lib/ele-dropdown/props.d.ts +109 -15
  233. package/lib/ele-dropdown/style/index.cjs +4 -1
  234. package/lib/ele-dropdown/style/index.scss +174 -6
  235. package/lib/ele-dropdown/types.d.ts +0 -2
  236. package/lib/ele-edit-tag/index.d.ts +2 -2
  237. package/lib/ele-file-list/components/file-grid-item.cjs +18 -57
  238. package/lib/ele-file-list/components/file-grid-item.d.ts +11 -20
  239. package/lib/ele-file-list/components/file-grid.cjs +15 -38
  240. package/lib/ele-file-list/components/file-grid.d.ts +15 -19
  241. package/lib/ele-file-list/components/file-table-item.cjs +18 -57
  242. package/lib/ele-file-list/components/file-table-item.d.ts +11 -20
  243. package/lib/ele-file-list/components/file-table.cjs +16 -36
  244. package/lib/ele-file-list/components/file-table.d.ts +15 -19
  245. package/lib/ele-file-list/index.cjs +117 -19
  246. package/lib/ele-file-list/index.d.ts +33 -12
  247. package/lib/ele-file-list/props.cjs +4 -7
  248. package/lib/ele-file-list/props.d.ts +4 -5
  249. package/lib/ele-file-list/style/index.scss +10 -5
  250. package/lib/ele-file-list/types.d.ts +13 -1
  251. package/lib/ele-icon-select/components/icon-grid.d.ts +1 -1
  252. package/lib/ele-icon-select/index.d.ts +2 -2
  253. package/lib/ele-image-viewer/index.cjs +87 -0
  254. package/lib/ele-image-viewer/index.d.ts +120 -0
  255. package/lib/ele-image-viewer/props.cjs +35 -0
  256. package/lib/ele-image-viewer/props.d.ts +58 -0
  257. package/lib/ele-image-viewer/style/css-var.scss +8 -0
  258. package/lib/ele-image-viewer/style/index.cjs +3 -0
  259. package/lib/ele-image-viewer/style/index.scss +117 -0
  260. package/lib/ele-map-picker/components/map-view.d.ts +18 -18
  261. package/lib/ele-menus/components/item-title.cjs +107 -0
  262. package/lib/ele-menus/components/item-title.d.ts +48 -0
  263. package/lib/ele-menus/components/menu-items.cjs +268 -0
  264. package/lib/ele-menus/components/menu-items.d.ts +78 -0
  265. package/lib/ele-menus/index.cjs +278 -208
  266. package/lib/ele-menus/index.d.ts +77 -18
  267. package/lib/ele-menus/props.d.ts +2 -2
  268. package/lib/ele-menus/util.cjs +1 -242
  269. package/lib/ele-menus/util.d.ts +1 -62
  270. package/lib/ele-modal/index.d.ts +9 -9
  271. package/lib/ele-modal/props.d.ts +2 -2
  272. package/lib/ele-modal/util.cjs +8 -4
  273. package/lib/ele-modal/util.d.ts +1 -1
  274. package/lib/ele-pagination/index.d.ts +2 -2
  275. package/lib/ele-pagination/props.d.ts +1 -1
  276. package/lib/ele-popconfirm/index.d.ts +11 -14
  277. package/lib/ele-popconfirm/props.d.ts +3 -4
  278. package/lib/ele-popover/index.d.ts +11 -14
  279. package/lib/ele-popover/props.cjs +1 -1
  280. package/lib/ele-popover/props.d.ts +0 -1
  281. package/lib/ele-printer/util.cjs +1 -1
  282. package/lib/ele-pro-layout/components/pro-iframe.cjs +6 -4
  283. package/lib/ele-pro-layout/components/pro-iframe.d.ts +6 -6
  284. package/lib/ele-pro-layout/index.cjs +13 -4
  285. package/lib/ele-pro-layout/index.d.ts +1 -1
  286. package/lib/ele-pro-layout/props.cjs +3 -3
  287. package/lib/ele-pro-layout/props.d.ts +3 -3
  288. package/lib/ele-pro-layout/types.d.ts +9 -5
  289. package/lib/ele-pro-layout/util.cjs +12 -0
  290. package/lib/ele-pro-layout/util.d.ts +6 -0
  291. package/lib/ele-pro-table/components/table-tools.cjs +5 -6
  292. package/lib/ele-pro-table/components/table-tools.d.ts +24 -24
  293. package/lib/ele-pro-table/components/tool-column.cjs +4 -4
  294. package/lib/ele-pro-table/components/tool-column.d.ts +7 -7
  295. package/lib/ele-pro-table/components/tool-export.d.ts +5 -5
  296. package/lib/ele-pro-table/components/tool-print-body-cell.cjs +1 -1
  297. package/lib/ele-pro-table/components/tool-print-header-cell.cjs +3 -2
  298. package/lib/ele-pro-table/components/tool-print.d.ts +5 -5
  299. package/lib/ele-pro-table/index.cjs +17 -21
  300. package/lib/ele-pro-table/index.d.ts +71 -81
  301. package/lib/ele-pro-table/props.cjs +1 -1
  302. package/lib/ele-pro-table/props.d.ts +9 -11
  303. package/lib/ele-segmented/index.cjs +26 -2
  304. package/lib/ele-segmented/index.d.ts +3 -1
  305. package/lib/ele-segmented/style/index.scss +7 -1
  306. package/lib/ele-steps/index.d.ts +12 -12
  307. package/lib/ele-steps/props.d.ts +3 -3
  308. package/lib/ele-tab-tool/index.cjs +43 -2
  309. package/lib/ele-tab-tool/index.d.ts +6 -1
  310. package/lib/ele-tab-tool/props.cjs +3 -1
  311. package/lib/ele-tab-tool/props.d.ts +2 -0
  312. package/lib/ele-tab-wrap/components/tab-dropdown.cjs +8 -25
  313. package/lib/ele-tab-wrap/index.cjs +20 -1
  314. package/lib/ele-table/style/index.scss +1 -2
  315. package/lib/ele-table-select/index.d.ts +6 -6
  316. package/lib/ele-tabs/index.cjs +238 -113
  317. package/lib/ele-tabs/index.d.ts +21 -19
  318. package/lib/ele-tabs/props.cjs +1 -1
  319. package/lib/ele-tabs/props.d.ts +1 -6
  320. package/lib/ele-tabs/style/index.scss +152 -176
  321. package/lib/ele-tabs/types.d.ts +29 -6
  322. package/lib/ele-tool/index.cjs +6 -1
  323. package/lib/ele-toolbar/index.d.ts +9 -9
  324. package/lib/ele-tooltip/index.d.ts +15 -15
  325. package/lib/ele-tooltip/props.d.ts +2 -2
  326. package/lib/ele-tooltip/style/css-var.scss +4 -0
  327. package/lib/ele-tree-select/index.d.ts +5 -5
  328. package/lib/ele-upload-list/components/list-item.cjs +144 -64
  329. package/lib/ele-upload-list/components/list-item.d.ts +31 -5
  330. package/lib/ele-upload-list/index.cjs +178 -95
  331. package/lib/ele-upload-list/index.d.ts +55 -26
  332. package/lib/ele-upload-list/props.cjs +20 -8
  333. package/lib/ele-upload-list/props.d.ts +22 -9
  334. package/lib/ele-upload-list/style/css-var.scss +8 -0
  335. package/lib/ele-upload-list/style/index.cjs +1 -1
  336. package/lib/ele-upload-list/style/index.scss +425 -135
  337. package/lib/ele-upload-list/types.d.ts +35 -11
  338. package/lib/ele-virtual-table/components/body-cell.d.ts +2 -2
  339. package/lib/ele-virtual-table/components/header-cell.d.ts +1 -1
  340. package/lib/ele-virtual-table/components/header-row.d.ts +1 -1
  341. package/lib/ele-virtual-table/index.cjs +7 -5
  342. package/lib/ele-virtual-table/index.d.ts +14 -22
  343. package/lib/ele-virtual-table/props.d.ts +6 -8
  344. package/lib/icons/CornerLeftFilled.cjs +25 -0
  345. package/lib/icons/CornerLeftFilled.d.ts +2 -0
  346. package/lib/icons/CornerRightFilled.cjs +25 -0
  347. package/lib/icons/CornerRightFilled.d.ts +2 -0
  348. package/lib/icons/EyeOutlined.cjs +29 -0
  349. package/lib/icons/EyeOutlined.d.ts +2 -0
  350. package/lib/icons/FileOutlined.cjs +4 -4
  351. package/lib/icons/SizeCompactOutlined.cjs +4 -4
  352. package/lib/icons/SizeMiddleOutlined.cjs +33 -0
  353. package/lib/icons/SizeMiddleOutlined.d.ts +2 -0
  354. package/lib/icons/SizeSlackOutlined.cjs +4 -4
  355. package/lib/icons/index.cjs +8 -0
  356. package/lib/icons/index.d.ts +4 -0
  357. package/lib/lang/en_US.cjs +4 -1
  358. package/lib/lang/zh_CN.cjs +4 -1
  359. package/lib/lang/zh_TW.cjs +4 -1
  360. package/lib/style/plus.scss +1 -0
  361. package/lib/style/themes/default.scss +80 -4
  362. package/lib/style/themes/rounded.scss +6 -3
  363. package/lib/style/themes/theme-util.scss +4 -0
  364. package/lib/style/util.scss +10 -3
  365. package/lib/utils/core.d.ts +4 -2
  366. package/lib/utils/hook.cjs +5 -1
  367. package/lib/utils/hook.d.ts +2 -0
  368. package/lib/utils/menu-util.cjs +9 -3
  369. package/lib/utils/message-box.cjs +4 -0
  370. package/lib/utils/message.cjs +1 -1
  371. package/package.json +36 -36
  372. package/typings/global.d.ts +1 -0
  373. package/es/ele-app/style/overwrite/image-viewer/css-var.scss +0 -8
  374. package/es/ele-app/style/overwrite/image-viewer/index.js +0 -1
  375. package/es/ele-app/style/overwrite/image-viewer/index.scss +0 -10
  376. package/es/ele-tabs/components/tab-title.d.ts +0 -52
  377. package/es/ele-tabs/components/tab-title.js +0 -115
  378. package/lib/ele-app/style/overwrite/image-viewer/css-var.scss +0 -8
  379. package/lib/ele-app/style/overwrite/image-viewer/index.cjs +0 -2
  380. package/lib/ele-app/style/overwrite/image-viewer/index.scss +0 -10
  381. package/lib/ele-tabs/components/tab-title.cjs +0 -114
  382. package/lib/ele-tabs/components/tab-title.d.ts +0 -52
  383. /package/es/{ele-app/style/overwrite/image-viewer → ele-image-viewer/style}/index.d.ts +0 -0
  384. /package/lib/{ele-app/style/overwrite/image-viewer → ele-image-viewer/style}/index.d.ts +0 -0
@@ -1,8 +1,6 @@
1
- import { defineComponent, ref, computed, resolveComponent, openBlock, createElementBlock, normalizeClass, withModifiers, createElementVNode, createCommentVNode, renderSlot, toDisplayString, Fragment, renderList, normalizeStyle, createTextVNode, createBlock, mergeProps, createSlots, withCtx } from "vue";
2
- import EleDropdown from "../../ele-dropdown/index";
1
+ import { defineComponent, ref, computed, openBlock, createElementBlock, normalizeClass, withModifiers, createElementVNode, createCommentVNode, renderSlot, toDisplayString, Fragment, renderList, normalizeStyle, createTextVNode } from "vue";
3
2
  const _sfc_main = defineComponent({
4
3
  name: "FileTableItem",
5
- components: { EleDropdown },
6
4
  props: {
7
5
  /** 数据 */
8
6
  item: {
@@ -19,20 +17,16 @@ const _sfc_main = defineComponent({
19
17
  icons: Array,
20
18
  /** 自定义列配置 */
21
19
  columns: Array,
22
- /** 右键菜单 */
23
- contextMenus: Array,
24
- /** 右键菜单属性 */
25
- contextMenuProps: Object
20
+ /** 右键下拉菜单是否显示 */
21
+ ctxMenuDropdownVisible: Boolean
26
22
  },
27
23
  emits: {
28
24
  click: (_item) => true,
29
25
  checkChange: (_item) => true,
30
- contextMenu: (_option) => true,
31
- contextOpen: (_ref) => true
26
+ contextOpen: (_option) => true
32
27
  },
33
28
  setup(props, { emit }) {
34
- const dropdownRef = ref(null);
35
- const dropdownVisible = ref(false);
29
+ const dropdownTriggerRef = ref(null);
36
30
  const selectable = computed(() => {
37
31
  return props.selectionType === "checkbox" || props.selectionType === "radio";
38
32
  });
@@ -76,32 +70,22 @@ const _sfc_main = defineComponent({
76
70
  emit("checkChange", props.item);
77
71
  };
78
72
  const handleContextmenu = (e) => {
79
- e.preventDefault();
80
- e.stopPropagation();
81
- if (dropdownRef.value) {
82
- dropdownRef.value.handleOpen();
83
- }
84
- };
85
- const handleItemContextMenu = (command) => {
86
- emit("contextMenu", { key: command, item: props.item });
87
- };
88
- const handleContextVisibleChange = (visible) => {
89
- dropdownVisible.value = visible;
90
- if (visible) {
91
- emit("contextOpen", dropdownRef.value);
73
+ if (dropdownTriggerRef.value != null) {
74
+ emit("contextOpen", {
75
+ item: props.item,
76
+ triggerEl: dropdownTriggerRef.value,
77
+ e
78
+ });
92
79
  }
93
80
  };
94
81
  return {
95
- dropdownRef,
96
- dropdownVisible,
82
+ dropdownTriggerRef,
97
83
  selectable,
98
84
  selected,
99
85
  icon,
100
86
  handleClick,
101
87
  handleCheckChange,
102
- handleContextmenu,
103
- handleItemContextMenu,
104
- handleContextVisibleChange
88
+ handleContextmenu
105
89
  };
106
90
  }
107
91
  });
@@ -125,12 +109,11 @@ const _hoisted_6 = {
125
109
  class: "ele-file-list-item-tools"
126
110
  };
127
111
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
128
- const _component_EleDropdown = resolveComponent("EleDropdown");
129
112
  return openBlock(), createElementBlock("div", {
130
113
  class: normalizeClass([
131
114
  "ele-file-list-item",
132
115
  { "is-checked": _ctx.selected },
133
- { "is-active": _ctx.dropdownVisible }
116
+ { "is-active": _ctx.ctxMenuDropdownVisible }
134
117
  ]),
135
118
  onClick: _cache[3] || (_cache[3] = withModifiers((...args) => _ctx.handleClick && _ctx.handleClick(...args), ["stop"]))
136
119
  }, [
@@ -186,34 +169,12 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
186
169
  ], 4);
187
170
  }), 128))
188
171
  ], 32),
189
- _ctx.contextMenus || _ctx.$slots.contextMenu ? (openBlock(), createBlock(_component_EleDropdown, mergeProps({
190
- key: 0,
191
- placement: "bottom-start",
192
- popperClass: "ele-file-list-item-context"
193
- }, _ctx.contextMenuProps || {}, {
194
- ref: "dropdownRef",
195
- trigger: "click",
172
+ createElementVNode("div", {
173
+ ref: "dropdownTriggerRef",
196
174
  class: "ele-file-list-item-dropdown",
197
- items: _ctx.contextMenus,
198
- onCommand: _ctx.handleItemContextMenu,
199
- onVisibleChange: _ctx.handleContextVisibleChange
200
- }), createSlots({
201
- default: withCtx(() => [
202
- createElementVNode("div", {
203
- onClick: _cache[2] || (_cache[2] = withModifiers(() => {
204
- }, ["stop"]))
205
- })
206
- ]),
207
- _: 2
208
- }, [
209
- _ctx.$slots.contextMenu ? {
210
- name: "dropdownMenu",
211
- fn: withCtx(() => [
212
- renderSlot(_ctx.$slots, "contextMenu", { item: _ctx.item })
213
- ]),
214
- key: "0"
215
- } : void 0
216
- ]), 1040, ["items", "onCommand", "onVisibleChange"])) : createCommentVNode("", true)
175
+ onClick: _cache[2] || (_cache[2] = withModifiers(() => {
176
+ }, ["stop"]))
177
+ }, null, 512)
217
178
  ], 2);
218
179
  }
219
180
  const fileTableItem = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
@@ -1,7 +1,5 @@
1
- import { PropType, Ref } from 'vue';
2
- import { EleDropdownProps, EleDropdownInstance } from '../../ele-app/plus';
3
- import { TableItemInstance } from '../props';
4
- import { IconItem, FileItem, ColumnItem, ItemContextMenuOption, SelectionType, ContextMenus } from '../types';
1
+ import { PropType } from 'vue';
2
+ import { IconItem, FileItem, ColumnItem, SelectionType, ContextOpenOption } from '../types';
5
3
 
6
4
  declare const _default: import('vue').DefineComponent<{
7
5
  /** 文件数据 */
@@ -32,25 +30,22 @@ declare const _default: import('vue').DefineComponent<{
32
30
  order: StringConstructor;
33
31
  /** 自定义列配置 */
34
32
  columns: PropType<ColumnItem[]>;
35
- /** 右键菜单 */
36
- contextMenus: PropType<ContextMenus>;
37
- /** 右键菜单属性 */
38
- contextMenuProps: PropType<EleDropdownProps>;
33
+ /** 文件右键菜单是否打开 */
34
+ ctxMenuDropdownVisible: BooleanConstructor;
35
+ /** 当前打开的右键菜单对应的文件数据 */
36
+ contextMenuFileItem: PropType<FileItem | null>;
39
37
  }, {
40
- itemRefs: Ref<TableItemInstance[]>;
41
38
  tableCols: import('vue').ComputedRef<ColumnItem[]>;
42
- getContextMenus: (item: FileItem) => import('../../ele-dropdown/types').DropdownItem[] | undefined;
43
39
  handleCheckAllChange: () => void;
44
40
  handleItemClick: (item: FileItem) => void;
45
41
  handleItemCheckChange: (item: FileItem) => void;
46
42
  handleSortChange: (sort: string, col?: ColumnItem) => void;
47
- handleItemContextMenu: (option: ItemContextMenuOption) => void;
48
- handleItemContextOpen: (ref: EleDropdownInstance) => void;
43
+ handleItemContextOpen: (option: ContextOpenOption) => void;
49
44
  }, unknown, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
50
45
  checkAllChange: () => true;
51
46
  itemClick: (_item: FileItem) => true;
52
47
  itemCheckChange: (_item: FileItem) => true;
53
- itemContextMenu: (_option: ItemContextMenuOption) => true;
48
+ itemContextOpen: (_option: ContextOpenOption) => true;
54
49
  sortChange: (_sort: string) => true;
55
50
  }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
56
51
  /** 文件数据 */
@@ -81,19 +76,20 @@ declare const _default: import('vue').DefineComponent<{
81
76
  order: StringConstructor;
82
77
  /** 自定义列配置 */
83
78
  columns: PropType<ColumnItem[]>;
84
- /** 右键菜单 */
85
- contextMenus: PropType<ContextMenus>;
86
- /** 右键菜单属性 */
87
- contextMenuProps: PropType<EleDropdownProps>;
79
+ /** 文件右键菜单是否打开 */
80
+ ctxMenuDropdownVisible: BooleanConstructor;
81
+ /** 当前打开的右键菜单对应的文件数据 */
82
+ contextMenuFileItem: PropType<FileItem | null>;
88
83
  }>> & {
89
84
  onItemClick?: ((_item: FileItem) => any) | undefined;
90
85
  onSortChange?: ((_sort: string) => any) | undefined;
91
86
  onCheckAllChange?: (() => any) | undefined;
92
87
  onItemCheckChange?: ((_item: FileItem) => any) | undefined;
93
- onItemContextMenu?: ((_option: ItemContextMenuOption) => any) | undefined;
88
+ onItemContextOpen?: ((_option: ContextOpenOption) => any) | undefined;
94
89
  }, {
95
90
  sortable: boolean;
96
- isIndeterminate: boolean;
91
+ ctxMenuDropdownVisible: boolean;
97
92
  isCheckAll: boolean;
93
+ isIndeterminate: boolean;
98
94
  }, {}>;
99
95
  export default _default;
@@ -1,4 +1,4 @@
1
- import { defineComponent, ref, computed, resolveComponent, openBlock, createBlock, withCtx, createElementVNode, createElementBlock, normalizeClass, withModifiers, createCommentVNode, toDisplayString, Fragment, renderList, normalizeStyle, renderSlot, createTextVNode, createSlots, mergeProps } from "vue";
1
+ import { defineComponent, computed, resolveComponent, openBlock, createBlock, withCtx, createElementVNode, createElementBlock, normalizeClass, withModifiers, createCommentVNode, toDisplayString, Fragment, renderList, normalizeStyle, renderSlot, createTextVNode, createSlots, mergeProps } from "vue";
2
2
  import ReceiverView from "../../ele-config-provider/components/receiver-view";
3
3
  import FileTableItem from "./file-table-item";
4
4
  import FileSort from "./file-sort";
@@ -34,20 +34,19 @@ const _sfc_main = defineComponent({
34
34
  order: String,
35
35
  /** 自定义列配置 */
36
36
  columns: Array,
37
- /** 右键菜单 */
38
- contextMenus: [Array, Function],
39
- /** 右键菜单属性 */
40
- contextMenuProps: Object
37
+ /** 文件右键菜单是否打开 */
38
+ ctxMenuDropdownVisible: Boolean,
39
+ /** 当前打开的右键菜单对应的文件数据 */
40
+ contextMenuFileItem: Object
41
41
  },
42
42
  emits: {
43
43
  checkAllChange: () => true,
44
44
  itemClick: (_item) => true,
45
45
  itemCheckChange: (_item) => true,
46
- itemContextMenu: (_option) => true,
46
+ itemContextOpen: (_option) => true,
47
47
  sortChange: (_sort) => true
48
48
  },
49
49
  setup(props, { emit }) {
50
- const itemRefs = ref([]);
51
50
  const tableCols = computed(() => {
52
51
  if (props.columns) {
53
52
  return props.columns;
@@ -74,12 +73,6 @@ const _sfc_main = defineComponent({
74
73
  ];
75
74
  return cols;
76
75
  });
77
- const getContextMenus = (item) => {
78
- if (typeof props.contextMenus === "function") {
79
- return props.contextMenus(item);
80
- }
81
- return props.contextMenus;
82
- };
83
76
  const handleCheckAllChange = () => {
84
77
  emit("checkAllChange");
85
78
  };
@@ -98,27 +91,15 @@ const _sfc_main = defineComponent({
98
91
  emit("sortChange", sort);
99
92
  }
100
93
  };
101
- const handleItemContextMenu = (option) => {
102
- emit("itemContextMenu", option);
103
- };
104
- const handleItemContextOpen = (ref2) => {
105
- if (itemRefs.value) {
106
- itemRefs.value.forEach((r) => {
107
- if ((r == null ? void 0 : r.dropdownRef) && r.dropdownRef !== ref2) {
108
- r.dropdownRef.handleClose();
109
- }
110
- });
111
- }
94
+ const handleItemContextOpen = (option) => {
95
+ emit("itemContextOpen", option);
112
96
  };
113
97
  return {
114
- itemRefs,
115
98
  tableCols,
116
- getContextMenus,
117
99
  handleCheckAllChange,
118
100
  handleItemClick,
119
101
  handleItemCheckChange,
120
102
  handleSortChange,
121
- handleItemContextMenu,
122
103
  handleItemContextOpen
123
104
  };
124
105
  }
@@ -160,7 +141,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
160
141
  }, null, 2)) : createCommentVNode("", true)
161
142
  ])) : createCommentVNode("", true),
162
143
  createElementVNode("div", {
163
- class: "ele-file-list-item-name",
144
+ class: normalizeClass(["ele-file-list-item-name", { "is-sortable": _ctx.sortable }]),
164
145
  onClick: _cache[1] || (_cache[1] = ($event) => _ctx.handleSortChange("name"))
165
146
  }, [
166
147
  createElementVNode("span", null, toDisplayString(_ctx.nameText), 1),
@@ -170,12 +151,15 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
170
151
  order: _ctx.order,
171
152
  name: "name"
172
153
  }, null, 8, ["sort", "order"])) : createCommentVNode("", true)
173
- ]),
154
+ ], 2),
174
155
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.tableCols, (col) => {
175
156
  return openBlock(), createElementBlock("div", {
176
157
  key: col.prop,
177
158
  style: normalizeStyle(col.headerStyle || col.style),
178
- class: "ele-file-list-item-cell",
159
+ class: normalizeClass([
160
+ "ele-file-list-item-cell",
161
+ { "is-sortable": col.sortable }
162
+ ]),
179
163
  onClick: ($event) => _ctx.handleSortChange(col.prop, col)
180
164
  }, [
181
165
  createElementVNode("span", null, [
@@ -194,7 +178,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
194
178
  order: _ctx.order,
195
179
  name: col.prop
196
180
  }, null, 8, ["sort", "order", "name"])) : createCommentVNode("", true)
197
- ], 12, _hoisted_5);
181
+ ], 14, _hoisted_5);
198
182
  }), 128))
199
183
  ])
200
184
  ])
@@ -203,19 +187,15 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
203
187
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.data, (item) => {
204
188
  return openBlock(), createBlock(_component_FileTableItem, {
205
189
  key: item.key,
206
- ref_for: true,
207
- ref: "itemRefs",
208
190
  item,
209
191
  selectionType: _ctx.selectionType,
210
192
  selections: _ctx.selections,
211
193
  current: _ctx.current,
212
194
  icons: _ctx.icons,
213
195
  columns: _ctx.tableCols,
214
- contextMenus: _ctx.getContextMenus(item),
215
- contextMenuProps: _ctx.contextMenuProps,
196
+ ctxMenuDropdownVisible: _ctx.ctxMenuDropdownVisible && _ctx.contextMenuFileItem === item,
216
197
  onClick: _ctx.handleItemClick,
217
198
  onCheckChange: _ctx.handleItemCheckChange,
218
- onContextMenu: _ctx.handleItemContextMenu,
219
199
  onContextOpen: _ctx.handleItemContextOpen
220
200
  }, createSlots({ _: 2 }, [
221
201
  renderList(Object.keys(_ctx.$slots), (name) => {
@@ -226,7 +206,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
226
206
  ])
227
207
  };
228
208
  })
229
- ]), 1032, ["item", "selectionType", "selections", "current", "icons", "columns", "contextMenus", "contextMenuProps", "onClick", "onCheckChange", "onContextMenu", "onContextOpen"]);
209
+ ]), 1032, ["item", "selectionType", "selections", "current", "icons", "columns", "ctxMenuDropdownVisible", "onClick", "onCheckChange", "onContextOpen"]);
230
210
  }), 128))
231
211
  ])
232
212
  ]),
@@ -1,5 +1,6 @@
1
- import { Ref } from 'vue';
2
- import { FileItem, SortValue, ItemContextMenuOption, FileListLocale } from './types';
1
+ import { EleDropdownInstance } from '../ele-app/plus';
2
+ import { DropdownItem } from '../ele-dropdown/types';
3
+ import { FileItem, SortValue, ItemContextMenuOption, ContextOpenOption, FileListLocale } from './types';
3
4
 
4
5
  declare const _default: import('vue').DefineComponent<{
5
6
  data: {
@@ -20,10 +21,7 @@ declare const _default: import('vue').DefineComponent<{
20
21
  type: import('vue').PropType<import('./types').IconItem[]>;
21
22
  default: () => import('./types').IconItem[];
22
23
  };
23
- smallIcons: {
24
- type: import('vue').PropType<import('./types').IconItem[]>;
25
- default: () => import('./types').IconItem[];
26
- };
24
+ smallIcons: import('vue').PropType<import('./types').IconItem[]>;
27
25
  columns: import('vue').PropType<import('./types').ColumnItem[]>;
28
26
  boxChoose: BooleanConstructor;
29
27
  contextMenus: import('vue').PropType<import('./types').ContextMenus>;
@@ -31,7 +29,29 @@ declare const _default: import('vue').DefineComponent<{
31
29
  locale: import('vue').PropType<Partial<FileListLocale>>;
32
30
  }, {
33
31
  lang: import('vue').ComputedRef<FileListLocale>;
34
- selectorStyle: Ref<Partial<import('vue').CSSProperties>>;
32
+ selectorStyle: {
33
+ top: string;
34
+ left: string;
35
+ width: string;
36
+ height: string;
37
+ display: string;
38
+ };
39
+ ctxMenuDropdownRef: import('vue').Ref<EleDropdownInstance>;
40
+ ctxMenuDropdownItems: import('vue').ShallowRef<DropdownItem[]>;
41
+ ctxMenuDropdownVirtualRef: import('vue').Ref<any>;
42
+ ctxMenuDropdownVisible: import('vue').Ref<any>;
43
+ contextMenuFileItem: import('vue').Ref<{
44
+ [x: string]: unknown;
45
+ [x: number]: unknown;
46
+ [x: symbol]: unknown;
47
+ key: string | number;
48
+ name: string;
49
+ url?: string | undefined;
50
+ thumbnail?: string | undefined;
51
+ isDirectory?: boolean | undefined;
52
+ length?: string | undefined;
53
+ updateTime?: string | undefined;
54
+ } | null | undefined>;
35
55
  isCheckAll: import('vue').ComputedRef<boolean>;
36
56
  isIndeterminate: import('vue').ComputedRef<boolean>;
37
57
  handleCheckAllChange: () => void;
@@ -39,6 +59,9 @@ declare const _default: import('vue').DefineComponent<{
39
59
  handleItemClick: (item: FileItem) => void;
40
60
  handleSortChange: (name: string) => void;
41
61
  handleItemContextMenu: (option: ItemContextMenuOption) => void;
62
+ handleItemCtxMenuClick: (key: string) => void;
63
+ handleItemCtxMenuVisible: (visible: boolean) => void;
64
+ handleItemContextOpen: (option: ContextOpenOption) => void;
42
65
  handleMousedown: (event: MouseEvent) => void;
43
66
  }, unknown, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
44
67
  itemClick: (_item: FileItem) => boolean;
@@ -46,6 +69,7 @@ declare const _default: import('vue').DefineComponent<{
46
69
  'update:selections': (_selection?: FileItem[]) => boolean;
47
70
  'update:current': (_current?: FileItem | null) => boolean;
48
71
  itemContextMenu: (_option: ItemContextMenuOption) => boolean;
72
+ itemContextOpen: (_dropdownRef: EleDropdownInstance, _item: FileItem) => boolean;
49
73
  }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
50
74
  data: {
51
75
  type: import('vue').PropType<FileItem[]>;
@@ -65,10 +89,7 @@ declare const _default: import('vue').DefineComponent<{
65
89
  type: import('vue').PropType<import('./types').IconItem[]>;
66
90
  default: () => import('./types').IconItem[];
67
91
  };
68
- smallIcons: {
69
- type: import('vue').PropType<import('./types').IconItem[]>;
70
- default: () => import('./types').IconItem[];
71
- };
92
+ smallIcons: import('vue').PropType<import('./types').IconItem[]>;
72
93
  columns: import('vue').PropType<import('./types').ColumnItem[]>;
73
94
  boxChoose: BooleanConstructor;
74
95
  contextMenus: import('vue').PropType<import('./types').ContextMenus>;
@@ -79,12 +100,12 @@ declare const _default: import('vue').DefineComponent<{
79
100
  onSortChange?: ((_sorter: SortValue) => any) | undefined;
80
101
  "onUpdate:selections"?: ((_selection?: FileItem[] | undefined) => any) | undefined;
81
102
  "onUpdate:current"?: ((_current?: FileItem | null | undefined) => any) | undefined;
103
+ onItemContextOpen?: ((_dropdownRef: EleDropdownInstance, _item: FileItem) => any) | undefined;
82
104
  onItemContextMenu?: ((_option: ItemContextMenuOption) => any) | undefined;
83
105
  }, {
84
106
  grid: boolean;
85
107
  sortable: boolean;
86
108
  icons: import('./types').IconItem[];
87
- smallIcons: import('./types').IconItem[];
88
109
  boxChoose: boolean;
89
110
  }, {}>;
90
111
  export default _default;
@@ -1,24 +1,30 @@
1
- import { defineComponent, ref, computed, resolveComponent, openBlock, createElementBlock, createBlock, createSlots, renderList, withCtx, renderSlot, normalizeProps, guardReactiveProps, createElementVNode, normalizeStyle } from "vue";
1
+ import { defineComponent, reactive, ref, shallowRef, computed, watch, onBeforeUnmount, nextTick, resolveComponent, openBlock, createElementBlock, createBlock, createSlots, renderList, withCtx, renderSlot, normalizeProps, guardReactiveProps, createElementVNode, normalizeStyle, mergeProps, createCommentVNode } from "vue";
2
2
  import { throttle } from "../utils/core";
3
3
  import { useLocale } from "../ele-config-provider/receiver";
4
+ import EleDropdown from "../ele-dropdown/index";
4
5
  import FileGrid from "./components/file-grid";
5
6
  import FileTable from "./components/file-table";
6
7
  import { fileListProps, fileListEmits } from "./props";
7
8
  const GRID_ITEM_SEL = ".ele-file-list-body>.ele-file-list-item";
8
9
  const _sfc_main = defineComponent({
9
10
  name: "EleFileList",
10
- components: { FileGrid, FileTable },
11
+ components: { EleDropdown, FileGrid, FileTable },
11
12
  props: fileListProps,
12
13
  emits: fileListEmits,
13
14
  setup(props, { emit }) {
14
15
  const { lang } = useLocale("fileList", props);
15
- const selectorStyle = ref({
16
+ const selectorStyle = reactive({
16
17
  top: "0px",
17
18
  left: "0px",
18
19
  width: "0px",
19
20
  height: "0px",
20
21
  display: "none"
21
22
  });
23
+ const ctxMenuDropdownRef = ref(null);
24
+ const ctxMenuDropdownItems = shallowRef([]);
25
+ const ctxMenuDropdownVirtualRef = ref();
26
+ const ctxMenuDropdownVisible = ref(false);
27
+ const contextMenuFileItem = ref(null);
22
28
  const isCheckAll = computed(() => {
23
29
  return !!(props.data && props.data.length && props.selections && props.selections.length && !props.data.some(
24
30
  (d) => {
@@ -97,6 +103,62 @@ const _sfc_main = defineComponent({
97
103
  const handleItemContextMenu = (option) => {
98
104
  emit("itemContextMenu", option);
99
105
  };
106
+ const handleItemCtxMenuClick = (key) => {
107
+ if (contextMenuFileItem.value != null) {
108
+ emit("itemContextMenu", { key, item: contextMenuFileItem.value });
109
+ }
110
+ };
111
+ const handleItemCtxMenuVisible = (visible) => {
112
+ ctxMenuDropdownVisible.value = visible;
113
+ if (visible && ctxMenuDropdownRef.value != null && contextMenuFileItem.value != null) {
114
+ emit(
115
+ "itemContextOpen",
116
+ ctxMenuDropdownRef.value,
117
+ contextMenuFileItem.value
118
+ );
119
+ }
120
+ };
121
+ const getContextMenus = (item) => {
122
+ if (typeof props.contextMenus === "function") {
123
+ return props.contextMenus(item);
124
+ }
125
+ return props.contextMenus;
126
+ };
127
+ const hideAllDropdown = () => {
128
+ if (ctxMenuDropdownRef.value) {
129
+ ctxMenuDropdownRef.value.handleClose();
130
+ }
131
+ };
132
+ const showItemContextMenu = (item, triggerEl) => {
133
+ if (contextMenuFileItem.value != null && contextMenuFileItem.value === item) {
134
+ return;
135
+ }
136
+ hideAllDropdown();
137
+ nextTick(() => {
138
+ contextMenuFileItem.value = item;
139
+ ctxMenuDropdownItems.value = getContextMenus(item) || [];
140
+ ctxMenuDropdownVirtualRef.value = triggerEl;
141
+ if (ctxMenuDropdownItems.value.length) {
142
+ nextTick(() => {
143
+ ctxMenuDropdownRef.value && ctxMenuDropdownRef.value.handleOpen();
144
+ });
145
+ }
146
+ });
147
+ };
148
+ const handleItemContextOpen = (option) => {
149
+ if (props.contextMenus == null) {
150
+ return;
151
+ }
152
+ option.e.preventDefault();
153
+ option.e.stopPropagation();
154
+ if (ctxMenuDropdownVirtualRef.value !== option.triggerEl) {
155
+ showItemContextMenu(option.item, option.triggerEl);
156
+ return;
157
+ }
158
+ if (ctxMenuDropdownItems.value.length && ctxMenuDropdownRef.value) {
159
+ ctxMenuDropdownRef.value.handleOpen();
160
+ }
161
+ };
100
162
  const handleMousedown = (event) => {
101
163
  if (!props.boxChoose || props.selectionType !== "checkbox") {
102
164
  return;
@@ -119,13 +181,11 @@ const _sfc_main = defineComponent({
119
181
  Math.abs(moveY - downY),
120
182
  target.clientHeight - top
121
183
  );
122
- selectorStyle.value = {
123
- left: left + "px",
124
- top: top + "px",
125
- width: width + "px",
126
- height: height + "px",
127
- display: "block"
128
- };
184
+ selectorStyle.left = left + "px";
185
+ selectorStyle.top = top + "px";
186
+ selectorStyle.width = width + "px";
187
+ selectorStyle.height = height + "px";
188
+ selectorStyle.display = "block";
129
189
  if (width < 6 || height < 6) {
130
190
  items.forEach((item) => {
131
191
  item.classList.remove("is-active");
@@ -147,7 +207,7 @@ const _sfc_main = defineComponent({
147
207
  });
148
208
  }, 60);
149
209
  const mouseupFn = (e) => {
150
- selectorStyle.value = { ...selectorStyle.value, display: "none" };
210
+ selectorStyle.display = "none";
151
211
  const moveX = Math.max(e.clientX, position.left);
152
212
  const moveY = Math.max(e.clientY, position.top);
153
213
  const left = Math.min(moveX, downX) - position.left;
@@ -180,9 +240,26 @@ const _sfc_main = defineComponent({
180
240
  document.addEventListener("mousemove", mousemoveFn);
181
241
  document.addEventListener("mouseup", mouseupFn);
182
242
  };
243
+ watch(
244
+ [() => props.grid, () => props.data],
245
+ () => {
246
+ hideAllDropdown();
247
+ ctxMenuDropdownVirtualRef.value = null;
248
+ contextMenuFileItem.value = null;
249
+ },
250
+ { deep: true }
251
+ );
252
+ onBeforeUnmount(() => {
253
+ contextMenuFileItem.value = null;
254
+ });
183
255
  return {
184
256
  lang,
185
257
  selectorStyle,
258
+ ctxMenuDropdownRef,
259
+ ctxMenuDropdownItems,
260
+ ctxMenuDropdownVirtualRef,
261
+ ctxMenuDropdownVisible,
262
+ contextMenuFileItem,
186
263
  isCheckAll,
187
264
  isIndeterminate,
188
265
  handleCheckAllChange,
@@ -190,6 +267,9 @@ const _sfc_main = defineComponent({
190
267
  handleItemClick,
191
268
  handleSortChange,
192
269
  handleItemContextMenu,
270
+ handleItemCtxMenuClick,
271
+ handleItemCtxMenuVisible,
272
+ handleItemContextOpen,
193
273
  handleMousedown
194
274
  };
195
275
  }
@@ -204,6 +284,7 @@ const _export_sfc = (sfc, props) => {
204
284
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
205
285
  const _component_FileGrid = resolveComponent("FileGrid");
206
286
  const _component_FileTable = resolveComponent("FileTable");
287
+ const _component_EleDropdown = resolveComponent("EleDropdown");
207
288
  return openBlock(), createElementBlock("div", {
208
289
  class: "ele-file-list-group",
209
290
  onMousedown: _cache[0] || (_cache[0] = (...args) => _ctx.handleMousedown && _ctx.handleMousedown(...args))
@@ -219,12 +300,12 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
219
300
  isIndeterminate: _ctx.isIndeterminate,
220
301
  checkAllText: _ctx.lang.selectAll,
221
302
  selectedText: _ctx.lang.selectTips,
222
- contextMenus: _ctx.contextMenus,
223
- contextMenuProps: _ctx.contextMenuProps,
303
+ ctxMenuDropdownVisible: _ctx.ctxMenuDropdownVisible,
304
+ contextMenuFileItem: _ctx.contextMenuFileItem,
224
305
  onCheckAllChange: _ctx.handleCheckAllChange,
225
306
  onItemClick: _ctx.handleItemClick,
226
307
  onItemCheckChange: _ctx.handleItemCheckChange,
227
- onItemContextMenu: _ctx.handleItemContextMenu
308
+ onItemContextOpen: _ctx.handleItemContextOpen
228
309
  }, createSlots({ _: 2 }, [
229
310
  renderList(Object.keys(_ctx.$slots), (name) => {
230
311
  return {
@@ -234,7 +315,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
234
315
  ])
235
316
  };
236
317
  })
237
- ]), 1032, ["data", "icons", "selectionType", "selections", "current", "isCheckAll", "isIndeterminate", "checkAllText", "selectedText", "contextMenus", "contextMenuProps", "onCheckAllChange", "onItemClick", "onItemCheckChange", "onItemContextMenu"])) : (openBlock(), createBlock(_component_FileTable, {
318
+ ]), 1032, ["data", "icons", "selectionType", "selections", "current", "isCheckAll", "isIndeterminate", "checkAllText", "selectedText", "ctxMenuDropdownVisible", "contextMenuFileItem", "onCheckAllChange", "onItemClick", "onItemCheckChange", "onItemContextOpen"])) : (openBlock(), createBlock(_component_FileTable, {
238
319
  key: 1,
239
320
  data: _ctx.data,
240
321
  icons: _ctx.icons,
@@ -250,12 +331,12 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
250
331
  sort: _ctx.sort,
251
332
  order: _ctx.order,
252
333
  columns: _ctx.columns,
253
- contextMenus: _ctx.contextMenus,
254
- contextMenuProps: _ctx.contextMenuProps,
334
+ ctxMenuDropdownVisible: _ctx.ctxMenuDropdownVisible,
335
+ contextMenuFileItem: _ctx.contextMenuFileItem,
255
336
  onCheckAllChange: _ctx.handleCheckAllChange,
256
337
  onItemClick: _ctx.handleItemClick,
257
338
  onItemCheckChange: _ctx.handleItemCheckChange,
258
- onItemContextMenu: _ctx.handleItemContextMenu,
339
+ onItemContextOpen: _ctx.handleItemContextOpen,
259
340
  onSortChange: _ctx.handleSortChange
260
341
  }, createSlots({ _: 2 }, [
261
342
  renderList(Object.keys(_ctx.$slots), (name) => {
@@ -266,11 +347,28 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
266
347
  ])
267
348
  };
268
349
  })
269
- ]), 1032, ["data", "icons", "selectionType", "selections", "current", "isCheckAll", "isIndeterminate", "nameText", "sizeText", "timeText", "sortable", "sort", "order", "columns", "contextMenus", "contextMenuProps", "onCheckAllChange", "onItemClick", "onItemCheckChange", "onItemContextMenu", "onSortChange"])),
350
+ ]), 1032, ["data", "icons", "selectionType", "selections", "current", "isCheckAll", "isIndeterminate", "nameText", "sizeText", "timeText", "sortable", "sort", "order", "columns", "ctxMenuDropdownVisible", "contextMenuFileItem", "onCheckAllChange", "onItemClick", "onItemCheckChange", "onItemContextOpen", "onSortChange"])),
270
351
  createElementVNode("div", {
271
352
  class: "ele-file-list-selector",
272
353
  style: normalizeStyle(_ctx.selectorStyle)
273
- }, null, 4)
354
+ }, null, 4),
355
+ _ctx.contextMenus ? (openBlock(), createBlock(_component_EleDropdown, mergeProps({
356
+ key: 2,
357
+ persistent: false,
358
+ placement: "bottom-start",
359
+ popperClass: "ele-file-list-item-context"
360
+ }, _ctx.contextMenuProps || {}, {
361
+ ref: "ctxMenuDropdownRef",
362
+ componentType: "pro",
363
+ preventContextmenu: true,
364
+ trigger: "click",
365
+ virtualTriggering: true,
366
+ virtualRef: _ctx.ctxMenuDropdownVirtualRef,
367
+ disabled: !_ctx.ctxMenuDropdownItems.length,
368
+ items: _ctx.ctxMenuDropdownItems,
369
+ onCommand: _ctx.handleItemCtxMenuClick,
370
+ onVisibleChange: _ctx.handleItemCtxMenuVisible
371
+ }), null, 16, ["virtualRef", "disabled", "items", "onCommand", "onVisibleChange"])) : createCommentVNode("", true)
274
372
  ], 32);
275
373
  }
276
374
  const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);