vxe-pc-ui 3.13.11 → 3.13.13

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 (674) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +134 -134
  3. package/es/icon/style.css +1 -1
  4. package/es/style.css +1 -1
  5. package/es/style.min.css +1 -1
  6. package/es/tag/style.css +1 -3
  7. package/es/tag/style.min.css +1 -1
  8. package/es/ui/index.js +1 -1
  9. package/es/ui/src/log.js +1 -1
  10. package/es/vxe-tag/style.css +1 -3
  11. package/es/vxe-tag/style.min.css +1 -1
  12. package/lib/components.js +2 -1
  13. package/lib/components.min.js +1 -1
  14. package/lib/drawer/index.js +2 -1
  15. package/lib/drawer/index.min.js +1 -1
  16. package/lib/icon/style/style.css +1 -1
  17. package/lib/icon/style/style.min.css +1 -1
  18. package/lib/index.common.js +2 -1
  19. package/lib/index.umd.js +7962 -8834
  20. package/lib/index.umd.min.js +1 -1
  21. package/lib/modal/index.js +2 -1
  22. package/lib/modal/index.min.js +1 -1
  23. package/lib/style.css +1 -1
  24. package/lib/style.min.css +1 -1
  25. package/lib/tag/style/style.css +1 -3
  26. package/lib/tag/style/style.min.css +1 -1
  27. package/lib/ui/index.js +1 -1
  28. package/lib/ui/index.min.js +1 -1
  29. package/lib/ui/src/log.js +1 -1
  30. package/lib/ui/src/log.min.js +1 -1
  31. package/lib/vxe-alert/index.js +2 -1
  32. package/lib/vxe-alert/index.min.js +1 -1
  33. package/lib/vxe-anchor/index.js +2 -1
  34. package/lib/vxe-anchor/index.min.js +1 -1
  35. package/lib/vxe-anchor-link/index.js +2 -1
  36. package/lib/vxe-anchor-link/index.min.js +1 -1
  37. package/lib/vxe-avatar/index.js +2 -1
  38. package/lib/vxe-avatar/index.min.js +1 -1
  39. package/lib/vxe-backtop/index.js +2 -1
  40. package/lib/vxe-backtop/index.min.js +1 -1
  41. package/lib/vxe-badge/index.js +2 -1
  42. package/lib/vxe-badge/index.min.js +1 -1
  43. package/lib/vxe-breadcrumb/index.js +2 -1
  44. package/lib/vxe-breadcrumb/index.min.js +1 -1
  45. package/lib/vxe-breadcrumb-item/index.js +2 -1
  46. package/lib/vxe-breadcrumb-item/index.min.js +1 -1
  47. package/lib/vxe-button/index.js +2 -1
  48. package/lib/vxe-button/index.min.js +1 -1
  49. package/lib/vxe-button-group/index.js +2 -1
  50. package/lib/vxe-button-group/index.min.js +1 -1
  51. package/lib/vxe-calendar/index.js +2 -1
  52. package/lib/vxe-calendar/index.min.js +1 -1
  53. package/lib/vxe-card/index.js +2 -1
  54. package/lib/vxe-card/index.min.js +1 -1
  55. package/lib/vxe-carousel/index.js +2 -1
  56. package/lib/vxe-carousel/index.min.js +1 -1
  57. package/lib/vxe-carousel-item/index.js +2 -1
  58. package/lib/vxe-carousel-item/index.min.js +1 -1
  59. package/lib/vxe-cascader/index.js +2 -1
  60. package/lib/vxe-cascader/index.min.js +1 -1
  61. package/lib/vxe-checkbox/index.js +2 -1
  62. package/lib/vxe-checkbox/index.min.js +1 -1
  63. package/lib/vxe-checkbox-button/index.js +2 -1
  64. package/lib/vxe-checkbox-button/index.min.js +1 -1
  65. package/lib/vxe-checkbox-group/index.js +2 -1
  66. package/lib/vxe-checkbox-group/index.min.js +1 -1
  67. package/lib/vxe-col/index.js +2 -1
  68. package/lib/vxe-col/index.min.js +1 -1
  69. package/lib/vxe-collapse/index.js +2 -1
  70. package/lib/vxe-collapse/index.min.js +1 -1
  71. package/lib/vxe-collapse-pane/index.js +2 -1
  72. package/lib/vxe-collapse-pane/index.min.js +1 -1
  73. package/lib/vxe-color-picker/index.js +2 -1
  74. package/lib/vxe-color-picker/index.min.js +1 -1
  75. package/lib/vxe-context-menu/index.js +2 -1
  76. package/lib/vxe-context-menu/index.min.js +1 -1
  77. package/lib/vxe-countdown/index.js +2 -1
  78. package/lib/vxe-countdown/index.min.js +1 -1
  79. package/lib/vxe-date-panel/index.js +2 -1
  80. package/lib/vxe-date-panel/index.min.js +1 -1
  81. package/lib/vxe-date-picker/index.js +2 -1
  82. package/lib/vxe-date-picker/index.min.js +1 -1
  83. package/lib/vxe-date-range-picker/index.js +2 -1
  84. package/lib/vxe-date-range-picker/index.min.js +1 -1
  85. package/lib/vxe-drawer/index.js +2 -1
  86. package/lib/vxe-drawer/index.min.js +1 -1
  87. package/lib/vxe-empty/index.js +2 -1
  88. package/lib/vxe-empty/index.min.js +1 -1
  89. package/lib/vxe-form/index.js +2 -1
  90. package/lib/vxe-form/index.min.js +1 -1
  91. package/lib/vxe-form-gather/index.js +2 -1
  92. package/lib/vxe-form-gather/index.min.js +1 -1
  93. package/lib/vxe-form-group/index.js +2 -1
  94. package/lib/vxe-form-group/index.min.js +1 -1
  95. package/lib/vxe-form-item/index.js +2 -1
  96. package/lib/vxe-form-item/index.min.js +1 -1
  97. package/lib/vxe-icon/index.js +2 -1
  98. package/lib/vxe-icon/index.min.js +1 -1
  99. package/lib/vxe-icon-picker/index.js +2 -1
  100. package/lib/vxe-icon-picker/index.min.js +1 -1
  101. package/lib/vxe-image/index.js +2 -1
  102. package/lib/vxe-image/index.min.js +1 -1
  103. package/lib/vxe-image-group/index.js +2 -1
  104. package/lib/vxe-image-group/index.min.js +1 -1
  105. package/lib/vxe-image-preview/index.js +2 -1
  106. package/lib/vxe-image-preview/index.min.js +1 -1
  107. package/lib/vxe-input/index.js +2 -1
  108. package/lib/vxe-input/index.min.js +1 -1
  109. package/lib/vxe-layout-aside/index.js +2 -1
  110. package/lib/vxe-layout-aside/index.min.js +1 -1
  111. package/lib/vxe-layout-body/index.js +2 -1
  112. package/lib/vxe-layout-body/index.min.js +1 -1
  113. package/lib/vxe-layout-container/index.js +2 -1
  114. package/lib/vxe-layout-container/index.min.js +1 -1
  115. package/lib/vxe-layout-footer/index.js +2 -1
  116. package/lib/vxe-layout-footer/index.min.js +1 -1
  117. package/lib/vxe-layout-header/index.js +2 -1
  118. package/lib/vxe-layout-header/index.min.js +1 -1
  119. package/lib/vxe-link/index.js +2 -1
  120. package/lib/vxe-link/index.min.js +1 -1
  121. package/lib/vxe-list/index.js +2 -1
  122. package/lib/vxe-list/index.min.js +1 -1
  123. package/lib/vxe-loading/index.js +2 -1
  124. package/lib/vxe-loading/index.min.js +1 -1
  125. package/lib/vxe-mention/index.js +2 -1
  126. package/lib/vxe-mention/index.min.js +1 -1
  127. package/lib/vxe-menu/index.js +2 -1
  128. package/lib/vxe-menu/index.min.js +1 -1
  129. package/lib/vxe-modal/index.js +2 -1
  130. package/lib/vxe-modal/index.min.js +1 -1
  131. package/lib/vxe-notice-bar/index.js +2 -1
  132. package/lib/vxe-notice-bar/index.min.js +1 -1
  133. package/lib/vxe-number-input/index.js +2 -1
  134. package/lib/vxe-number-input/index.min.js +1 -1
  135. package/lib/vxe-optgroup/index.js +2 -1
  136. package/lib/vxe-optgroup/index.min.js +1 -1
  137. package/lib/vxe-option/index.js +2 -1
  138. package/lib/vxe-option/index.min.js +1 -1
  139. package/lib/vxe-pager/index.js +2 -1
  140. package/lib/vxe-pager/index.min.js +1 -1
  141. package/lib/vxe-password-input/index.js +2 -1
  142. package/lib/vxe-password-input/index.min.js +1 -1
  143. package/lib/vxe-print/index.js +2 -1
  144. package/lib/vxe-print/index.min.js +1 -1
  145. package/lib/vxe-print-page-break/index.js +2 -1
  146. package/lib/vxe-print-page-break/index.min.js +1 -1
  147. package/lib/vxe-pulldown/index.js +2 -1
  148. package/lib/vxe-pulldown/index.min.js +1 -1
  149. package/lib/vxe-radio/index.js +2 -1
  150. package/lib/vxe-radio/index.min.js +1 -1
  151. package/lib/vxe-radio-button/index.js +2 -1
  152. package/lib/vxe-radio-button/index.min.js +1 -1
  153. package/lib/vxe-radio-group/index.js +2 -1
  154. package/lib/vxe-radio-group/index.min.js +1 -1
  155. package/lib/vxe-rate/index.js +2 -1
  156. package/lib/vxe-rate/index.min.js +1 -1
  157. package/lib/vxe-result/index.js +2 -1
  158. package/lib/vxe-result/index.min.js +1 -1
  159. package/lib/vxe-row/index.js +2 -1
  160. package/lib/vxe-row/index.min.js +1 -1
  161. package/lib/vxe-segmented/index.js +2 -1
  162. package/lib/vxe-segmented/index.min.js +1 -1
  163. package/lib/vxe-select/index.js +2 -1
  164. package/lib/vxe-select/index.min.js +1 -1
  165. package/lib/vxe-slider/index.js +2 -1
  166. package/lib/vxe-slider/index.min.js +1 -1
  167. package/lib/vxe-split/index.js +2 -1
  168. package/lib/vxe-split/index.min.js +1 -1
  169. package/lib/vxe-split-pane/index.js +2 -1
  170. package/lib/vxe-split-pane/index.min.js +1 -1
  171. package/lib/vxe-splitter/index.js +2 -1
  172. package/lib/vxe-splitter/index.min.js +1 -1
  173. package/lib/vxe-splitter-panel/index.js +2 -1
  174. package/lib/vxe-splitter-panel/index.min.js +1 -1
  175. package/lib/vxe-steps/index.js +2 -1
  176. package/lib/vxe-steps/index.min.js +1 -1
  177. package/lib/vxe-switch/index.js +2 -1
  178. package/lib/vxe-switch/index.min.js +1 -1
  179. package/lib/vxe-tab-pane/index.js +2 -1
  180. package/lib/vxe-tab-pane/index.min.js +1 -1
  181. package/lib/vxe-table-select/index.js +2 -1
  182. package/lib/vxe-table-select/index.min.js +1 -1
  183. package/lib/vxe-tabs/index.js +2 -1
  184. package/lib/vxe-tabs/index.min.js +1 -1
  185. package/lib/vxe-tag/index.js +2 -1
  186. package/lib/vxe-tag/index.min.js +1 -1
  187. package/lib/vxe-tag/style/style.css +1 -3
  188. package/lib/vxe-tag/style/style.min.css +1 -1
  189. package/lib/vxe-text/index.js +2 -1
  190. package/lib/vxe-text/index.min.js +1 -1
  191. package/lib/vxe-text-ellipsis/index.js +2 -1
  192. package/lib/vxe-text-ellipsis/index.min.js +1 -1
  193. package/lib/vxe-textarea/index.js +2 -1
  194. package/lib/vxe-textarea/index.min.js +1 -1
  195. package/lib/vxe-timeline/index.js +2 -1
  196. package/lib/vxe-timeline/index.min.js +1 -1
  197. package/lib/vxe-timeline-item/index.js +2 -1
  198. package/lib/vxe-timeline-item/index.min.js +1 -1
  199. package/lib/vxe-tip/index.js +2 -1
  200. package/lib/vxe-tip/index.min.js +1 -1
  201. package/lib/vxe-tooltip/index.js +2 -1
  202. package/lib/vxe-tooltip/index.min.js +1 -1
  203. package/lib/vxe-tour/index.js +2 -1
  204. package/lib/vxe-tour/index.min.js +1 -1
  205. package/lib/vxe-tree/index.js +2 -1
  206. package/lib/vxe-tree/index.min.js +1 -1
  207. package/lib/vxe-tree-select/index.js +2 -1
  208. package/lib/vxe-tree-select/index.min.js +1 -1
  209. package/lib/vxe-u-i/index.js +2 -1
  210. package/lib/vxe-u-i/index.min.js +1 -1
  211. package/lib/vxe-ui/index.js +2 -1
  212. package/lib/vxe-ui/index.min.js +1 -1
  213. package/lib/vxe-upload/index.js +2 -1
  214. package/lib/vxe-upload/index.min.js +1 -1
  215. package/lib/vxe-watermark/index.js +2 -1
  216. package/lib/vxe-watermark/index.min.js +1 -1
  217. package/package.json +89 -89
  218. package/packages/alert/index.ts +16 -16
  219. package/packages/alert/src/alert.ts +106 -106
  220. package/packages/anchor/index.ts +16 -16
  221. package/packages/anchor/src/anchor-link.ts +158 -158
  222. package/packages/anchor/src/anchor.ts +267 -267
  223. package/packages/anchor/src/util.ts +23 -23
  224. package/packages/anchor-link/index.ts +16 -16
  225. package/packages/avatar/index.ts +16 -16
  226. package/packages/avatar/src/avatar.ts +141 -141
  227. package/packages/backtop/index.ts +16 -16
  228. package/packages/backtop/src/backtop.ts +330 -330
  229. package/packages/badge/index.ts +16 -16
  230. package/packages/badge/src/badge.ts +87 -87
  231. package/packages/breadcrumb/index.ts +16 -16
  232. package/packages/breadcrumb/src/breadcrumb-item.ts +118 -118
  233. package/packages/breadcrumb/src/breadcrumb.ts +89 -89
  234. package/packages/breadcrumb-item/index.ts +16 -16
  235. package/packages/button/index.ts +16 -16
  236. package/packages/button/src/button-group.ts +113 -113
  237. package/packages/button/src/button.ts +955 -955
  238. package/packages/button-group/index.ts +16 -16
  239. package/packages/calendar/index.ts +16 -16
  240. package/packages/calendar/src/calendar.ts +1527 -1527
  241. package/packages/card/index.ts +16 -16
  242. package/packages/card/src/card.ts +162 -162
  243. package/packages/carousel/index.ts +16 -16
  244. package/packages/carousel/src/carousel-item.ts +117 -117
  245. package/packages/carousel/src/carousel.ts +460 -460
  246. package/packages/carousel/src/util.ts +21 -21
  247. package/packages/carousel-item/index.ts +16 -16
  248. package/packages/cascader/index.ts +16 -16
  249. package/packages/cascader/src/cascader.ts +941 -941
  250. package/packages/checkbox/index.ts +16 -16
  251. package/packages/checkbox/src/button.ts +185 -185
  252. package/packages/checkbox/src/checkbox.ts +189 -189
  253. package/packages/checkbox/src/group.ts +259 -259
  254. package/packages/checkbox-button/index.ts +16 -16
  255. package/packages/checkbox-group/index.ts +16 -16
  256. package/packages/col/index.ts +16 -16
  257. package/packages/collapse/index.ts +16 -16
  258. package/packages/collapse/src/collapse-pane.ts +136 -136
  259. package/packages/collapse/src/collapse.ts +259 -259
  260. package/packages/collapse/src/util.ts +21 -21
  261. package/packages/collapse-pane/index.ts +16 -16
  262. package/packages/color-picker/index.ts +16 -16
  263. package/packages/color-picker/src/color-picker.ts +1277 -1277
  264. package/packages/color-picker/src/util.ts +198 -198
  265. package/packages/components.ts +307 -307
  266. package/packages/context-menu/index.ts +54 -54
  267. package/packages/context-menu/src/context-menu.ts +709 -709
  268. package/packages/countdown/index.ts +16 -16
  269. package/packages/countdown/src/countdown.ts +276 -276
  270. package/packages/date-panel/index.ts +16 -16
  271. package/packages/date-panel/src/date-panel.ts +2024 -2024
  272. package/packages/date-panel/src/util.ts +244 -244
  273. package/packages/date-picker/index.ts +17 -17
  274. package/packages/date-picker/src/date-picker.ts +1238 -1238
  275. package/packages/date-range-picker/index.ts +16 -16
  276. package/packages/date-range-picker/src/date-range-picker.ts +1466 -1466
  277. package/packages/drawer/index.ts +87 -87
  278. package/packages/drawer/src/drawer.ts +767 -767
  279. package/packages/dynamics/index.ts +125 -125
  280. package/packages/empty/index.ts +16 -16
  281. package/packages/empty/src/empty.ts +80 -80
  282. package/packages/form/index.ts +16 -16
  283. package/packages/form/render/index.ts +617 -617
  284. package/packages/form/src/form-config-item.ts +86 -86
  285. package/packages/form/src/form-group.ts +125 -125
  286. package/packages/form/src/form-item.ts +217 -217
  287. package/packages/form/src/form.ts +1032 -1032
  288. package/packages/form/src/itemInfo.ts +80 -80
  289. package/packages/form/src/render.ts +398 -398
  290. package/packages/form/src/util.ts +92 -92
  291. package/packages/form-gather/index.ts +18 -18
  292. package/packages/form-group/index.ts +16 -16
  293. package/packages/form-item/index.ts +16 -16
  294. package/packages/icon/index.ts +16 -16
  295. package/packages/icon/src/icon.ts +75 -75
  296. package/packages/icon-picker/index.ts +16 -16
  297. package/packages/icon-picker/src/icon-picker.ts +752 -752
  298. package/packages/image/index.ts +16 -16
  299. package/packages/image/src/group.ts +162 -162
  300. package/packages/image/src/image.ts +286 -286
  301. package/packages/image/src/preview.ts +737 -737
  302. package/packages/image/src/util.ts +62 -62
  303. package/packages/image-group/index.ts +16 -16
  304. package/packages/image-preview/index.ts +19 -19
  305. package/packages/index.ts +8 -8
  306. package/packages/input/index.ts +16 -16
  307. package/packages/input/src/input.ts +3187 -3187
  308. package/packages/language/ar-EG.ts +832 -832
  309. package/packages/language/de-DE.ts +832 -832
  310. package/packages/language/en-US.ts +832 -832
  311. package/packages/language/es-ES.ts +832 -832
  312. package/packages/language/fr-FR.ts +832 -832
  313. package/packages/language/hu-HU.ts +832 -832
  314. package/packages/language/hy-AM.ts +832 -832
  315. package/packages/language/id-ID.ts +832 -832
  316. package/packages/language/it-IT.ts +832 -832
  317. package/packages/language/ja-JP.ts +832 -832
  318. package/packages/language/ko-KR.ts +832 -832
  319. package/packages/language/ms-MY.ts +832 -832
  320. package/packages/language/nb-NO.ts +832 -832
  321. package/packages/language/pt-BR.ts +832 -832
  322. package/packages/language/ru-RU.ts +832 -832
  323. package/packages/language/th-TH.ts +832 -832
  324. package/packages/language/ug-CN.ts +832 -832
  325. package/packages/language/uk-UA.ts +832 -832
  326. package/packages/language/uz-UZ.ts +832 -832
  327. package/packages/language/vi-VN.ts +832 -832
  328. package/packages/language/zh-CHT.ts +832 -832
  329. package/packages/language/zh-CN.ts +832 -832
  330. package/packages/language/zh-HK.ts +3 -3
  331. package/packages/language/zh-MO.ts +3 -3
  332. package/packages/language/zh-TC.ts +3 -3
  333. package/packages/language/zh-TW.ts +3 -3
  334. package/packages/layout-aside/index.ts +16 -16
  335. package/packages/layout-aside/src/layout-aside.ts +115 -115
  336. package/packages/layout-body/index.ts +16 -16
  337. package/packages/layout-body/src/layout-body.ts +137 -137
  338. package/packages/layout-container/index.ts +16 -16
  339. package/packages/layout-container/src/layout-container.ts +65 -65
  340. package/packages/layout-footer/index.ts +16 -16
  341. package/packages/layout-footer/src/layout-footer.ts +53 -53
  342. package/packages/layout-header/index.ts +16 -16
  343. package/packages/layout-header/src/layout-header.ts +49 -49
  344. package/packages/link/index.ts +16 -16
  345. package/packages/link/src/link.ts +153 -153
  346. package/packages/list/index.ts +16 -16
  347. package/packages/list/src/list.ts +492 -492
  348. package/packages/loading/index.ts +34 -34
  349. package/packages/loading/src/loading.ts +162 -162
  350. package/packages/mention/index.ts +16 -16
  351. package/packages/mention/src/mention.ts +54 -54
  352. package/packages/menu/index.ts +16 -16
  353. package/packages/menu/src/menu.ts +632 -632
  354. package/packages/modal/index.ts +150 -150
  355. package/packages/modal/src/modal.ts +1657 -1657
  356. package/packages/notice-bar/index.ts +16 -16
  357. package/packages/notice-bar/src/notice-bar.ts +182 -182
  358. package/packages/number-input/index.ts +16 -16
  359. package/packages/number-input/src/number-input.ts +1255 -1255
  360. package/packages/number-input/src/util.ts +12 -12
  361. package/packages/optgroup/index.ts +16 -16
  362. package/packages/option/index.ts +16 -16
  363. package/packages/pager/index.ts +16 -16
  364. package/packages/pager/src/pager.ts +913 -913
  365. package/packages/password-input/index.ts +16 -16
  366. package/packages/password-input/src/password-input.ts +466 -466
  367. package/packages/print/index.ts +18 -18
  368. package/packages/print/src/page-break.ts +78 -78
  369. package/packages/print/src/print.ts +266 -266
  370. package/packages/print/src/util.ts +284 -284
  371. package/packages/print-page-break/index.ts +14 -14
  372. package/packages/pulldown/index.ts +16 -16
  373. package/packages/pulldown/src/pulldown.ts +532 -532
  374. package/packages/radio/index.ts +16 -16
  375. package/packages/radio/src/button.ts +221 -221
  376. package/packages/radio/src/group.ts +252 -252
  377. package/packages/radio/src/radio.ts +228 -228
  378. package/packages/radio-button/index.ts +16 -16
  379. package/packages/radio-group/index.ts +16 -16
  380. package/packages/rate/index.ts +16 -16
  381. package/packages/rate/src/rate.ts +199 -199
  382. package/packages/result/index.ts +16 -16
  383. package/packages/result/src/result.ts +93 -93
  384. package/packages/row/index.ts +16 -16
  385. package/packages/row/src/col.ts +130 -130
  386. package/packages/row/src/row.ts +106 -106
  387. package/packages/segmented/index.ts +16 -16
  388. package/packages/segmented/src/segmented.ts +281 -281
  389. package/packages/select/index.ts +16 -16
  390. package/packages/select/src/optgroup.ts +107 -107
  391. package/packages/select/src/option-info.ts +20 -20
  392. package/packages/select/src/option.ts +103 -103
  393. package/packages/select/src/select.ts +2000 -2000
  394. package/packages/select/src/util.ts +47 -47
  395. package/packages/slider/index.ts +16 -16
  396. package/packages/slider/src/slider.ts +332 -332
  397. package/packages/split/index.ts +16 -16
  398. package/packages/split-pane/index.ts +17 -17
  399. package/packages/splitter/index.ts +16 -16
  400. package/packages/splitter/src/splitter-panel.ts +171 -171
  401. package/packages/splitter/src/splitter.ts +1032 -1032
  402. package/packages/splitter/src/util.ts +21 -21
  403. package/packages/splitter-panel/index.ts +16 -16
  404. package/packages/steps/index.ts +16 -16
  405. package/packages/steps/src/steps.ts +57 -57
  406. package/packages/switch/index.ts +16 -16
  407. package/packages/switch/src/switch.ts +279 -279
  408. package/packages/tab-pane/index.ts +16 -16
  409. package/packages/table-select/index.ts +16 -16
  410. package/packages/table-select/src/table-select.ts +903 -903
  411. package/packages/tabs/index.ts +16 -16
  412. package/packages/tabs/src/tab-pane.ts +137 -137
  413. package/packages/tabs/src/tabs.ts +1014 -1014
  414. package/packages/tabs/src/util.ts +21 -21
  415. package/packages/tag/index.ts +16 -16
  416. package/packages/tag/src/tag.ts +195 -195
  417. package/packages/text/index.ts +16 -16
  418. package/packages/text/src/text.ts +267 -267
  419. package/packages/text-ellipsis/index.ts +16 -16
  420. package/packages/text-ellipsis/src/text-ellipsis.ts +291 -291
  421. package/packages/textarea/index.ts +16 -16
  422. package/packages/textarea/src/textarea.ts +436 -436
  423. package/packages/timeline/index.ts +16 -16
  424. package/packages/timeline/src/timeline-item.ts +41 -41
  425. package/packages/timeline/src/timeline.ts +54 -54
  426. package/packages/timeline-item/index.ts +16 -16
  427. package/packages/tip/index.ts +19 -19
  428. package/packages/tip/src/tip.ts +112 -112
  429. package/packages/tooltip/index.ts +16 -16
  430. package/packages/tooltip/src/tooltip.ts +641 -641
  431. package/packages/tour/index.ts +16 -16
  432. package/packages/tour/src/tour.ts +54 -54
  433. package/packages/tree/index.ts +16 -16
  434. package/packages/tree/src/store.ts +15 -15
  435. package/packages/tree/src/tree.ts +3080 -3080
  436. package/packages/tree/src/util.ts +44 -44
  437. package/packages/tree-select/index.ts +16 -16
  438. package/packages/tree-select/src/tree-select.ts +1115 -1115
  439. package/packages/ui/index.ts +695 -695
  440. package/packages/ui/src/anime.ts +52 -52
  441. package/packages/ui/src/comp.ts +3 -3
  442. package/packages/ui/src/dom.ts +263 -263
  443. package/packages/ui/src/log.ts +6 -6
  444. package/packages/ui/src/utils.ts +49 -49
  445. package/packages/ui/src/vn.ts +60 -60
  446. package/packages/upload/index.ts +20 -20
  447. package/packages/upload/src/upload.ts +2127 -2127
  448. package/packages/upload/src/util.ts +109 -109
  449. package/packages/vxe-u-i/index.ts +4 -4
  450. package/packages/watermark/index.ts +31 -31
  451. package/packages/watermark/src/util.ts +176 -176
  452. package/packages/watermark/src/watermark.ts +166 -166
  453. package/styles/all.scss +90 -90
  454. package/styles/base.scss +16 -16
  455. package/styles/components/alert.scss +101 -101
  456. package/styles/components/anchor.scss +44 -44
  457. package/styles/components/avatar.scss +115 -115
  458. package/styles/components/backtop.scss +82 -82
  459. package/styles/components/badge.scss +45 -45
  460. package/styles/components/breadcrumb.scss +29 -29
  461. package/styles/components/button-group.scss +30 -30
  462. package/styles/components/button.scss +415 -415
  463. package/styles/components/calendar.scss +471 -471
  464. package/styles/components/card.scss +121 -121
  465. package/styles/components/carousel.scss +184 -184
  466. package/styles/components/cascader.scss +140 -140
  467. package/styles/components/checkbox-button.scss +57 -57
  468. package/styles/components/checkbox.scss +81 -81
  469. package/styles/components/collapse.scss +56 -56
  470. package/styles/components/color-picker.scss +409 -409
  471. package/styles/components/context-menu.scss +102 -102
  472. package/styles/components/countdown.scss +35 -35
  473. package/styles/components/date-panel.scss +505 -505
  474. package/styles/components/date-picker.scss +247 -247
  475. package/styles/components/date-range-picker.scss +252 -252
  476. package/styles/components/drawer.scss +298 -298
  477. package/styles/components/empty.scss +79 -79
  478. package/styles/components/form.scss +668 -668
  479. package/styles/components/icon-picker.scss +211 -211
  480. package/styles/components/icon.scss +1044 -1044
  481. package/styles/components/image-group.scss +2 -2
  482. package/styles/components/image-preview.scss +215 -215
  483. package/styles/components/image.scss +16 -16
  484. package/styles/components/input.scss +846 -846
  485. package/styles/components/layout-aside.scss +22 -22
  486. package/styles/components/layout-body.scss +14 -14
  487. package/styles/components/layout-container.scss +13 -13
  488. package/styles/components/layout-footer.scss +14 -14
  489. package/styles/components/layout-header.scss +11 -11
  490. package/styles/components/link.scss +115 -115
  491. package/styles/components/list.scss +40 -40
  492. package/styles/components/loading.scss +137 -137
  493. package/styles/components/menu.scss +150 -150
  494. package/styles/components/modal.scss +480 -480
  495. package/styles/components/notice-bar.scss +91 -91
  496. package/styles/components/number-input.scss +283 -283
  497. package/styles/components/old-icon.scss +4 -4
  498. package/styles/components/pager.scss +282 -282
  499. package/styles/components/password-input.scss +374 -374
  500. package/styles/components/print.scss +3 -3
  501. package/styles/components/pulldown.scss +75 -75
  502. package/styles/components/radio-button.scss +57 -57
  503. package/styles/components/radio.scss +79 -79
  504. package/styles/components/rate.scss +76 -76
  505. package/styles/components/result.scss +91 -91
  506. package/styles/components/row.scss +69 -69
  507. package/styles/components/segmented.scss +215 -215
  508. package/styles/components/select.scss +244 -244
  509. package/styles/components/slider.scss +139 -139
  510. package/styles/components/split.scss +1 -1
  511. package/styles/components/splitter.scss +318 -318
  512. package/styles/components/switch.scss +128 -128
  513. package/styles/components/table-select.scss +105 -105
  514. package/styles/components/tabs.scss +745 -745
  515. package/styles/components/tag.scss +184 -184
  516. package/styles/components/text-ellipsis.scss +130 -130
  517. package/styles/components/text.scss +123 -123
  518. package/styles/components/textarea.scss +106 -106
  519. package/styles/components/tip.scss +97 -97
  520. package/styles/components/tooltip.scss +140 -140
  521. package/styles/components/tree-select.scss +166 -166
  522. package/styles/components/tree.scss +294 -294
  523. package/styles/components/upload.scss +497 -497
  524. package/styles/components/watermark.scss +26 -26
  525. package/styles/helpers/baseMixin.scss +95 -95
  526. package/styles/helpers/baseVar.scss +3 -3
  527. package/styles/helpers/placement.scss +38 -38
  528. package/styles/theme/base.scss +214 -214
  529. package/styles/theme/dark.scss +119 -119
  530. package/styles/theme/light.scss +118 -118
  531. package/styles/variable.scss +111 -111
  532. package/types/all.d.ts +328 -328
  533. package/types/components/alert.d.ts +80 -80
  534. package/types/components/anchor-link.d.ts +84 -84
  535. package/types/components/anchor.d.ts +84 -84
  536. package/types/components/avatar.d.ts +81 -81
  537. package/types/components/backtop.d.ts +115 -115
  538. package/types/components/badge.d.ts +69 -69
  539. package/types/components/breadcrumb-item.d.ts +73 -73
  540. package/types/components/breadcrumb.d.ts +80 -80
  541. package/types/components/button-group.d.ts +113 -113
  542. package/types/components/button.d.ts +314 -314
  543. package/types/components/calendar.d.ts +254 -254
  544. package/types/components/card.d.ts +86 -86
  545. package/types/components/carousel-item.d.ts +68 -68
  546. package/types/components/carousel.d.ts +126 -126
  547. package/types/components/cascader.d.ts +242 -242
  548. package/types/components/checkbox-button.d.ts +93 -93
  549. package/types/components/checkbox-group.d.ts +135 -135
  550. package/types/components/checkbox.d.ts +115 -115
  551. package/types/components/col.d.ts +73 -73
  552. package/types/components/colgroup.d.ts +131 -131
  553. package/types/components/collapse-pane.d.ts +82 -82
  554. package/types/components/collapse.d.ts +115 -115
  555. package/types/components/color-picker.d.ts +127 -127
  556. package/types/components/column.d.ts +852 -852
  557. package/types/components/context-menu.d.ts +300 -300
  558. package/types/components/countdown.d.ts +99 -99
  559. package/types/components/date-panel.d.ts +269 -269
  560. package/types/components/date-picker.d.ts +302 -302
  561. package/types/components/date-range-picker.d.ts +316 -316
  562. package/types/components/drawer.d.ts +295 -295
  563. package/types/components/empty.d.ts +71 -71
  564. package/types/components/flow-design.d.ts +78 -78
  565. package/types/components/flow-view.d.ts +78 -78
  566. package/types/components/form-design.d.ts +364 -364
  567. package/types/components/form-gather.d.ts +72 -72
  568. package/types/components/form-group.d.ts +63 -63
  569. package/types/components/form-item.d.ts +405 -405
  570. package/types/components/form-view.d.ts +175 -175
  571. package/types/components/form.d.ts +463 -463
  572. package/types/components/gantt-module/gantt-view.d.ts +170 -170
  573. package/types/components/gantt-module/index.d.ts +1 -1
  574. package/types/components/gantt-plugins/extend-gantt-chart.d.ts +114 -114
  575. package/types/components/gantt-plugins/index.d.ts +1 -1
  576. package/types/components/gantt.d.ts +1129 -1129
  577. package/types/components/grid.d.ts +1030 -1030
  578. package/types/components/icon-picker.d.ts +181 -181
  579. package/types/components/icon.d.ts +80 -80
  580. package/types/components/image-group.d.ts +120 -120
  581. package/types/components/image-preview.d.ts +159 -159
  582. package/types/components/image.d.ts +158 -158
  583. package/types/components/input.d.ts +425 -425
  584. package/types/components/layout-aside.d.ts +73 -73
  585. package/types/components/layout-body.d.ts +84 -84
  586. package/types/components/layout-container.d.ts +66 -66
  587. package/types/components/layout-footer.d.ts +66 -66
  588. package/types/components/layout-header.d.ts +64 -64
  589. package/types/components/link.d.ts +104 -104
  590. package/types/components/list-design.d.ts +177 -177
  591. package/types/components/list-view.d.ts +190 -190
  592. package/types/components/list.d.ts +196 -196
  593. package/types/components/loading.d.ts +96 -96
  594. package/types/components/mention.d.ts +70 -70
  595. package/types/components/menu.d.ts +203 -203
  596. package/types/components/modal.d.ts +540 -540
  597. package/types/components/notice-bar.d.ts +95 -95
  598. package/types/components/number-input.d.ts +300 -300
  599. package/types/components/optgroup.d.ts +81 -81
  600. package/types/components/option.d.ts +95 -95
  601. package/types/components/pager.d.ts +322 -322
  602. package/types/components/password-input.d.ts +129 -129
  603. package/types/components/print-page-break.d.ts +62 -62
  604. package/types/components/print.d.ts +199 -199
  605. package/types/components/pulldown.d.ts +222 -222
  606. package/types/components/radio-button.d.ts +104 -104
  607. package/types/components/radio-group.d.ts +136 -136
  608. package/types/components/radio.d.ts +121 -121
  609. package/types/components/rate.d.ts +75 -75
  610. package/types/components/result.d.ts +77 -77
  611. package/types/components/row.d.ts +72 -72
  612. package/types/components/segmented.d.ts +117 -117
  613. package/types/components/select.d.ts +515 -515
  614. package/types/components/slider.d.ts +117 -117
  615. package/types/components/split-pane.d.ts +135 -135
  616. package/types/components/split.d.ts +318 -318
  617. package/types/components/splitter-panel.d.ts +98 -98
  618. package/types/components/splitter.d.ts +283 -283
  619. package/types/components/steps.d.ts +61 -61
  620. package/types/components/switch.d.ts +124 -124
  621. package/types/components/tab-pane.d.ts +107 -107
  622. package/types/components/table-module/custom.d.ts +111 -111
  623. package/types/components/table-module/edit.d.ts +244 -244
  624. package/types/components/table-module/export.d.ts +96 -96
  625. package/types/components/table-module/filter.d.ts +140 -140
  626. package/types/components/table-module/index.d.ts +7 -7
  627. package/types/components/table-module/keyboard.d.ts +26 -26
  628. package/types/components/table-module/menu.d.ts +26 -26
  629. package/types/components/table-module/validator.d.ts +53 -53
  630. package/types/components/table-plugins/extend-cell-area.d.ts +734 -734
  631. package/types/components/table-plugins/extend-pivot-table.d.ts +62 -62
  632. package/types/components/table-plugins/filters-combination.d.ts +15 -15
  633. package/types/components/table-plugins/filters-complex-input.d.ts +9 -9
  634. package/types/components/table-plugins/index.d.ts +4 -4
  635. package/types/components/table-select.d.ts +212 -212
  636. package/types/components/table.d.ts +7222 -7206
  637. package/types/components/tabs.d.ts +324 -324
  638. package/types/components/tag.d.ts +107 -107
  639. package/types/components/text-ellipsis.d.ts +105 -105
  640. package/types/components/text.d.ts +115 -115
  641. package/types/components/textarea.d.ts +237 -237
  642. package/types/components/timeline-item.d.ts +68 -68
  643. package/types/components/timeline.d.ts +70 -70
  644. package/types/components/tip.d.ts +76 -76
  645. package/types/components/toolbar.d.ts +329 -329
  646. package/types/components/tooltip.d.ts +165 -165
  647. package/types/components/tour.d.ts +70 -70
  648. package/types/components/tree-select.d.ts +295 -295
  649. package/types/components/tree.d.ts +826 -826
  650. package/types/components/upload.d.ts +432 -432
  651. package/types/components/watermark.d.ts +113 -113
  652. package/types/index.d.ts +4 -4
  653. package/types/ui/commands.d.ts +57 -57
  654. package/types/ui/formats.d.ts +62 -62
  655. package/types/ui/global-config.d.ts +254 -254
  656. package/types/ui/global-icon.d.ts +292 -292
  657. package/types/ui/hooks.d.ts +11 -11
  658. package/types/ui/index.d.ts +95 -95
  659. package/types/ui/interceptor.d.ts +54 -54
  660. package/types/ui/menus.d.ts +77 -77
  661. package/types/ui/renderer.d.ts +1042 -1042
  662. package/types/ui/validators.d.ts +38 -38
  663. /package/es/icon/{iconfont.1773972997530.ttf → iconfont.1774240783948.ttf} +0 -0
  664. /package/es/icon/{iconfont.1773972997530.woff → iconfont.1774240783948.woff} +0 -0
  665. /package/es/icon/{iconfont.1773972997530.woff2 → iconfont.1774240783948.woff2} +0 -0
  666. /package/es/{iconfont.1773972997530.ttf → iconfont.1774240783948.ttf} +0 -0
  667. /package/es/{iconfont.1773972997530.woff → iconfont.1774240783948.woff} +0 -0
  668. /package/es/{iconfont.1773972997530.woff2 → iconfont.1774240783948.woff2} +0 -0
  669. /package/lib/icon/style/{iconfont.1773972997530.ttf → iconfont.1774240783948.ttf} +0 -0
  670. /package/lib/icon/style/{iconfont.1773972997530.woff → iconfont.1774240783948.woff} +0 -0
  671. /package/lib/icon/style/{iconfont.1773972997530.woff2 → iconfont.1774240783948.woff2} +0 -0
  672. /package/lib/{iconfont.1773972997530.ttf → iconfont.1774240783948.ttf} +0 -0
  673. /package/lib/{iconfont.1773972997530.woff → iconfont.1774240783948.woff} +0 -0
  674. /package/lib/{iconfont.1773972997530.woff2 → iconfont.1774240783948.woff2} +0 -0
