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,1466 +1,1466 @@
1
- import { PropType, CreateElement } from 'vue'
2
- import { defineVxeComponent } from '../../ui/src/comp'
3
- import XEUtils from 'xe-utils'
4
- import { getConfig, getIcon, getI18n, commands, globalEvents, createEvent, GLOBAL_EVENT_KEYS, globalMixins, renderEmptyElement } from '../../ui'
5
- import { getFuncText, getLastZIndex, nextZIndex, isEnableConf } from '../../ui/src/utils'
6
- import { updatePanelPlacement, getEventTargetNode } from '../../ui/src/dom'
7
- import { parseDateString, parseDateObj, getRangeDateByCode, handleValueFormat } from '../../date-panel/src/util'
8
- import { getSlotVNs } from '../../ui/src/vn'
9
- import { errLog } from '../../ui/src/log'
10
- import VxeDatePanelComponent from '../../date-panel/src/date-panel'
11
- import VxeButtonComponent from '../../button/src/button'
12
- import VxeButtonGroupComponent from '../../button/src/button-group'
13
-
14
- import type { VxeDateRangePickerConstructor, VxeDateRangePickerEmits, DateRangePickerReactData, DateRangePickerInternalData, VxeButtonGroupDefines, VxeComponentSizeType, VxeDateRangePickerPropTypes, VxeFormConstructor, VxeFormPrivateMethods, VxeFormDefines, ValueOf, VxeModalConstructor, VxeDrawerConstructor, VxeModalMethods, VxeDrawerMethods, VxeDateRangePickerDefines, VxeDatePanelConstructor } from '../../../types'
15
- import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types/components/table'
16
-
17
- export default /* define-vxe-component start */ defineVxeComponent({
18
- name: 'VxeDateRangePicker',
19
- mixins: [
20
- globalMixins.sizeMixin
21
- ],
22
- model: {
23
- prop: 'value',
24
- event: 'modelValue'
25
- },
26
- props: {
27
- value: [String, Number, Date, Array] as PropType<VxeDateRangePickerPropTypes.ModelValue>,
28
- startValue: [String, Number, Date] as PropType<VxeDateRangePickerPropTypes.StartValue>,
29
- endValue: [String, Number, Date] as PropType<VxeDateRangePickerPropTypes.EndValue>,
30
- immediate: {
31
- type: Boolean as PropType<VxeDateRangePickerPropTypes.Immediate>,
32
- default: true
33
- },
34
- name: String as PropType<VxeDateRangePickerPropTypes.Name>,
35
- type: {
36
- type: String as PropType<VxeDateRangePickerPropTypes.Type>,
37
- default: 'date' as VxeDateRangePickerPropTypes.Type
38
- },
39
- clearable: {
40
- type: Boolean as PropType<VxeDateRangePickerPropTypes.Clearable>,
41
- default: () => getConfig().dateRangePicker.clearable
42
- },
43
- readonly: {
44
- type: Boolean as PropType<VxeDateRangePickerPropTypes.Readonly>,
45
- default: null
46
- },
47
- disabled: {
48
- type: Boolean as PropType<VxeDateRangePickerPropTypes.Disabled>,
49
- default: null
50
- },
51
- placeholder: String as PropType<VxeDateRangePickerPropTypes.Placeholder>,
52
- autoComplete: {
53
- type: String as PropType<VxeDateRangePickerPropTypes.AutoComplete>,
54
- default: 'off'
55
- },
56
- form: String as PropType<VxeDateRangePickerPropTypes.Form>,
57
- className: String as PropType<VxeDateRangePickerPropTypes.ClassName>,
58
- zIndex: Number as PropType<VxeDateRangePickerPropTypes.ZIndex>,
59
- size: {
60
- type: String as PropType<VxeDateRangePickerPropTypes.Size>,
61
- default: () => getConfig().dateRangePicker.size || getConfig().size
62
- },
63
-
64
- // startDate: {
65
- // type: [String, Number, Date] as PropType<VxeDateRangePickerPropTypes.StartDate>,
66
- // default: () => getConfig().dateRangePicker.startDate
67
- // },
68
- // endDate: {
69
- // type: [String, Number, Date] as PropType<VxeDateRangePickerPropTypes.EndDate>,
70
- // default: () => getConfig().dateRangePicker.endDate
71
- // },
72
- minDate: [String, Number, Date] as PropType<VxeDateRangePickerPropTypes.MinDate>,
73
- maxDate: [String, Number, Date] as PropType<VxeDateRangePickerPropTypes.MaxDate>,
74
- defaultDate: [String, Number, Date, Array] as PropType<VxeDateRangePickerPropTypes.DefaultDate>,
75
- defaultTime: [String, Number, Date, Array] as PropType<VxeDateRangePickerPropTypes.DefaultTime>,
76
- startDay: {
77
- type: [String, Number] as PropType<VxeDateRangePickerPropTypes.StartDay>,
78
- default: () => getConfig().dateRangePicker.startDay
79
- },
80
- labelFormat: String as PropType<VxeDateRangePickerPropTypes.LabelFormat>,
81
- valueFormat: String as PropType<VxeDateRangePickerPropTypes.ValueFormat>,
82
- timeFormat: String as PropType<VxeDateRangePickerPropTypes.TimeFormat>,
83
- valueType: String as PropType<VxeDateRangePickerPropTypes.ValueType>,
84
- editable: {
85
- type: Boolean as PropType<VxeDateRangePickerPropTypes.Editable>,
86
- default: true
87
- },
88
- festivalMethod: {
89
- type: Function as PropType<VxeDateRangePickerPropTypes.FestivalMethod>,
90
- default: () => getConfig().dateRangePicker.festivalMethod
91
- },
92
- disabledMethod: {
93
- type: Function as PropType<VxeDateRangePickerPropTypes.DisabledMethod>,
94
- default: () => getConfig().dateRangePicker.disabledMethod
95
- },
96
- separator: {
97
- type: [String, Number] as PropType<VxeDateRangePickerPropTypes.Separator>,
98
- default: () => getConfig().dateRangePicker.separator
99
- },
100
-
101
- // week
102
- selectDay: {
103
- type: [String, Number] as PropType<VxeDateRangePickerPropTypes.SelectDay>,
104
- default: () => getConfig().dateRangePicker.selectDay
105
- },
106
- showClearButton: {
107
- type: Boolean as PropType<VxeDateRangePickerPropTypes.ShowClearButton>,
108
- default: () => getConfig().dateRangePicker.showClearButton
109
- },
110
- showConfirmButton: {
111
- type: Boolean as PropType<VxeDateRangePickerPropTypes.ShowConfirmButton>,
112
- default: () => getConfig().dateRangePicker.showConfirmButton
113
- },
114
- autoClose: {
115
- type: Boolean as PropType<VxeDateRangePickerPropTypes.AutoClose>,
116
- default: () => getConfig().dateRangePicker.autoClose
117
- },
118
-
119
- prefixIcon: String as PropType<VxeDateRangePickerPropTypes.PrefixIcon>,
120
- suffixIcon: String as PropType<VxeDateRangePickerPropTypes.SuffixIcon>,
121
- placement: String as PropType<VxeDateRangePickerPropTypes.Placement>,
122
- transfer: {
123
- type: Boolean as PropType<VxeDateRangePickerPropTypes.Transfer>,
124
- default: null
125
- },
126
-
127
- timeConfig: Object as PropType<VxeDateRangePickerPropTypes.TimeConfig>,
128
- popupConfig: Object as PropType<VxeDateRangePickerPropTypes.PopupConfig>,
129
- shortcutConfig: Object as PropType<VxeDateRangePickerPropTypes.ShortcutConfig>
130
- },
131
- inject: {
132
- $xeModal: {
133
- default: null
134
- },
135
- $xeDrawer: {
136
- default: null
137
- },
138
- $xeTable: {
139
- default: null
140
- },
141
- $xeForm: {
142
- default: null
143
- },
144
- formItemInfo: {
145
- from: 'xeFormItemInfo',
146
- default: null
147
- }
148
- },
149
- provide () {
150
- const $xeDateRangePicker = this
151
-
152
- return {
153
- $xeDateRangePicker
154
- }
155
- },
156
- data () {
157
- const xID = XEUtils.uniqueId()
158
-
159
- const reactData: DateRangePickerReactData = {
160
- initialized: false,
161
- panelIndex: 0,
162
- visiblePanel: false,
163
- isAniVisible: false,
164
- panelStyle: {},
165
- panelPlacement: '',
166
- isActivated: false,
167
- startValue: '',
168
- endValue: ''
169
- }
170
-
171
- const internalData: DateRangePickerInternalData = {
172
- // selectStatus: false
173
- // hpTimeout: undefined
174
- }
175
-
176
- return {
177
- xID,
178
- reactData,
179
- internalData
180
- }
181
- },
182
- computed: {
183
- ...({} as {
184
- computeSize(): VxeComponentSizeType
185
- $xeModal(): (VxeModalConstructor & VxeModalMethods) | null
186
- $xeDrawer(): (VxeDrawerConstructor & VxeDrawerMethods) | null
187
- $xeTable(): (VxeTableConstructor & VxeTablePrivateMethods) | null
188
- $xeForm(): (VxeFormConstructor & VxeFormPrivateMethods) | null
189
- formItemInfo(): VxeFormDefines.ProvideItemInfo | null
190
- }),
191
- computeBtnTransfer () {
192
- const $xeDateRangePicker = this
193
- const props = $xeDateRangePicker
194
- const $xeTable = $xeDateRangePicker.$xeTable
195
- const $xeModal = $xeDateRangePicker.$xeModal
196
- const $xeDrawer = $xeDateRangePicker.$xeDrawer
197
- const $xeForm = $xeDateRangePicker.$xeForm
198
-
199
- const { transfer } = props
200
- const popupOpts = $xeDateRangePicker.computePopupOpts as VxeDateRangePickerPropTypes.PopupConfig
201
- if (XEUtils.isBoolean(popupOpts.transfer)) {
202
- return popupOpts.transfer
203
- }
204
- if (transfer === null) {
205
- const globalTransfer = getConfig().dateRangePicker.transfer
206
- if (XEUtils.isBoolean(globalTransfer)) {
207
- return globalTransfer
208
- }
209
- if ($xeTable || $xeModal || $xeDrawer || $xeForm) {
210
- return true
211
- }
212
- }
213
- return transfer
214
- },
215
- computeFormReadonly () {
216
- const $xeDateRangePicker = this
217
- const props = $xeDateRangePicker
218
- const $xeForm = $xeDateRangePicker.$xeForm
219
-
220
- const { readonly } = props
221
- if (readonly === null) {
222
- if ($xeForm) {
223
- return $xeForm.readonly
224
- }
225
- return false
226
- }
227
- return readonly
228
- },
229
- computeIsDisabled () {
230
- const $xeDateRangePicker = this
231
- const props = $xeDateRangePicker
232
- const $xeForm = $xeDateRangePicker.$xeForm
233
-
234
- const { disabled } = props
235
- if (disabled === null) {
236
- if ($xeForm) {
237
- return $xeForm.disabled
238
- }
239
- return false
240
- }
241
- return disabled
242
- },
243
- computeDefaultDates () {
244
- const $xeDateRangePicker = this
245
- const props = $xeDateRangePicker
246
-
247
- const { defaultDate } = props
248
- if (defaultDate) {
249
- if (XEUtils.isArray(defaultDate)) {
250
- return defaultDate
251
- }
252
- if (`${defaultDate}`.indexOf(',') > -1) {
253
- return `${defaultDate}`.split(',')
254
- }
255
- return [defaultDate, defaultDate]
256
- }
257
- return []
258
- },
259
- computeDefaultTimes () {
260
- const $xeDateRangePicker = this
261
- const props = $xeDateRangePicker
262
-
263
- const { defaultTime } = props
264
- if (defaultTime) {
265
- if (XEUtils.isArray(defaultTime)) {
266
- return defaultTime
267
- }
268
- if (`${defaultTime}`.indexOf(',') > -1) {
269
- return `${defaultTime}`.split(',')
270
- }
271
- return [defaultTime, defaultTime]
272
- }
273
- return []
274
- },
275
- computeMVal () {
276
- const $xeDateRangePicker = this
277
- const props = $xeDateRangePicker
278
-
279
- const { startValue, endValue } = props
280
- return `${startValue || ''}${endValue || ''}`
281
- },
282
- computeIsDateTimeType () {
283
- const $xeDateRangePicker = this
284
- const props = $xeDateRangePicker
285
-
286
- const { type } = props
287
- return type === 'time' || type === 'datetime'
288
- },
289
- computeIsDatePickerType () {
290
- const $xeDateRangePicker = this
291
- const props = $xeDateRangePicker
292
-
293
- return ['date', 'week', 'month', 'quarter', 'year'].indexOf(props.type) > -1
294
- },
295
- computeIsClearable () {
296
- const $xeDateRangePicker = this
297
- const props = $xeDateRangePicker
298
-
299
- return props.clearable
300
- },
301
- computeInpPlaceholder () {
302
- const $xeDateRangePicker = this
303
- const props = $xeDateRangePicker
304
-
305
- const { placeholder } = props
306
- if (placeholder) {
307
- return getFuncText(placeholder)
308
- }
309
- const globalPlaceholder = getConfig().dateRangePicker.placeholder
310
- if (globalPlaceholder) {
311
- return getFuncText(globalPlaceholder)
312
- }
313
- return getI18n('vxe.dateRangePicker.pleaseRange')
314
- },
315
- computeInpImmediate () {
316
- const $xeDateRangePicker = this
317
- const props = $xeDateRangePicker
318
-
319
- const { immediate } = props
320
- return immediate
321
- },
322
- computeTimeOpts () {
323
- const $xeDatePicker = this
324
- const props = $xeDatePicker
325
-
326
- return Object.assign({}, getConfig().dateRangePicker.timeConfig, props.timeConfig)
327
- },
328
- computePopupOpts () {
329
- const $xeDateRangePicker = this
330
- const props = $xeDateRangePicker
331
-
332
- return Object.assign({}, getConfig().dateRangePicker.popupConfig, props.popupConfig)
333
- },
334
- computeShortcutOpts () {
335
- const $xeDateRangePicker = this
336
- const props = $xeDateRangePicker
337
-
338
- return Object.assign({}, getConfig().dateRangePicker.shortcutConfig, props.shortcutConfig)
339
- },
340
- computeShortcutList () {
341
- const $xeDateRangePicker = this
342
-
343
- const shortcutOpts = $xeDateRangePicker.computeShortcutOpts as VxeDateRangePickerPropTypes.ShortcutConfig
344
- const { options } = shortcutOpts
345
- if (options) {
346
- return options.map((option, index) => {
347
- return Object.assign({
348
- name: `${option.name || option.code || index}`
349
- }, option)
350
- })
351
- }
352
- return []
353
- },
354
- computeDateLabelFormat () {
355
- const $xeDateRangePicker = this
356
- const props = $xeDateRangePicker
357
-
358
- const { labelFormat } = props
359
- return labelFormat || getI18n(`vxe.input.date.labelFormat.${props.type}`)
360
- },
361
- computeDateValueFormat () {
362
- const $xeDateRangePicker = this
363
- const props = $xeDateRangePicker
364
-
365
- const { type, valueFormat } = props
366
- return handleValueFormat(type, valueFormat)
367
- },
368
- computeFirstDayOfWeek () {
369
- const $xeDateRangePicker = this
370
- const props = $xeDateRangePicker
371
-
372
- const { startDay } = props
373
- return XEUtils.toNumber(startDay) as VxeDateRangePickerPropTypes.StartDay
374
- },
375
- computePanelLabelObj () {
376
- const $xeDateRangePicker = this as VxeDateRangePickerConstructor
377
- const reactData = $xeDateRangePicker.reactData
378
-
379
- const { startValue, endValue } = reactData
380
- const vals: string[] = startValue || endValue ? [startValue || '', endValue || ''] : []
381
- return ($xeDateRangePicker as any).formatRangeLabel(vals) as {
382
- label: string;
383
- startLabel: string;
384
- endLabel: string;
385
- }
386
- },
387
- computeInputLabel () {
388
- const $xeDateRangePicker = this
389
-
390
- const panelLabelObj = $xeDateRangePicker.computePanelLabelObj as {
391
- label: string;
392
- startLabel: string;
393
- endLabel: string;
394
- }
395
- return panelLabelObj.label
396
- }
397
- },
398
- methods: {
399
- //
400
- // Method
401
- //
402
- dispatchEvent (type: ValueOf<VxeDateRangePickerEmits>, params: Record<string, any>, evnt: Event | null) {
403
- const $xeDateRangePicker = this
404
- $xeDateRangePicker.$emit(type, createEvent(evnt, { $dateRangePicker: $xeDateRangePicker }, params))
405
- },
406
- emitModel (value: any) {
407
- const $xeDateRangePicker = this
408
-
409
- const { _events } = $xeDateRangePicker as any
410
- if (_events && _events.modelValue) {
411
- $xeDateRangePicker.$emit('modelValue', value)
412
- } else {
413
- $xeDateRangePicker.$emit('model-value', value)
414
- }
415
- },
416
- formatRangeLabel (vals: string[]) {
417
- const $xeDateRangePicker = this
418
- const props = $xeDateRangePicker
419
-
420
- const { type, separator } = props
421
- const dateLabelFormat = $xeDateRangePicker.computeDateLabelFormat
422
- const dateValueFormat = $xeDateRangePicker.computeDateValueFormat
423
- const firstDayOfWeek = $xeDateRangePicker.computeFirstDayOfWeek
424
- const startRest = vals[0]
425
- ? parseDateObj(vals[0], type, {
426
- valueFormat: dateValueFormat,
427
- labelFormat: dateLabelFormat,
428
- firstDay: firstDayOfWeek
429
- })
430
- : null
431
- const endRest = vals[1]
432
- ? parseDateObj(vals[1], type, {
433
- valueFormat: dateValueFormat,
434
- labelFormat: dateLabelFormat,
435
- firstDay: firstDayOfWeek
436
- })
437
- : null
438
- const startLabel = startRest ? startRest.label : ''
439
- const endLabel = endRest ? endRest.label : ''
440
- return {
441
- label: (startLabel || endLabel ? [startLabel, endLabel] : []).join(`${separator || ' ~ '}`),
442
- startLabel,
443
- endLabel
444
- }
445
- },
446
- getRangeValue (sValue: string, eValue: string) {
447
- const $xeDateRangePicker = this
448
- const props = $xeDateRangePicker
449
-
450
- const { value: modelValue, valueType } = props
451
- let isArr = XEUtils.isArray(modelValue)
452
- if (valueType) {
453
- switch (valueType) {
454
- case 'array':
455
- isArr = true
456
- break
457
- case 'string':
458
- isArr = false
459
- break
460
- }
461
- }
462
- if (sValue || eValue) {
463
- const rest = [sValue || '', eValue || '']
464
- if (isArr) {
465
- return rest
466
- }
467
- return rest.join(',')
468
- }
469
- return isArr ? [] : ''
470
- },
471
- paraeUpdateModel () {
472
- const $xeDateRangePicker = this
473
- const props = $xeDateRangePicker
474
-
475
- const { type, value: modelValue } = props
476
- const dateValueFormat = $xeDateRangePicker.computeDateValueFormat
477
- let sValue: string | Date | null = ''
478
- let eValue: string | Date | null = ''
479
- if (XEUtils.isArray(modelValue)) {
480
- const date1 = parseDateString(modelValue[0], type, { valueFormat: dateValueFormat })
481
- const date2 = parseDateString(modelValue[1], type, { valueFormat: dateValueFormat })
482
- if (date1 || date2) {
483
- sValue = date1 || ''
484
- eValue = date2 || ''
485
- }
486
- } else if (XEUtils.isString(modelValue)) {
487
- const strArr = modelValue.split(',')
488
- if (strArr[0] || strArr[1]) {
489
- sValue = strArr[0] || ''
490
- eValue = strArr[1] || ''
491
- }
492
- }
493
- return {
494
- sValue,
495
- eValue
496
- }
497
- },
498
- parseUpdateData () {
499
- const $xeDateRangePicker = this
500
- const props = $xeDateRangePicker
501
-
502
- const { type, startValue, endValue } = props
503
- const dateValueFormat = $xeDateRangePicker.computeDateValueFormat
504
- let sValue: string | Date | null = ''
505
- let eValue: string | Date | null = ''
506
- sValue = parseDateString(startValue, type, { valueFormat: dateValueFormat })
507
- eValue = parseDateString(endValue, type, { valueFormat: dateValueFormat })
508
- return {
509
- sValue,
510
- eValue
511
- }
512
- },
513
- updateModelValue (isModel: boolean) {
514
- const $xeDateRangePicker = this
515
- const props = $xeDateRangePicker
516
- const reactData = $xeDateRangePicker.reactData
517
-
518
- const { value: modelValue, startValue, endValue } = props
519
- let restObj: {
520
- sValue: string | Date | null
521
- eValue: string | Date | null
522
- } = {
523
- sValue: '',
524
- eValue: ''
525
- }
526
- if (isModel) {
527
- if (modelValue) {
528
- restObj = $xeDateRangePicker.paraeUpdateModel()
529
- } else {
530
- restObj = $xeDateRangePicker.parseUpdateData()
531
- }
532
- } else {
533
- if (startValue || endValue) {
534
- restObj = $xeDateRangePicker.parseUpdateData()
535
- } else {
536
- restObj = $xeDateRangePicker.paraeUpdateModel()
537
- }
538
- }
539
- reactData.startValue = restObj.sValue
540
- reactData.endValue = restObj.eValue
541
- },
542
- triggerEvent (evnt: Event & { type: 'input' | 'change' | 'keydown' | 'keyup' | 'click' | 'focus' | 'blur' }) {
543
- const $xeDateRangePicker = this
544
- const reactData = $xeDateRangePicker.reactData
545
-
546
- const { startValue, endValue } = reactData
547
- const value = $xeDateRangePicker.getRangeValue(startValue, endValue)
548
- $xeDateRangePicker.dispatchEvent(evnt.type, { value, startValue, endValue }, evnt)
549
- },
550
- handleChange (sValue: string, eValue: string, evnt: Event | { type: string }) {
551
- const $xeDateRangePicker = this
552
- const props = $xeDateRangePicker
553
- const reactData = $xeDateRangePicker.reactData
554
- const $xeForm = $xeDateRangePicker.$xeForm
555
- const formItemInfo = $xeDateRangePicker.formItemInfo
556
-
557
- const { value: modelValue } = props
558
- reactData.startValue = sValue
559
- reactData.endValue = eValue
560
- const value = $xeDateRangePicker.getRangeValue(sValue, eValue)
561
- const isFinish = (sValue && eValue) || (!sValue && !eValue)
562
- $xeDateRangePicker.emitModel(value)
563
- $xeDateRangePicker.$emit('update:startValue', sValue || '')
564
- $xeDateRangePicker.$emit('update:endValue', eValue || '')
565
- if (XEUtils.toValueString(modelValue) !== value) {
566
- $xeDateRangePicker.dispatchEvent('change', { value, startValue: sValue, endValue: eValue, isFinish }, evnt as any)
567
- // 自动更新校验状态
568
- if ($xeForm && formItemInfo) {
569
- $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value)
570
- }
571
- }
572
- },
573
- changeEvent (evnt: Event & { type: 'change' }) {
574
- const $xeDateRangePicker = this
575
-
576
- const inpImmediate = $xeDateRangePicker.computeInpImmediate
577
- if (!inpImmediate) {
578
- $xeDateRangePicker.triggerEvent(evnt)
579
- }
580
- },
581
- focusEvent (evnt: Event & { type: 'focus' }) {
582
- const $xeDateRangePicker = this
583
- const reactData = $xeDateRangePicker.reactData
584
-
585
- reactData.isActivated = true
586
- $xeDateRangePicker.dateRangePickerOpenEvent(evnt)
587
- $xeDateRangePicker.triggerEvent(evnt)
588
- },
589
- clickPrefixEvent (evnt: Event) {
590
- const $xeDateRangePicker = this
591
- const reactData = $xeDateRangePicker.reactData
592
-
593
- const isDisabled = $xeDateRangePicker.computeIsDisabled
594
- if (!isDisabled) {
595
- const { startValue, endValue } = reactData
596
- const value = $xeDateRangePicker.getRangeValue(startValue, endValue)
597
- $xeDateRangePicker.dispatchEvent('prefix-click', { value, startValue, endValue }, evnt)
598
- }
599
- },
600
- hidePanel () {
601
- const $xeDateRangePicker = this
602
- const reactData = $xeDateRangePicker.reactData
603
- const internalData = $xeDateRangePicker.internalData
604
-
605
- return new Promise<void>(resolve => {
606
- reactData.visiblePanel = false
607
- internalData.hpTimeout = setTimeout(() => {
608
- reactData.isAniVisible = false
609
- resolve()
610
- }, 350)
611
- })
612
- },
613
- clearValueEvent (evnt: Event, value: VxeDateRangePickerPropTypes.ModelValue) {
614
- const $xeDateRangePicker = this
615
-
616
- const isDatePickerType = $xeDateRangePicker.computeIsDatePickerType
617
- if (isDatePickerType) {
618
- $xeDateRangePicker.hidePanel()
619
- }
620
- const startValue = ''
621
- const endValue = ''
622
- $xeDateRangePicker.handleChange(startValue, endValue, evnt)
623
- $xeDateRangePicker.dispatchEvent('clear', { value, startValue, endValue }, evnt)
624
- },
625
- checkValue () {
626
- const $xeDateRangePicker = this
627
-
628
- const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel as VxeDatePanelConstructor
629
- const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel as VxeDatePanelConstructor
630
- if ($startDatePanel && $endDatePanel) {
631
- const startValue = $startDatePanel.getModelValue()
632
- const endValue = $endDatePanel.getModelValue()
633
- if (!startValue || !endValue) {
634
- $xeDateRangePicker.handleChange('', '', { type: 'check' })
635
- }
636
- }
637
- },
638
- handleSelectClose () {
639
- const $xeDateRangePicker = this
640
- const props = $xeDateRangePicker
641
- const reactData = $xeDateRangePicker.reactData
642
- const internalData = $xeDateRangePicker.internalData
643
-
644
- const { autoClose } = props
645
- const { startValue, endValue } = reactData
646
- const { selectStatus } = internalData
647
- const isDatePickerType = $xeDateRangePicker.computeIsDatePickerType
648
- if (autoClose) {
649
- if (selectStatus && isDatePickerType) {
650
- if (startValue && endValue) {
651
- $xeDateRangePicker.hidePanel()
652
- }
653
- }
654
- } else {
655
- if (startValue && endValue) {
656
- internalData.selectStatus = false
657
- }
658
- }
659
- },
660
- clickSuffixEvent (evnt: Event) {
661
- const $xeDateRangePicker = this
662
- const reactData = $xeDateRangePicker.reactData
663
-
664
- const isDisabled = $xeDateRangePicker.computeIsDisabled
665
- if (!isDisabled) {
666
- const { startValue, endValue } = reactData
667
- const value = $xeDateRangePicker.getRangeValue(startValue, endValue)
668
- $xeDateRangePicker.dispatchEvent('suffix-click', { value, startValue, endValue }, evnt)
669
- }
670
- },
671
- blurEvent (evnt: Event & { type: 'blur' }) {
672
- const $xeDateRangePicker = this
673
- const reactData = $xeDateRangePicker.reactData
674
- const $xeForm = $xeDateRangePicker.$xeForm
675
- const formItemInfo = $xeDateRangePicker.formItemInfo
676
-
677
- const { startValue, endValue } = reactData
678
- const inpImmediate = $xeDateRangePicker.computeInpImmediate
679
- const value = ''
680
- if (!inpImmediate) {
681
- $xeDateRangePicker.handleChange(startValue, endValue, evnt)
682
- }
683
- if (!reactData.visiblePanel) {
684
- reactData.isActivated = false
685
- }
686
- $xeDateRangePicker.dispatchEvent('blur', { value, startValue, endValue }, evnt)
687
- // 自动更新校验状态
688
- if ($xeForm && formItemInfo) {
689
- $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value)
690
- }
691
- },
692
- keydownEvent (evnt: KeyboardEvent & { type: 'keydown' }) {
693
- const $xeDateRangePicker = this
694
-
695
- $xeDateRangePicker.triggerEvent(evnt)
696
- },
697
- keyupEvent (evnt: KeyboardEvent & { type: 'keyup' }) {
698
- const $xeDateRangePicker = this
699
-
700
- $xeDateRangePicker.triggerEvent(evnt)
701
- },
702
- confirmEvent (evnt: MouseEvent) {
703
- const $xeDateRangePicker = this
704
-
705
- const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel as VxeDatePanelConstructor
706
- const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel as VxeDatePanelConstructor
707
- if ($startDatePanel && $endDatePanel) {
708
- const startValue = $startDatePanel.getModelValue()
709
- const endValue = $endDatePanel.getModelValue()
710
- if ((startValue && !endValue) || (!startValue && endValue)) {
711
- $xeDateRangePicker.handleChange('', '', evnt)
712
- } else {
713
- $startDatePanel.confirmByEvent(evnt)
714
- $endDatePanel.confirmByEvent(evnt)
715
- }
716
- const value = $xeDateRangePicker.getRangeValue(startValue, endValue)
717
- $xeDateRangePicker.dispatchEvent('confirm', { value, startValue, endValue }, evnt)
718
- }
719
- $xeDateRangePicker.hidePanel()
720
- },
721
- startPanelChangeEvent (params: any) {
722
- const $xeDateRangePicker = this
723
- const reactData = $xeDateRangePicker.reactData
724
- const internalData = $xeDateRangePicker.internalData
725
-
726
- const { selectStatus } = internalData
727
- const { value, $event } = params
728
- const endValue = selectStatus ? reactData.endValue : ''
729
- $xeDateRangePicker.handleChange(value, endValue, $event)
730
- $xeDateRangePicker.handleSelectClose()
731
- if (!selectStatus) {
732
- internalData.selectStatus = true
733
- }
734
- $xeDateRangePicker.$nextTick(() => {
735
- const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel as VxeDatePanelConstructor
736
- const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel as VxeDatePanelConstructor
737
- if ($startDatePanel && $endDatePanel) {
738
- const startValue = $startDatePanel.getModelValue()
739
- if (!endValue && startValue) {
740
- $endDatePanel.setPanelDate(XEUtils.toStringDate(startValue))
741
- }
742
- }
743
- })
744
- },
745
- endPanelChangeEvent (params: any) {
746
- const $xeDateRangePicker = this
747
- const reactData = $xeDateRangePicker.reactData
748
- const internalData = $xeDateRangePicker.internalData
749
-
750
- const { selectStatus } = internalData
751
- const { value, $event } = params
752
- const startValue = selectStatus ? reactData.startValue : ''
753
- $xeDateRangePicker.handleChange(startValue, value, $event)
754
- $xeDateRangePicker.handleSelectClose()
755
- if (!selectStatus) {
756
- internalData.selectStatus = true
757
- }
758
- $xeDateRangePicker.$nextTick(() => {
759
- const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel as VxeDatePanelConstructor
760
- const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel as VxeDatePanelConstructor
761
- if ($startDatePanel && $endDatePanel) {
762
- const endValue = $endDatePanel.getModelValue()
763
- if (!startValue && endValue) {
764
- $startDatePanel.setPanelDate(XEUtils.toStringDate(endValue))
765
- }
766
- }
767
- })
768
- },
769
- // 全局事件
770
- handleGlobalMousedownEvent (evnt: Event) {
771
- const $xeDateRangePicker = this
772
- const reactData = $xeDateRangePicker.reactData
773
-
774
- const { visiblePanel, isActivated } = reactData
775
- const el = $xeDateRangePicker.$refs.refElem as HTMLDivElement
776
- const panelWrapperElem = $xeDateRangePicker.$refs.refPanelWrapper as HTMLDivElement
777
- const isDisabled = $xeDateRangePicker.computeIsDisabled
778
- if (!isDisabled && isActivated) {
779
- reactData.isActivated = getEventTargetNode(evnt, el).flag || getEventTargetNode(evnt, panelWrapperElem).flag
780
- if (!reactData.isActivated) {
781
- if (visiblePanel) {
782
- $xeDateRangePicker.checkValue()
783
- $xeDateRangePicker.hidePanel()
784
- }
785
- }
786
- }
787
- },
788
- handleGlobalKeydownEvent (evnt: KeyboardEvent) {
789
- const $xeDateRangePicker = this
790
- const reactData = $xeDateRangePicker.reactData
791
-
792
- const { visiblePanel } = reactData
793
- const isDisabled = $xeDateRangePicker.computeIsDisabled
794
- if (!isDisabled) {
795
- const isTab = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.TAB)
796
- const isEsc = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ESCAPE)
797
- if (isTab) {
798
- reactData.isActivated = false
799
- }
800
- if (visiblePanel) {
801
- if (isEsc || isTab) {
802
- $xeDateRangePicker.checkValue()
803
- $xeDateRangePicker.hidePanel()
804
- }
805
- }
806
- }
807
- },
808
- handleGlobalMousewheelEvent (evnt: Event) {
809
- const $xeDateRangePicker = this
810
- const reactData = $xeDateRangePicker.reactData
811
-
812
- const { visiblePanel } = reactData
813
- const isDisabled = $xeDateRangePicker.computeIsDisabled
814
- if (!isDisabled) {
815
- if (visiblePanel) {
816
- const panelWrapperElem = $xeDateRangePicker.$refs.refPanelWrapper as HTMLDivElement
817
- if (getEventTargetNode(evnt, panelWrapperElem).flag) {
818
- $xeDateRangePicker.updatePlacement()
819
- } else {
820
- $xeDateRangePicker.checkValue()
821
- $xeDateRangePicker.hidePanel()
822
- }
823
- }
824
- }
825
- },
826
- handleGlobalBlurEvent () {
827
- const $xeDateRangePicker = this
828
- const reactData = $xeDateRangePicker.reactData
829
-
830
- const { visiblePanel, isActivated } = reactData
831
- if (visiblePanel) {
832
- $xeDateRangePicker.checkValue()
833
- $xeDateRangePicker.hidePanel()
834
- }
835
- if (isActivated) {
836
- reactData.isActivated = false
837
- }
838
- if (visiblePanel || isActivated) {
839
- const targetElem = $xeDateRangePicker.$refs.refInputTarget as HTMLInputElement
840
- if (targetElem) {
841
- targetElem.blur()
842
- }
843
- }
844
- },
845
- handleGlobalResizeEvent () {
846
- const $xeDateRangePicker = this
847
- const reactData = $xeDateRangePicker.reactData
848
-
849
- const { visiblePanel } = reactData
850
- if (visiblePanel) {
851
- $xeDateRangePicker.updatePlacement()
852
- }
853
- },
854
- // 弹出面板
855
- updateZindex () {
856
- const $xeDateRangePicker = this
857
- const props = $xeDateRangePicker
858
- const reactData = $xeDateRangePicker.reactData
859
-
860
- const popupOpts = $xeDateRangePicker.computePopupOpts
861
- const customZIndex = popupOpts.zIndex || props.zIndex
862
- if (customZIndex) {
863
- reactData.panelIndex = XEUtils.toNumber(customZIndex)
864
- } else if (reactData.panelIndex < getLastZIndex()) {
865
- reactData.panelIndex = nextZIndex()
866
- }
867
- },
868
- updatePlacement () {
869
- const $xeDateRangePicker = this
870
- const props = $xeDateRangePicker
871
- const reactData = $xeDateRangePicker.reactData
872
-
873
- const { placement } = props
874
- const { panelIndex } = reactData
875
- const targetElem = $xeDateRangePicker.$refs.refInputTarget as HTMLInputElement
876
- const panelElem = $xeDateRangePicker.$refs.refInputPanel as HTMLDivElement
877
- const btnTransfer = $xeDateRangePicker.computeBtnTransfer
878
- const popupOpts = $xeDateRangePicker.computePopupOpts
879
- const handleStyle = () => {
880
- const ppObj = updatePanelPlacement(targetElem, panelElem, {
881
- placement: popupOpts.placement || placement,
882
- teleportTo: btnTransfer
883
- })
884
- const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
885
- zIndex: panelIndex
886
- })
887
- reactData.panelStyle = panelStyle
888
- reactData.panelPlacement = ppObj.placement
889
- }
890
- handleStyle()
891
- return $xeDateRangePicker.$nextTick().then(handleStyle)
892
- },
893
- showPanel () {
894
- const $xeDateRangePicker = this
895
- const reactData = $xeDateRangePicker.reactData
896
- const internalData = $xeDateRangePicker.internalData
897
-
898
- const { visiblePanel } = reactData
899
- const isDisabled = $xeDateRangePicker.computeIsDisabled
900
- const btnTransfer = $xeDateRangePicker.computeBtnTransfer
901
- const panelElem = $xeDateRangePicker.$refs.refInputPanel as HTMLElement
902
- if (!isDisabled && !visiblePanel) {
903
- if (!reactData.initialized) {
904
- reactData.initialized = true
905
- if (btnTransfer) {
906
- if (panelElem) {
907
- document.body.appendChild(panelElem)
908
- }
909
- }
910
- }
911
- if (internalData.hpTimeout) {
912
- clearTimeout(internalData.hpTimeout)
913
- internalData.hpTimeout = undefined
914
- }
915
- internalData.selectStatus = false
916
- reactData.isActivated = true
917
- reactData.isAniVisible = true
918
- setTimeout(() => {
919
- reactData.visiblePanel = true
920
- $xeDateRangePicker.updatePlacement()
921
- }, 10)
922
- $xeDateRangePicker.updateZindex()
923
- return $xeDateRangePicker.updatePlacement()
924
- }
925
- return $xeDateRangePicker.$nextTick()
926
- },
927
- dateRangePickerOpenEvent (evnt: Event) {
928
- const $xeDateRangePicker = this
929
-
930
- const formReadonly = $xeDateRangePicker.computeFormReadonly
931
- if (!formReadonly) {
932
- evnt.preventDefault()
933
- $xeDateRangePicker.showPanel()
934
- }
935
- },
936
- clickEvent (evnt: Event & { type: 'click' }) {
937
- const $xeDateRangePicker = this
938
-
939
- $xeDateRangePicker.triggerEvent(evnt)
940
- },
941
- handleShortcutEvent ({ option, $event }: VxeButtonGroupDefines.ClickEventParams) {
942
- const $xeDateRangePicker = this
943
- const props = $xeDateRangePicker
944
- const reactData = $xeDateRangePicker.reactData
945
-
946
- const { type } = props
947
- const shortcutOpts = $xeDateRangePicker.computeShortcutOpts
948
- const { autoClose } = shortcutOpts
949
- const { code, clickMethod } = option as VxeDateRangePickerDefines.ShortcutOption
950
- let startValue = reactData.startValue
951
- let endValue = reactData.endValue
952
- let value = $xeDateRangePicker.getRangeValue(startValue, endValue)
953
- const shortcutParams = {
954
- $dateRangePicker: $xeDateRangePicker,
955
- option: option,
956
- value,
957
- startValue,
958
- endValue,
959
- code
960
- }
961
- if (!clickMethod && code) {
962
- const gCommandOpts = commands.get(code)
963
- const drpCommandMethod = gCommandOpts ? gCommandOpts.dateRangePickerCommandMethod : null
964
- if (drpCommandMethod) {
965
- drpCommandMethod(shortcutParams)
966
- } else {
967
- const dateValueFormat = $xeDateRangePicker.computeDateValueFormat
968
- const firstDayOfWeek = $xeDateRangePicker.computeFirstDayOfWeek
969
- switch (code) {
970
- case 'last1':
971
- case 'last3':
972
- case 'last7':
973
- case 'last30':
974
- case 'last60':
975
- case 'last90':
976
- case 'last180': {
977
- const restObj = getRangeDateByCode(code, value, type, {
978
- valueFormat: dateValueFormat,
979
- firstDay: firstDayOfWeek
980
- })
981
- startValue = restObj.startValue
982
- endValue = restObj.endValue
983
- value = $xeDateRangePicker.getRangeValue(startValue, endValue)
984
- shortcutParams.value = value
985
- shortcutParams.startValue = startValue
986
- shortcutParams.endValue = endValue
987
- $xeDateRangePicker.handleChange(startValue, endValue, $event)
988
- break
989
- }
990
- default:
991
- errLog('vxe.error.notCommands', [`[date-range-picker] ${code}`])
992
- break
993
- }
994
- }
995
- } else {
996
- const optClickMethod = clickMethod || shortcutOpts.clickMethod
997
- if (optClickMethod) {
998
- optClickMethod(shortcutParams)
999
- }
1000
- }
1001
- if (autoClose) {
1002
- $xeDateRangePicker.hidePanel()
1003
- }
1004
- $xeDateRangePicker.dispatchEvent('shortcut-click', shortcutParams, $event)
1005
- },
1006
-
1007
- setModelValue (startValue: string, endValue: string) {
1008
- const $xeDateRangePicker = this
1009
- const reactData = $xeDateRangePicker.reactData
1010
-
1011
- reactData.startValue = startValue || ''
1012
- reactData.endValue = endValue || ''
1013
- const value = $xeDateRangePicker.getRangeValue(startValue, endValue)
1014
- $xeDateRangePicker.emitModel(value)
1015
- },
1016
- setModelValueByEvent (evnt: Event, startValue: string, endValue: string) {
1017
- const $xeDateRangePicker = this
1018
-
1019
- $xeDateRangePicker.handleChange(startValue || '', endValue || '', evnt)
1020
- },
1021
- focus () {
1022
- const $xeDateRangePicker = this
1023
- const reactData = $xeDateRangePicker.reactData
1024
-
1025
- const inputElem = $xeDateRangePicker.$refs.refInputTarget as HTMLInputElement
1026
- reactData.isActivated = true
1027
- inputElem.focus()
1028
- return $xeDateRangePicker.$nextTick()
1029
- },
1030
- blur () {
1031
- const $xeDateRangePicker = this
1032
- const reactData = $xeDateRangePicker.reactData
1033
-
1034
- const inputElem = $xeDateRangePicker.$refs.refInputTarget as HTMLInputElement
1035
- inputElem.blur()
1036
- reactData.isActivated = false
1037
- return $xeDateRangePicker.$nextTick()
1038
- },
1039
- select () {
1040
- const $xeDateRangePicker = this
1041
- const reactData = $xeDateRangePicker.reactData
1042
-
1043
- const inputElem = $xeDateRangePicker.$refs.refInputTarget as HTMLInputElement
1044
- inputElem.select()
1045
- reactData.isActivated = false
1046
- return $xeDateRangePicker.$nextTick()
1047
- },
1048
-
1049
- //
1050
- // Render
1051
- //
1052
- renderShortcutBtn (h: CreateElement, pos: 'top' | 'bottom' | 'left' | 'right' | 'header' | 'footer', isVertical?: boolean) {
1053
- const $xeDateRangePicker = this
1054
-
1055
- const shortcutOpts = $xeDateRangePicker.computeShortcutOpts
1056
- const { position, align, mode } = shortcutOpts
1057
- const shortcutList = $xeDateRangePicker.computeShortcutList
1058
- if (isEnableConf(shortcutOpts) && shortcutList.length && (position || 'left') === pos) {
1059
- return h('div', {
1060
- class: `vxe-date-range-picker--layout-${pos}-wrapper`
1061
- }, [
1062
- h(VxeButtonGroupComponent, {
1063
- props: {
1064
- options: shortcutList,
1065
- mode,
1066
- align,
1067
- vertical: isVertical
1068
- },
1069
- on: {
1070
- click: $xeDateRangePicker.handleShortcutEvent
1071
- }
1072
- })
1073
- ])
1074
- }
1075
- return renderEmptyElement($xeDateRangePicker)
1076
- },
1077
- renderPanel (h: CreateElement) {
1078
- const $xeDateRangePicker = this
1079
- const props = $xeDateRangePicker
1080
- const slots = $xeDateRangePicker.$scopedSlots
1081
- const reactData = $xeDateRangePicker.reactData
1082
-
1083
- const { type, separator, autoClose, showConfirmButton, showClearButton } = props
1084
- const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle, startValue, endValue } = reactData
1085
- const vSize = $xeDateRangePicker.computeSize
1086
- const btnTransfer = $xeDateRangePicker.computeBtnTransfer
1087
- const shortcutOpts = $xeDateRangePicker.computeShortcutOpts
1088
- const isClearable = $xeDateRangePicker.computeIsClearable
1089
- const panelLabelObj = $xeDateRangePicker.computePanelLabelObj
1090
- const shortcutList = $xeDateRangePicker.computeShortcutList
1091
- const isDateTimeType = $xeDateRangePicker.computeIsDateTimeType
1092
- const defaultDates = $xeDateRangePicker.computeDefaultDates
1093
- const defaultTimes = $xeDateRangePicker.computeDefaultTimes
1094
- const timeOpts = $xeDateRangePicker.computeTimeOpts
1095
- const popupOpts = $xeDateRangePicker.computePopupOpts
1096
- const { startLabel, endLabel } = panelLabelObj
1097
- const { position } = shortcutOpts
1098
- const headerSlot = slots.header
1099
- const footerSlot = slots.footer
1100
- const topSlot = slots.top
1101
- const bottomSlot = slots.bottom
1102
- const leftSlot = slots.left
1103
- const rightSlot = slots.right
1104
- const ppClassName = popupOpts.className
1105
- const [sdDate, edDate] = defaultDates
1106
- const [sdTime, edTime] = defaultTimes
1107
- const hasShortcutBtn = shortcutList.length > 0
1108
- const showConfirmBtn = (showConfirmButton === null ? (isDateTimeType || !autoClose) : showConfirmButton)
1109
- const showClearBtn = (showClearButton === null ? isClearable : showClearButton)
1110
- return h('div', {
1111
- ref: 'refInputPanel',
1112
- class: ['vxe-table--ignore-clear vxe-date-range-picker--panel', `type--${type}`, ppClassName ? (XEUtils.isFunction(ppClassName) ? ppClassName({ $dateRangePicker: $xeDateRangePicker }) : ppClassName) : '', {
1113
- [`size--${vSize}`]: vSize,
1114
- 'is--transfer': btnTransfer,
1115
- 'ani--leave': isAniVisible,
1116
- 'ani--enter': visiblePanel,
1117
- 'show--top': !!(topSlot || headerSlot || (hasShortcutBtn && (position === 'top' || position === 'header'))),
1118
- 'show--bottom': !!(bottomSlot || footerSlot || (hasShortcutBtn && (position === 'bottom' || position === 'footer'))),
1119
- 'show--left': !!(leftSlot || (hasShortcutBtn && position === 'left')),
1120
- 'show--right': !!(rightSlot || (hasShortcutBtn && position === 'right'))
1121
- }],
1122
- attrs: {
1123
- placement: panelPlacement
1124
- },
1125
- style: panelStyle
1126
- }, initialized && (visiblePanel || isAniVisible)
1127
- ? [
1128
- h('div', {
1129
- ref: 'refPanelWrapper',
1130
- class: ['vxe-date-range-picker--layout-all-wrapper', `type--${type}`, {
1131
- [`size--${vSize}`]: vSize
1132
- }]
1133
- }, [
1134
- topSlot
1135
- ? h('div', {
1136
- class: 'vxe-date-range-picker--layout-top-wrapper'
1137
- }, topSlot({}))
1138
- : $xeDateRangePicker.renderShortcutBtn(h, 'top'),
1139
- h('div', {
1140
- class: 'vxe-date-range-picker--layout-body-layout-wrapper'
1141
- }, [
1142
- leftSlot
1143
- ? h('div', {
1144
- class: 'vxe-date-range-picker--layout-left-wrapper'
1145
- }, leftSlot({}))
1146
- : $xeDateRangePicker.renderShortcutBtn(h, 'left', true),
1147
- h('div', {
1148
- class: 'vxe-date-range-picker--layout-body-content-wrapper'
1149
- }, [
1150
- headerSlot
1151
- ? h('div', {
1152
- class: 'vxe-date-range-picker--layout-header-wrapper'
1153
- }, headerSlot({}))
1154
- : $xeDateRangePicker.renderShortcutBtn(h, 'header'),
1155
- h('div', {
1156
- class: 'vxe-date-range-picker--layout-body-wrapper'
1157
- }, [
1158
- h(VxeDatePanelComponent, {
1159
- ref: 'refStartDatePanel',
1160
- props: {
1161
- value: startValue,
1162
- type: props.type,
1163
- className: props.className,
1164
- minDate: props.minDate,
1165
- maxDate: props.maxDate,
1166
- endDate: endValue,
1167
- startDay: props.startDay,
1168
- labelFormat: props.labelFormat,
1169
- valueFormat: props.valueFormat,
1170
- timeFormat: props.timeFormat,
1171
- defaultDate: sdDate,
1172
- defaultTime: sdTime,
1173
- timeConfig: timeOpts,
1174
- festivalMethod: props.festivalMethod,
1175
- disabledMethod: props.disabledMethod,
1176
- selectDay: props.selectDay
1177
- },
1178
- on: {
1179
- change: $xeDateRangePicker.startPanelChangeEvent
1180
- }
1181
- }),
1182
- h(VxeDatePanelComponent, {
1183
- ref: 'refEndDatePanel',
1184
- props: {
1185
- value: endValue,
1186
- type: props.type,
1187
- className: props.className,
1188
- minDate: props.minDate,
1189
- maxDate: props.maxDate,
1190
- startDate: startValue,
1191
- startDay: props.startDay,
1192
- labelFormat: props.labelFormat,
1193
- valueFormat: props.valueFormat,
1194
- timeFormat: props.timeFormat,
1195
- defaultDate: edDate,
1196
- defaultTime: edTime,
1197
- timeConfig: timeOpts,
1198
- festivalMethod: props.festivalMethod,
1199
- disabledMethod: props.disabledMethod,
1200
- selectDay: props.selectDay
1201
- },
1202
- on: {
1203
- change: $xeDateRangePicker.endPanelChangeEvent
1204
- }
1205
- })
1206
- ]),
1207
- h('div', {
1208
- class: 'vxe-date-range-picker--layout-footer-wrapper'
1209
- }, [
1210
- h('div', {
1211
- class: 'vxe-date-range-picker--layout-footer-label'
1212
- }, startLabel || endLabel
1213
- ? [
1214
- h('span', startLabel),
1215
- h('span', `${separator || ''}`),
1216
- h('span', endLabel)
1217
- ]
1218
- : `${separator || ''}`),
1219
- h('div', {
1220
- class: 'vxe-date-range-picker--layout-footer-custom'
1221
- }, footerSlot ? footerSlot({}) : [$xeDateRangePicker.renderShortcutBtn(h, 'footer')]),
1222
- h('div', {
1223
- class: 'vxe-date-range-picker--layout-footer-btns'
1224
- }, [
1225
- showClearBtn
1226
- ? h(VxeButtonComponent, {
1227
- props: {
1228
- size: 'mini',
1229
- disabled: !(startValue || endValue),
1230
- content: getI18n('vxe.button.clear')
1231
- },
1232
- on: {
1233
- click: $xeDateRangePicker.clearValueEvent
1234
- }
1235
- })
1236
- : renderEmptyElement($xeDateRangePicker),
1237
- showConfirmBtn
1238
- ? h(VxeButtonComponent, {
1239
- props: {
1240
- size: 'mini',
1241
- status: 'primary',
1242
- content: getI18n('vxe.button.confirm')
1243
- },
1244
- on: {
1245
- click: $xeDateRangePicker.confirmEvent
1246
- }
1247
- })
1248
- : renderEmptyElement($xeDateRangePicker)
1249
- ])
1250
- ])
1251
- ]),
1252
- rightSlot
1253
- ? h('div', {
1254
- class: 'vxe-date-range-picker--layout-right-wrapper'
1255
- }, rightSlot({}))
1256
- : $xeDateRangePicker.renderShortcutBtn(h, 'right', true)
1257
- ]),
1258
- bottomSlot
1259
- ? h('div', {
1260
- class: 'vxe-date-range-picker--layout-bottom-wrapper'
1261
- }, bottomSlot({}))
1262
- : $xeDateRangePicker.renderShortcutBtn(h, 'bottom')
1263
- ])
1264
- ]
1265
- : [])
1266
- },
1267
- renderPrefixIcon (h: CreateElement) {
1268
- const $xeDateRangePicker = this
1269
- const props = $xeDateRangePicker
1270
- const slots = $xeDateRangePicker.$scopedSlots
1271
-
1272
- const { prefixIcon } = props
1273
- const prefixSlot = slots.prefix
1274
- return prefixSlot || prefixIcon
1275
- ? h('div', {
1276
- class: 'vxe-date-range-picker--prefix',
1277
- on: {
1278
- click: $xeDateRangePicker.clickPrefixEvent
1279
- }
1280
- }, [
1281
- h('div', {
1282
- class: 'vxe-date-range-picker--prefix-icon'
1283
- }, prefixSlot
1284
- ? getSlotVNs(prefixSlot({}))
1285
- : [
1286
- h('i', {
1287
- class: prefixIcon
1288
- })
1289
- ])
1290
- ])
1291
- : null
1292
- },
1293
- renderSuffixIcon (h: CreateElement) {
1294
- const $xeDateRangePicker = this
1295
- const props = $xeDateRangePicker
1296
- const slots = $xeDateRangePicker.$scopedSlots
1297
- const reactData = $xeDateRangePicker.reactData
1298
-
1299
- const { suffixIcon } = props
1300
- const { startValue, endValue } = reactData
1301
- const suffixSlot = slots.suffix
1302
- const isDisabled = $xeDateRangePicker.computeIsDisabled
1303
- const isClearable = $xeDateRangePicker.computeIsClearable
1304
- return h('div', {
1305
- class: ['vxe-date-range-picker--suffix', {
1306
- 'is--clear': isClearable && !isDisabled && (startValue || endValue)
1307
- }]
1308
- }, [
1309
- isClearable
1310
- ? h('div', {
1311
- class: 'vxe-date-range-picker--clear-icon',
1312
- on: {
1313
- click: $xeDateRangePicker.clearValueEvent
1314
- }
1315
- }, [
1316
- h('i', {
1317
- class: getIcon().INPUT_CLEAR
1318
- })
1319
- ])
1320
- : renderEmptyElement($xeDateRangePicker),
1321
- $xeDateRangePicker.renderExtraSuffixIcon(h),
1322
- suffixSlot || suffixIcon
1323
- ? h('div', {
1324
- class: 'vxe-date-range-picker--suffix-icon',
1325
- on: {
1326
- click: $xeDateRangePicker.clickSuffixEvent
1327
- }
1328
- }, suffixSlot
1329
- ? getSlotVNs(suffixSlot({}))
1330
- : [
1331
- h('i', {
1332
- class: suffixIcon
1333
- })
1334
- ])
1335
- : renderEmptyElement($xeDateRangePicker)
1336
- ])
1337
- },
1338
- renderExtraSuffixIcon (h: CreateElement) {
1339
- const $xeDateRangePicker = this
1340
-
1341
- return h('div', {
1342
- class: 'vxe-date-range-picker--control-icon',
1343
- on: {
1344
- click: $xeDateRangePicker.dateRangePickerOpenEvent
1345
- }
1346
- }, [
1347
- h('i', {
1348
- class: ['vxe-date-range-picker--date-picker-icon', getIcon().DATE_PICKER_DATE]
1349
- })
1350
- ])
1351
- },
1352
- renderVN (h: CreateElement) {
1353
- const $xeDateRangePicker = this
1354
- const props = $xeDateRangePicker
1355
- const reactData = $xeDateRangePicker.reactData
1356
-
1357
- const { className, type, name, autoComplete } = props
1358
- const { startValue, endValue, visiblePanel, isActivated } = reactData
1359
- const vSize = $xeDateRangePicker.computeSize
1360
- const isDisabled = $xeDateRangePicker.computeIsDisabled
1361
- const formReadonly = $xeDateRangePicker.computeFormReadonly
1362
- const inputLabel = $xeDateRangePicker.computeInputLabel
1363
- if (formReadonly) {
1364
- return h('div', {
1365
- ref: 'refElem',
1366
- class: ['vxe-date-range-picker--readonly', `type--${type}`, className]
1367
- }, inputLabel)
1368
- }
1369
- const inpPlaceholder = $xeDateRangePicker.computeInpPlaceholder
1370
- const isClearable = $xeDateRangePicker.computeIsClearable
1371
- const prefix = $xeDateRangePicker.renderPrefixIcon(h)
1372
- const suffix = $xeDateRangePicker.renderSuffixIcon(h)
1373
- return h('div', {
1374
- ref: 'refElem',
1375
- class: ['vxe-date-range-picker', `type--${type}`, className, {
1376
- [`size--${vSize}`]: vSize,
1377
- 'is--prefix': !!prefix,
1378
- 'is--suffix': !!suffix,
1379
- 'is--visible': visiblePanel,
1380
- 'is--disabled': isDisabled,
1381
- 'is--active': isActivated,
1382
- 'show--clear': isClearable && !isDisabled && (startValue || endValue)
1383
- }],
1384
- attrs: {
1385
- spellcheck: false
1386
- }
1387
- }, [
1388
- prefix || renderEmptyElement($xeDateRangePicker),
1389
- h('div', {
1390
- class: 'vxe-date-range-picker--wrapper'
1391
- }, [
1392
- h('input', {
1393
- ref: 'refInputTarget',
1394
- class: 'vxe-date-range-picker--inner',
1395
- domProps: {
1396
- value: inputLabel
1397
- },
1398
- attrs: {
1399
- name,
1400
- type: 'text',
1401
- placeholder: inpPlaceholder,
1402
- editable: false,
1403
- disabled: isDisabled,
1404
- autocomplete: autoComplete
1405
- },
1406
- on: {
1407
- keydown: $xeDateRangePicker.keydownEvent,
1408
- keyup: $xeDateRangePicker.keyupEvent,
1409
- click: $xeDateRangePicker.clickEvent,
1410
- change: $xeDateRangePicker.changeEvent,
1411
- focus: $xeDateRangePicker.focusEvent,
1412
- blur: $xeDateRangePicker.blurEvent
1413
- }
1414
- })
1415
- ]),
1416
- suffix || renderEmptyElement($xeDateRangePicker),
1417
- // 下拉面板
1418
- $xeDateRangePicker.renderPanel(h)
1419
- ])
1420
- }
1421
- },
1422
- watch: {
1423
- value () {
1424
- const $xeDateRangePicker = this
1425
-
1426
- $xeDateRangePicker.updateModelValue(true)
1427
- },
1428
- computeMVal () {
1429
- const $xeDateRangePicker = this
1430
-
1431
- $xeDateRangePicker.updateModelValue(false)
1432
- }
1433
- },
1434
- created () {
1435
- const $xeDateRangePicker = this
1436
-
1437
- $xeDateRangePicker.updateModelValue(true)
1438
-
1439
- globalEvents.on($xeDateRangePicker, 'mousewheel', $xeDateRangePicker.handleGlobalMousewheelEvent)
1440
- globalEvents.on($xeDateRangePicker, 'mousedown', $xeDateRangePicker.handleGlobalMousedownEvent)
1441
- globalEvents.on($xeDateRangePicker, 'keydown', $xeDateRangePicker.handleGlobalKeydownEvent)
1442
- globalEvents.on($xeDateRangePicker, 'blur', $xeDateRangePicker.handleGlobalBlurEvent)
1443
- globalEvents.on($xeDateRangePicker, 'resize', $xeDateRangePicker.handleGlobalResizeEvent)
1444
- },
1445
- deactivated () {
1446
- const $xeDateRangePicker = this
1447
-
1448
- $xeDateRangePicker.checkValue()
1449
- },
1450
- beforeDestroy () {
1451
- const $xeDateRangePicker = this
1452
-
1453
- const panelElem = $xeDateRangePicker.$refs.refInputPanel as HTMLElement | undefined
1454
- if (panelElem && panelElem.parentNode) {
1455
- panelElem.parentNode.removeChild(panelElem)
1456
- }
1457
- $xeDateRangePicker.checkValue()
1458
- globalEvents.off($xeDateRangePicker, 'mousewheel')
1459
- globalEvents.off($xeDateRangePicker, 'mousedown')
1460
- globalEvents.off($xeDateRangePicker, 'blur')
1461
- globalEvents.off($xeDateRangePicker, 'resize')
1462
- },
1463
- render (this: any, h) {
1464
- return this.renderVN(h)
1465
- }
1466
- }) /* define-vxe-component end */
1
+ import { PropType, CreateElement } from 'vue'
2
+ import { defineVxeComponent } from '../../ui/src/comp'
3
+ import XEUtils from 'xe-utils'
4
+ import { getConfig, getIcon, getI18n, commands, globalEvents, createEvent, GLOBAL_EVENT_KEYS, globalMixins, renderEmptyElement } from '../../ui'
5
+ import { getFuncText, getLastZIndex, nextZIndex, isEnableConf } from '../../ui/src/utils'
6
+ import { updatePanelPlacement, getEventTargetNode } from '../../ui/src/dom'
7
+ import { parseDateString, parseDateObj, getRangeDateByCode, handleValueFormat } from '../../date-panel/src/util'
8
+ import { getSlotVNs } from '../../ui/src/vn'
9
+ import { errLog } from '../../ui/src/log'
10
+ import VxeDatePanelComponent from '../../date-panel/src/date-panel'
11
+ import VxeButtonComponent from '../../button/src/button'
12
+ import VxeButtonGroupComponent from '../../button/src/button-group'
13
+
14
+ import type { VxeDateRangePickerConstructor, VxeDateRangePickerEmits, DateRangePickerReactData, DateRangePickerInternalData, VxeButtonGroupDefines, VxeComponentSizeType, VxeDateRangePickerPropTypes, VxeFormConstructor, VxeFormPrivateMethods, VxeFormDefines, ValueOf, VxeModalConstructor, VxeDrawerConstructor, VxeModalMethods, VxeDrawerMethods, VxeDateRangePickerDefines, VxeDatePanelConstructor } from '../../../types'
15
+ import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types/components/table'
16
+
17
+ export default /* define-vxe-component start */ defineVxeComponent({
18
+ name: 'VxeDateRangePicker',
19
+ mixins: [
20
+ globalMixins.sizeMixin
21
+ ],
22
+ model: {
23
+ prop: 'value',
24
+ event: 'modelValue'
25
+ },
26
+ props: {
27
+ value: [String, Number, Date, Array] as PropType<VxeDateRangePickerPropTypes.ModelValue>,
28
+ startValue: [String, Number, Date] as PropType<VxeDateRangePickerPropTypes.StartValue>,
29
+ endValue: [String, Number, Date] as PropType<VxeDateRangePickerPropTypes.EndValue>,
30
+ immediate: {
31
+ type: Boolean as PropType<VxeDateRangePickerPropTypes.Immediate>,
32
+ default: true
33
+ },
34
+ name: String as PropType<VxeDateRangePickerPropTypes.Name>,
35
+ type: {
36
+ type: String as PropType<VxeDateRangePickerPropTypes.Type>,
37
+ default: 'date' as VxeDateRangePickerPropTypes.Type
38
+ },
39
+ clearable: {
40
+ type: Boolean as PropType<VxeDateRangePickerPropTypes.Clearable>,
41
+ default: () => getConfig().dateRangePicker.clearable
42
+ },
43
+ readonly: {
44
+ type: Boolean as PropType<VxeDateRangePickerPropTypes.Readonly>,
45
+ default: null
46
+ },
47
+ disabled: {
48
+ type: Boolean as PropType<VxeDateRangePickerPropTypes.Disabled>,
49
+ default: null
50
+ },
51
+ placeholder: String as PropType<VxeDateRangePickerPropTypes.Placeholder>,
52
+ autoComplete: {
53
+ type: String as PropType<VxeDateRangePickerPropTypes.AutoComplete>,
54
+ default: 'off'
55
+ },
56
+ form: String as PropType<VxeDateRangePickerPropTypes.Form>,
57
+ className: String as PropType<VxeDateRangePickerPropTypes.ClassName>,
58
+ zIndex: Number as PropType<VxeDateRangePickerPropTypes.ZIndex>,
59
+ size: {
60
+ type: String as PropType<VxeDateRangePickerPropTypes.Size>,
61
+ default: () => getConfig().dateRangePicker.size || getConfig().size
62
+ },
63
+
64
+ // startDate: {
65
+ // type: [String, Number, Date] as PropType<VxeDateRangePickerPropTypes.StartDate>,
66
+ // default: () => getConfig().dateRangePicker.startDate
67
+ // },
68
+ // endDate: {
69
+ // type: [String, Number, Date] as PropType<VxeDateRangePickerPropTypes.EndDate>,
70
+ // default: () => getConfig().dateRangePicker.endDate
71
+ // },
72
+ minDate: [String, Number, Date] as PropType<VxeDateRangePickerPropTypes.MinDate>,
73
+ maxDate: [String, Number, Date] as PropType<VxeDateRangePickerPropTypes.MaxDate>,
74
+ defaultDate: [String, Number, Date, Array] as PropType<VxeDateRangePickerPropTypes.DefaultDate>,
75
+ defaultTime: [String, Number, Date, Array] as PropType<VxeDateRangePickerPropTypes.DefaultTime>,
76
+ startDay: {
77
+ type: [String, Number] as PropType<VxeDateRangePickerPropTypes.StartDay>,
78
+ default: () => getConfig().dateRangePicker.startDay
79
+ },
80
+ labelFormat: String as PropType<VxeDateRangePickerPropTypes.LabelFormat>,
81
+ valueFormat: String as PropType<VxeDateRangePickerPropTypes.ValueFormat>,
82
+ timeFormat: String as PropType<VxeDateRangePickerPropTypes.TimeFormat>,
83
+ valueType: String as PropType<VxeDateRangePickerPropTypes.ValueType>,
84
+ editable: {
85
+ type: Boolean as PropType<VxeDateRangePickerPropTypes.Editable>,
86
+ default: true
87
+ },
88
+ festivalMethod: {
89
+ type: Function as PropType<VxeDateRangePickerPropTypes.FestivalMethod>,
90
+ default: () => getConfig().dateRangePicker.festivalMethod
91
+ },
92
+ disabledMethod: {
93
+ type: Function as PropType<VxeDateRangePickerPropTypes.DisabledMethod>,
94
+ default: () => getConfig().dateRangePicker.disabledMethod
95
+ },
96
+ separator: {
97
+ type: [String, Number] as PropType<VxeDateRangePickerPropTypes.Separator>,
98
+ default: () => getConfig().dateRangePicker.separator
99
+ },
100
+
101
+ // week
102
+ selectDay: {
103
+ type: [String, Number] as PropType<VxeDateRangePickerPropTypes.SelectDay>,
104
+ default: () => getConfig().dateRangePicker.selectDay
105
+ },
106
+ showClearButton: {
107
+ type: Boolean as PropType<VxeDateRangePickerPropTypes.ShowClearButton>,
108
+ default: () => getConfig().dateRangePicker.showClearButton
109
+ },
110
+ showConfirmButton: {
111
+ type: Boolean as PropType<VxeDateRangePickerPropTypes.ShowConfirmButton>,
112
+ default: () => getConfig().dateRangePicker.showConfirmButton
113
+ },
114
+ autoClose: {
115
+ type: Boolean as PropType<VxeDateRangePickerPropTypes.AutoClose>,
116
+ default: () => getConfig().dateRangePicker.autoClose
117
+ },
118
+
119
+ prefixIcon: String as PropType<VxeDateRangePickerPropTypes.PrefixIcon>,
120
+ suffixIcon: String as PropType<VxeDateRangePickerPropTypes.SuffixIcon>,
121
+ placement: String as PropType<VxeDateRangePickerPropTypes.Placement>,
122
+ transfer: {
123
+ type: Boolean as PropType<VxeDateRangePickerPropTypes.Transfer>,
124
+ default: null
125
+ },
126
+
127
+ timeConfig: Object as PropType<VxeDateRangePickerPropTypes.TimeConfig>,
128
+ popupConfig: Object as PropType<VxeDateRangePickerPropTypes.PopupConfig>,
129
+ shortcutConfig: Object as PropType<VxeDateRangePickerPropTypes.ShortcutConfig>
130
+ },
131
+ inject: {
132
+ $xeModal: {
133
+ default: null
134
+ },
135
+ $xeDrawer: {
136
+ default: null
137
+ },
138
+ $xeTable: {
139
+ default: null
140
+ },
141
+ $xeForm: {
142
+ default: null
143
+ },
144
+ formItemInfo: {
145
+ from: 'xeFormItemInfo',
146
+ default: null
147
+ }
148
+ },
149
+ provide () {
150
+ const $xeDateRangePicker = this
151
+
152
+ return {
153
+ $xeDateRangePicker
154
+ }
155
+ },
156
+ data () {
157
+ const xID = XEUtils.uniqueId()
158
+
159
+ const reactData: DateRangePickerReactData = {
160
+ initialized: false,
161
+ panelIndex: 0,
162
+ visiblePanel: false,
163
+ isAniVisible: false,
164
+ panelStyle: {},
165
+ panelPlacement: '',
166
+ isActivated: false,
167
+ startValue: '',
168
+ endValue: ''
169
+ }
170
+
171
+ const internalData: DateRangePickerInternalData = {
172
+ // selectStatus: false
173
+ // hpTimeout: undefined
174
+ }
175
+
176
+ return {
177
+ xID,
178
+ reactData,
179
+ internalData
180
+ }
181
+ },
182
+ computed: {
183
+ ...({} as {
184
+ computeSize(): VxeComponentSizeType
185
+ $xeModal(): (VxeModalConstructor & VxeModalMethods) | null
186
+ $xeDrawer(): (VxeDrawerConstructor & VxeDrawerMethods) | null
187
+ $xeTable(): (VxeTableConstructor & VxeTablePrivateMethods) | null
188
+ $xeForm(): (VxeFormConstructor & VxeFormPrivateMethods) | null
189
+ formItemInfo(): VxeFormDefines.ProvideItemInfo | null
190
+ }),
191
+ computeBtnTransfer () {
192
+ const $xeDateRangePicker = this
193
+ const props = $xeDateRangePicker
194
+ const $xeTable = $xeDateRangePicker.$xeTable
195
+ const $xeModal = $xeDateRangePicker.$xeModal
196
+ const $xeDrawer = $xeDateRangePicker.$xeDrawer
197
+ const $xeForm = $xeDateRangePicker.$xeForm
198
+
199
+ const { transfer } = props
200
+ const popupOpts = $xeDateRangePicker.computePopupOpts as VxeDateRangePickerPropTypes.PopupConfig
201
+ if (XEUtils.isBoolean(popupOpts.transfer)) {
202
+ return popupOpts.transfer
203
+ }
204
+ if (transfer === null) {
205
+ const globalTransfer = getConfig().dateRangePicker.transfer
206
+ if (XEUtils.isBoolean(globalTransfer)) {
207
+ return globalTransfer
208
+ }
209
+ if ($xeTable || $xeModal || $xeDrawer || $xeForm) {
210
+ return true
211
+ }
212
+ }
213
+ return transfer
214
+ },
215
+ computeFormReadonly () {
216
+ const $xeDateRangePicker = this
217
+ const props = $xeDateRangePicker
218
+ const $xeForm = $xeDateRangePicker.$xeForm
219
+
220
+ const { readonly } = props
221
+ if (readonly === null) {
222
+ if ($xeForm) {
223
+ return $xeForm.readonly
224
+ }
225
+ return false
226
+ }
227
+ return readonly
228
+ },
229
+ computeIsDisabled () {
230
+ const $xeDateRangePicker = this
231
+ const props = $xeDateRangePicker
232
+ const $xeForm = $xeDateRangePicker.$xeForm
233
+
234
+ const { disabled } = props
235
+ if (disabled === null) {
236
+ if ($xeForm) {
237
+ return $xeForm.disabled
238
+ }
239
+ return false
240
+ }
241
+ return disabled
242
+ },
243
+ computeDefaultDates () {
244
+ const $xeDateRangePicker = this
245
+ const props = $xeDateRangePicker
246
+
247
+ const { defaultDate } = props
248
+ if (defaultDate) {
249
+ if (XEUtils.isArray(defaultDate)) {
250
+ return defaultDate
251
+ }
252
+ if (`${defaultDate}`.indexOf(',') > -1) {
253
+ return `${defaultDate}`.split(',')
254
+ }
255
+ return [defaultDate, defaultDate]
256
+ }
257
+ return []
258
+ },
259
+ computeDefaultTimes () {
260
+ const $xeDateRangePicker = this
261
+ const props = $xeDateRangePicker
262
+
263
+ const { defaultTime } = props
264
+ if (defaultTime) {
265
+ if (XEUtils.isArray(defaultTime)) {
266
+ return defaultTime
267
+ }
268
+ if (`${defaultTime}`.indexOf(',') > -1) {
269
+ return `${defaultTime}`.split(',')
270
+ }
271
+ return [defaultTime, defaultTime]
272
+ }
273
+ return []
274
+ },
275
+ computeMVal () {
276
+ const $xeDateRangePicker = this
277
+ const props = $xeDateRangePicker
278
+
279
+ const { startValue, endValue } = props
280
+ return `${startValue || ''}${endValue || ''}`
281
+ },
282
+ computeIsDateTimeType () {
283
+ const $xeDateRangePicker = this
284
+ const props = $xeDateRangePicker
285
+
286
+ const { type } = props
287
+ return type === 'time' || type === 'datetime'
288
+ },
289
+ computeIsDatePickerType () {
290
+ const $xeDateRangePicker = this
291
+ const props = $xeDateRangePicker
292
+
293
+ return ['date', 'week', 'month', 'quarter', 'year'].indexOf(props.type) > -1
294
+ },
295
+ computeIsClearable () {
296
+ const $xeDateRangePicker = this
297
+ const props = $xeDateRangePicker
298
+
299
+ return props.clearable
300
+ },
301
+ computeInpPlaceholder () {
302
+ const $xeDateRangePicker = this
303
+ const props = $xeDateRangePicker
304
+
305
+ const { placeholder } = props
306
+ if (placeholder) {
307
+ return getFuncText(placeholder)
308
+ }
309
+ const globalPlaceholder = getConfig().dateRangePicker.placeholder
310
+ if (globalPlaceholder) {
311
+ return getFuncText(globalPlaceholder)
312
+ }
313
+ return getI18n('vxe.dateRangePicker.pleaseRange')
314
+ },
315
+ computeInpImmediate () {
316
+ const $xeDateRangePicker = this
317
+ const props = $xeDateRangePicker
318
+
319
+ const { immediate } = props
320
+ return immediate
321
+ },
322
+ computeTimeOpts () {
323
+ const $xeDatePicker = this
324
+ const props = $xeDatePicker
325
+
326
+ return Object.assign({}, getConfig().dateRangePicker.timeConfig, props.timeConfig)
327
+ },
328
+ computePopupOpts () {
329
+ const $xeDateRangePicker = this
330
+ const props = $xeDateRangePicker
331
+
332
+ return Object.assign({}, getConfig().dateRangePicker.popupConfig, props.popupConfig)
333
+ },
334
+ computeShortcutOpts () {
335
+ const $xeDateRangePicker = this
336
+ const props = $xeDateRangePicker
337
+
338
+ return Object.assign({}, getConfig().dateRangePicker.shortcutConfig, props.shortcutConfig)
339
+ },
340
+ computeShortcutList () {
341
+ const $xeDateRangePicker = this
342
+
343
+ const shortcutOpts = $xeDateRangePicker.computeShortcutOpts as VxeDateRangePickerPropTypes.ShortcutConfig
344
+ const { options } = shortcutOpts
345
+ if (options) {
346
+ return options.map((option, index) => {
347
+ return Object.assign({
348
+ name: `${option.name || option.code || index}`
349
+ }, option)
350
+ })
351
+ }
352
+ return []
353
+ },
354
+ computeDateLabelFormat () {
355
+ const $xeDateRangePicker = this
356
+ const props = $xeDateRangePicker
357
+
358
+ const { labelFormat } = props
359
+ return labelFormat || getI18n(`vxe.input.date.labelFormat.${props.type}`)
360
+ },
361
+ computeDateValueFormat () {
362
+ const $xeDateRangePicker = this
363
+ const props = $xeDateRangePicker
364
+
365
+ const { type, valueFormat } = props
366
+ return handleValueFormat(type, valueFormat)
367
+ },
368
+ computeFirstDayOfWeek () {
369
+ const $xeDateRangePicker = this
370
+ const props = $xeDateRangePicker
371
+
372
+ const { startDay } = props
373
+ return XEUtils.toNumber(startDay) as VxeDateRangePickerPropTypes.StartDay
374
+ },
375
+ computePanelLabelObj () {
376
+ const $xeDateRangePicker = this as VxeDateRangePickerConstructor
377
+ const reactData = $xeDateRangePicker.reactData
378
+
379
+ const { startValue, endValue } = reactData
380
+ const vals: string[] = startValue || endValue ? [startValue || '', endValue || ''] : []
381
+ return ($xeDateRangePicker as any).formatRangeLabel(vals) as {
382
+ label: string;
383
+ startLabel: string;
384
+ endLabel: string;
385
+ }
386
+ },
387
+ computeInputLabel () {
388
+ const $xeDateRangePicker = this
389
+
390
+ const panelLabelObj = $xeDateRangePicker.computePanelLabelObj as {
391
+ label: string;
392
+ startLabel: string;
393
+ endLabel: string;
394
+ }
395
+ return panelLabelObj.label
396
+ }
397
+ },
398
+ methods: {
399
+ //
400
+ // Method
401
+ //
402
+ dispatchEvent (type: ValueOf<VxeDateRangePickerEmits>, params: Record<string, any>, evnt: Event | null) {
403
+ const $xeDateRangePicker = this
404
+ $xeDateRangePicker.$emit(type, createEvent(evnt, { $dateRangePicker: $xeDateRangePicker }, params))
405
+ },
406
+ emitModel (value: any) {
407
+ const $xeDateRangePicker = this
408
+
409
+ const { _events } = $xeDateRangePicker as any
410
+ if (_events && _events.modelValue) {
411
+ $xeDateRangePicker.$emit('modelValue', value)
412
+ } else {
413
+ $xeDateRangePicker.$emit('model-value', value)
414
+ }
415
+ },
416
+ formatRangeLabel (vals: string[]) {
417
+ const $xeDateRangePicker = this
418
+ const props = $xeDateRangePicker
419
+
420
+ const { type, separator } = props
421
+ const dateLabelFormat = $xeDateRangePicker.computeDateLabelFormat
422
+ const dateValueFormat = $xeDateRangePicker.computeDateValueFormat
423
+ const firstDayOfWeek = $xeDateRangePicker.computeFirstDayOfWeek
424
+ const startRest = vals[0]
425
+ ? parseDateObj(vals[0], type, {
426
+ valueFormat: dateValueFormat,
427
+ labelFormat: dateLabelFormat,
428
+ firstDay: firstDayOfWeek
429
+ })
430
+ : null
431
+ const endRest = vals[1]
432
+ ? parseDateObj(vals[1], type, {
433
+ valueFormat: dateValueFormat,
434
+ labelFormat: dateLabelFormat,
435
+ firstDay: firstDayOfWeek
436
+ })
437
+ : null
438
+ const startLabel = startRest ? startRest.label : ''
439
+ const endLabel = endRest ? endRest.label : ''
440
+ return {
441
+ label: (startLabel || endLabel ? [startLabel, endLabel] : []).join(`${separator || ' ~ '}`),
442
+ startLabel,
443
+ endLabel
444
+ }
445
+ },
446
+ getRangeValue (sValue: string, eValue: string) {
447
+ const $xeDateRangePicker = this
448
+ const props = $xeDateRangePicker
449
+
450
+ const { value: modelValue, valueType } = props
451
+ let isArr = XEUtils.isArray(modelValue)
452
+ if (valueType) {
453
+ switch (valueType) {
454
+ case 'array':
455
+ isArr = true
456
+ break
457
+ case 'string':
458
+ isArr = false
459
+ break
460
+ }
461
+ }
462
+ if (sValue || eValue) {
463
+ const rest = [sValue || '', eValue || '']
464
+ if (isArr) {
465
+ return rest
466
+ }
467
+ return rest.join(',')
468
+ }
469
+ return isArr ? [] : ''
470
+ },
471
+ paraeUpdateModel () {
472
+ const $xeDateRangePicker = this
473
+ const props = $xeDateRangePicker
474
+
475
+ const { type, value: modelValue } = props
476
+ const dateValueFormat = $xeDateRangePicker.computeDateValueFormat
477
+ let sValue: string | Date | null = ''
478
+ let eValue: string | Date | null = ''
479
+ if (XEUtils.isArray(modelValue)) {
480
+ const date1 = parseDateString(modelValue[0], type, { valueFormat: dateValueFormat })
481
+ const date2 = parseDateString(modelValue[1], type, { valueFormat: dateValueFormat })
482
+ if (date1 || date2) {
483
+ sValue = date1 || ''
484
+ eValue = date2 || ''
485
+ }
486
+ } else if (XEUtils.isString(modelValue)) {
487
+ const strArr = modelValue.split(',')
488
+ if (strArr[0] || strArr[1]) {
489
+ sValue = strArr[0] || ''
490
+ eValue = strArr[1] || ''
491
+ }
492
+ }
493
+ return {
494
+ sValue,
495
+ eValue
496
+ }
497
+ },
498
+ parseUpdateData () {
499
+ const $xeDateRangePicker = this
500
+ const props = $xeDateRangePicker
501
+
502
+ const { type, startValue, endValue } = props
503
+ const dateValueFormat = $xeDateRangePicker.computeDateValueFormat
504
+ let sValue: string | Date | null = ''
505
+ let eValue: string | Date | null = ''
506
+ sValue = parseDateString(startValue, type, { valueFormat: dateValueFormat })
507
+ eValue = parseDateString(endValue, type, { valueFormat: dateValueFormat })
508
+ return {
509
+ sValue,
510
+ eValue
511
+ }
512
+ },
513
+ updateModelValue (isModel: boolean) {
514
+ const $xeDateRangePicker = this
515
+ const props = $xeDateRangePicker
516
+ const reactData = $xeDateRangePicker.reactData
517
+
518
+ const { value: modelValue, startValue, endValue } = props
519
+ let restObj: {
520
+ sValue: string | Date | null
521
+ eValue: string | Date | null
522
+ } = {
523
+ sValue: '',
524
+ eValue: ''
525
+ }
526
+ if (isModel) {
527
+ if (modelValue) {
528
+ restObj = $xeDateRangePicker.paraeUpdateModel()
529
+ } else {
530
+ restObj = $xeDateRangePicker.parseUpdateData()
531
+ }
532
+ } else {
533
+ if (startValue || endValue) {
534
+ restObj = $xeDateRangePicker.parseUpdateData()
535
+ } else {
536
+ restObj = $xeDateRangePicker.paraeUpdateModel()
537
+ }
538
+ }
539
+ reactData.startValue = restObj.sValue
540
+ reactData.endValue = restObj.eValue
541
+ },
542
+ triggerEvent (evnt: Event & { type: 'input' | 'change' | 'keydown' | 'keyup' | 'click' | 'focus' | 'blur' }) {
543
+ const $xeDateRangePicker = this
544
+ const reactData = $xeDateRangePicker.reactData
545
+
546
+ const { startValue, endValue } = reactData
547
+ const value = $xeDateRangePicker.getRangeValue(startValue, endValue)
548
+ $xeDateRangePicker.dispatchEvent(evnt.type, { value, startValue, endValue }, evnt)
549
+ },
550
+ handleChange (sValue: string, eValue: string, evnt: Event | { type: string }) {
551
+ const $xeDateRangePicker = this
552
+ const props = $xeDateRangePicker
553
+ const reactData = $xeDateRangePicker.reactData
554
+ const $xeForm = $xeDateRangePicker.$xeForm
555
+ const formItemInfo = $xeDateRangePicker.formItemInfo
556
+
557
+ const { value: modelValue } = props
558
+ reactData.startValue = sValue
559
+ reactData.endValue = eValue
560
+ const value = $xeDateRangePicker.getRangeValue(sValue, eValue)
561
+ const isFinish = (sValue && eValue) || (!sValue && !eValue)
562
+ $xeDateRangePicker.emitModel(value)
563
+ $xeDateRangePicker.$emit('update:startValue', sValue || '')
564
+ $xeDateRangePicker.$emit('update:endValue', eValue || '')
565
+ if (XEUtils.toValueString(modelValue) !== value) {
566
+ $xeDateRangePicker.dispatchEvent('change', { value, startValue: sValue, endValue: eValue, isFinish }, evnt as any)
567
+ // 自动更新校验状态
568
+ if ($xeForm && formItemInfo) {
569
+ $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value)
570
+ }
571
+ }
572
+ },
573
+ changeEvent (evnt: Event & { type: 'change' }) {
574
+ const $xeDateRangePicker = this
575
+
576
+ const inpImmediate = $xeDateRangePicker.computeInpImmediate
577
+ if (!inpImmediate) {
578
+ $xeDateRangePicker.triggerEvent(evnt)
579
+ }
580
+ },
581
+ focusEvent (evnt: Event & { type: 'focus' }) {
582
+ const $xeDateRangePicker = this
583
+ const reactData = $xeDateRangePicker.reactData
584
+
585
+ reactData.isActivated = true
586
+ $xeDateRangePicker.dateRangePickerOpenEvent(evnt)
587
+ $xeDateRangePicker.triggerEvent(evnt)
588
+ },
589
+ clickPrefixEvent (evnt: Event) {
590
+ const $xeDateRangePicker = this
591
+ const reactData = $xeDateRangePicker.reactData
592
+
593
+ const isDisabled = $xeDateRangePicker.computeIsDisabled
594
+ if (!isDisabled) {
595
+ const { startValue, endValue } = reactData
596
+ const value = $xeDateRangePicker.getRangeValue(startValue, endValue)
597
+ $xeDateRangePicker.dispatchEvent('prefix-click', { value, startValue, endValue }, evnt)
598
+ }
599
+ },
600
+ hidePanel () {
601
+ const $xeDateRangePicker = this
602
+ const reactData = $xeDateRangePicker.reactData
603
+ const internalData = $xeDateRangePicker.internalData
604
+
605
+ return new Promise<void>(resolve => {
606
+ reactData.visiblePanel = false
607
+ internalData.hpTimeout = setTimeout(() => {
608
+ reactData.isAniVisible = false
609
+ resolve()
610
+ }, 350)
611
+ })
612
+ },
613
+ clearValueEvent (evnt: Event, value: VxeDateRangePickerPropTypes.ModelValue) {
614
+ const $xeDateRangePicker = this
615
+
616
+ const isDatePickerType = $xeDateRangePicker.computeIsDatePickerType
617
+ if (isDatePickerType) {
618
+ $xeDateRangePicker.hidePanel()
619
+ }
620
+ const startValue = ''
621
+ const endValue = ''
622
+ $xeDateRangePicker.handleChange(startValue, endValue, evnt)
623
+ $xeDateRangePicker.dispatchEvent('clear', { value, startValue, endValue }, evnt)
624
+ },
625
+ checkValue () {
626
+ const $xeDateRangePicker = this
627
+
628
+ const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel as VxeDatePanelConstructor
629
+ const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel as VxeDatePanelConstructor
630
+ if ($startDatePanel && $endDatePanel) {
631
+ const startValue = $startDatePanel.getModelValue()
632
+ const endValue = $endDatePanel.getModelValue()
633
+ if (!startValue || !endValue) {
634
+ $xeDateRangePicker.handleChange('', '', { type: 'check' })
635
+ }
636
+ }
637
+ },
638
+ handleSelectClose () {
639
+ const $xeDateRangePicker = this
640
+ const props = $xeDateRangePicker
641
+ const reactData = $xeDateRangePicker.reactData
642
+ const internalData = $xeDateRangePicker.internalData
643
+
644
+ const { autoClose } = props
645
+ const { startValue, endValue } = reactData
646
+ const { selectStatus } = internalData
647
+ const isDatePickerType = $xeDateRangePicker.computeIsDatePickerType
648
+ if (autoClose) {
649
+ if (selectStatus && isDatePickerType) {
650
+ if (startValue && endValue) {
651
+ $xeDateRangePicker.hidePanel()
652
+ }
653
+ }
654
+ } else {
655
+ if (startValue && endValue) {
656
+ internalData.selectStatus = false
657
+ }
658
+ }
659
+ },
660
+ clickSuffixEvent (evnt: Event) {
661
+ const $xeDateRangePicker = this
662
+ const reactData = $xeDateRangePicker.reactData
663
+
664
+ const isDisabled = $xeDateRangePicker.computeIsDisabled
665
+ if (!isDisabled) {
666
+ const { startValue, endValue } = reactData
667
+ const value = $xeDateRangePicker.getRangeValue(startValue, endValue)
668
+ $xeDateRangePicker.dispatchEvent('suffix-click', { value, startValue, endValue }, evnt)
669
+ }
670
+ },
671
+ blurEvent (evnt: Event & { type: 'blur' }) {
672
+ const $xeDateRangePicker = this
673
+ const reactData = $xeDateRangePicker.reactData
674
+ const $xeForm = $xeDateRangePicker.$xeForm
675
+ const formItemInfo = $xeDateRangePicker.formItemInfo
676
+
677
+ const { startValue, endValue } = reactData
678
+ const inpImmediate = $xeDateRangePicker.computeInpImmediate
679
+ const value = ''
680
+ if (!inpImmediate) {
681
+ $xeDateRangePicker.handleChange(startValue, endValue, evnt)
682
+ }
683
+ if (!reactData.visiblePanel) {
684
+ reactData.isActivated = false
685
+ }
686
+ $xeDateRangePicker.dispatchEvent('blur', { value, startValue, endValue }, evnt)
687
+ // 自动更新校验状态
688
+ if ($xeForm && formItemInfo) {
689
+ $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value)
690
+ }
691
+ },
692
+ keydownEvent (evnt: KeyboardEvent & { type: 'keydown' }) {
693
+ const $xeDateRangePicker = this
694
+
695
+ $xeDateRangePicker.triggerEvent(evnt)
696
+ },
697
+ keyupEvent (evnt: KeyboardEvent & { type: 'keyup' }) {
698
+ const $xeDateRangePicker = this
699
+
700
+ $xeDateRangePicker.triggerEvent(evnt)
701
+ },
702
+ confirmEvent (evnt: MouseEvent) {
703
+ const $xeDateRangePicker = this
704
+
705
+ const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel as VxeDatePanelConstructor
706
+ const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel as VxeDatePanelConstructor
707
+ if ($startDatePanel && $endDatePanel) {
708
+ const startValue = $startDatePanel.getModelValue()
709
+ const endValue = $endDatePanel.getModelValue()
710
+ if ((startValue && !endValue) || (!startValue && endValue)) {
711
+ $xeDateRangePicker.handleChange('', '', evnt)
712
+ } else {
713
+ $startDatePanel.confirmByEvent(evnt)
714
+ $endDatePanel.confirmByEvent(evnt)
715
+ }
716
+ const value = $xeDateRangePicker.getRangeValue(startValue, endValue)
717
+ $xeDateRangePicker.dispatchEvent('confirm', { value, startValue, endValue }, evnt)
718
+ }
719
+ $xeDateRangePicker.hidePanel()
720
+ },
721
+ startPanelChangeEvent (params: any) {
722
+ const $xeDateRangePicker = this
723
+ const reactData = $xeDateRangePicker.reactData
724
+ const internalData = $xeDateRangePicker.internalData
725
+
726
+ const { selectStatus } = internalData
727
+ const { value, $event } = params
728
+ const endValue = selectStatus ? reactData.endValue : ''
729
+ $xeDateRangePicker.handleChange(value, endValue, $event)
730
+ $xeDateRangePicker.handleSelectClose()
731
+ if (!selectStatus) {
732
+ internalData.selectStatus = true
733
+ }
734
+ $xeDateRangePicker.$nextTick(() => {
735
+ const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel as VxeDatePanelConstructor
736
+ const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel as VxeDatePanelConstructor
737
+ if ($startDatePanel && $endDatePanel) {
738
+ const startValue = $startDatePanel.getModelValue()
739
+ if (!endValue && startValue) {
740
+ $endDatePanel.setPanelDate(XEUtils.toStringDate(startValue))
741
+ }
742
+ }
743
+ })
744
+ },
745
+ endPanelChangeEvent (params: any) {
746
+ const $xeDateRangePicker = this
747
+ const reactData = $xeDateRangePicker.reactData
748
+ const internalData = $xeDateRangePicker.internalData
749
+
750
+ const { selectStatus } = internalData
751
+ const { value, $event } = params
752
+ const startValue = selectStatus ? reactData.startValue : ''
753
+ $xeDateRangePicker.handleChange(startValue, value, $event)
754
+ $xeDateRangePicker.handleSelectClose()
755
+ if (!selectStatus) {
756
+ internalData.selectStatus = true
757
+ }
758
+ $xeDateRangePicker.$nextTick(() => {
759
+ const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel as VxeDatePanelConstructor
760
+ const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel as VxeDatePanelConstructor
761
+ if ($startDatePanel && $endDatePanel) {
762
+ const endValue = $endDatePanel.getModelValue()
763
+ if (!startValue && endValue) {
764
+ $startDatePanel.setPanelDate(XEUtils.toStringDate(endValue))
765
+ }
766
+ }
767
+ })
768
+ },
769
+ // 全局事件
770
+ handleGlobalMousedownEvent (evnt: Event) {
771
+ const $xeDateRangePicker = this
772
+ const reactData = $xeDateRangePicker.reactData
773
+
774
+ const { visiblePanel, isActivated } = reactData
775
+ const el = $xeDateRangePicker.$refs.refElem as HTMLDivElement
776
+ const panelWrapperElem = $xeDateRangePicker.$refs.refPanelWrapper as HTMLDivElement
777
+ const isDisabled = $xeDateRangePicker.computeIsDisabled
778
+ if (!isDisabled && isActivated) {
779
+ reactData.isActivated = getEventTargetNode(evnt, el).flag || getEventTargetNode(evnt, panelWrapperElem).flag
780
+ if (!reactData.isActivated) {
781
+ if (visiblePanel) {
782
+ $xeDateRangePicker.checkValue()
783
+ $xeDateRangePicker.hidePanel()
784
+ }
785
+ }
786
+ }
787
+ },
788
+ handleGlobalKeydownEvent (evnt: KeyboardEvent) {
789
+ const $xeDateRangePicker = this
790
+ const reactData = $xeDateRangePicker.reactData
791
+
792
+ const { visiblePanel } = reactData
793
+ const isDisabled = $xeDateRangePicker.computeIsDisabled
794
+ if (!isDisabled) {
795
+ const isTab = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.TAB)
796
+ const isEsc = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ESCAPE)
797
+ if (isTab) {
798
+ reactData.isActivated = false
799
+ }
800
+ if (visiblePanel) {
801
+ if (isEsc || isTab) {
802
+ $xeDateRangePicker.checkValue()
803
+ $xeDateRangePicker.hidePanel()
804
+ }
805
+ }
806
+ }
807
+ },
808
+ handleGlobalMousewheelEvent (evnt: Event) {
809
+ const $xeDateRangePicker = this
810
+ const reactData = $xeDateRangePicker.reactData
811
+
812
+ const { visiblePanel } = reactData
813
+ const isDisabled = $xeDateRangePicker.computeIsDisabled
814
+ if (!isDisabled) {
815
+ if (visiblePanel) {
816
+ const panelWrapperElem = $xeDateRangePicker.$refs.refPanelWrapper as HTMLDivElement
817
+ if (getEventTargetNode(evnt, panelWrapperElem).flag) {
818
+ $xeDateRangePicker.updatePlacement()
819
+ } else {
820
+ $xeDateRangePicker.checkValue()
821
+ $xeDateRangePicker.hidePanel()
822
+ }
823
+ }
824
+ }
825
+ },
826
+ handleGlobalBlurEvent () {
827
+ const $xeDateRangePicker = this
828
+ const reactData = $xeDateRangePicker.reactData
829
+
830
+ const { visiblePanel, isActivated } = reactData
831
+ if (visiblePanel) {
832
+ $xeDateRangePicker.checkValue()
833
+ $xeDateRangePicker.hidePanel()
834
+ }
835
+ if (isActivated) {
836
+ reactData.isActivated = false
837
+ }
838
+ if (visiblePanel || isActivated) {
839
+ const targetElem = $xeDateRangePicker.$refs.refInputTarget as HTMLInputElement
840
+ if (targetElem) {
841
+ targetElem.blur()
842
+ }
843
+ }
844
+ },
845
+ handleGlobalResizeEvent () {
846
+ const $xeDateRangePicker = this
847
+ const reactData = $xeDateRangePicker.reactData
848
+
849
+ const { visiblePanel } = reactData
850
+ if (visiblePanel) {
851
+ $xeDateRangePicker.updatePlacement()
852
+ }
853
+ },
854
+ // 弹出面板
855
+ updateZindex () {
856
+ const $xeDateRangePicker = this
857
+ const props = $xeDateRangePicker
858
+ const reactData = $xeDateRangePicker.reactData
859
+
860
+ const popupOpts = $xeDateRangePicker.computePopupOpts
861
+ const customZIndex = popupOpts.zIndex || props.zIndex
862
+ if (customZIndex) {
863
+ reactData.panelIndex = XEUtils.toNumber(customZIndex)
864
+ } else if (reactData.panelIndex < getLastZIndex()) {
865
+ reactData.panelIndex = nextZIndex()
866
+ }
867
+ },
868
+ updatePlacement () {
869
+ const $xeDateRangePicker = this
870
+ const props = $xeDateRangePicker
871
+ const reactData = $xeDateRangePicker.reactData
872
+
873
+ const { placement } = props
874
+ const { panelIndex } = reactData
875
+ const targetElem = $xeDateRangePicker.$refs.refInputTarget as HTMLInputElement
876
+ const panelElem = $xeDateRangePicker.$refs.refInputPanel as HTMLDivElement
877
+ const btnTransfer = $xeDateRangePicker.computeBtnTransfer
878
+ const popupOpts = $xeDateRangePicker.computePopupOpts
879
+ const handleStyle = () => {
880
+ const ppObj = updatePanelPlacement(targetElem, panelElem, {
881
+ placement: popupOpts.placement || placement,
882
+ teleportTo: btnTransfer
883
+ })
884
+ const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
885
+ zIndex: panelIndex
886
+ })
887
+ reactData.panelStyle = panelStyle
888
+ reactData.panelPlacement = ppObj.placement
889
+ }
890
+ handleStyle()
891
+ return $xeDateRangePicker.$nextTick().then(handleStyle)
892
+ },
893
+ showPanel () {
894
+ const $xeDateRangePicker = this
895
+ const reactData = $xeDateRangePicker.reactData
896
+ const internalData = $xeDateRangePicker.internalData
897
+
898
+ const { visiblePanel } = reactData
899
+ const isDisabled = $xeDateRangePicker.computeIsDisabled
900
+ const btnTransfer = $xeDateRangePicker.computeBtnTransfer
901
+ const panelElem = $xeDateRangePicker.$refs.refInputPanel as HTMLElement
902
+ if (!isDisabled && !visiblePanel) {
903
+ if (!reactData.initialized) {
904
+ reactData.initialized = true
905
+ if (btnTransfer) {
906
+ if (panelElem) {
907
+ document.body.appendChild(panelElem)
908
+ }
909
+ }
910
+ }
911
+ if (internalData.hpTimeout) {
912
+ clearTimeout(internalData.hpTimeout)
913
+ internalData.hpTimeout = undefined
914
+ }
915
+ internalData.selectStatus = false
916
+ reactData.isActivated = true
917
+ reactData.isAniVisible = true
918
+ setTimeout(() => {
919
+ reactData.visiblePanel = true
920
+ $xeDateRangePicker.updatePlacement()
921
+ }, 10)
922
+ $xeDateRangePicker.updateZindex()
923
+ return $xeDateRangePicker.updatePlacement()
924
+ }
925
+ return $xeDateRangePicker.$nextTick()
926
+ },
927
+ dateRangePickerOpenEvent (evnt: Event) {
928
+ const $xeDateRangePicker = this
929
+
930
+ const formReadonly = $xeDateRangePicker.computeFormReadonly
931
+ if (!formReadonly) {
932
+ evnt.preventDefault()
933
+ $xeDateRangePicker.showPanel()
934
+ }
935
+ },
936
+ clickEvent (evnt: Event & { type: 'click' }) {
937
+ const $xeDateRangePicker = this
938
+
939
+ $xeDateRangePicker.triggerEvent(evnt)
940
+ },
941
+ handleShortcutEvent ({ option, $event }: VxeButtonGroupDefines.ClickEventParams) {
942
+ const $xeDateRangePicker = this
943
+ const props = $xeDateRangePicker
944
+ const reactData = $xeDateRangePicker.reactData
945
+
946
+ const { type } = props
947
+ const shortcutOpts = $xeDateRangePicker.computeShortcutOpts
948
+ const { autoClose } = shortcutOpts
949
+ const { code, clickMethod } = option as VxeDateRangePickerDefines.ShortcutOption
950
+ let startValue = reactData.startValue
951
+ let endValue = reactData.endValue
952
+ let value = $xeDateRangePicker.getRangeValue(startValue, endValue)
953
+ const shortcutParams = {
954
+ $dateRangePicker: $xeDateRangePicker,
955
+ option: option,
956
+ value,
957
+ startValue,
958
+ endValue,
959
+ code
960
+ }
961
+ if (!clickMethod && code) {
962
+ const gCommandOpts = commands.get(code)
963
+ const drpCommandMethod = gCommandOpts ? gCommandOpts.dateRangePickerCommandMethod : null
964
+ if (drpCommandMethod) {
965
+ drpCommandMethod(shortcutParams)
966
+ } else {
967
+ const dateValueFormat = $xeDateRangePicker.computeDateValueFormat
968
+ const firstDayOfWeek = $xeDateRangePicker.computeFirstDayOfWeek
969
+ switch (code) {
970
+ case 'last1':
971
+ case 'last3':
972
+ case 'last7':
973
+ case 'last30':
974
+ case 'last60':
975
+ case 'last90':
976
+ case 'last180': {
977
+ const restObj = getRangeDateByCode(code, value, type, {
978
+ valueFormat: dateValueFormat,
979
+ firstDay: firstDayOfWeek
980
+ })
981
+ startValue = restObj.startValue
982
+ endValue = restObj.endValue
983
+ value = $xeDateRangePicker.getRangeValue(startValue, endValue)
984
+ shortcutParams.value = value
985
+ shortcutParams.startValue = startValue
986
+ shortcutParams.endValue = endValue
987
+ $xeDateRangePicker.handleChange(startValue, endValue, $event)
988
+ break
989
+ }
990
+ default:
991
+ errLog('vxe.error.notCommands', [`[date-range-picker] ${code}`])
992
+ break
993
+ }
994
+ }
995
+ } else {
996
+ const optClickMethod = clickMethod || shortcutOpts.clickMethod
997
+ if (optClickMethod) {
998
+ optClickMethod(shortcutParams)
999
+ }
1000
+ }
1001
+ if (autoClose) {
1002
+ $xeDateRangePicker.hidePanel()
1003
+ }
1004
+ $xeDateRangePicker.dispatchEvent('shortcut-click', shortcutParams, $event)
1005
+ },
1006
+
1007
+ setModelValue (startValue: string, endValue: string) {
1008
+ const $xeDateRangePicker = this
1009
+ const reactData = $xeDateRangePicker.reactData
1010
+
1011
+ reactData.startValue = startValue || ''
1012
+ reactData.endValue = endValue || ''
1013
+ const value = $xeDateRangePicker.getRangeValue(startValue, endValue)
1014
+ $xeDateRangePicker.emitModel(value)
1015
+ },
1016
+ setModelValueByEvent (evnt: Event, startValue: string, endValue: string) {
1017
+ const $xeDateRangePicker = this
1018
+
1019
+ $xeDateRangePicker.handleChange(startValue || '', endValue || '', evnt)
1020
+ },
1021
+ focus () {
1022
+ const $xeDateRangePicker = this
1023
+ const reactData = $xeDateRangePicker.reactData
1024
+
1025
+ const inputElem = $xeDateRangePicker.$refs.refInputTarget as HTMLInputElement
1026
+ reactData.isActivated = true
1027
+ inputElem.focus()
1028
+ return $xeDateRangePicker.$nextTick()
1029
+ },
1030
+ blur () {
1031
+ const $xeDateRangePicker = this
1032
+ const reactData = $xeDateRangePicker.reactData
1033
+
1034
+ const inputElem = $xeDateRangePicker.$refs.refInputTarget as HTMLInputElement
1035
+ inputElem.blur()
1036
+ reactData.isActivated = false
1037
+ return $xeDateRangePicker.$nextTick()
1038
+ },
1039
+ select () {
1040
+ const $xeDateRangePicker = this
1041
+ const reactData = $xeDateRangePicker.reactData
1042
+
1043
+ const inputElem = $xeDateRangePicker.$refs.refInputTarget as HTMLInputElement
1044
+ inputElem.select()
1045
+ reactData.isActivated = false
1046
+ return $xeDateRangePicker.$nextTick()
1047
+ },
1048
+
1049
+ //
1050
+ // Render
1051
+ //
1052
+ renderShortcutBtn (h: CreateElement, pos: 'top' | 'bottom' | 'left' | 'right' | 'header' | 'footer', isVertical?: boolean) {
1053
+ const $xeDateRangePicker = this
1054
+
1055
+ const shortcutOpts = $xeDateRangePicker.computeShortcutOpts
1056
+ const { position, align, mode } = shortcutOpts
1057
+ const shortcutList = $xeDateRangePicker.computeShortcutList
1058
+ if (isEnableConf(shortcutOpts) && shortcutList.length && (position || 'left') === pos) {
1059
+ return h('div', {
1060
+ class: `vxe-date-range-picker--layout-${pos}-wrapper`
1061
+ }, [
1062
+ h(VxeButtonGroupComponent, {
1063
+ props: {
1064
+ options: shortcutList,
1065
+ mode,
1066
+ align,
1067
+ vertical: isVertical
1068
+ },
1069
+ on: {
1070
+ click: $xeDateRangePicker.handleShortcutEvent
1071
+ }
1072
+ })
1073
+ ])
1074
+ }
1075
+ return renderEmptyElement($xeDateRangePicker)
1076
+ },
1077
+ renderPanel (h: CreateElement) {
1078
+ const $xeDateRangePicker = this
1079
+ const props = $xeDateRangePicker
1080
+ const slots = $xeDateRangePicker.$scopedSlots
1081
+ const reactData = $xeDateRangePicker.reactData
1082
+
1083
+ const { type, separator, autoClose, showConfirmButton, showClearButton } = props
1084
+ const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle, startValue, endValue } = reactData
1085
+ const vSize = $xeDateRangePicker.computeSize
1086
+ const btnTransfer = $xeDateRangePicker.computeBtnTransfer
1087
+ const shortcutOpts = $xeDateRangePicker.computeShortcutOpts
1088
+ const isClearable = $xeDateRangePicker.computeIsClearable
1089
+ const panelLabelObj = $xeDateRangePicker.computePanelLabelObj
1090
+ const shortcutList = $xeDateRangePicker.computeShortcutList
1091
+ const isDateTimeType = $xeDateRangePicker.computeIsDateTimeType
1092
+ const defaultDates = $xeDateRangePicker.computeDefaultDates
1093
+ const defaultTimes = $xeDateRangePicker.computeDefaultTimes
1094
+ const timeOpts = $xeDateRangePicker.computeTimeOpts
1095
+ const popupOpts = $xeDateRangePicker.computePopupOpts
1096
+ const { startLabel, endLabel } = panelLabelObj
1097
+ const { position } = shortcutOpts
1098
+ const headerSlot = slots.header
1099
+ const footerSlot = slots.footer
1100
+ const topSlot = slots.top
1101
+ const bottomSlot = slots.bottom
1102
+ const leftSlot = slots.left
1103
+ const rightSlot = slots.right
1104
+ const ppClassName = popupOpts.className
1105
+ const [sdDate, edDate] = defaultDates
1106
+ const [sdTime, edTime] = defaultTimes
1107
+ const hasShortcutBtn = shortcutList.length > 0
1108
+ const showConfirmBtn = (showConfirmButton === null ? (isDateTimeType || !autoClose) : showConfirmButton)
1109
+ const showClearBtn = (showClearButton === null ? isClearable : showClearButton)
1110
+ return h('div', {
1111
+ ref: 'refInputPanel',
1112
+ class: ['vxe-table--ignore-clear vxe-date-range-picker--panel', `type--${type}`, ppClassName ? (XEUtils.isFunction(ppClassName) ? ppClassName({ $dateRangePicker: $xeDateRangePicker }) : ppClassName) : '', {
1113
+ [`size--${vSize}`]: vSize,
1114
+ 'is--transfer': btnTransfer,
1115
+ 'ani--leave': isAniVisible,
1116
+ 'ani--enter': visiblePanel,
1117
+ 'show--top': !!(topSlot || headerSlot || (hasShortcutBtn && (position === 'top' || position === 'header'))),
1118
+ 'show--bottom': !!(bottomSlot || footerSlot || (hasShortcutBtn && (position === 'bottom' || position === 'footer'))),
1119
+ 'show--left': !!(leftSlot || (hasShortcutBtn && position === 'left')),
1120
+ 'show--right': !!(rightSlot || (hasShortcutBtn && position === 'right'))
1121
+ }],
1122
+ attrs: {
1123
+ placement: panelPlacement
1124
+ },
1125
+ style: panelStyle
1126
+ }, initialized && (visiblePanel || isAniVisible)
1127
+ ? [
1128
+ h('div', {
1129
+ ref: 'refPanelWrapper',
1130
+ class: ['vxe-date-range-picker--layout-all-wrapper', `type--${type}`, {
1131
+ [`size--${vSize}`]: vSize
1132
+ }]
1133
+ }, [
1134
+ topSlot
1135
+ ? h('div', {
1136
+ class: 'vxe-date-range-picker--layout-top-wrapper'
1137
+ }, topSlot({}))
1138
+ : $xeDateRangePicker.renderShortcutBtn(h, 'top'),
1139
+ h('div', {
1140
+ class: 'vxe-date-range-picker--layout-body-layout-wrapper'
1141
+ }, [
1142
+ leftSlot
1143
+ ? h('div', {
1144
+ class: 'vxe-date-range-picker--layout-left-wrapper'
1145
+ }, leftSlot({}))
1146
+ : $xeDateRangePicker.renderShortcutBtn(h, 'left', true),
1147
+ h('div', {
1148
+ class: 'vxe-date-range-picker--layout-body-content-wrapper'
1149
+ }, [
1150
+ headerSlot
1151
+ ? h('div', {
1152
+ class: 'vxe-date-range-picker--layout-header-wrapper'
1153
+ }, headerSlot({}))
1154
+ : $xeDateRangePicker.renderShortcutBtn(h, 'header'),
1155
+ h('div', {
1156
+ class: 'vxe-date-range-picker--layout-body-wrapper'
1157
+ }, [
1158
+ h(VxeDatePanelComponent, {
1159
+ ref: 'refStartDatePanel',
1160
+ props: {
1161
+ value: startValue,
1162
+ type: props.type,
1163
+ className: props.className,
1164
+ minDate: props.minDate,
1165
+ maxDate: props.maxDate,
1166
+ endDate: endValue,
1167
+ startDay: props.startDay,
1168
+ labelFormat: props.labelFormat,
1169
+ valueFormat: props.valueFormat,
1170
+ timeFormat: props.timeFormat,
1171
+ defaultDate: sdDate,
1172
+ defaultTime: sdTime,
1173
+ timeConfig: timeOpts,
1174
+ festivalMethod: props.festivalMethod,
1175
+ disabledMethod: props.disabledMethod,
1176
+ selectDay: props.selectDay
1177
+ },
1178
+ on: {
1179
+ change: $xeDateRangePicker.startPanelChangeEvent
1180
+ }
1181
+ }),
1182
+ h(VxeDatePanelComponent, {
1183
+ ref: 'refEndDatePanel',
1184
+ props: {
1185
+ value: endValue,
1186
+ type: props.type,
1187
+ className: props.className,
1188
+ minDate: props.minDate,
1189
+ maxDate: props.maxDate,
1190
+ startDate: startValue,
1191
+ startDay: props.startDay,
1192
+ labelFormat: props.labelFormat,
1193
+ valueFormat: props.valueFormat,
1194
+ timeFormat: props.timeFormat,
1195
+ defaultDate: edDate,
1196
+ defaultTime: edTime,
1197
+ timeConfig: timeOpts,
1198
+ festivalMethod: props.festivalMethod,
1199
+ disabledMethod: props.disabledMethod,
1200
+ selectDay: props.selectDay
1201
+ },
1202
+ on: {
1203
+ change: $xeDateRangePicker.endPanelChangeEvent
1204
+ }
1205
+ })
1206
+ ]),
1207
+ h('div', {
1208
+ class: 'vxe-date-range-picker--layout-footer-wrapper'
1209
+ }, [
1210
+ h('div', {
1211
+ class: 'vxe-date-range-picker--layout-footer-label'
1212
+ }, startLabel || endLabel
1213
+ ? [
1214
+ h('span', startLabel),
1215
+ h('span', `${separator || ''}`),
1216
+ h('span', endLabel)
1217
+ ]
1218
+ : `${separator || ''}`),
1219
+ h('div', {
1220
+ class: 'vxe-date-range-picker--layout-footer-custom'
1221
+ }, footerSlot ? footerSlot({}) : [$xeDateRangePicker.renderShortcutBtn(h, 'footer')]),
1222
+ h('div', {
1223
+ class: 'vxe-date-range-picker--layout-footer-btns'
1224
+ }, [
1225
+ showClearBtn
1226
+ ? h(VxeButtonComponent, {
1227
+ props: {
1228
+ size: 'mini',
1229
+ disabled: !(startValue || endValue),
1230
+ content: getI18n('vxe.button.clear')
1231
+ },
1232
+ on: {
1233
+ click: $xeDateRangePicker.clearValueEvent
1234
+ }
1235
+ })
1236
+ : renderEmptyElement($xeDateRangePicker),
1237
+ showConfirmBtn
1238
+ ? h(VxeButtonComponent, {
1239
+ props: {
1240
+ size: 'mini',
1241
+ status: 'primary',
1242
+ content: getI18n('vxe.button.confirm')
1243
+ },
1244
+ on: {
1245
+ click: $xeDateRangePicker.confirmEvent
1246
+ }
1247
+ })
1248
+ : renderEmptyElement($xeDateRangePicker)
1249
+ ])
1250
+ ])
1251
+ ]),
1252
+ rightSlot
1253
+ ? h('div', {
1254
+ class: 'vxe-date-range-picker--layout-right-wrapper'
1255
+ }, rightSlot({}))
1256
+ : $xeDateRangePicker.renderShortcutBtn(h, 'right', true)
1257
+ ]),
1258
+ bottomSlot
1259
+ ? h('div', {
1260
+ class: 'vxe-date-range-picker--layout-bottom-wrapper'
1261
+ }, bottomSlot({}))
1262
+ : $xeDateRangePicker.renderShortcutBtn(h, 'bottom')
1263
+ ])
1264
+ ]
1265
+ : [])
1266
+ },
1267
+ renderPrefixIcon (h: CreateElement) {
1268
+ const $xeDateRangePicker = this
1269
+ const props = $xeDateRangePicker
1270
+ const slots = $xeDateRangePicker.$scopedSlots
1271
+
1272
+ const { prefixIcon } = props
1273
+ const prefixSlot = slots.prefix
1274
+ return prefixSlot || prefixIcon
1275
+ ? h('div', {
1276
+ class: 'vxe-date-range-picker--prefix',
1277
+ on: {
1278
+ click: $xeDateRangePicker.clickPrefixEvent
1279
+ }
1280
+ }, [
1281
+ h('div', {
1282
+ class: 'vxe-date-range-picker--prefix-icon'
1283
+ }, prefixSlot
1284
+ ? getSlotVNs(prefixSlot({}))
1285
+ : [
1286
+ h('i', {
1287
+ class: prefixIcon
1288
+ })
1289
+ ])
1290
+ ])
1291
+ : null
1292
+ },
1293
+ renderSuffixIcon (h: CreateElement) {
1294
+ const $xeDateRangePicker = this
1295
+ const props = $xeDateRangePicker
1296
+ const slots = $xeDateRangePicker.$scopedSlots
1297
+ const reactData = $xeDateRangePicker.reactData
1298
+
1299
+ const { suffixIcon } = props
1300
+ const { startValue, endValue } = reactData
1301
+ const suffixSlot = slots.suffix
1302
+ const isDisabled = $xeDateRangePicker.computeIsDisabled
1303
+ const isClearable = $xeDateRangePicker.computeIsClearable
1304
+ return h('div', {
1305
+ class: ['vxe-date-range-picker--suffix', {
1306
+ 'is--clear': isClearable && !isDisabled && (startValue || endValue)
1307
+ }]
1308
+ }, [
1309
+ isClearable
1310
+ ? h('div', {
1311
+ class: 'vxe-date-range-picker--clear-icon',
1312
+ on: {
1313
+ click: $xeDateRangePicker.clearValueEvent
1314
+ }
1315
+ }, [
1316
+ h('i', {
1317
+ class: getIcon().INPUT_CLEAR
1318
+ })
1319
+ ])
1320
+ : renderEmptyElement($xeDateRangePicker),
1321
+ $xeDateRangePicker.renderExtraSuffixIcon(h),
1322
+ suffixSlot || suffixIcon
1323
+ ? h('div', {
1324
+ class: 'vxe-date-range-picker--suffix-icon',
1325
+ on: {
1326
+ click: $xeDateRangePicker.clickSuffixEvent
1327
+ }
1328
+ }, suffixSlot
1329
+ ? getSlotVNs(suffixSlot({}))
1330
+ : [
1331
+ h('i', {
1332
+ class: suffixIcon
1333
+ })
1334
+ ])
1335
+ : renderEmptyElement($xeDateRangePicker)
1336
+ ])
1337
+ },
1338
+ renderExtraSuffixIcon (h: CreateElement) {
1339
+ const $xeDateRangePicker = this
1340
+
1341
+ return h('div', {
1342
+ class: 'vxe-date-range-picker--control-icon',
1343
+ on: {
1344
+ click: $xeDateRangePicker.dateRangePickerOpenEvent
1345
+ }
1346
+ }, [
1347
+ h('i', {
1348
+ class: ['vxe-date-range-picker--date-picker-icon', getIcon().DATE_PICKER_DATE]
1349
+ })
1350
+ ])
1351
+ },
1352
+ renderVN (h: CreateElement) {
1353
+ const $xeDateRangePicker = this
1354
+ const props = $xeDateRangePicker
1355
+ const reactData = $xeDateRangePicker.reactData
1356
+
1357
+ const { className, type, name, autoComplete } = props
1358
+ const { startValue, endValue, visiblePanel, isActivated } = reactData
1359
+ const vSize = $xeDateRangePicker.computeSize
1360
+ const isDisabled = $xeDateRangePicker.computeIsDisabled
1361
+ const formReadonly = $xeDateRangePicker.computeFormReadonly
1362
+ const inputLabel = $xeDateRangePicker.computeInputLabel
1363
+ if (formReadonly) {
1364
+ return h('div', {
1365
+ ref: 'refElem',
1366
+ class: ['vxe-date-range-picker--readonly', `type--${type}`, className]
1367
+ }, inputLabel)
1368
+ }
1369
+ const inpPlaceholder = $xeDateRangePicker.computeInpPlaceholder
1370
+ const isClearable = $xeDateRangePicker.computeIsClearable
1371
+ const prefix = $xeDateRangePicker.renderPrefixIcon(h)
1372
+ const suffix = $xeDateRangePicker.renderSuffixIcon(h)
1373
+ return h('div', {
1374
+ ref: 'refElem',
1375
+ class: ['vxe-date-range-picker', `type--${type}`, className, {
1376
+ [`size--${vSize}`]: vSize,
1377
+ 'is--prefix': !!prefix,
1378
+ 'is--suffix': !!suffix,
1379
+ 'is--visible': visiblePanel,
1380
+ 'is--disabled': isDisabled,
1381
+ 'is--active': isActivated,
1382
+ 'show--clear': isClearable && !isDisabled && (startValue || endValue)
1383
+ }],
1384
+ attrs: {
1385
+ spellcheck: false
1386
+ }
1387
+ }, [
1388
+ prefix || renderEmptyElement($xeDateRangePicker),
1389
+ h('div', {
1390
+ class: 'vxe-date-range-picker--wrapper'
1391
+ }, [
1392
+ h('input', {
1393
+ ref: 'refInputTarget',
1394
+ class: 'vxe-date-range-picker--inner',
1395
+ domProps: {
1396
+ value: inputLabel
1397
+ },
1398
+ attrs: {
1399
+ name,
1400
+ type: 'text',
1401
+ placeholder: inpPlaceholder,
1402
+ editable: false,
1403
+ disabled: isDisabled,
1404
+ autocomplete: autoComplete
1405
+ },
1406
+ on: {
1407
+ keydown: $xeDateRangePicker.keydownEvent,
1408
+ keyup: $xeDateRangePicker.keyupEvent,
1409
+ click: $xeDateRangePicker.clickEvent,
1410
+ change: $xeDateRangePicker.changeEvent,
1411
+ focus: $xeDateRangePicker.focusEvent,
1412
+ blur: $xeDateRangePicker.blurEvent
1413
+ }
1414
+ })
1415
+ ]),
1416
+ suffix || renderEmptyElement($xeDateRangePicker),
1417
+ // 下拉面板
1418
+ $xeDateRangePicker.renderPanel(h)
1419
+ ])
1420
+ }
1421
+ },
1422
+ watch: {
1423
+ value () {
1424
+ const $xeDateRangePicker = this
1425
+
1426
+ $xeDateRangePicker.updateModelValue(true)
1427
+ },
1428
+ computeMVal () {
1429
+ const $xeDateRangePicker = this
1430
+
1431
+ $xeDateRangePicker.updateModelValue(false)
1432
+ }
1433
+ },
1434
+ created () {
1435
+ const $xeDateRangePicker = this
1436
+
1437
+ $xeDateRangePicker.updateModelValue(true)
1438
+
1439
+ globalEvents.on($xeDateRangePicker, 'mousewheel', $xeDateRangePicker.handleGlobalMousewheelEvent)
1440
+ globalEvents.on($xeDateRangePicker, 'mousedown', $xeDateRangePicker.handleGlobalMousedownEvent)
1441
+ globalEvents.on($xeDateRangePicker, 'keydown', $xeDateRangePicker.handleGlobalKeydownEvent)
1442
+ globalEvents.on($xeDateRangePicker, 'blur', $xeDateRangePicker.handleGlobalBlurEvent)
1443
+ globalEvents.on($xeDateRangePicker, 'resize', $xeDateRangePicker.handleGlobalResizeEvent)
1444
+ },
1445
+ deactivated () {
1446
+ const $xeDateRangePicker = this
1447
+
1448
+ $xeDateRangePicker.checkValue()
1449
+ },
1450
+ beforeDestroy () {
1451
+ const $xeDateRangePicker = this
1452
+
1453
+ const panelElem = $xeDateRangePicker.$refs.refInputPanel as HTMLElement | undefined
1454
+ if (panelElem && panelElem.parentNode) {
1455
+ panelElem.parentNode.removeChild(panelElem)
1456
+ }
1457
+ $xeDateRangePicker.checkValue()
1458
+ globalEvents.off($xeDateRangePicker, 'mousewheel')
1459
+ globalEvents.off($xeDateRangePicker, 'mousedown')
1460
+ globalEvents.off($xeDateRangePicker, 'blur')
1461
+ globalEvents.off($xeDateRangePicker, 'resize')
1462
+ },
1463
+ render (this: any, h) {
1464
+ return this.renderVN(h)
1465
+ }
1466
+ }) /* define-vxe-component end */