@@ -1,903 +1,903 @@
1
- import { CreateElement, PropType, VNode } from 'vue'
2
- import { defineVxeComponent } from '../../ui/src/comp'
3
- import XEUtils from 'xe-utils'
4
- import { VxeUI, getConfig, getIcon, globalEvents, getI18n, createEvent, renderEmptyElement, globalMixins } from '../../ui'
5
- import { getEventTargetNode, updatePanelPlacement, toCssUnit } from '../../ui/src/dom'
6
- import { getOnName } from '../../ui/src/vn'
7
- import { getLastZIndex, nextZIndex } from '../../ui/src/utils'
8
- import { errLog } from '../../ui/src/log'
9
- import VxeInputComponent from '../../input/src/input'
10
-
11
- import type { TableSelectReactData, VxeTableSelectPropTypes, TableSelectInternalData, VxeTableSelectEmits, VxeInputConstructor, VxeFormDefines, ValueOf, VxeComponentStyleType, VxeComponentSizeType, VxeModalConstructor, VxeModalMethods, VxeDrawerConstructor, VxeDrawerMethods, VxeFormConstructor, VxeFormPrivateMethods } from '../../../types'
12
- import type { VxeTableConstructor, VxeTablePrivateMethods, VxeTablePropTypes } from '../../../types/components/table'
13
- import type { VxeGridInstance, VxeGridDefines, VxeGridPropTypes } from '../../../types/components/grid'
14
-
15
- export function getRowUniqueId () {
16
- return XEUtils.uniqueId('row_')
17
- }
18
-
19
- function createInternalData (): TableSelectInternalData {
20
- return {
21
- // hpTimeout: undefined,
22
- // vpTimeout: undefined,
23
- fullRowMaps: {}
24
- }
25
- }
26
-
27
- export default /* define-vxe-component start */ defineVxeComponent({
28
- name: 'VxeTableSelect',
29
- mixins: [
30
- globalMixins.sizeMixin
31
- ],
32
- model: {
33
- prop: 'value',
34
- event: 'modelValue'
35
- },
36
- props: {
37
- value: [String, Number, Array] as PropType<VxeTableSelectPropTypes.ModelValue>,
38
- clearable: Boolean as PropType<VxeTableSelectPropTypes.Clearable>,
39
- placeholder: {
40
- type: String as PropType<VxeTableSelectPropTypes.Placeholder>,
41
- default: () => XEUtils.eqNull(getConfig().tableSelect.placeholder) ? getI18n('vxe.base.pleaseSelect') : getConfig().tableSelect.placeholder
42
- },
43
- readonly: {
44
- type: Boolean as PropType<VxeTableSelectPropTypes.Readonly>,
45
- default: null
46
- },
47
- loading: Boolean as PropType<VxeTableSelectPropTypes.Loading>,
48
- disabled: {
49
- type: Boolean as PropType<VxeTableSelectPropTypes.Disabled>,
50
- default: null
51
- },
52
- multiple: Boolean as PropType<VxeTableSelectPropTypes.Multiple>,
53
- className: [String, Function] as PropType<VxeTableSelectPropTypes.ClassName>,
54
- prefixIcon: String as PropType<VxeTableSelectPropTypes.PrefixIcon>,
55
- placement: String as PropType<VxeTableSelectPropTypes.Placement>,
56
- columns: Array as PropType<VxeTableSelectPropTypes.Columns>,
57
- options: Array as PropType<VxeTableSelectPropTypes.Options>,
58
- optionProps: Object as PropType<VxeTableSelectPropTypes.OptionProps>,
59
- lazyOptions: Array as PropType<VxeTableSelectPropTypes.LazyOptions>,
60
- zIndex: Number as PropType<VxeTableSelectPropTypes.ZIndex>,
61
- size: {
62
- type: String as PropType<VxeTableSelectPropTypes.Size>,
63
- default: () => getConfig().tableSelect.size || getConfig().size
64
- },
65
- popupConfig: Object as PropType<VxeTableSelectPropTypes.PopupConfig>,
66
- gridConfig: Object as PropType<VxeTableSelectPropTypes.GridConfig>,
67
- transfer: {
68
- type: Boolean as PropType<VxeTableSelectPropTypes.Transfer>,
69
- default: null
70
- }
71
- },
72
- inject: {
73
- $xeModal: {
74
- default: null
75
- },
76
- $xeDrawer: {
77
- default: null
78
- },
79
- $xeTable: {
80
- default: null
81
- },
82
- $xeForm: {
83
- default: null
84
- },
85
- formItemInfo: {
86
- from: 'xeFormItemInfo',
87
- default: null
88
- }
89
- },
90
- provide () {
91
- const $xeTableSelect = this
92
- return {
93
- $xeTableSelect
94
- }
95
- },
96
- data () {
97
- const xID = XEUtils.uniqueId()
98
- const reactData: TableSelectReactData = {
99
- initialized: false,
100
- tableColumns: [],
101
- fullOptionList: [],
102
- panelIndex: 0,
103
- panelStyle: {},
104
- panelPlacement: null,
105
- triggerFocusPanel: false,
106
- visiblePanel: false,
107
- isAniVisible: false,
108
- isActivated: false
109
- }
110
-
111
- const internalData: TableSelectInternalData = createInternalData()
112
-
113
- const gridEvents: Record<string, any> = {}
114
-
115
- return {
116
- xID,
117
- reactData,
118
- internalData,
119
- gridEvents
120
- }
121
- },
122
- computed: {
123
- ...({} as {
124
- computeSize(): VxeComponentSizeType
125
- $xeModal(): (VxeModalConstructor & VxeModalMethods) | null
126
- $xeDrawer(): (VxeDrawerConstructor & VxeDrawerMethods) | null
127
- $xeTable(): (VxeTableConstructor & VxeTablePrivateMethods) | null
128
- $xeForm(): (VxeFormConstructor & VxeFormPrivateMethods) | null
129
- formItemInfo(): VxeFormDefines.ProvideItemInfo | null
130
- }),
131
- computeFormReadonly () {
132
- const $xeTableSelect = this
133
- const props = $xeTableSelect
134
- const $xeForm = $xeTableSelect.$xeForm
135
-
136
- const { readonly } = props
137
- if (readonly === null) {
138
- if ($xeForm) {
139
- return $xeForm.readonly
140
- }
141
- return false
142
- }
143
- return readonly
144
- },
145
- computeIsDisabled () {
146
- const $xeTableSelect = this
147
- const props = $xeTableSelect
148
- const $xeForm = $xeTableSelect.$xeForm
149
-
150
- const { disabled } = props
151
- if (disabled === null) {
152
- if ($xeForm) {
153
- return $xeForm.disabled
154
- }
155
- return false
156
- }
157
- return disabled
158
- },
159
- computeBtnTransfer () {
160
- const $xeTableSelect = this
161
- const props = $xeTableSelect
162
- const $xeForm = $xeTableSelect.$xeForm
163
- const $xeTable = $xeTableSelect.$xeTable
164
- const $xeModal = $xeTableSelect.$xeModal
165
- const $xeDrawer = $xeTableSelect.$xeDrawer
166
-
167
- const { transfer } = props
168
- const popupOpts = $xeTableSelect.computePopupOpts as VxeTableSelectPropTypes.PopupConfig
169
- if (XEUtils.isBoolean(popupOpts.transfer)) {
170
- return popupOpts.transfer
171
- }
172
- if (transfer === null) {
173
- const globalTransfer = getConfig().tableSelect.transfer
174
- if (XEUtils.isBoolean(globalTransfer)) {
175
- return globalTransfer
176
- }
177
- if ($xeTable || $xeModal || $xeDrawer || $xeForm) {
178
- return true
179
- }
180
- }
181
- return transfer
182
- },
183
- computePropsOpts () {
184
- const $xeTableSelect = this
185
- const props = $xeTableSelect
186
-
187
- return props.optionProps || {} as VxeTableSelectPropTypes.OptionProps
188
- },
189
- computeRowOpts () {
190
- const $xeTableSelect = this
191
-
192
- const gridOpts = $xeTableSelect.computeGridOpts as VxeTableSelectPropTypes.GridConfig
193
- return Object.assign({}, gridOpts.rowConfig, {
194
- isCurrent: true
195
- }) as VxeTablePropTypes.RowConfig
196
- },
197
- computeRowKeyField () {
198
- const $xeTableSelect = this
199
-
200
- const rowOpts = $xeTableSelect.computeRowOpts as VxeTablePropTypes.RowConfig
201
- return rowOpts.keyField || '_X_ROW_KEY'
202
- },
203
- computeLabelField () {
204
- const $xeTableSelect = this
205
-
206
- const propsOpts = $xeTableSelect.computePropsOpts as VxeTableSelectPropTypes.OptionProps
207
- return propsOpts.label || 'label'
208
- },
209
- computeValueField () {
210
- const $xeTableSelect = this
211
-
212
- const propsOpts = $xeTableSelect.computePropsOpts as VxeTableSelectPropTypes.OptionProps
213
- return propsOpts.value || 'value'
214
- },
215
- computePopupOpts () {
216
- const $xeTableSelect = this
217
- const props = $xeTableSelect
218
-
219
- return Object.assign({}, getConfig().tableSelect.popupConfig, props.popupConfig)
220
- },
221
- computeGridOpts () {
222
- const $xeTableSelect = this
223
- const props = $xeTableSelect
224
-
225
- return Object.assign({}, getConfig().tableSelect.gridConfig, props.gridConfig, {
226
- data: undefined
227
- })
228
- },
229
- computeSelectGridOpts () {
230
- const $xeTableSelect = this
231
-
232
- const gridOpts = $xeTableSelect.computeGridOpts as VxeTableSelectPropTypes.GridConfig
233
- const { pagerConfig, proxyConfig } = gridOpts
234
- if (proxyConfig) {
235
- const proxyAjax = proxyConfig.ajax
236
- if (proxyAjax && proxyAjax.query) {
237
- const newProxyConfig = XEUtils.clone(proxyConfig, true) as Required<VxeGridPropTypes.ProxyConfig>
238
- const ajaxMethods = proxyAjax.query
239
- if (ajaxMethods) {
240
- const resConfigs = proxyConfig.response || proxyConfig.props || {}
241
- Object.assign(newProxyConfig.ajax, {
242
- query (params: VxeGridPropTypes.ProxyAjaxQueryParams, ...args: any[]) {
243
- return Promise.resolve(ajaxMethods(params, ...args)).then(rest => {
244
- let tableData = []
245
- if (pagerConfig) {
246
- const resultProp = resConfigs.result
247
- tableData = (XEUtils.isFunction(resultProp) ? resultProp({ data: rest, $table: null as any, $grid: null, $gantt: null }) : XEUtils.get(rest, resultProp || 'result')) || []
248
- } else {
249
- const listProp = resConfigs.list
250
- tableData = (listProp ? (XEUtils.isFunction(listProp) ? listProp({ data: rest, $table: null as any, $grid: null, $gantt: null }) : XEUtils.get(rest, listProp)) : rest) || []
251
- }
252
- $xeTableSelect.cacheDataMap(tableData || [])
253
- return rest
254
- })
255
- }
256
- })
257
- }
258
- return Object.assign({}, gridOpts, { proxyConfig: newProxyConfig })
259
- }
260
- }
261
- return gridOpts
262
- },
263
- computeSelectLabel () {
264
- const $xeTableSelect = this
265
- const props = $xeTableSelect
266
- const reactData = ($xeTableSelect as any).reactData as TableSelectReactData
267
- const internalData = ($xeTableSelect as any).internalData as TableSelectInternalData
268
-
269
- const { value, lazyOptions } = props
270
- const { fullOptionList } = reactData
271
- const { fullRowMaps } = internalData
272
- const valueField = $xeTableSelect.computeValueField as string
273
- const labelField = $xeTableSelect.computeLabelField as string
274
- if (!fullOptionList) {
275
- return ''
276
- }
277
- return (XEUtils.isArray(value) ? value : [value]).map(val => {
278
- const cacheItem = fullRowMaps[val]
279
- if (cacheItem) {
280
- return cacheItem.item[labelField]
281
- }
282
- if (lazyOptions) {
283
- const lazyItem = lazyOptions.find(item => item[valueField] === val)
284
- if (lazyItem) {
285
- return lazyItem[labelField]
286
- }
287
- }
288
- return val
289
- }).join(', ')
290
- },
291
- computePopupWrapperStyle () {
292
- const $xeTableSelect = this
293
-
294
- const popupOpts = $xeTableSelect.computePopupOpts
295
- const { height, width } = popupOpts
296
- const stys: VxeComponentStyleType = {}
297
- if (width) {
298
- stys.width = toCssUnit(width)
299
- }
300
- if (height) {
301
- stys.height = toCssUnit(height)
302
- }
303
- return stys
304
- }
305
- },
306
- methods: {
307
- //
308
- // Method
309
- //
310
- dispatchEvent (type: ValueOf<VxeTableSelectEmits>, params: Record<string, any>, evnt: Event | null) {
311
- const $xeTableSelect = this
312
- $xeTableSelect.$emit(type, createEvent(evnt, { $tableSelect: $xeTableSelect }, params))
313
- },
314
- emitModel (value: any) {
315
- const $xeTableSelect = this
316
-
317
- const { _events } = $xeTableSelect as any
318
- if (_events && _events.modelValue) {
319
- $xeTableSelect.$emit('modelValue', value)
320
- } else {
321
- $xeTableSelect.$emit('model-value', value)
322
- }
323
- },
324
- getRowid (option: any) {
325
- const $xeTableSelect = this
326
-
327
- const nodeKeyField = $xeTableSelect.computeRowKeyField
328
- const rowid = option[nodeKeyField]
329
- return rowid ? encodeURIComponent(rowid) : ''
330
- },
331
- getRowsByValue (modelValue: VxeTableSelectPropTypes.ModelValue) {
332
- const $xeTableSelect = this
333
- const internalData = $xeTableSelect.internalData
334
-
335
- const { fullRowMaps } = internalData
336
- const rows: any[] = []
337
- const vals = XEUtils.eqNull(modelValue) ? [] : (XEUtils.isArray(modelValue) ? modelValue : [modelValue])
338
- vals.forEach(val => {
339
- const cacheItem = fullRowMaps[val]
340
- if (cacheItem) {
341
- rows.push(cacheItem.item)
342
- }
343
- })
344
- return rows
345
- },
346
- updateModel (modelValue: VxeTableSelectPropTypes.ModelValue) {
347
- const $xeTableSelect = this
348
- const props = $xeTableSelect
349
-
350
- const { multiple } = props
351
- $xeTableSelect.$nextTick(() => {
352
- const $grid = $xeTableSelect.$refs.refGrid as VxeGridInstance
353
- if ($grid) {
354
- const selectList = $xeTableSelect.getRowsByValue(modelValue)
355
- if (selectList.length) {
356
- if (multiple) {
357
- $grid.setCheckboxRow(selectList, true)
358
- } else {
359
- $grid.setRadioRow(selectList[0])
360
- }
361
- }
362
- }
363
- })
364
- },
365
- loadTableColumn (columns?: VxeTableSelectPropTypes.Columns) {
366
- const $xeTableSelect = this
367
- const props = $xeTableSelect
368
- const reactData = $xeTableSelect.reactData
369
-
370
- if (!columns || !columns.length) {
371
- return
372
- }
373
- const { multiple } = props
374
- const tableCols: VxeTableSelectPropTypes.Columns = []
375
- let hasRadioCol = false
376
- let hasCheckboxCol = false
377
- columns.forEach(column => {
378
- if (!hasRadioCol && column.type === 'radio') {
379
- hasRadioCol = true
380
- } else if (!hasCheckboxCol && column.type === 'checkbox') {
381
- hasCheckboxCol = true
382
- }
383
- tableCols.push(column)
384
- })
385
- if (multiple) {
386
- if (!hasCheckboxCol) {
387
- tableCols.unshift({
388
- type: 'checkbox',
389
- width: 70
390
- })
391
- }
392
- } else {
393
- if (!hasRadioCol) {
394
- tableCols.unshift({
395
- type: 'radio',
396
- width: 70
397
- })
398
- }
399
- }
400
- reactData.tableColumns = tableCols
401
- },
402
- cacheDataMap (dataList?: any[]) {
403
- const $xeTableSelect = this
404
- const props = $xeTableSelect
405
- const reactData = $xeTableSelect.reactData
406
- const internalData = $xeTableSelect.internalData
407
-
408
- const { options } = props
409
- const rowKeyField = $xeTableSelect.computeRowKeyField
410
- const valueField = $xeTableSelect.computeValueField
411
- const gridOpts = $xeTableSelect.computeGridOpts
412
- const { treeConfig, pagerConfig } = gridOpts
413
- const rowMaps: Record<string, {
414
- item: any
415
- index: number
416
- items: any[]
417
- parent: any
418
- nodes: any[]
419
- }> = {}
420
- const keyMaps: Record<string, boolean> = {}
421
- if (treeConfig) {
422
- // x
423
- } else {
424
- XEUtils.arrayEach(dataList || options || [], (item, index, items) => {
425
- let rowid = $xeTableSelect.getRowid(item)
426
- if (!rowid) {
427
- rowid = getRowUniqueId()
428
- }
429
- if (keyMaps[rowid]) {
430
- errLog('vxe.error.repeatKey', [`[table-select] ${rowKeyField}`, rowid])
431
- }
432
- keyMaps[rowid] = true
433
- const value = item[valueField]
434
- if (rowMaps[value]) {
435
- errLog('vxe.error.repeatKey', [`[table-select] ${valueField}`, value])
436
- }
437
- rowMaps[value] = { item, index, items, parent: null, nodes: [] }
438
- })
439
- }
440
- reactData.fullOptionList = dataList || options || []
441
- internalData.fullRowMaps = pagerConfig ? Object.assign({}, internalData.fullRowMaps, rowMaps) : rowMaps
442
- $xeTableSelect.updateModel(props.value)
443
- },
444
- updateZindex () {
445
- const $xeTableSelect = this
446
- const props = $xeTableSelect
447
- const reactData = $xeTableSelect.reactData
448
-
449
- const popupOpts = $xeTableSelect.computePopupOpts
450
- const customZIndex = popupOpts.zIndex || props.zIndex
451
- if (customZIndex) {
452
- reactData.panelIndex = XEUtils.toNumber(customZIndex)
453
- } else if (reactData.panelIndex < getLastZIndex()) {
454
- reactData.panelIndex = nextZIndex()
455
- }
456
- },
457
- updatePlacement () {
458
- const $xeTableSelect = this
459
- const props = $xeTableSelect
460
- const reactData = $xeTableSelect.reactData
461
-
462
- const { placement } = props
463
- const { panelIndex } = reactData
464
- const targetElem = $xeTableSelect.$refs.refElem as HTMLElement
465
- const panelElem = $xeTableSelect.$refs.refOptionPanel as HTMLDivElement
466
- const btnTransfer = $xeTableSelect.computeBtnTransfer
467
- const popupOpts = $xeTableSelect.computePopupOpts
468
- const handleStyle = () => {
469
- const ppObj = updatePanelPlacement(targetElem, panelElem, {
470
- placement: popupOpts.placement || placement,
471
- teleportTo: btnTransfer
472
- })
473
- const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
474
- zIndex: panelIndex
475
- })
476
- reactData.panelStyle = panelStyle
477
- reactData.panelPlacement = ppObj.placement
478
- }
479
- handleStyle()
480
- return $xeTableSelect.$nextTick().then(handleStyle)
481
- },
482
- showOptionPanel () {
483
- const $xeTableSelect = this
484
- const props = $xeTableSelect
485
- const reactData = $xeTableSelect.reactData
486
- const internalData = $xeTableSelect.internalData
487
-
488
- const { loading } = props
489
- const isDisabled = $xeTableSelect.computeIsDisabled
490
- if (!loading && !isDisabled) {
491
- if (internalData.vpTimeout) {
492
- clearTimeout(internalData.vpTimeout)
493
- }
494
- if (internalData.hpTimeout) {
495
- clearTimeout(internalData.hpTimeout)
496
- }
497
- if (!reactData.initialized) {
498
- reactData.initialized = true
499
- const btnTransfer = $xeTableSelect.computeBtnTransfer
500
- const panelElem = $xeTableSelect.$refs.refOptionPanel as HTMLElement
501
- if (btnTransfer) {
502
- if (panelElem) {
503
- document.body.appendChild(panelElem)
504
- }
505
- }
506
- }
507
- reactData.isActivated = true
508
- reactData.isAniVisible = true
509
- internalData.vpTimeout = setTimeout(() => {
510
- reactData.visiblePanel = true
511
- $xeTableSelect.updateModel(props.value)
512
- internalData.vpTimeout = undefined
513
- $xeTableSelect.updatePlacement()
514
- }, 10)
515
- $xeTableSelect.updateZindex()
516
- $xeTableSelect.updatePlacement()
517
- }
518
- },
519
- hideOptionPanel () {
520
- const $xeTableSelect = this
521
- const reactData = $xeTableSelect.reactData
522
- const internalData = $xeTableSelect.internalData
523
-
524
- reactData.visiblePanel = false
525
- internalData.hpTimeout = setTimeout(() => {
526
- reactData.isAniVisible = false
527
- }, 350)
528
- },
529
- changeEvent (evnt: Event, selectValue: any, row: any) {
530
- const $xeTableSelect = this
531
- const props = $xeTableSelect
532
- const $xeForm = $xeTableSelect.$xeForm
533
- const formItemInfo = $xeTableSelect.formItemInfo
534
-
535
- $xeTableSelect.emitModel(selectValue)
536
- if (selectValue !== props.value) {
537
- $xeTableSelect.dispatchEvent('change', { value: selectValue, row, option: row }, evnt)
538
- // 自动更新校验状态
539
- if ($xeForm && formItemInfo) {
540
- $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, selectValue)
541
- }
542
- }
543
- },
544
- clearValueEvent (evnt: Event, selectValue: any) {
545
- const $xeTableSelect = this
546
-
547
- $xeTableSelect.changeEvent(evnt, selectValue, null)
548
- $xeTableSelect.dispatchEvent('clear', { value: selectValue }, evnt)
549
- },
550
- clearEvent (params: any, evnt: Event) {
551
- const $xeTableSelect = this
552
-
553
- $xeTableSelect.clearValueEvent(evnt, null)
554
- $xeTableSelect.hideOptionPanel()
555
- },
556
- handleGlobalMousewheelEvent (evnt: MouseEvent) {
557
- const $xeTableSelect = this
558
- const reactData = $xeTableSelect.reactData
559
-
560
- const { visiblePanel } = reactData
561
- const isDisabled = $xeTableSelect.computeIsDisabled
562
- if (!isDisabled) {
563
- if (visiblePanel) {
564
- const panelElem = $xeTableSelect.$refs.refOptionPanel as HTMLDivElement
565
- if (getEventTargetNode(evnt, panelElem).flag) {
566
- $xeTableSelect.updatePlacement()
567
- } else {
568
- $xeTableSelect.hideOptionPanel()
569
- }
570
- }
571
- }
572
- },
573
- handleGlobalMousedownEvent (evnt: MouseEvent) {
574
- const $xeTableSelect = this
575
- const reactData = $xeTableSelect.reactData
576
-
577
- const { visiblePanel } = reactData
578
- const isDisabled = $xeTableSelect.computeIsDisabled
579
- if (!isDisabled) {
580
- const el = $xeTableSelect.$refs.refElem as HTMLDivElement
581
- const panelElem = $xeTableSelect.$refs.refOptionPanel as HTMLDivElement
582
- reactData.isActivated = getEventTargetNode(evnt, el).flag || getEventTargetNode(evnt, panelElem).flag
583
- if (visiblePanel && !reactData.isActivated) {
584
- $xeTableSelect.hideOptionPanel()
585
- }
586
- }
587
- },
588
- handleGlobalBlurEvent () {
589
- const $xeTableSelect = this
590
- const reactData = $xeTableSelect.reactData
591
-
592
- const { visiblePanel, isActivated } = reactData
593
- if (visiblePanel) {
594
- $xeTableSelect.hideOptionPanel()
595
- }
596
- if (isActivated) {
597
- reactData.isActivated = false
598
- }
599
- if (visiblePanel || isActivated) {
600
- const $input = $xeTableSelect.$refs.refInput as VxeInputConstructor
601
- if ($input) {
602
- $input.blur()
603
- }
604
- }
605
- },
606
- handleGlobalResizeEvent () {
607
- const $xeTableSelect = this
608
- const reactData = $xeTableSelect.reactData
609
-
610
- const { visiblePanel } = reactData
611
- if (visiblePanel) {
612
- $xeTableSelect.updatePlacement()
613
- }
614
- },
615
- focusEvent (evnt: FocusEvent) {
616
- const $xeTableSelect = this
617
- const reactData = $xeTableSelect.reactData
618
-
619
- const isDisabled = $xeTableSelect.computeIsDisabled
620
- if (!isDisabled) {
621
- if (!reactData.visiblePanel) {
622
- reactData.triggerFocusPanel = true
623
- $xeTableSelect.showOptionPanel()
624
- setTimeout(() => {
625
- reactData.triggerFocusPanel = false
626
- }, 150)
627
- }
628
- }
629
- $xeTableSelect.dispatchEvent('focus', {}, evnt)
630
- },
631
- clickEvent (evnt: MouseEvent) {
632
- const $xeTableSelect = this
633
-
634
- $xeTableSelect.togglePanelEvent(evnt)
635
- $xeTableSelect.dispatchEvent('click', {}, evnt)
636
- },
637
- blurEvent (evnt: FocusEvent) {
638
- const $xeTableSelect = this
639
- const reactData = $xeTableSelect.reactData
640
-
641
- reactData.isActivated = false
642
- $xeTableSelect.dispatchEvent('blur', {}, evnt)
643
- },
644
- togglePanelEvent (params: any) {
645
- const $xeTableSelect = this
646
- const reactData = $xeTableSelect.reactData
647
-
648
- const { $event } = params
649
- $event.preventDefault()
650
- if (reactData.triggerFocusPanel) {
651
- reactData.triggerFocusPanel = false
652
- } else {
653
- if (reactData.visiblePanel) {
654
- $xeTableSelect.hideOptionPanel()
655
- } else {
656
- $xeTableSelect.showOptionPanel()
657
- }
658
- }
659
- },
660
- radioChangeEvent (params: VxeGridDefines.RadioChangeEventParams) {
661
- const $xeTableSelect = this
662
-
663
- const { $event, row } = params
664
- const valueField = $xeTableSelect.computeValueField
665
- const value = row[valueField]
666
- $xeTableSelect.changeEvent($event, value, row)
667
- $xeTableSelect.hideOptionPanel()
668
- },
669
- checkboxChangeEvent (params: VxeGridDefines.CheckboxChangeEventParams) {
670
- const $xeTableSelect = this
671
-
672
- const { $grid, $event, row } = params
673
- const valueField = $xeTableSelect.computeValueField
674
- if ($grid) {
675
- const checkboxRecords = $grid.getCheckboxRecords()
676
- const value = checkboxRecords.map(row => {
677
- return row[valueField]
678
- })
679
- $xeTableSelect.changeEvent($event, value, row)
680
- }
681
- },
682
- checkboxAllEvent (params: VxeGridDefines.CheckboxAllEventParams) {
683
- const $xeTableSelect = this
684
-
685
- $xeTableSelect.checkboxChangeEvent(params)
686
- },
687
-
688
- //
689
- // Render
690
- //
691
- renderVN (h: CreateElement): VNode {
692
- const VxeTableGridComponent = VxeUI.getComponent('vxe-grid')
693
-
694
- const $xeTableSelect = this
695
- const props = $xeTableSelect
696
- const slots = $xeTableSelect.$scopedSlots
697
- const reactData = $xeTableSelect.reactData
698
-
699
- const { className, options, loading } = props
700
- const { initialized, isActivated, isAniVisible, visiblePanel, tableColumns } = reactData
701
- const vSize = $xeTableSelect.computeSize
702
- const isDisabled = $xeTableSelect.computeIsDisabled
703
- const selectLabel = $xeTableSelect.computeSelectLabel
704
- const btnTransfer = $xeTableSelect.computeBtnTransfer
705
- const formReadonly = $xeTableSelect.computeFormReadonly
706
- const popupOpts = $xeTableSelect.computePopupOpts
707
- const selectGridOpts = $xeTableSelect.computeSelectGridOpts
708
- const rowOpts = $xeTableSelect.computeRowOpts
709
- const popupWrapperStyle = $xeTableSelect.computePopupWrapperStyle
710
- const headerSlot = slots.header
711
- const footerSlot = slots.footer
712
- const prefixSlot = slots.prefix
713
- const ppClassName = popupOpts.className
714
-
715
- if (formReadonly) {
716
- return h('div', {
717
- ref: 'refElem',
718
- class: ['vxe-table-select--readonly', className]
719
- }, [
720
- h('span', {
721
- class: 'vxe-table-select-label'
722
- }, selectLabel)
723
- ])
724
- }
725
- return h('div', {
726
- ref: 'refElem',
727
- class: ['vxe-table-select', className ? (XEUtils.isFunction(className) ? className({ $tableSelect: $xeTableSelect }) : className) : '', {
728
- [`size--${vSize}`]: vSize,
729
- 'is--visible': visiblePanel,
730
- 'is--disabled': isDisabled,
731
- 'is--loading': loading,
732
- 'is--active': isActivated
733
- }]
734
- }, [
735
- h(VxeInputComponent, {
736
- ref: 'refInput',
737
- props: {
738
- clearable: props.clearable,
739
- placeholder: props.placeholder,
740
- editable: false,
741
- disabled: isDisabled,
742
- type: 'text',
743
- prefixIcon: props.prefixIcon,
744
- suffixIcon: loading ? getIcon().TABLE_SELECT_LOADED : (visiblePanel ? getIcon().TABLE_SELECT_OPEN : getIcon().TABLE_SELECT_CLOSE),
745
- value: loading ? getI18n('vxe.select.loadingText') : selectLabel
746
- },
747
- on: {
748
- clear: $xeTableSelect.clearEvent,
749
- click: $xeTableSelect.clickEvent,
750
- focus: $xeTableSelect.focusEvent,
751
- blur: $xeTableSelect.blurEvent,
752
- 'suffix-click': $xeTableSelect.togglePanelEvent
753
- },
754
- scopedSlots: prefixSlot
755
- ? {
756
- prefix: () => prefixSlot({})
757
- }
758
- : {}
759
- }),
760
- h('div', {
761
- ref: 'refOptionPanel',
762
- class: ['vxe-table--ignore-clear vxe-table-select--panel', ppClassName ? (XEUtils.isFunction(ppClassName) ? ppClassName({ $tableSelect: $xeTableSelect }) : ppClassName) : '', {
763
- [`size--${vSize}`]: vSize,
764
- 'is--transfer': btnTransfer,
765
- 'ani--leave': !loading && isAniVisible,
766
- 'ani--enter': !loading && visiblePanel
767
- }],
768
- attrs: {
769
- placement: reactData.panelPlacement
770
- },
771
- style: reactData.panelStyle
772
- }, initialized
773
- ? [
774
- h('div', {
775
- class: 'vxe-table-select--panel-wrapper'
776
- }, [
777
- headerSlot
778
- ? h('div', {
779
- class: 'vxe-table-select--panel-header'
780
- }, headerSlot({}))
781
- : renderEmptyElement($xeTableSelect),
782
- h('div', {
783
- class: 'vxe-table-select--panel-body'
784
- }, [
785
- h('div', {
786
- ref: 'refGridWrapper',
787
- class: 'vxe-table-select-grid--wrapper',
788
- style: popupWrapperStyle
789
- }, [
790
- VxeTableGridComponent
791
- ? h(VxeTableGridComponent, {
792
- ref: 'refGrid',
793
- class: 'vxe-table-select--grid',
794
- props: {
795
- ...selectGridOpts,
796
- rowConfig: rowOpts,
797
- data: options,
798
- columns: tableColumns.length ? tableColumns : selectGridOpts.columns,
799
- height: '100%',
800
- autoResize: true
801
- },
802
- on: {
803
- ...$xeTableSelect.gridEvents,
804
- 'radio-change': $xeTableSelect.radioChangeEvent,
805
- 'checkbox-change': $xeTableSelect.checkboxChangeEvent,
806
- 'checkbox-all': $xeTableSelect.checkboxAllEvent
807
- },
808
- scopedSlots: Object.assign({}, slots, {
809
- header: undefined,
810
- footer: undefined,
811
- prefixSlot: undefined
812
- })
813
- })
814
- : renderEmptyElement($xeTableSelect)
815
- ])
816
- ]),
817
- footerSlot
818
- ? h('div', {
819
- class: 'vxe-table-select--panel-footer'
820
- }, footerSlot({}))
821
- : renderEmptyElement($xeTableSelect)
822
- ])
823
- ]
824
- : [])
825
- ])
826
- }
827
- },
828
- watch: {
829
- options () {
830
- const $xeTableSelect = this
831
-
832
- $xeTableSelect.cacheDataMap()
833
- },
834
- columns (val) {
835
- const $xeTableSelect = this
836
-
837
- $xeTableSelect.loadTableColumn(val)
838
- },
839
- value (val) {
840
- const $xeTableSelect = this
841
-
842
- $xeTableSelect.updateModel(val)
843
- }
844
- },
845
- created () {
846
- const $xeTableSelect = this
847
- const props = $xeTableSelect
848
-
849
- const gridEventKeys: ValueOf<VxeTableSelectEmits>[] = [
850
- 'form-submit',
851
- 'form-reset',
852
- 'form-collapse',
853
- 'page-change'
854
- ]
855
- const { gridEvents } = $xeTableSelect
856
- gridEventKeys.forEach(name => {
857
- gridEvents[getOnName(name)] = (params: any) => {
858
- $xeTableSelect.dispatchEvent(name, params, params.$event)
859
- }
860
- })
861
-
862
- $xeTableSelect.loadTableColumn(props.columns)
863
- $xeTableSelect.cacheDataMap()
864
- },
865
- mounted () {
866
- const $xeTableSelect = this
867
- const props = $xeTableSelect
868
- const reactData = $xeTableSelect.reactData
869
-
870
- const VxeTableGridComponent = VxeUI.getComponent('vxe-grid')
871
- $xeTableSelect.$nextTick(() => {
872
- if (!VxeTableGridComponent) {
873
- errLog('vxe.error.reqComp', ['[table-select] vxe-grid'])
874
- }
875
- })
876
-
877
- const { gridConfig } = props
878
- if (gridConfig && gridConfig.proxyConfig) {
879
- if (gridConfig.proxyConfig.autoLoad !== false) {
880
- reactData.initialized = true
881
- }
882
- }
883
- globalEvents.on($xeTableSelect, 'mousewheel', $xeTableSelect.handleGlobalMousewheelEvent)
884
- globalEvents.on($xeTableSelect, 'mousedown', $xeTableSelect.handleGlobalMousedownEvent)
885
- globalEvents.on($xeTableSelect, 'blur', $xeTableSelect.handleGlobalBlurEvent)
886
- globalEvents.on($xeTableSelect, 'resize', $xeTableSelect.handleGlobalResizeEvent)
887
- },
888
- beforeDestroy () {
889
- const $xeTableSelect = this
890
-
891
- const panelElem = $xeTableSelect.$refs.refOptionPanel as HTMLElement | undefined
892
- if (panelElem && panelElem.parentNode) {
893
- panelElem.parentNode.removeChild(panelElem)
894
- }
895
- globalEvents.off($xeTableSelect, 'mousewheel')
896
- globalEvents.off($xeTableSelect, 'mousedown')
897
- globalEvents.off($xeTableSelect, 'blur')
898
- globalEvents.off($xeTableSelect, 'resize')
899
- },
900
- render (this: any, h) {
901
- return this.renderVN(h)
902
- }
903
- }) /* define-vxe-component end */
1
+ import { CreateElement, PropType, VNode } from 'vue'
2
+ import { defineVxeComponent } from '../../ui/src/comp'
3
+ import XEUtils from 'xe-utils'
4
+ import { VxeUI, getConfig, getIcon, globalEvents, getI18n, createEvent, renderEmptyElement, globalMixins } from '../../ui'
5
+ import { getEventTargetNode, updatePanelPlacement, toCssUnit } from '../../ui/src/dom'
6
+ import { getOnName } from '../../ui/src/vn'
7
+ import { getLastZIndex, nextZIndex } from '../../ui/src/utils'
8
+ import { errLog } from '../../ui/src/log'
9
+ import VxeInputComponent from '../../input/src/input'
10
+
11
+ import type { TableSelectReactData, VxeTableSelectPropTypes, TableSelectInternalData, VxeTableSelectEmits, VxeInputConstructor, VxeFormDefines, ValueOf, VxeComponentStyleType, VxeComponentSizeType, VxeModalConstructor, VxeModalMethods, VxeDrawerConstructor, VxeDrawerMethods, VxeFormConstructor, VxeFormPrivateMethods } from '../../../types'
12
+ import type { VxeTableConstructor, VxeTablePrivateMethods, VxeTablePropTypes } from '../../../types/components/table'
13
+ import type { VxeGridInstance, VxeGridDefines, VxeGridPropTypes } from '../../../types/components/grid'
14
+
15
+ export function getRowUniqueId () {
16
+ return XEUtils.uniqueId('row_')
17
+ }
18
+
19
+ function createInternalData (): TableSelectInternalData {
20
+ return {
21
+ // hpTimeout: undefined,
22
+ // vpTimeout: undefined,
23
+ fullRowMaps: {}
24
+ }
25
+ }
26
+
27
+ export default /* define-vxe-component start */ defineVxeComponent({
28
+ name: 'VxeTableSelect',
29
+ mixins: [
30
+ globalMixins.sizeMixin
31
+ ],
32
+ model: {
33
+ prop: 'value',
34
+ event: 'modelValue'
35
+ },
36
+ props: {
37
+ value: [String, Number, Array] as PropType<VxeTableSelectPropTypes.ModelValue>,
38
+ clearable: Boolean as PropType<VxeTableSelectPropTypes.Clearable>,
39
+ placeholder: {
40
+ type: String as PropType<VxeTableSelectPropTypes.Placeholder>,
41
+ default: () => XEUtils.eqNull(getConfig().tableSelect.placeholder) ? getI18n('vxe.base.pleaseSelect') : getConfig().tableSelect.placeholder
42
+ },
43
+ readonly: {
44
+ type: Boolean as PropType<VxeTableSelectPropTypes.Readonly>,
45
+ default: null
46
+ },
47
+ loading: Boolean as PropType<VxeTableSelectPropTypes.Loading>,
48
+ disabled: {
49
+ type: Boolean as PropType<VxeTableSelectPropTypes.Disabled>,
50
+ default: null
51
+ },
52
+ multiple: Boolean as PropType<VxeTableSelectPropTypes.Multiple>,
53
+ className: [String, Function] as PropType<VxeTableSelectPropTypes.ClassName>,
54
+ prefixIcon: String as PropType<VxeTableSelectPropTypes.PrefixIcon>,
55
+ placement: String as PropType<VxeTableSelectPropTypes.Placement>,
56
+ columns: Array as PropType<VxeTableSelectPropTypes.Columns>,
57
+ options: Array as PropType<VxeTableSelectPropTypes.Options>,
58
+ optionProps: Object as PropType<VxeTableSelectPropTypes.OptionProps>,
59
+ lazyOptions: Array as PropType<VxeTableSelectPropTypes.LazyOptions>,
60
+ zIndex: Number as PropType<VxeTableSelectPropTypes.ZIndex>,
61
+ size: {
62
+ type: String as PropType<VxeTableSelectPropTypes.Size>,
63
+ default: () => getConfig().tableSelect.size || getConfig().size
64
+ },
65
+ popupConfig: Object as PropType<VxeTableSelectPropTypes.PopupConfig>,
66
+ gridConfig: Object as PropType<VxeTableSelectPropTypes.GridConfig>,
67
+ transfer: {
68
+ type: Boolean as PropType<VxeTableSelectPropTypes.Transfer>,
69
+ default: null
70
+ }
71
+ },
72
+ inject: {
73
+ $xeModal: {
74
+ default: null
75
+ },
76
+ $xeDrawer: {
77
+ default: null
78
+ },
79
+ $xeTable: {
80
+ default: null
81
+ },
82
+ $xeForm: {
83
+ default: null
84
+ },
85
+ formItemInfo: {
86
+ from: 'xeFormItemInfo',
87
+ default: null
88
+ }
89
+ },
90
+ provide () {
91
+ const $xeTableSelect = this
92
+ return {
93
+ $xeTableSelect
94
+ }
95
+ },
96
+ data () {
97
+ const xID = XEUtils.uniqueId()
98
+ const reactData: TableSelectReactData = {
99
+ initialized: false,
100
+ tableColumns: [],
101
+ fullOptionList: [],
102
+ panelIndex: 0,
103
+ panelStyle: {},
104
+ panelPlacement: null,
105
+ triggerFocusPanel: false,
106
+ visiblePanel: false,
107
+ isAniVisible: false,
108
+ isActivated: false
109
+ }
110
+
111
+ const internalData: TableSelectInternalData = createInternalData()
112
+
113
+ const gridEvents: Record<string, any> = {}
114
+
115
+ return {
116
+ xID,
117
+ reactData,
118
+ internalData,
119
+ gridEvents
120
+ }
121
+ },
122
+ computed: {
123
+ ...({} as {
124
+ computeSize(): VxeComponentSizeType
125
+ $xeModal(): (VxeModalConstructor & VxeModalMethods) | null
126
+ $xeDrawer(): (VxeDrawerConstructor & VxeDrawerMethods) | null
127
+ $xeTable(): (VxeTableConstructor & VxeTablePrivateMethods) | null
128
+ $xeForm(): (VxeFormConstructor & VxeFormPrivateMethods) | null
129
+ formItemInfo(): VxeFormDefines.ProvideItemInfo | null
130
+ }),
131
+ computeFormReadonly () {
132
+ const $xeTableSelect = this
133
+ const props = $xeTableSelect
134
+ const $xeForm = $xeTableSelect.$xeForm
135
+
136
+ const { readonly } = props
137
+ if (readonly === null) {
138
+ if ($xeForm) {
139
+ return $xeForm.readonly
140
+ }
141
+ return false
142
+ }
143
+ return readonly
144
+ },
145
+ computeIsDisabled () {
146
+ const $xeTableSelect = this
147
+ const props = $xeTableSelect
148
+ const $xeForm = $xeTableSelect.$xeForm
149
+
150
+ const { disabled } = props
151
+ if (disabled === null) {
152
+ if ($xeForm) {
153
+ return $xeForm.disabled
154
+ }
155
+ return false
156
+ }
157
+ return disabled
158
+ },
159
+ computeBtnTransfer () {
160
+ const $xeTableSelect = this
161
+ const props = $xeTableSelect
162
+ const $xeForm = $xeTableSelect.$xeForm
163
+ const $xeTable = $xeTableSelect.$xeTable
164
+ const $xeModal = $xeTableSelect.$xeModal
165
+ const $xeDrawer = $xeTableSelect.$xeDrawer
166
+
167
+ const { transfer } = props
168
+ const popupOpts = $xeTableSelect.computePopupOpts as VxeTableSelectPropTypes.PopupConfig
169
+ if (XEUtils.isBoolean(popupOpts.transfer)) {
170
+ return popupOpts.transfer
171
+ }
172
+ if (transfer === null) {
173
+ const globalTransfer = getConfig().tableSelect.transfer
174
+ if (XEUtils.isBoolean(globalTransfer)) {
175
+ return globalTransfer
176
+ }
177
+ if ($xeTable || $xeModal || $xeDrawer || $xeForm) {
178
+ return true
179
+ }
180
+ }
181
+ return transfer
182
+ },
183
+ computePropsOpts () {
184
+ const $xeTableSelect = this
185
+ const props = $xeTableSelect
186
+
187
+ return props.optionProps || {} as VxeTableSelectPropTypes.OptionProps
188
+ },
189
+ computeRowOpts () {
190
+ const $xeTableSelect = this
191
+
192
+ const gridOpts = $xeTableSelect.computeGridOpts as VxeTableSelectPropTypes.GridConfig
193
+ return Object.assign({}, gridOpts.rowConfig, {
194
+ isCurrent: true
195
+ }) as VxeTablePropTypes.RowConfig
196
+ },
197
+ computeRowKeyField () {
198
+ const $xeTableSelect = this
199
+
200
+ const rowOpts = $xeTableSelect.computeRowOpts as VxeTablePropTypes.RowConfig
201
+ return rowOpts.keyField || '_X_ROW_KEY'
202
+ },
203
+ computeLabelField () {
204
+ const $xeTableSelect = this
205
+
206
+ const propsOpts = $xeTableSelect.computePropsOpts as VxeTableSelectPropTypes.OptionProps
207
+ return propsOpts.label || 'label'
208
+ },
209
+ computeValueField () {
210
+ const $xeTableSelect = this
211
+
212
+ const propsOpts = $xeTableSelect.computePropsOpts as VxeTableSelectPropTypes.OptionProps
213
+ return propsOpts.value || 'value'
214
+ },
215
+ computePopupOpts () {
216
+ const $xeTableSelect = this
217
+ const props = $xeTableSelect
218
+
219
+ return Object.assign({}, getConfig().tableSelect.popupConfig, props.popupConfig)
220
+ },
221
+ computeGridOpts () {
222
+ const $xeTableSelect = this
223
+ const props = $xeTableSelect
224
+
225
+ return Object.assign({}, getConfig().tableSelect.gridConfig, props.gridConfig, {
226
+ data: undefined
227
+ })
228
+ },
229
+ computeSelectGridOpts () {
230
+ const $xeTableSelect = this
231
+
232
+ const gridOpts = $xeTableSelect.computeGridOpts as VxeTableSelectPropTypes.GridConfig
233
+ const { pagerConfig, proxyConfig } = gridOpts
234
+ if (proxyConfig) {
235
+ const proxyAjax = proxyConfig.ajax
236
+ if (proxyAjax && proxyAjax.query) {
237
+ const newProxyConfig = XEUtils.clone(proxyConfig, true) as Required<VxeGridPropTypes.ProxyConfig>
238
+ const ajaxMethods = proxyAjax.query
239
+ if (ajaxMethods) {
240
+ const resConfigs = proxyConfig.response || proxyConfig.props || {}
241
+ Object.assign(newProxyConfig.ajax, {
242
+ query (params: VxeGridPropTypes.ProxyAjaxQueryParams, ...args: any[]) {
243
+ return Promise.resolve(ajaxMethods(params, ...args)).then(rest => {
244
+ let tableData = []
245
+ if (pagerConfig) {
246
+ const resultProp = resConfigs.result
247
+ tableData = (XEUtils.isFunction(resultProp) ? resultProp({ data: rest, $table: null as any, $grid: null, $gantt: null }) : XEUtils.get(rest, resultProp || 'result')) || []
248
+ } else {
249
+ const listProp = resConfigs.list
250
+ tableData = (listProp ? (XEUtils.isFunction(listProp) ? listProp({ data: rest, $table: null as any, $grid: null, $gantt: null }) : XEUtils.get(rest, listProp)) : rest) || []
251
+ }
252
+ $xeTableSelect.cacheDataMap(tableData || [])
253
+ return rest
254
+ })
255
+ }
256
+ })
257
+ }
258
+ return Object.assign({}, gridOpts, { proxyConfig: newProxyConfig })
259
+ }
260
+ }
261
+ return gridOpts
262
+ },
263
+ computeSelectLabel () {
264
+ const $xeTableSelect = this
265
+ const props = $xeTableSelect
266
+ const reactData = ($xeTableSelect as any).reactData as TableSelectReactData
267
+ const internalData = ($xeTableSelect as any).internalData as TableSelectInternalData
268
+
269
+ const { value, lazyOptions } = props
270
+ const { fullOptionList } = reactData
271
+ const { fullRowMaps } = internalData
272
+ const valueField = $xeTableSelect.computeValueField as string
273
+ const labelField = $xeTableSelect.computeLabelField as string
274
+ if (!fullOptionList) {
275
+ return ''
276
+ }
277
+ return (XEUtils.isArray(value) ? value : [value]).map(val => {
278
+ const cacheItem = fullRowMaps[val]
279
+ if (cacheItem) {
280
+ return cacheItem.item[labelField]
281
+ }
282
+ if (lazyOptions) {
283
+ const lazyItem = lazyOptions.find(item => item[valueField] === val)
284
+ if (lazyItem) {
285
+ return lazyItem[labelField]
286
+ }
287
+ }
288
+ return val
289
+ }).join(', ')
290
+ },
291
+ computePopupWrapperStyle () {
292
+ const $xeTableSelect = this
293
+
294
+ const popupOpts = $xeTableSelect.computePopupOpts
295
+ const { height, width } = popupOpts
296
+ const stys: VxeComponentStyleType = {}
297
+ if (width) {
298
+ stys.width = toCssUnit(width)
299
+ }
300
+ if (height) {
301
+ stys.height = toCssUnit(height)
302
+ }
303
+ return stys
304
+ }
305
+ },
306
+ methods: {
307
+ //
308
+ // Method
309
+ //
310
+ dispatchEvent (type: ValueOf<VxeTableSelectEmits>, params: Record<string, any>, evnt: Event | null) {
311
+ const $xeTableSelect = this
312
+ $xeTableSelect.$emit(type, createEvent(evnt, { $tableSelect: $xeTableSelect }, params))
313
+ },
314
+ emitModel (value: any) {
315
+ const $xeTableSelect = this
316
+
317
+ const { _events } = $xeTableSelect as any
318
+ if (_events && _events.modelValue) {
319
+ $xeTableSelect.$emit('modelValue', value)
320
+ } else {
321
+ $xeTableSelect.$emit('model-value', value)
322
+ }
323
+ },
324
+ getRowid (option: any) {
325
+ const $xeTableSelect = this
326
+
327
+ const nodeKeyField = $xeTableSelect.computeRowKeyField
328
+ const rowid = option[nodeKeyField]
329
+ return rowid ? encodeURIComponent(rowid) : ''
330
+ },
331
+ getRowsByValue (modelValue: VxeTableSelectPropTypes.ModelValue) {
332
+ const $xeTableSelect = this
333
+ const internalData = $xeTableSelect.internalData
334
+
335
+ const { fullRowMaps } = internalData
336
+ const rows: any[] = []
337
+ const vals = XEUtils.eqNull(modelValue) ? [] : (XEUtils.isArray(modelValue) ? modelValue : [modelValue])
338
+ vals.forEach(val => {
339
+ const cacheItem = fullRowMaps[val]
340
+ if (cacheItem) {
341
+ rows.push(cacheItem.item)
342
+ }
343
+ })
344
+ return rows
345
+ },
346
+ updateModel (modelValue: VxeTableSelectPropTypes.ModelValue) {
347
+ const $xeTableSelect = this
348
+ const props = $xeTableSelect
349
+
350
+ const { multiple } = props
351
+ $xeTableSelect.$nextTick(() => {
352
+ const $grid = $xeTableSelect.$refs.refGrid as VxeGridInstance
353
+ if ($grid) {
354
+ const selectList = $xeTableSelect.getRowsByValue(modelValue)
355
+ if (selectList.length) {
356
+ if (multiple) {
357
+ $grid.setCheckboxRow(selectList, true)
358
+ } else {
359
+ $grid.setRadioRow(selectList[0])
360
+ }
361
+ }
362
+ }
363
+ })
364
+ },
365
+ loadTableColumn (columns?: VxeTableSelectPropTypes.Columns) {
366
+ const $xeTableSelect = this
367
+ const props = $xeTableSelect
368
+ const reactData = $xeTableSelect.reactData
369
+
370
+ if (!columns || !columns.length) {
371
+ return
372
+ }
373
+ const { multiple } = props
374
+ const tableCols: VxeTableSelectPropTypes.Columns = []
375
+ let hasRadioCol = false
376
+ let hasCheckboxCol = false
377
+ columns.forEach(column => {
378
+ if (!hasRadioCol && column.type === 'radio') {
379
+ hasRadioCol = true
380
+ } else if (!hasCheckboxCol && column.type === 'checkbox') {
381
+ hasCheckboxCol = true
382
+ }
383
+ tableCols.push(column)
384
+ })
385
+ if (multiple) {
386
+ if (!hasCheckboxCol) {
387
+ tableCols.unshift({
388
+ type: 'checkbox',
389
+ width: 70
390
+ })
391
+ }
392
+ } else {
393
+ if (!hasRadioCol) {
394
+ tableCols.unshift({
395
+ type: 'radio',
396
+ width: 70
397
+ })
398
+ }
399
+ }
400
+ reactData.tableColumns = tableCols
401
+ },
402
+ cacheDataMap (dataList?: any[]) {
403
+ const $xeTableSelect = this
404
+ const props = $xeTableSelect
405
+ const reactData = $xeTableSelect.reactData
406
+ const internalData = $xeTableSelect.internalData
407
+
408
+ const { options } = props
409
+ const rowKeyField = $xeTableSelect.computeRowKeyField
410
+ const valueField = $xeTableSelect.computeValueField
411
+ const gridOpts = $xeTableSelect.computeGridOpts
412
+ const { treeConfig, pagerConfig } = gridOpts
413
+ const rowMaps: Record<string, {
414
+ item: any
415
+ index: number
416
+ items: any[]
417
+ parent: any
418
+ nodes: any[]
419
+ }> = {}
420
+ const keyMaps: Record<string, boolean> = {}
421
+ if (treeConfig) {
422
+ // x
423
+ } else {
424
+ XEUtils.arrayEach(dataList || options || [], (item, index, items) => {
425
+ let rowid = $xeTableSelect.getRowid(item)
426
+ if (!rowid) {
427
+ rowid = getRowUniqueId()
428
+ }
429
+ if (keyMaps[rowid]) {
430
+ errLog('vxe.error.repeatKey', [`[table-select] ${rowKeyField}`, rowid])
431
+ }
432
+ keyMaps[rowid] = true
433
+ const value = item[valueField]
434
+ if (rowMaps[value]) {
435
+ errLog('vxe.error.repeatKey', [`[table-select] ${valueField}`, value])
436
+ }
437
+ rowMaps[value] = { item, index, items, parent: null, nodes: [] }
438
+ })
439
+ }
440
+ reactData.fullOptionList = dataList || options || []
441
+ internalData.fullRowMaps = pagerConfig ? Object.assign({}, internalData.fullRowMaps, rowMaps) : rowMaps
442
+ $xeTableSelect.updateModel(props.value)
443
+ },
444
+ updateZindex () {
445
+ const $xeTableSelect = this
446
+ const props = $xeTableSelect
447
+ const reactData = $xeTableSelect.reactData
448
+
449
+ const popupOpts = $xeTableSelect.computePopupOpts
450
+ const customZIndex = popupOpts.zIndex || props.zIndex
451
+ if (customZIndex) {
452
+ reactData.panelIndex = XEUtils.toNumber(customZIndex)
453
+ } else if (reactData.panelIndex < getLastZIndex()) {
454
+ reactData.panelIndex = nextZIndex()
455
+ }
456
+ },
457
+ updatePlacement () {
458
+ const $xeTableSelect = this
459
+ const props = $xeTableSelect
460
+ const reactData = $xeTableSelect.reactData
461
+
462
+ const { placement } = props
463
+ const { panelIndex } = reactData
464
+ const targetElem = $xeTableSelect.$refs.refElem as HTMLElement
465
+ const panelElem = $xeTableSelect.$refs.refOptionPanel as HTMLDivElement
466
+ const btnTransfer = $xeTableSelect.computeBtnTransfer
467
+ const popupOpts = $xeTableSelect.computePopupOpts
468
+ const handleStyle = () => {
469
+ const ppObj = updatePanelPlacement(targetElem, panelElem, {
470
+ placement: popupOpts.placement || placement,
471
+ teleportTo: btnTransfer
472
+ })
473
+ const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
474
+ zIndex: panelIndex
475
+ })
476
+ reactData.panelStyle = panelStyle
477
+ reactData.panelPlacement = ppObj.placement
478
+ }
479
+ handleStyle()
480
+ return $xeTableSelect.$nextTick().then(handleStyle)
481
+ },
482
+ showOptionPanel () {
483
+ const $xeTableSelect = this
484
+ const props = $xeTableSelect
485
+ const reactData = $xeTableSelect.reactData
486
+ const internalData = $xeTableSelect.internalData
487
+
488
+ const { loading } = props
489
+ const isDisabled = $xeTableSelect.computeIsDisabled
490
+ if (!loading && !isDisabled) {
491
+ if (internalData.vpTimeout) {
492
+ clearTimeout(internalData.vpTimeout)
493
+ }
494
+ if (internalData.hpTimeout) {
495
+ clearTimeout(internalData.hpTimeout)
496
+ }
497
+ if (!reactData.initialized) {
498
+ reactData.initialized = true
499
+ const btnTransfer = $xeTableSelect.computeBtnTransfer
500
+ const panelElem = $xeTableSelect.$refs.refOptionPanel as HTMLElement
501
+ if (btnTransfer) {
502
+ if (panelElem) {
503
+ document.body.appendChild(panelElem)
504
+ }
505
+ }
506
+ }
507
+ reactData.isActivated = true
508
+ reactData.isAniVisible = true
509
+ internalData.vpTimeout = setTimeout(() => {
510
+ reactData.visiblePanel = true
511
+ $xeTableSelect.updateModel(props.value)
512
+ internalData.vpTimeout = undefined
513
+ $xeTableSelect.updatePlacement()
514
+ }, 10)
515
+ $xeTableSelect.updateZindex()
516
+ $xeTableSelect.updatePlacement()
517
+ }
518
+ },
519
+ hideOptionPanel () {
520
+ const $xeTableSelect = this
521
+ const reactData = $xeTableSelect.reactData
522
+ const internalData = $xeTableSelect.internalData
523
+
524
+ reactData.visiblePanel = false
525
+ internalData.hpTimeout = setTimeout(() => {
526
+ reactData.isAniVisible = false
527
+ }, 350)
528
+ },
529
+ changeEvent (evnt: Event, selectValue: any, row: any) {
530
+ const $xeTableSelect = this
531
+ const props = $xeTableSelect
532
+ const $xeForm = $xeTableSelect.$xeForm
533
+ const formItemInfo = $xeTableSelect.formItemInfo
534
+
535
+ $xeTableSelect.emitModel(selectValue)
536
+ if (selectValue !== props.value) {
537
+ $xeTableSelect.dispatchEvent('change', { value: selectValue, row, option: row }, evnt)
538
+ // 自动更新校验状态
539
+ if ($xeForm && formItemInfo) {
540
+ $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, selectValue)
541
+ }
542
+ }
543
+ },
544
+ clearValueEvent (evnt: Event, selectValue: any) {
545
+ const $xeTableSelect = this
546
+
547
+ $xeTableSelect.changeEvent(evnt, selectValue, null)
548
+ $xeTableSelect.dispatchEvent('clear', { value: selectValue }, evnt)
549
+ },
550
+ clearEvent (params: any, evnt: Event) {
551
+ const $xeTableSelect = this
552
+
553
+ $xeTableSelect.clearValueEvent(evnt, null)
554
+ $xeTableSelect.hideOptionPanel()
555
+ },
556
+ handleGlobalMousewheelEvent (evnt: MouseEvent) {
557
+ const $xeTableSelect = this
558
+ const reactData = $xeTableSelect.reactData
559
+
560
+ const { visiblePanel } = reactData
561
+ const isDisabled = $xeTableSelect.computeIsDisabled
562
+ if (!isDisabled) {
563
+ if (visiblePanel) {
564
+ const panelElem = $xeTableSelect.$refs.refOptionPanel as HTMLDivElement
565
+ if (getEventTargetNode(evnt, panelElem).flag) {
566
+ $xeTableSelect.updatePlacement()
567
+ } else {
568
+ $xeTableSelect.hideOptionPanel()
569
+ }
570
+ }
571
+ }
572
+ },
573
+ handleGlobalMousedownEvent (evnt: MouseEvent) {
574
+ const $xeTableSelect = this
575
+ const reactData = $xeTableSelect.reactData
576
+
577
+ const { visiblePanel } = reactData
578
+ const isDisabled = $xeTableSelect.computeIsDisabled
579
+ if (!isDisabled) {
580
+ const el = $xeTableSelect.$refs.refElem as HTMLDivElement
581
+ const panelElem = $xeTableSelect.$refs.refOptionPanel as HTMLDivElement
582
+ reactData.isActivated = getEventTargetNode(evnt, el).flag || getEventTargetNode(evnt, panelElem).flag
583
+ if (visiblePanel && !reactData.isActivated) {
584
+ $xeTableSelect.hideOptionPanel()
585
+ }
586
+ }
587
+ },
588
+ handleGlobalBlurEvent () {
589
+ const $xeTableSelect = this
590
+ const reactData = $xeTableSelect.reactData
591
+
592
+ const { visiblePanel, isActivated } = reactData
593
+ if (visiblePanel) {
594
+ $xeTableSelect.hideOptionPanel()
595
+ }
596
+ if (isActivated) {
597
+ reactData.isActivated = false
598
+ }
599
+ if (visiblePanel || isActivated) {
600
+ const $input = $xeTableSelect.$refs.refInput as VxeInputConstructor
601
+ if ($input) {
602
+ $input.blur()
603
+ }
604
+ }
605
+ },
606
+ handleGlobalResizeEvent () {
607
+ const $xeTableSelect = this
608
+ const reactData = $xeTableSelect.reactData
609
+
610
+ const { visiblePanel } = reactData
611
+ if (visiblePanel) {
612
+ $xeTableSelect.updatePlacement()
613
+ }
614
+ },
615
+ focusEvent (evnt: FocusEvent) {
616
+ const $xeTableSelect = this
617
+ const reactData = $xeTableSelect.reactData
618
+
619
+ const isDisabled = $xeTableSelect.computeIsDisabled
620
+ if (!isDisabled) {
621
+ if (!reactData.visiblePanel) {
622
+ reactData.triggerFocusPanel = true
623
+ $xeTableSelect.showOptionPanel()
624
+ setTimeout(() => {
625
+ reactData.triggerFocusPanel = false
626
+ }, 150)
627
+ }
628
+ }
629
+ $xeTableSelect.dispatchEvent('focus', {}, evnt)
630
+ },
631
+ clickEvent (evnt: MouseEvent) {
632
+ const $xeTableSelect = this
633
+
634
+ $xeTableSelect.togglePanelEvent(evnt)
635
+ $xeTableSelect.dispatchEvent('click', {}, evnt)
636
+ },
637
+ blurEvent (evnt: FocusEvent) {
638
+ const $xeTableSelect = this
639
+ const reactData = $xeTableSelect.reactData
640
+
641
+ reactData.isActivated = false
642
+ $xeTableSelect.dispatchEvent('blur', {}, evnt)
643
+ },
644
+ togglePanelEvent (params: any) {
645
+ const $xeTableSelect = this
646
+ const reactData = $xeTableSelect.reactData
647
+
648
+ const { $event } = params
649
+ $event.preventDefault()
650
+ if (reactData.triggerFocusPanel) {
651
+ reactData.triggerFocusPanel = false
652
+ } else {
653
+ if (reactData.visiblePanel) {
654
+ $xeTableSelect.hideOptionPanel()
655
+ } else {
656
+ $xeTableSelect.showOptionPanel()
657
+ }
658
+ }
659
+ },
660
+ radioChangeEvent (params: VxeGridDefines.RadioChangeEventParams) {
661
+ const $xeTableSelect = this
662
+
663
+ const { $event, row } = params
664
+ const valueField = $xeTableSelect.computeValueField
665
+ const value = row[valueField]
666
+ $xeTableSelect.changeEvent($event, value, row)
667
+ $xeTableSelect.hideOptionPanel()
668
+ },
669
+ checkboxChangeEvent (params: VxeGridDefines.CheckboxChangeEventParams) {
670
+ const $xeTableSelect = this
671
+
672
+ const { $grid, $event, row } = params
673
+ const valueField = $xeTableSelect.computeValueField
674
+ if ($grid) {
675
+ const checkboxRecords = $grid.getCheckboxRecords()
676
+ const value = checkboxRecords.map(row => {
677
+ return row[valueField]
678
+ })
679
+ $xeTableSelect.changeEvent($event, value, row)
680
+ }
681
+ },
682
+ checkboxAllEvent (params: VxeGridDefines.CheckboxAllEventParams) {
683
+ const $xeTableSelect = this
684
+
685
+ $xeTableSelect.checkboxChangeEvent(params)
686
+ },
687
+
688
+ //
689
+ // Render
690
+ //
691
+ renderVN (h: CreateElement): VNode {
692
+ const VxeTableGridComponent = VxeUI.getComponent('vxe-grid')
693
+
694
+ const $xeTableSelect = this
695
+ const props = $xeTableSelect
696
+ const slots = $xeTableSelect.$scopedSlots
697
+ const reactData = $xeTableSelect.reactData
698
+
699
+ const { className, options, loading } = props
700
+ const { initialized, isActivated, isAniVisible, visiblePanel, tableColumns } = reactData
701
+ const vSize = $xeTableSelect.computeSize
702
+ const isDisabled = $xeTableSelect.computeIsDisabled
703
+ const selectLabel = $xeTableSelect.computeSelectLabel
704
+ const btnTransfer = $xeTableSelect.computeBtnTransfer
705
+ const formReadonly = $xeTableSelect.computeFormReadonly
706
+ const popupOpts = $xeTableSelect.computePopupOpts
707
+ const selectGridOpts = $xeTableSelect.computeSelectGridOpts
708
+ const rowOpts = $xeTableSelect.computeRowOpts
709
+ const popupWrapperStyle = $xeTableSelect.computePopupWrapperStyle
710
+ const headerSlot = slots.header
711
+ const footerSlot = slots.footer
712
+ const prefixSlot = slots.prefix
713
+ const ppClassName = popupOpts.className
714
+
715
+ if (formReadonly) {
716
+ return h('div', {
717
+ ref: 'refElem',
718
+ class: ['vxe-table-select--readonly', className]
719
+ }, [
720
+ h('span', {
721
+ class: 'vxe-table-select-label'
722
+ }, selectLabel)
723
+ ])
724
+ }
725
+ return h('div', {
726
+ ref: 'refElem',
727
+ class: ['vxe-table-select', className ? (XEUtils.isFunction(className) ? className({ $tableSelect: $xeTableSelect }) : className) : '', {
728
+ [`size--${vSize}`]: vSize,
729
+ 'is--visible': visiblePanel,
730
+ 'is--disabled': isDisabled,
731
+ 'is--loading': loading,
732
+ 'is--active': isActivated
733
+ }]
734
+ }, [
735
+ h(VxeInputComponent, {
736
+ ref: 'refInput',
737
+ props: {
738
+ clearable: props.clearable,
739
+ placeholder: props.placeholder,
740
+ editable: false,
741
+ disabled: isDisabled,
742
+ type: 'text',
743
+ prefixIcon: props.prefixIcon,
744
+ suffixIcon: loading ? getIcon().TABLE_SELECT_LOADED : (visiblePanel ? getIcon().TABLE_SELECT_OPEN : getIcon().TABLE_SELECT_CLOSE),
745
+ value: loading ? getI18n('vxe.select.loadingText') : selectLabel
746
+ },
747
+ on: {
748
+ clear: $xeTableSelect.clearEvent,
749
+ click: $xeTableSelect.clickEvent,
750
+ focus: $xeTableSelect.focusEvent,
751
+ blur: $xeTableSelect.blurEvent,
752
+ 'suffix-click': $xeTableSelect.togglePanelEvent
753
+ },
754
+ scopedSlots: prefixSlot
755
+ ? {
756
+ prefix: () => prefixSlot({})
757
+ }
758
+ : {}
759
+ }),
760
+ h('div', {
761
+ ref: 'refOptionPanel',
762
+ class: ['vxe-table--ignore-clear vxe-table-select--panel', ppClassName ? (XEUtils.isFunction(ppClassName) ? ppClassName({ $tableSelect: $xeTableSelect }) : ppClassName) : '', {
763
+ [`size--${vSize}`]: vSize,
764
+ 'is--transfer': btnTransfer,
765
+ 'ani--leave': !loading && isAniVisible,
766
+ 'ani--enter': !loading && visiblePanel
767
+ }],
768
+ attrs: {
769
+ placement: reactData.panelPlacement
770
+ },
771
+ style: reactData.panelStyle
772
+ }, initialized
773
+ ? [
774
+ h('div', {
775
+ class: 'vxe-table-select--panel-wrapper'
776
+ }, [
777
+ headerSlot
778
+ ? h('div', {
779
+ class: 'vxe-table-select--panel-header'
780
+ }, headerSlot({}))
781
+ : renderEmptyElement($xeTableSelect),
782
+ h('div', {
783
+ class: 'vxe-table-select--panel-body'
784
+ }, [
785
+ h('div', {
786
+ ref: 'refGridWrapper',
787
+ class: 'vxe-table-select-grid--wrapper',
788
+ style: popupWrapperStyle
789
+ }, [
790
+ VxeTableGridComponent
791
+ ? h(VxeTableGridComponent, {
792
+ ref: 'refGrid',
793
+ class: 'vxe-table-select--grid',
794
+ props: {
795
+ ...selectGridOpts,
796
+ rowConfig: rowOpts,
797
+ data: options,
798
+ columns: tableColumns.length ? tableColumns : selectGridOpts.columns,
799
+ height: '100%',
800
+ autoResize: true
801
+ },
802
+ on: {
803
+ ...$xeTableSelect.gridEvents,
804
+ 'radio-change': $xeTableSelect.radioChangeEvent,
805
+ 'checkbox-change': $xeTableSelect.checkboxChangeEvent,
806
+ 'checkbox-all': $xeTableSelect.checkboxAllEvent
807
+ },
808
+ scopedSlots: Object.assign({}, slots, {
809
+ header: undefined,
810
+ footer: undefined,
811
+ prefixSlot: undefined
812
+ })
813
+ })
814
+ : renderEmptyElement($xeTableSelect)
815
+ ])
816
+ ]),
817
+ footerSlot
818
+ ? h('div', {
819
+ class: 'vxe-table-select--panel-footer'
820
+ }, footerSlot({}))
821
+ : renderEmptyElement($xeTableSelect)
822
+ ])
823
+ ]
824
+ : [])
825
+ ])
826
+ }
827
+ },
828
+ watch: {
829
+ options () {
830
+ const $xeTableSelect = this
831
+
832
+ $xeTableSelect.cacheDataMap()
833
+ },
834
+ columns (val) {
835
+ const $xeTableSelect = this
836
+
837
+ $xeTableSelect.loadTableColumn(val)
838
+ },
839
+ value (val) {
840
+ const $xeTableSelect = this
841
+
842
+ $xeTableSelect.updateModel(val)
843
+ }
844
+ },
845
+ created () {
846
+ const $xeTableSelect = this
847
+ const props = $xeTableSelect
848
+
849
+ const gridEventKeys: ValueOf<VxeTableSelectEmits>[] = [
850
+ 'form-submit',
851
+ 'form-reset',
852
+ 'form-collapse',
853
+ 'page-change'
854
+ ]
855
+ const { gridEvents } = $xeTableSelect
856
+ gridEventKeys.forEach(name => {
857
+ gridEvents[getOnName(name)] = (params: any) => {
858
+ $xeTableSelect.dispatchEvent(name, params, params.$event)
859
+ }
860
+ })
861
+
862
+ $xeTableSelect.loadTableColumn(props.columns)
863
+ $xeTableSelect.cacheDataMap()
864
+ },
865
+ mounted () {
866
+ const $xeTableSelect = this
867
+ const props = $xeTableSelect
868
+ const reactData = $xeTableSelect.reactData
869
+
870
+ const VxeTableGridComponent = VxeUI.getComponent('vxe-grid')
871
+ $xeTableSelect.$nextTick(() => {
872
+ if (!VxeTableGridComponent) {
873
+ errLog('vxe.error.reqComp', ['[table-select] vxe-grid'])
874
+ }
875
+ })
876
+
877
+ const { gridConfig } = props
878
+ if (gridConfig && gridConfig.proxyConfig) {
879
+ if (gridConfig.proxyConfig.autoLoad !== false) {
880
+ reactData.initialized = true
881
+ }
882
+ }
883
+ globalEvents.on($xeTableSelect, 'mousewheel', $xeTableSelect.handleGlobalMousewheelEvent)
884
+ globalEvents.on($xeTableSelect, 'mousedown', $xeTableSelect.handleGlobalMousedownEvent)
885
+ globalEvents.on($xeTableSelect, 'blur', $xeTableSelect.handleGlobalBlurEvent)
886
+ globalEvents.on($xeTableSelect, 'resize', $xeTableSelect.handleGlobalResizeEvent)
887
+ },
888
+ beforeDestroy () {
889
+ const $xeTableSelect = this
890
+
891
+ const panelElem = $xeTableSelect.$refs.refOptionPanel as HTMLElement | undefined
892
+ if (panelElem && panelElem.parentNode) {
893
+ panelElem.parentNode.removeChild(panelElem)
894
+ }
895
+ globalEvents.off($xeTableSelect, 'mousewheel')
896
+ globalEvents.off($xeTableSelect, 'mousedown')
897
+ globalEvents.off($xeTableSelect, 'blur')
898
+ globalEvents.off($xeTableSelect, 'resize')
899
+ },
900
+ render (this: any, h) {
901
+ return this.renderVN(h)
902
+ }
903
+ }) /* define-vxe-component end */